From 7935147711931891d9369a030a6a483ba7922676 Mon Sep 17 00:00:00 2001 From: Pei Jia Date: Sat, 4 Jul 2020 11:32:59 -0700 Subject: [PATCH 1/2] Java Support 1.6 --- build/CMakeCache.txt | 890 ++ build/CMakeDoxyfile.in | 278 + build/CMakeDoxygenDefaults.cmake | 673 ++ build/CPackConfig.cmake | 78 + build/CPackSourceConfig.cmake | 85 + build/CTestCustom.cmake | 40 + build/CTestTestfile.cmake | 11 + build/DartConfiguration.tcl | 111 + build/LICENSE.txt | 39 + build/OpenJPEGConfig.cmake | 53 + build/bin/compare_dump_files | Bin 0 -> 18424 bytes build/bin/compare_images | Bin 0 -> 113528 bytes build/bin/compare_raw_files | Bin 0 -> 18176 bytes build/bin/include_openjpeg | Bin 0 -> 8568 bytes build/bin/j2k_random_tile_access | Bin 0 -> 18664 bytes build/bin/libopenjp2.so | 1 + build/bin/libopenjp2.so.2.1.1 | Bin 0 -> 404184 bytes build/bin/libopenjp2.so.2.3.1 | Bin 0 -> 429664 bytes build/bin/libopenjp2.so.7 | 1 + build/bin/libopenjp3d.so | 1 + build/bin/libopenjp3d.so.2.1.1 | Bin 0 -> 9753224 bytes build/bin/libopenjp3d.so.2.3.1 | Bin 0 -> 187096 bytes build/bin/libopenjp3d.so.7 | 1 + build/bin/libopenjpip.so | 1 + build/bin/libopenjpip.so.2.1.1 | Bin 0 -> 155288 bytes build/bin/libopenjpip.so.2.3.1 | Bin 0 -> 151848 bytes build/bin/libopenjpip.so.7 | 1 + build/bin/libopenjpip_server.a | Bin 0 -> 226376 bytes build/bin/libopenjpwl.so | 1 + build/bin/libopenjpwl.so.2.1.1 | Bin 0 -> 264120 bytes build/bin/libopenjpwl.so.2.3.1 | Bin 0 -> 211096 bytes build/bin/libopenjpwl.so.7 | 1 + build/bin/libopenmj2.so | 1 + build/bin/libopenmj2.so.2.1.1 | Bin 0 -> 261256 bytes build/bin/libopenmj2.so.2.3.1 | Bin 0 -> 212296 bytes build/bin/libopenmj2.so.7 | 1 + build/bin/openjpeg.jar | Bin 0 -> 6971 bytes build/bin/opj_compress | Bin 0 -> 161352 bytes build/bin/opj_dec_server | Bin 0 -> 8528 bytes build/bin/opj_decompress | Bin 0 -> 153192 bytes build/bin/opj_dump | Bin 0 -> 136080 bytes build/bin/opj_jp3d_compress | Bin 0 -> 48520 bytes build/bin/opj_jp3d_decompress | Bin 0 -> 40360 bytes build/bin/opj_jpip_addxml | Bin 0 -> 12976 bytes build/bin/opj_jpip_test | Bin 0 -> 12760 bytes build/bin/opj_jpip_transcode | Bin 0 -> 12840 bytes build/bin/opj_jpip_viewer.jar | Bin 0 -> 26114 bytes build/bin/opj_jpwl_compress | Bin 0 -> 126088 bytes build/bin/opj_jpwl_decompress | Bin 0 -> 105184 bytes build/bin/opj_mj2_compress | Bin 0 -> 44296 bytes build/bin/opj_mj2_decompress | Bin 0 -> 31552 bytes build/bin/opj_mj2_extract | Bin 0 -> 31224 bytes build/bin/opj_mj2_wrap | Bin 0 -> 35952 bytes build/bin/opj_server | Bin 0 -> 106896 bytes build/bin/ppm2rgb3 | Bin 0 -> 13552 bytes build/bin/t1_generate_luts | Bin 0 -> 12600 bytes build/bin/test_tile_decoder | Bin 0 -> 18872 bytes build/bin/test_tile_encoder | Bin 0 -> 14040 bytes build/bin/testempty0 | Bin 0 -> 8560 bytes build/bin/testempty1 | Bin 0 -> 13776 bytes build/bin/testempty2 | Bin 0 -> 14176 bytes build/description-pak | 1 + build/doc/Doxyfile-html.dox | 279 + build/doc/doxygen_sqlite3.db | Bin 0 -> 3198976 bytes build/doc/html/_doxyfile-html_8dox.html | 54 + build/doc/html/annotated.html | 185 + build/doc/html/auxtrans__manager_8c.html | 508 + build/doc/html/auxtrans__manager_8h.html | 245 + .../doc/html/auxtrans__manager_8h_source.html | 150 + build/doc/html/bc_s.png | Bin 0 -> 676 bytes build/doc/html/bdwn.png | Bin 0 -> 147 bytes build/doc/html/bench__dwt_8c.html | 253 + build/doc/html/bio_8c.html | 604 ++ build/doc/html/bio_8h.html | 466 + build/doc/html/bio_8h_source.html | 213 + build/doc/html/box__manager_8c.html | 1114 ++ build/doc/html/box__manager_8h.html | 1110 ++ build/doc/html/box__manager_8h_source.html | 246 + build/doc/html/boxheader__manager_8c.html | 246 + build/doc/html/boxheader__manager_8h.html | 224 + .../html/boxheader__manager_8h_source.html | 138 + build/doc/html/byte__manager_8c.html | 530 + build/doc/html/byte__manager_8h.html | 545 + build/doc/html/byte__manager_8h_source.html | 153 + build/doc/html/cache__manager_8c.html | 676 ++ build/doc/html/cache__manager_8h.html | 692 ++ build/doc/html/cache__manager_8h_source.html | 202 + build/doc/html/cachemodel__manager_8c.html | 377 + build/doc/html/cachemodel__manager_8h.html | 375 + .../html/cachemodel__manager_8h_source.html | 186 + build/doc/html/channel__manager_8c.html | 406 + build/doc/html/channel__manager_8h.html | 432 + .../doc/html/channel__manager_8h_source.html | 182 + build/doc/html/cidx__manager_8c.html | 312 + build/doc/html/cidx__manager_8h.html | 175 + build/doc/html/cidx__manager_8h_source.html | 175 + build/doc/html/cio_8c.html | 1671 +++ build/doc/html/cio_8h.html | 1491 +++ build/doc/html/cio_8h_source.html | 366 + build/doc/html/classes.html | 248 + build/doc/html/closed.png | Bin 0 -> 132 bytes build/doc/html/codestream__manager_8c.html | 389 + build/doc/html/codestream__manager_8h.html | 367 + .../html/codestream__manager_8h_source.html | 150 + .../doc/html/dec__clientmsg__handler_8c.html | 497 + .../doc/html/dec__clientmsg__handler_8h.html | 493 + .../dec__clientmsg__handler_8h_source.html | 203 + .../dir_0890392e63c951145007159392cffa14.html | 64 + .../dir_10275b101dc47501bdbace8d72b4147f.html | 64 + .../dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html | 58 + .../dir_39dc0668bd5a501998f94e8b4e546c71.html | 64 + .../dir_6329a0b1ceb33c3e049f1dc7ed697498.html | 64 + .../dir_715f52f3461ba74d7c46f17c199ef422.html | 64 + .../dir_73dd1390edfd70d9070c8b9661f68f38.html | 64 + .../dir_7da9f56fa789e1efc974f837eafb38e7.html | 66 + .../dir_8a78b8e1a976303cf0c6d581706edd29.html | 64 + .../dir_b64e2f079b39f83729a5c1f19735390b.html | 66 + .../dir_c31727019deda5d7e4796a0b15f5d8ba.html | 64 + .../dir_cc90a325d355047f074438f2f9a1bee1.html | 182 + .../dir_e7d9765d20bce32490435b765db0901b.html | 211 + build/doc/html/doc.png | Bin 0 -> 746 bytes build/doc/html/doxygen.css | 1730 +++ build/doc/html/doxygen.png | Bin 0 -> 3779 bytes build/doc/html/dwt_8c.html | 2975 +++++ build/doc/html/dwt_8h.html | 438 + build/doc/html/dwt_8h_source.html | 315 + build/doc/html/dynsections.js | 120 + build/doc/html/event_8c.html | 218 + build/doc/html/event_8h.html | 259 + build/doc/html/event_8h_source.html | 151 + build/doc/html/faixbox__manager_8c.html | 439 + build/doc/html/faixbox__manager_8h.html | 528 + .../doc/html/faixbox__manager_8h_source.html | 207 + build/doc/html/files.html | 179 + build/doc/html/folderclosed.png | Bin 0 -> 616 bytes build/doc/html/folderopen.png | Bin 0 -> 597 bytes build/doc/html/function__list_8c.html | 305 + build/doc/html/function__list_8h.html | 338 + build/doc/html/function__list_8h_source.html | 155 + build/doc/html/functions.html | 76 + build/doc/html/functions_b.html | 123 + build/doc/html/functions_c.html | 307 + build/doc/html/functions_d.html | 151 + build/doc/html/functions_e.html | 110 + build/doc/html/functions_f.html | 100 + build/doc/html/functions_g.html | 57 + build/doc/html/functions_h.html | 89 + build/doc/html/functions_i.html | 147 + build/doc/html/functions_j.html | 162 + build/doc/html/functions_k.html | 66 + build/doc/html/functions_l.html | 141 + build/doc/html/functions_m.html | 506 + build/doc/html/functions_n.html | 228 + build/doc/html/functions_o.html | 154 + build/doc/html/functions_p.html | 268 + build/doc/html/functions_q.html | 65 + build/doc/html/functions_r.html | 141 + build/doc/html/functions_s.html | 162 + build/doc/html/functions_t.html | 282 + build/doc/html/functions_u.html | 69 + build/doc/html/functions_v.html | 64 + build/doc/html/functions_vars.html | 76 + build/doc/html/functions_vars_b.html | 123 + build/doc/html/functions_vars_c.html | 307 + build/doc/html/functions_vars_d.html | 151 + build/doc/html/functions_vars_e.html | 110 + build/doc/html/functions_vars_f.html | 100 + build/doc/html/functions_vars_g.html | 57 + build/doc/html/functions_vars_h.html | 89 + build/doc/html/functions_vars_i.html | 147 + build/doc/html/functions_vars_j.html | 162 + build/doc/html/functions_vars_k.html | 66 + build/doc/html/functions_vars_l.html | 141 + build/doc/html/functions_vars_m.html | 506 + build/doc/html/functions_vars_n.html | 228 + build/doc/html/functions_vars_o.html | 154 + build/doc/html/functions_vars_p.html | 268 + build/doc/html/functions_vars_q.html | 65 + build/doc/html/functions_vars_r.html | 141 + build/doc/html/functions_vars_s.html | 162 + build/doc/html/functions_vars_t.html | 282 + build/doc/html/functions_vars_u.html | 69 + build/doc/html/functions_vars_v.html | 64 + build/doc/html/functions_vars_w.html | 124 + build/doc/html/functions_vars_x.html | 103 + build/doc/html/functions_vars_y.html | 103 + build/doc/html/functions_w.html | 124 + build/doc/html/functions_x.html | 103 + build/doc/html/functions_y.html | 103 + build/doc/html/globals.html | 118 + build/doc/html/globals_b.html | 96 + build/doc/html/globals_c.html | 135 + build/doc/html/globals_d.html | 185 + build/doc/html/globals_defs.html | 60 + build/doc/html/globals_defs_d.html | 57 + build/doc/html/globals_defs_e.html | 69 + build/doc/html/globals_defs_f.html | 106 + build/doc/html/globals_defs_i.html | 57 + build/doc/html/globals_defs_j.html | 297 + build/doc/html/globals_defs_l.html | 80 + build/doc/html/globals_defs_m.html | 81 + build/doc/html/globals_defs_n.html | 57 + build/doc/html/globals_defs_o.html | 475 + build/doc/html/globals_defs_p.html | 60 + build/doc/html/globals_defs_s.html | 57 + build/doc/html/globals_defs_t.html | 285 + build/doc/html/globals_defs_u.html | 57 + build/doc/html/globals_defs_v.html | 57 + build/doc/html/globals_e.html | 119 + build/doc/html/globals_enum.html | 97 + build/doc/html/globals_eval.html | 330 + build/doc/html/globals_f.html | 205 + build/doc/html/globals_func.html | 112 + build/doc/html/globals_func_b.html | 66 + build/doc/html/globals_func_c.html | 87 + build/doc/html/globals_func_d.html | 176 + build/doc/html/globals_func_e.html | 101 + build/doc/html/globals_func_f.html | 141 + build/doc/html/globals_func_g.html | 274 + build/doc/html/globals_func_h.html | 90 + build/doc/html/globals_func_i.html | 117 + build/doc/html/globals_func_j.html | 98 + build/doc/html/globals_func_m.html | 90 + build/doc/html/globals_func_o.html | 2180 ++++ build/doc/html/globals_func_p.html | 197 + build/doc/html/globals_func_r.html | 137 + build/doc/html/globals_func_s.html | 184 + build/doc/html/globals_func_t.html | 67 + build/doc/html/globals_func_u.html | 69 + build/doc/html/globals_func_w.html | 57 + build/doc/html/globals_g.html | 274 + build/doc/html/globals_h.html | 93 + build/doc/html/globals_i.html | 138 + build/doc/html/globals_j.html | 458 + build/doc/html/globals_l.html | 101 + build/doc/html/globals_m.html | 180 + build/doc/html/globals_n.html | 60 + build/doc/html/globals_o.html | 3069 ++++++ build/doc/html/globals_p.html | 215 + build/doc/html/globals_q.html | 60 + build/doc/html/globals_r.html | 143 + build/doc/html/globals_s.html | 211 + build/doc/html/globals_t.html | 319 + build/doc/html/globals_type.html | 625 ++ build/doc/html/globals_u.html | 78 + build/doc/html/globals_v.html | 57 + build/doc/html/globals_vars.html | 133 + build/doc/html/globals_w.html | 57 + build/doc/html/globals_x.html | 57 + build/doc/html/group___b_i_o.html | 54 + build/doc/html/group___c_i_o.html | 54 + build/doc/html/group___d_w_t.html | 54 + build/doc/html/group___e_v_e_n_t.html | 54 + build/doc/html/group___i_m_a_g_e.html | 54 + build/doc/html/group___i_n_v_e_r_t.html | 54 + build/doc/html/group___j2_k.html | 54 + build/doc/html/group___j_p2.html | 54 + build/doc/html/group___m_c_t.html | 54 + build/doc/html/group___m_i_s_c.html | 54 + build/doc/html/group___m_q_c.html | 54 + .../html/group___o_p_j___i_n_t_m_a_t_h.html | 54 + build/doc/html/group___p_i.html | 54 + .../html/group___s_p_a_r_s_e___a_r_r_a_y.html | 54 + build/doc/html/group___t1.html | 54 + build/doc/html/group___t2.html | 54 + build/doc/html/group___t_c_d.html | 54 + build/doc/html/group___t_g_t.html | 54 + build/doc/html/group___t_h_r_e_a_d.html | 54 + build/doc/html/group___v_a_l.html | 54 + build/doc/html/ihdrbox__manager_8c.html | 114 + build/doc/html/ihdrbox__manager_8h.html | 146 + .../doc/html/ihdrbox__manager_8h_source.html | 134 + build/doc/html/image_8c.html | 315 + build/doc/html/image_8h.html | 189 + build/doc/html/image_8h_source.html | 173 + build/doc/html/imgreg__manager_8c.html | 402 + build/doc/html/imgreg__manager_8h.html | 377 + build/doc/html/imgreg__manager_8h_source.html | 140 + build/doc/html/imgsock__manager_8c.html | 535 + build/doc/html/imgsock__manager_8h.html | 625 ++ .../doc/html/imgsock__manager_8h_source.html | 164 + build/doc/html/index.html | 77 + build/doc/html/index__manager_8c.html | 1103 ++ build/doc/html/index__manager_8h.html | 600 ++ build/doc/html/index__manager_8h_source.html | 341 + build/doc/html/indexbox__manager_8h.html | 854 ++ .../doc/html/indexbox__manager_8h_source.html | 229 + build/doc/html/invert_8c.html | 309 + build/doc/html/invert_8h.html | 126 + build/doc/html/invert_8h_source.html | 115 + build/doc/html/j2k_8c.html | 9596 +++++++++++++++++ build/doc/html/j2k_8h.html | 2761 +++++ build/doc/html/j2k_8h_source.html | 1413 +++ build/doc/html/j2kheader__manager_8c.html | 488 + build/doc/html/j2kheader__manager_8h.html | 253 + .../html/j2kheader__manager_8h_source.html | 157 + build/doc/html/jp2_8c.html | 3366 ++++++ build/doc/html/jp2_8h.html | 1792 +++ build/doc/html/jp2_8h_source.html | 650 ++ build/doc/html/jp2k__decoder_8c.html | 277 + build/doc/html/jp2k__decoder_8h.html | 103 + build/doc/html/jp2k__decoder_8h_source.html | 144 + build/doc/html/jp2k__encoder_8c.html | 1784 +++ build/doc/html/jp2k__encoder_8h.html | 260 + build/doc/html/jp2k__encoder_8h_source.html | 204 + build/doc/html/jpip__parser_8c.html | 693 ++ build/doc/html/jpip__parser_8h.html | 371 + build/doc/html/jpip__parser_8h_source.html | 243 + build/doc/html/jpip_architect.png | Bin 0 -> 62577 bytes build/doc/html/jpip_protocol.png | Bin 0 -> 6376 bytes build/doc/html/jpipstream__manager_8c.html | 256 + build/doc/html/jpipstream__manager_8h.html | 252 + .../html/jpipstream__manager_8h_source.html | 137 + build/doc/html/jquery.js | 35 + build/doc/html/mainpage_8dox.html | 54 + build/doc/html/manfbox__manager_8c.html | 265 + build/doc/html/manfbox__manager_8h.html | 245 + .../doc/html/manfbox__manager_8h_source.html | 140 + build/doc/html/marker__manager_8c.html | 313 + build/doc/html/marker__manager_8h.html | 293 + build/doc/html/marker__manager_8h_source.html | 138 + build/doc/html/mct_8c.html | 647 ++ build/doc/html/mct_8h.html | 598 + build/doc/html/mct_8h_source.html | 173 + build/doc/html/menu.js | 50 + build/doc/html/menudata.js | 174 + build/doc/html/metadata__manager_8c.html | 550 + build/doc/html/metadata__manager_8h.html | 565 + .../doc/html/metadata__manager_8h_source.html | 216 + build/doc/html/mhixbox__manager_8c.html | 298 + build/doc/html/mhixbox__manager_8h.html | 299 + .../doc/html/mhixbox__manager_8h_source.html | 161 + build/doc/html/modules.html | 78 + build/doc/html/mqc_8c.html | 1063 ++ build/doc/html/mqc_8h.html | 883 ++ build/doc/html/mqc_8h_source.html | 245 + build/doc/html/mqc__inl_8h.html | 605 ++ build/doc/html/mqc__inl_8h_source.html | 244 + build/doc/html/msgqueue__manager_8c.html | 1387 +++ build/doc/html/msgqueue__manager_8h.html | 852 ++ .../doc/html/msgqueue__manager_8h_source.html | 313 + build/doc/html/nav_f.png | Bin 0 -> 153 bytes build/doc/html/nav_g.png | Bin 0 -> 95 bytes build/doc/html/nav_h.png | Bin 0 -> 98 bytes build/doc/html/open.png | Bin 0 -> 123 bytes build/doc/html/openjpeg_8c.html | 1971 ++++ build/doc/html/openjpeg_8h.html | 5071 +++++++++ build/doc/html/openjpeg_8h_source.html | 1535 +++ build/doc/html/openjpip_8c.html | 547 + build/doc/html/openjpip_8dox.html | 54 + build/doc/html/openjpip_8h.html | 691 ++ build/doc/html/openjpip_8h_source.html | 397 + build/doc/html/openjpippage.html | 107 + build/doc/html/opj__clock_8c.html | 93 + build/doc/html/opj__clock_8h.html | 98 + build/doc/html/opj__clock_8h_source.html | 104 + build/doc/html/opj__codec_8h.html | 93 + build/doc/html/opj__codec_8h_source.html | 243 + build/doc/html/opj__common_8h.html | 150 + build/doc/html/opj__common_8h_source.html | 103 + build/doc/html/opj__includes_8h.html | 349 + build/doc/html/opj__includes_8h_source.html | 353 + build/doc/html/opj__intmath_8h.html | 956 ++ build/doc/html/opj__intmath_8h_source.html | 270 + build/doc/html/opj__inttypes_8h.html | 61 + build/doc/html/opj__inttypes_8h_source.html | 106 + build/doc/html/opj__malloc_8c.html | 496 + build/doc/html/opj__malloc_8h.html | 376 + build/doc/html/opj__malloc_8h_source.html | 143 + build/doc/html/opj__stdint_8h.html | 61 + build/doc/html/opj__stdint_8h_source.html | 110 + build/doc/html/pages.html | 59 + build/doc/html/phix__manager_8c.html | 193 + build/doc/html/pi_8c.html | 1406 +++ build/doc/html/pi_8h.html | 519 + build/doc/html/pi_8h_source.html | 355 + build/doc/html/placeholder__manager_8c.html | 360 + build/doc/html/placeholder__manager_8h.html | 360 + .../html/placeholder__manager_8h_source.html | 177 + build/doc/html/ppix__manager_8c.html | 193 + build/doc/html/query__parser_8c.html | 465 + build/doc/html/query__parser_8h.html | 316 + build/doc/html/query__parser_8h_source.html | 242 + build/doc/html/session__manager_8c.html | 391 + build/doc/html/session__manager_8h.html | 390 + .../doc/html/session__manager_8h_source.html | 179 + build/doc/html/sock__manager_8c.html | 403 + build/doc/html/sock__manager_8h.html | 388 + build/doc/html/sock__manager_8h_source.html | 140 + build/doc/html/sparse__array_8c.html | 510 + build/doc/html/sparse__array_8h.html | 446 + build/doc/html/sparse__array_8h_source.html | 163 + build/doc/html/splitbar.png | Bin 0 -> 314 bytes build/doc/html/struct_c_o_dmarker__param.html | 218 + build/doc/html/struct_s_i_zmarker__param.html | 408 + .../doc/html/structaux__response__param.html | 159 + build/doc/html/structauxtrans__param.html | 155 + build/doc/html/structbox__param.html | 197 + build/doc/html/structboxcontents__param.html | 108 + build/doc/html/structboxheader__param.html | 155 + build/doc/html/structboxlist__param.html | 113 + build/doc/html/structcache__param.html | 239 + build/doc/html/structcachelist__param.html | 108 + build/doc/html/structcachemodel__param.html | 218 + .../doc/html/structcachemodellist__param.html | 113 + build/doc/html/structchannel__param.html | 176 + build/doc/html/structchannellist__param.html | 113 + build/doc/html/structcodestream__param.html | 134 + build/doc/html/structdec__server__record.html | 176 + build/doc/html/structdwt__local.html | 136 + build/doc/html/structfaixbox__param.html | 114 + build/doc/html/structfaixelem4__param.html | 113 + build/doc/html/structfaixelem8__param.html | 113 + build/doc/html/structihdrbox__param.html | 149 + build/doc/html/structimgreg__param.html | 245 + build/doc/html/structindex__param.html | 262 + build/doc/html/structj2k__prog__order.html | 100 + build/doc/html/structjpip__dec__param.html | 218 + build/doc/html/structmanfbox__param.html | 93 + build/doc/html/structmarker__param.html | 155 + build/doc/html/structmarkeridx__param.html | 177 + build/doc/html/structmessage__param.html | 278 + build/doc/html/structmetadata__param.html | 176 + build/doc/html/structmetadatalist__param.html | 113 + build/doc/html/structmhixbox__param.html | 115 + build/doc/html/structmsgqueue__param.html | 155 + build/doc/html/structopj__bio.html | 177 + build/doc/html/structopj__codec__private.html | 637 ++ .../html/structopj__codestream__index.html | 233 + .../doc/html/structopj__codestream__info.html | 513 + .../html/structopj__codestream__info__v2.html | 260 + build/doc/html/structopj__cp.html | 1018 ++ build/doc/html/structopj__cparameters.html | 1328 +++ ...ructopj__dec__memory__marker__handler.html | 127 + .../doc/html/structopj__decoding__param.html | 108 + build/doc/html/structopj__dparameters.html | 419 + .../structopj__dwd__decode__h__job__t.html | 172 + .../structopj__dwd__decode__v__job__t.html | 172 + .../doc/html/structopj__encoding__param.html | 235 + build/doc/html/structopj__event__mgr.html | 205 + build/doc/html/structopj__image.html | 260 + build/doc/html/structopj__image__comp.html | 344 + .../doc/html/structopj__image__comptparm.html | 260 + build/doc/html/structopj__j2k.html | 395 + build/doc/html/structopj__j2k__dec.html | 436 + build/doc/html/structopj__j2k__enc.html | 302 + build/doc/html/structopj__job__list__t.html | 100 + build/doc/html/structopj__jp2.html | 586 + build/doc/html/structopj__jp2__box.html | 123 + build/doc/html/structopj__jp2__cdef.html | 107 + .../doc/html/structopj__jp2__cdef__info.html | 125 + .../doc/html/structopj__jp2__cmap__comp.html | 125 + build/doc/html/structopj__jp2__color.html | 161 + build/doc/html/structopj__jp2__comps.html | 121 + .../html/structopj__jp2__header__handler.html | 100 + ...pj__jp2__img__header__writer__handler.html | 120 + build/doc/html/structopj__jp2__index.html | 87 + build/doc/html/structopj__jp2__metadata.html | 87 + build/doc/html/structopj__jp2__pclr.html | 179 + build/doc/html/structopj__marker__info.html | 134 + build/doc/html/structopj__mct__data.html | 161 + build/doc/html/structopj__mqc.html | 296 + build/doc/html/structopj__mqc__state.html | 147 + build/doc/html/structopj__packet__info.html | 155 + build/doc/html/structopj__pi__comp.html | 146 + build/doc/html/structopj__pi__iterator.html | 539 + build/doc/html/structopj__pi__resolution.html | 143 + build/doc/html/structopj__poc.html | 738 ++ build/doc/html/structopj__ppx__struct.html | 102 + .../doc/html/structopj__procedure__list.html | 134 + ...opj__simple__mcc__decorrelation__data.html | 161 + .../html/structopj__sparse__array__int32.html | 190 + build/doc/html/structopj__stepsize.html | 113 + .../doc/html/structopj__stream__private.html | 391 + build/doc/html/structopj__t1.html | 294 + ..._t1__cblk__decode__processing__job__t.html | 262 + build/doc/html/structopj__t2.html | 114 + build/doc/html/structopj__tccp.html | 344 + build/doc/html/structopj__tccp__info.html | 363 + build/doc/html/structopj__tcd.html | 438 + build/doc/html/structopj__tcd__band.html | 233 + build/doc/html/structopj__tcd__cblk__dec.html | 341 + build/doc/html/structopj__tcd__cblk__enc.html | 305 + build/doc/html/structopj__tcd__image.html | 89 + build/doc/html/structopj__tcd__layer.html | 143 + .../html/structopj__tcd__marker__info.html | 135 + build/doc/html/structopj__tcd__pass.html | 143 + build/doc/html/structopj__tcd__precinct.html | 306 + .../doc/html/structopj__tcd__resolution.html | 287 + build/doc/html/structopj__tcd__seg.html | 180 + .../structopj__tcd__seg__data__chunk.html | 107 + build/doc/html/structopj__tcd__tile.html | 251 + build/doc/html/structopj__tcd__tilecomp.html | 417 + build/doc/html/structopj__tcp.html | 740 ++ build/doc/html/structopj__tgt__node.html | 143 + build/doc/html/structopj__tgt__tree.html | 161 + .../doc/html/structopj__thread__pool__t.html | 262 + build/doc/html/structopj__tile__index.html | 281 + build/doc/html/structopj__tile__info.html | 422 + build/doc/html/structopj__tile__v2__info.html | 195 + .../doc/html/structopj__tls__key__val__t.html | 118 + build/doc/html/structopj__tls__t.html | 100 + build/doc/html/structopj__tp__index.html | 134 + build/doc/html/structopj__tp__info.html | 172 + .../structopj__worker__thread__job__t.html | 100 + .../structopj__worker__thread__list__t.html | 100 + .../html/structopj__worker__thread__t.html | 154 + build/doc/html/structplaceholder__param.html | 207 + .../html/structplaceholderlist__param.html | 113 + build/doc/html/structquery__param.html | 617 ++ build/doc/html/structrange__param.html | 113 + build/doc/html/structsession__param.html | 134 + build/doc/html/structsessionlist__param.html | 113 + build/doc/html/structsubfaixbox4__param.html | 155 + build/doc/html/structsubfaixbox8__param.html | 155 + build/doc/html/structtarget__param.html | 272 + build/doc/html/structtargetlist__param.html | 113 + build/doc/html/structv4dwt__local.html | 208 + build/doc/html/sync_off.png | Bin 0 -> 853 bytes build/doc/html/sync_on.png | Bin 0 -> 845 bytes build/doc/html/t1_8c.html | 3235 ++++++ build/doc/html/t1_8h.html | 1538 +++ build/doc/html/t1_8h_source.html | 519 + build/doc/html/t1__generate__luts_8c.html | 244 + build/doc/html/t1__luts_8h.html | 349 + build/doc/html/t1__luts_8h_source.html | 271 + build/doc/html/t2_8c.html | 1183 ++ build/doc/html/t2_8h.html | 403 + build/doc/html/t2_8h_source.html | 342 + build/doc/html/tab_a.png | Bin 0 -> 142 bytes build/doc/html/tab_b.png | Bin 0 -> 169 bytes build/doc/html/tab_h.png | Bin 0 -> 177 bytes build/doc/html/tab_s.png | Bin 0 -> 184 bytes build/doc/html/tabs.css | 1 + build/doc/html/target__manager_8c.html | 615 ++ build/doc/html/target__manager_8h.html | 553 + build/doc/html/target__manager_8h_source.html | 208 + build/doc/html/tcd_8c.html | 1867 ++++ build/doc/html/tcd_8h.html | 1383 +++ build/doc/html/tcd_8h_source.html | 770 ++ build/doc/html/test__sparse__array_8c.html | 87 + build/doc/html/tgt_8c.html | 411 + build/doc/html/tgt_8h.html | 481 + build/doc/html/tgt_8h_source.html | 188 + build/doc/html/thix__manager_8c.html | 169 + build/doc/html/thread_8c.html | 1034 ++ build/doc/html/thread_8h.html | 894 ++ build/doc/html/thread_8h_source.html | 280 + build/doc/html/tls__keys_8h.html | 83 + build/doc/html/tls__keys_8h_source.html | 95 + build/doc/html/tpix__manager_8c.html | 240 + build/doc/html/unionopj__v4__t.html | 82 + build/doc/html/unionsubfaixbox__param.html | 113 + build/doc/mainpage.dox | 62 + build/doc/openjpip.dox | 94 + build/install_manifest.txt | 42 + build/libopenjp2.pc | 14 + build/libopenjp3d.pc | 14 + build/libopenjpip.pc | 15 + build/libopenjpwl.pc | 15 + build/src/bin/common/opj_apps_config.h | 15 + .../src/bin/jpip/classes2/ImageManager.class | Bin 0 -> 2835 bytes build/src/bin/jpip/classes2/ImageViewer.class | Bin 0 -> 5872 bytes .../ImageWindow$WindowMyAdapter.class | Bin 0 -> 612 bytes build/src/bin/jpip/classes2/ImageWindow.class | Bin 0 -> 2590 bytes .../src/bin/jpip/classes2/ImgdecClient.class | Bin 0 -> 6676 bytes .../classes2/JP2XMLparser$IRTparams.class | Bin 0 -> 406 bytes .../classes2/JP2XMLparser$ROIparams.class | Bin 0 -> 452 bytes .../src/bin/jpip/classes2/JP2XMLparser.class | Bin 0 -> 2325 bytes .../bin/jpip/classes2/JPIPHttpClient.class | Bin 0 -> 9397 bytes build/src/bin/jpip/classes2/MML.class | Bin 0 -> 2025 bytes build/src/bin/jpip/classes2/MyHandler.class | Bin 0 -> 1019 bytes build/src/bin/jpip/classes2/OptionPanel.class | Bin 0 -> 2735 bytes build/src/bin/jpip/classes2/PnmImage.class | Bin 0 -> 3352 bytes build/src/bin/jpip/classes2/RegimViewer.class | Bin 0 -> 2799 bytes .../bin/jpip/classes2/ResizeListener.class | Bin 0 -> 1107 bytes .../jpip/opj_viewer_xerces/dist/manifest.txt | 5 + build/src/lib/openjp2/opj_config.h | 10 + build/src/lib/openjp2/opj_config_private.h | 49 + build/tests/CTestTestfile.cmake | 31 + build/tests/conformance/CTestTestfile.cmake | 387 + build/tests/nonregression/CTestTestfile.cmake | 1508 +++ build/tests/nonregression/test_suite.ctest | 576 + build/tests/unit/CTestTestfile.cmake | 9 + ...PEGJavaDecoder$IJavaJ2KDecoderLogger.class | Bin 0 -> 344 bytes .../org/openJpeg/OpenJPEGJavaDecoder.class | Bin 0 -> 4820 bytes ...PEGJavaEncoder$IJavaJ2KEncoderLogger.class | Bin 0 -> 344 bytes .../org/openJpeg/OpenJPEGJavaEncoder.class | Bin 0 -> 6505 bytes src/bin/jpip/CMakeLists.txt | 6 +- wrapping/java/openjp2/CMakeLists.txt | 2 +- 590 files changed, 165977 insertions(+), 4 deletions(-) create mode 100644 build/CMakeCache.txt create mode 100644 build/CMakeDoxyfile.in create mode 100644 build/CMakeDoxygenDefaults.cmake create mode 100644 build/CPackConfig.cmake create mode 100644 build/CPackSourceConfig.cmake create mode 100644 build/CTestCustom.cmake create mode 100644 build/CTestTestfile.cmake create mode 100644 build/DartConfiguration.tcl create mode 100644 build/LICENSE.txt create mode 100644 build/OpenJPEGConfig.cmake create mode 100644 build/bin/compare_dump_files create mode 100644 build/bin/compare_images create mode 100644 build/bin/compare_raw_files create mode 100644 build/bin/include_openjpeg create mode 100644 build/bin/j2k_random_tile_access create mode 120000 build/bin/libopenjp2.so create mode 100644 build/bin/libopenjp2.so.2.1.1 create mode 100644 build/bin/libopenjp2.so.2.3.1 create mode 120000 build/bin/libopenjp2.so.7 create mode 120000 build/bin/libopenjp3d.so create mode 100644 build/bin/libopenjp3d.so.2.1.1 create mode 100644 build/bin/libopenjp3d.so.2.3.1 create mode 120000 build/bin/libopenjp3d.so.7 create mode 120000 build/bin/libopenjpip.so create mode 100644 build/bin/libopenjpip.so.2.1.1 create mode 100644 build/bin/libopenjpip.so.2.3.1 create mode 120000 build/bin/libopenjpip.so.7 create mode 100644 build/bin/libopenjpip_server.a create mode 120000 build/bin/libopenjpwl.so create mode 100644 build/bin/libopenjpwl.so.2.1.1 create mode 100644 build/bin/libopenjpwl.so.2.3.1 create mode 120000 build/bin/libopenjpwl.so.7 create mode 120000 build/bin/libopenmj2.so create mode 100644 build/bin/libopenmj2.so.2.1.1 create mode 100644 build/bin/libopenmj2.so.2.3.1 create mode 120000 build/bin/libopenmj2.so.7 create mode 100644 build/bin/openjpeg.jar create mode 100644 build/bin/opj_compress create mode 100644 build/bin/opj_dec_server create mode 100644 build/bin/opj_decompress create mode 100644 build/bin/opj_dump create mode 100644 build/bin/opj_jp3d_compress create mode 100644 build/bin/opj_jp3d_decompress create mode 100644 build/bin/opj_jpip_addxml create mode 100644 build/bin/opj_jpip_test create mode 100644 build/bin/opj_jpip_transcode create mode 100644 build/bin/opj_jpip_viewer.jar create mode 100644 build/bin/opj_jpwl_compress create mode 100644 build/bin/opj_jpwl_decompress create mode 100644 build/bin/opj_mj2_compress create mode 100644 build/bin/opj_mj2_decompress create mode 100644 build/bin/opj_mj2_extract create mode 100644 build/bin/opj_mj2_wrap create mode 100644 build/bin/opj_server create mode 100644 build/bin/ppm2rgb3 create mode 100644 build/bin/t1_generate_luts create mode 100644 build/bin/test_tile_decoder create mode 100644 build/bin/test_tile_encoder create mode 100644 build/bin/testempty0 create mode 100644 build/bin/testempty1 create mode 100644 build/bin/testempty2 create mode 100644 build/description-pak create mode 100644 build/doc/Doxyfile-html.dox create mode 100644 build/doc/doxygen_sqlite3.db create mode 100644 build/doc/html/_doxyfile-html_8dox.html create mode 100644 build/doc/html/annotated.html create mode 100644 build/doc/html/auxtrans__manager_8c.html create mode 100644 build/doc/html/auxtrans__manager_8h.html create mode 100644 build/doc/html/auxtrans__manager_8h_source.html create mode 100644 build/doc/html/bc_s.png create mode 100644 build/doc/html/bdwn.png create mode 100644 build/doc/html/bench__dwt_8c.html create mode 100644 build/doc/html/bio_8c.html create mode 100644 build/doc/html/bio_8h.html create mode 100644 build/doc/html/bio_8h_source.html create mode 100644 build/doc/html/box__manager_8c.html create mode 100644 build/doc/html/box__manager_8h.html create mode 100644 build/doc/html/box__manager_8h_source.html create mode 100644 build/doc/html/boxheader__manager_8c.html create mode 100644 build/doc/html/boxheader__manager_8h.html create mode 100644 build/doc/html/boxheader__manager_8h_source.html create mode 100644 build/doc/html/byte__manager_8c.html create mode 100644 build/doc/html/byte__manager_8h.html create mode 100644 build/doc/html/byte__manager_8h_source.html create mode 100644 build/doc/html/cache__manager_8c.html create mode 100644 build/doc/html/cache__manager_8h.html create mode 100644 build/doc/html/cache__manager_8h_source.html create mode 100644 build/doc/html/cachemodel__manager_8c.html create mode 100644 build/doc/html/cachemodel__manager_8h.html create mode 100644 build/doc/html/cachemodel__manager_8h_source.html create mode 100644 build/doc/html/channel__manager_8c.html create mode 100644 build/doc/html/channel__manager_8h.html create mode 100644 build/doc/html/channel__manager_8h_source.html create mode 100644 build/doc/html/cidx__manager_8c.html create mode 100644 build/doc/html/cidx__manager_8h.html create mode 100644 build/doc/html/cidx__manager_8h_source.html create mode 100644 build/doc/html/cio_8c.html create mode 100644 build/doc/html/cio_8h.html create mode 100644 build/doc/html/cio_8h_source.html create mode 100644 build/doc/html/classes.html create mode 100644 build/doc/html/closed.png create mode 100644 build/doc/html/codestream__manager_8c.html create mode 100644 build/doc/html/codestream__manager_8h.html create mode 100644 build/doc/html/codestream__manager_8h_source.html create mode 100644 build/doc/html/dec__clientmsg__handler_8c.html create mode 100644 build/doc/html/dec__clientmsg__handler_8h.html create mode 100644 build/doc/html/dec__clientmsg__handler_8h_source.html create mode 100644 build/doc/html/dir_0890392e63c951145007159392cffa14.html create mode 100644 build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html create mode 100644 build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html create mode 100644 build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html create mode 100644 build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html create mode 100644 build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html create mode 100644 build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html create mode 100644 build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html create mode 100644 build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html create mode 100644 build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html create mode 100644 build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html create mode 100644 build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html create mode 100644 build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html create mode 100644 build/doc/html/doc.png create mode 100644 build/doc/html/doxygen.css create mode 100644 build/doc/html/doxygen.png create mode 100644 build/doc/html/dwt_8c.html create mode 100644 build/doc/html/dwt_8h.html create mode 100644 build/doc/html/dwt_8h_source.html create mode 100644 build/doc/html/dynsections.js create mode 100644 build/doc/html/event_8c.html create mode 100644 build/doc/html/event_8h.html create mode 100644 build/doc/html/event_8h_source.html create mode 100644 build/doc/html/faixbox__manager_8c.html create mode 100644 build/doc/html/faixbox__manager_8h.html create mode 100644 build/doc/html/faixbox__manager_8h_source.html create mode 100644 build/doc/html/files.html create mode 100644 build/doc/html/folderclosed.png create mode 100644 build/doc/html/folderopen.png create mode 100644 build/doc/html/function__list_8c.html create mode 100644 build/doc/html/function__list_8h.html create mode 100644 build/doc/html/function__list_8h_source.html create mode 100644 build/doc/html/functions.html create mode 100644 build/doc/html/functions_b.html create mode 100644 build/doc/html/functions_c.html create mode 100644 build/doc/html/functions_d.html create mode 100644 build/doc/html/functions_e.html create mode 100644 build/doc/html/functions_f.html create mode 100644 build/doc/html/functions_g.html create mode 100644 build/doc/html/functions_h.html create mode 100644 build/doc/html/functions_i.html create mode 100644 build/doc/html/functions_j.html create mode 100644 build/doc/html/functions_k.html create mode 100644 build/doc/html/functions_l.html create mode 100644 build/doc/html/functions_m.html create mode 100644 build/doc/html/functions_n.html create mode 100644 build/doc/html/functions_o.html create mode 100644 build/doc/html/functions_p.html create mode 100644 build/doc/html/functions_q.html create mode 100644 build/doc/html/functions_r.html create mode 100644 build/doc/html/functions_s.html create mode 100644 build/doc/html/functions_t.html create mode 100644 build/doc/html/functions_u.html create mode 100644 build/doc/html/functions_v.html create mode 100644 build/doc/html/functions_vars.html create mode 100644 build/doc/html/functions_vars_b.html create mode 100644 build/doc/html/functions_vars_c.html create mode 100644 build/doc/html/functions_vars_d.html create mode 100644 build/doc/html/functions_vars_e.html create mode 100644 build/doc/html/functions_vars_f.html create mode 100644 build/doc/html/functions_vars_g.html create mode 100644 build/doc/html/functions_vars_h.html create mode 100644 build/doc/html/functions_vars_i.html create mode 100644 build/doc/html/functions_vars_j.html create mode 100644 build/doc/html/functions_vars_k.html create mode 100644 build/doc/html/functions_vars_l.html create mode 100644 build/doc/html/functions_vars_m.html create mode 100644 build/doc/html/functions_vars_n.html create mode 100644 build/doc/html/functions_vars_o.html create mode 100644 build/doc/html/functions_vars_p.html create mode 100644 build/doc/html/functions_vars_q.html create mode 100644 build/doc/html/functions_vars_r.html create mode 100644 build/doc/html/functions_vars_s.html create mode 100644 build/doc/html/functions_vars_t.html create mode 100644 build/doc/html/functions_vars_u.html create mode 100644 build/doc/html/functions_vars_v.html create mode 100644 build/doc/html/functions_vars_w.html create mode 100644 build/doc/html/functions_vars_x.html create mode 100644 build/doc/html/functions_vars_y.html create mode 100644 build/doc/html/functions_w.html create mode 100644 build/doc/html/functions_x.html create mode 100644 build/doc/html/functions_y.html create mode 100644 build/doc/html/globals.html create mode 100644 build/doc/html/globals_b.html create mode 100644 build/doc/html/globals_c.html create mode 100644 build/doc/html/globals_d.html create mode 100644 build/doc/html/globals_defs.html create mode 100644 build/doc/html/globals_defs_d.html create mode 100644 build/doc/html/globals_defs_e.html create mode 100644 build/doc/html/globals_defs_f.html create mode 100644 build/doc/html/globals_defs_i.html create mode 100644 build/doc/html/globals_defs_j.html create mode 100644 build/doc/html/globals_defs_l.html create mode 100644 build/doc/html/globals_defs_m.html create mode 100644 build/doc/html/globals_defs_n.html create mode 100644 build/doc/html/globals_defs_o.html create mode 100644 build/doc/html/globals_defs_p.html create mode 100644 build/doc/html/globals_defs_s.html create mode 100644 build/doc/html/globals_defs_t.html create mode 100644 build/doc/html/globals_defs_u.html create mode 100644 build/doc/html/globals_defs_v.html create mode 100644 build/doc/html/globals_e.html create mode 100644 build/doc/html/globals_enum.html create mode 100644 build/doc/html/globals_eval.html create mode 100644 build/doc/html/globals_f.html create mode 100644 build/doc/html/globals_func.html create mode 100644 build/doc/html/globals_func_b.html create mode 100644 build/doc/html/globals_func_c.html create mode 100644 build/doc/html/globals_func_d.html create mode 100644 build/doc/html/globals_func_e.html create mode 100644 build/doc/html/globals_func_f.html create mode 100644 build/doc/html/globals_func_g.html create mode 100644 build/doc/html/globals_func_h.html create mode 100644 build/doc/html/globals_func_i.html create mode 100644 build/doc/html/globals_func_j.html create mode 100644 build/doc/html/globals_func_m.html create mode 100644 build/doc/html/globals_func_o.html create mode 100644 build/doc/html/globals_func_p.html create mode 100644 build/doc/html/globals_func_r.html create mode 100644 build/doc/html/globals_func_s.html create mode 100644 build/doc/html/globals_func_t.html create mode 100644 build/doc/html/globals_func_u.html create mode 100644 build/doc/html/globals_func_w.html create mode 100644 build/doc/html/globals_g.html create mode 100644 build/doc/html/globals_h.html create mode 100644 build/doc/html/globals_i.html create mode 100644 build/doc/html/globals_j.html create mode 100644 build/doc/html/globals_l.html create mode 100644 build/doc/html/globals_m.html create mode 100644 build/doc/html/globals_n.html create mode 100644 build/doc/html/globals_o.html create mode 100644 build/doc/html/globals_p.html create mode 100644 build/doc/html/globals_q.html create mode 100644 build/doc/html/globals_r.html create mode 100644 build/doc/html/globals_s.html create mode 100644 build/doc/html/globals_t.html create mode 100644 build/doc/html/globals_type.html create mode 100644 build/doc/html/globals_u.html create mode 100644 build/doc/html/globals_v.html create mode 100644 build/doc/html/globals_vars.html create mode 100644 build/doc/html/globals_w.html create mode 100644 build/doc/html/globals_x.html create mode 100644 build/doc/html/group___b_i_o.html create mode 100644 build/doc/html/group___c_i_o.html create mode 100644 build/doc/html/group___d_w_t.html create mode 100644 build/doc/html/group___e_v_e_n_t.html create mode 100644 build/doc/html/group___i_m_a_g_e.html create mode 100644 build/doc/html/group___i_n_v_e_r_t.html create mode 100644 build/doc/html/group___j2_k.html create mode 100644 build/doc/html/group___j_p2.html create mode 100644 build/doc/html/group___m_c_t.html create mode 100644 build/doc/html/group___m_i_s_c.html create mode 100644 build/doc/html/group___m_q_c.html create mode 100644 build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html create mode 100644 build/doc/html/group___p_i.html create mode 100644 build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html create mode 100644 build/doc/html/group___t1.html create mode 100644 build/doc/html/group___t2.html create mode 100644 build/doc/html/group___t_c_d.html create mode 100644 build/doc/html/group___t_g_t.html create mode 100644 build/doc/html/group___t_h_r_e_a_d.html create mode 100644 build/doc/html/group___v_a_l.html create mode 100644 build/doc/html/ihdrbox__manager_8c.html create mode 100644 build/doc/html/ihdrbox__manager_8h.html create mode 100644 build/doc/html/ihdrbox__manager_8h_source.html create mode 100644 build/doc/html/image_8c.html create mode 100644 build/doc/html/image_8h.html create mode 100644 build/doc/html/image_8h_source.html create mode 100644 build/doc/html/imgreg__manager_8c.html create mode 100644 build/doc/html/imgreg__manager_8h.html create mode 100644 build/doc/html/imgreg__manager_8h_source.html create mode 100644 build/doc/html/imgsock__manager_8c.html create mode 100644 build/doc/html/imgsock__manager_8h.html create mode 100644 build/doc/html/imgsock__manager_8h_source.html create mode 100644 build/doc/html/index.html create mode 100644 build/doc/html/index__manager_8c.html create mode 100644 build/doc/html/index__manager_8h.html create mode 100644 build/doc/html/index__manager_8h_source.html create mode 100644 build/doc/html/indexbox__manager_8h.html create mode 100644 build/doc/html/indexbox__manager_8h_source.html create mode 100644 build/doc/html/invert_8c.html create mode 100644 build/doc/html/invert_8h.html create mode 100644 build/doc/html/invert_8h_source.html create mode 100644 build/doc/html/j2k_8c.html create mode 100644 build/doc/html/j2k_8h.html create mode 100644 build/doc/html/j2k_8h_source.html create mode 100644 build/doc/html/j2kheader__manager_8c.html create mode 100644 build/doc/html/j2kheader__manager_8h.html create mode 100644 build/doc/html/j2kheader__manager_8h_source.html create mode 100644 build/doc/html/jp2_8c.html create mode 100644 build/doc/html/jp2_8h.html create mode 100644 build/doc/html/jp2_8h_source.html create mode 100644 build/doc/html/jp2k__decoder_8c.html create mode 100644 build/doc/html/jp2k__decoder_8h.html create mode 100644 build/doc/html/jp2k__decoder_8h_source.html create mode 100644 build/doc/html/jp2k__encoder_8c.html create mode 100644 build/doc/html/jp2k__encoder_8h.html create mode 100644 build/doc/html/jp2k__encoder_8h_source.html create mode 100644 build/doc/html/jpip__parser_8c.html create mode 100644 build/doc/html/jpip__parser_8h.html create mode 100644 build/doc/html/jpip__parser_8h_source.html create mode 100644 build/doc/html/jpip_architect.png create mode 100644 build/doc/html/jpip_protocol.png create mode 100644 build/doc/html/jpipstream__manager_8c.html create mode 100644 build/doc/html/jpipstream__manager_8h.html create mode 100644 build/doc/html/jpipstream__manager_8h_source.html create mode 100644 build/doc/html/jquery.js create mode 100644 build/doc/html/mainpage_8dox.html create mode 100644 build/doc/html/manfbox__manager_8c.html create mode 100644 build/doc/html/manfbox__manager_8h.html create mode 100644 build/doc/html/manfbox__manager_8h_source.html create mode 100644 build/doc/html/marker__manager_8c.html create mode 100644 build/doc/html/marker__manager_8h.html create mode 100644 build/doc/html/marker__manager_8h_source.html create mode 100644 build/doc/html/mct_8c.html create mode 100644 build/doc/html/mct_8h.html create mode 100644 build/doc/html/mct_8h_source.html create mode 100644 build/doc/html/menu.js create mode 100644 build/doc/html/menudata.js create mode 100644 build/doc/html/metadata__manager_8c.html create mode 100644 build/doc/html/metadata__manager_8h.html create mode 100644 build/doc/html/metadata__manager_8h_source.html create mode 100644 build/doc/html/mhixbox__manager_8c.html create mode 100644 build/doc/html/mhixbox__manager_8h.html create mode 100644 build/doc/html/mhixbox__manager_8h_source.html create mode 100644 build/doc/html/modules.html create mode 100644 build/doc/html/mqc_8c.html create mode 100644 build/doc/html/mqc_8h.html create mode 100644 build/doc/html/mqc_8h_source.html create mode 100644 build/doc/html/mqc__inl_8h.html create mode 100644 build/doc/html/mqc__inl_8h_source.html create mode 100644 build/doc/html/msgqueue__manager_8c.html create mode 100644 build/doc/html/msgqueue__manager_8h.html create mode 100644 build/doc/html/msgqueue__manager_8h_source.html create mode 100644 build/doc/html/nav_f.png create mode 100644 build/doc/html/nav_g.png create mode 100644 build/doc/html/nav_h.png create mode 100644 build/doc/html/open.png create mode 100644 build/doc/html/openjpeg_8c.html create mode 100644 build/doc/html/openjpeg_8h.html create mode 100644 build/doc/html/openjpeg_8h_source.html create mode 100644 build/doc/html/openjpip_8c.html create mode 100644 build/doc/html/openjpip_8dox.html create mode 100644 build/doc/html/openjpip_8h.html create mode 100644 build/doc/html/openjpip_8h_source.html create mode 100644 build/doc/html/openjpippage.html create mode 100644 build/doc/html/opj__clock_8c.html create mode 100644 build/doc/html/opj__clock_8h.html create mode 100644 build/doc/html/opj__clock_8h_source.html create mode 100644 build/doc/html/opj__codec_8h.html create mode 100644 build/doc/html/opj__codec_8h_source.html create mode 100644 build/doc/html/opj__common_8h.html create mode 100644 build/doc/html/opj__common_8h_source.html create mode 100644 build/doc/html/opj__includes_8h.html create mode 100644 build/doc/html/opj__includes_8h_source.html create mode 100644 build/doc/html/opj__intmath_8h.html create mode 100644 build/doc/html/opj__intmath_8h_source.html create mode 100644 build/doc/html/opj__inttypes_8h.html create mode 100644 build/doc/html/opj__inttypes_8h_source.html create mode 100644 build/doc/html/opj__malloc_8c.html create mode 100644 build/doc/html/opj__malloc_8h.html create mode 100644 build/doc/html/opj__malloc_8h_source.html create mode 100644 build/doc/html/opj__stdint_8h.html create mode 100644 build/doc/html/opj__stdint_8h_source.html create mode 100644 build/doc/html/pages.html create mode 100644 build/doc/html/phix__manager_8c.html create mode 100644 build/doc/html/pi_8c.html create mode 100644 build/doc/html/pi_8h.html create mode 100644 build/doc/html/pi_8h_source.html create mode 100644 build/doc/html/placeholder__manager_8c.html create mode 100644 build/doc/html/placeholder__manager_8h.html create mode 100644 build/doc/html/placeholder__manager_8h_source.html create mode 100644 build/doc/html/ppix__manager_8c.html create mode 100644 build/doc/html/query__parser_8c.html create mode 100644 build/doc/html/query__parser_8h.html create mode 100644 build/doc/html/query__parser_8h_source.html create mode 100644 build/doc/html/session__manager_8c.html create mode 100644 build/doc/html/session__manager_8h.html create mode 100644 build/doc/html/session__manager_8h_source.html create mode 100644 build/doc/html/sock__manager_8c.html create mode 100644 build/doc/html/sock__manager_8h.html create mode 100644 build/doc/html/sock__manager_8h_source.html create mode 100644 build/doc/html/sparse__array_8c.html create mode 100644 build/doc/html/sparse__array_8h.html create mode 100644 build/doc/html/sparse__array_8h_source.html create mode 100644 build/doc/html/splitbar.png create mode 100644 build/doc/html/struct_c_o_dmarker__param.html create mode 100644 build/doc/html/struct_s_i_zmarker__param.html create mode 100644 build/doc/html/structaux__response__param.html create mode 100644 build/doc/html/structauxtrans__param.html create mode 100644 build/doc/html/structbox__param.html create mode 100644 build/doc/html/structboxcontents__param.html create mode 100644 build/doc/html/structboxheader__param.html create mode 100644 build/doc/html/structboxlist__param.html create mode 100644 build/doc/html/structcache__param.html create mode 100644 build/doc/html/structcachelist__param.html create mode 100644 build/doc/html/structcachemodel__param.html create mode 100644 build/doc/html/structcachemodellist__param.html create mode 100644 build/doc/html/structchannel__param.html create mode 100644 build/doc/html/structchannellist__param.html create mode 100644 build/doc/html/structcodestream__param.html create mode 100644 build/doc/html/structdec__server__record.html create mode 100644 build/doc/html/structdwt__local.html create mode 100644 build/doc/html/structfaixbox__param.html create mode 100644 build/doc/html/structfaixelem4__param.html create mode 100644 build/doc/html/structfaixelem8__param.html create mode 100644 build/doc/html/structihdrbox__param.html create mode 100644 build/doc/html/structimgreg__param.html create mode 100644 build/doc/html/structindex__param.html create mode 100644 build/doc/html/structj2k__prog__order.html create mode 100644 build/doc/html/structjpip__dec__param.html create mode 100644 build/doc/html/structmanfbox__param.html create mode 100644 build/doc/html/structmarker__param.html create mode 100644 build/doc/html/structmarkeridx__param.html create mode 100644 build/doc/html/structmessage__param.html create mode 100644 build/doc/html/structmetadata__param.html create mode 100644 build/doc/html/structmetadatalist__param.html create mode 100644 build/doc/html/structmhixbox__param.html create mode 100644 build/doc/html/structmsgqueue__param.html create mode 100644 build/doc/html/structopj__bio.html create mode 100644 build/doc/html/structopj__codec__private.html create mode 100644 build/doc/html/structopj__codestream__index.html create mode 100644 build/doc/html/structopj__codestream__info.html create mode 100644 build/doc/html/structopj__codestream__info__v2.html create mode 100644 build/doc/html/structopj__cp.html create mode 100644 build/doc/html/structopj__cparameters.html create mode 100644 build/doc/html/structopj__dec__memory__marker__handler.html create mode 100644 build/doc/html/structopj__decoding__param.html create mode 100644 build/doc/html/structopj__dparameters.html create mode 100644 build/doc/html/structopj__dwd__decode__h__job__t.html create mode 100644 build/doc/html/structopj__dwd__decode__v__job__t.html create mode 100644 build/doc/html/structopj__encoding__param.html create mode 100644 build/doc/html/structopj__event__mgr.html create mode 100644 build/doc/html/structopj__image.html create mode 100644 build/doc/html/structopj__image__comp.html create mode 100644 build/doc/html/structopj__image__comptparm.html create mode 100644 build/doc/html/structopj__j2k.html create mode 100644 build/doc/html/structopj__j2k__dec.html create mode 100644 build/doc/html/structopj__j2k__enc.html create mode 100644 build/doc/html/structopj__job__list__t.html create mode 100644 build/doc/html/structopj__jp2.html create mode 100644 build/doc/html/structopj__jp2__box.html create mode 100644 build/doc/html/structopj__jp2__cdef.html create mode 100644 build/doc/html/structopj__jp2__cdef__info.html create mode 100644 build/doc/html/structopj__jp2__cmap__comp.html create mode 100644 build/doc/html/structopj__jp2__color.html create mode 100644 build/doc/html/structopj__jp2__comps.html create mode 100644 build/doc/html/structopj__jp2__header__handler.html create mode 100644 build/doc/html/structopj__jp2__img__header__writer__handler.html create mode 100644 build/doc/html/structopj__jp2__index.html create mode 100644 build/doc/html/structopj__jp2__metadata.html create mode 100644 build/doc/html/structopj__jp2__pclr.html create mode 100644 build/doc/html/structopj__marker__info.html create mode 100644 build/doc/html/structopj__mct__data.html create mode 100644 build/doc/html/structopj__mqc.html create mode 100644 build/doc/html/structopj__mqc__state.html create mode 100644 build/doc/html/structopj__packet__info.html create mode 100644 build/doc/html/structopj__pi__comp.html create mode 100644 build/doc/html/structopj__pi__iterator.html create mode 100644 build/doc/html/structopj__pi__resolution.html create mode 100644 build/doc/html/structopj__poc.html create mode 100644 build/doc/html/structopj__ppx__struct.html create mode 100644 build/doc/html/structopj__procedure__list.html create mode 100644 build/doc/html/structopj__simple__mcc__decorrelation__data.html create mode 100644 build/doc/html/structopj__sparse__array__int32.html create mode 100644 build/doc/html/structopj__stepsize.html create mode 100644 build/doc/html/structopj__stream__private.html create mode 100644 build/doc/html/structopj__t1.html create mode 100644 build/doc/html/structopj__t1__cblk__decode__processing__job__t.html create mode 100644 build/doc/html/structopj__t2.html create mode 100644 build/doc/html/structopj__tccp.html create mode 100644 build/doc/html/structopj__tccp__info.html create mode 100644 build/doc/html/structopj__tcd.html create mode 100644 build/doc/html/structopj__tcd__band.html create mode 100644 build/doc/html/structopj__tcd__cblk__dec.html create mode 100644 build/doc/html/structopj__tcd__cblk__enc.html create mode 100644 build/doc/html/structopj__tcd__image.html create mode 100644 build/doc/html/structopj__tcd__layer.html create mode 100644 build/doc/html/structopj__tcd__marker__info.html create mode 100644 build/doc/html/structopj__tcd__pass.html create mode 100644 build/doc/html/structopj__tcd__precinct.html create mode 100644 build/doc/html/structopj__tcd__resolution.html create mode 100644 build/doc/html/structopj__tcd__seg.html create mode 100644 build/doc/html/structopj__tcd__seg__data__chunk.html create mode 100644 build/doc/html/structopj__tcd__tile.html create mode 100644 build/doc/html/structopj__tcd__tilecomp.html create mode 100644 build/doc/html/structopj__tcp.html create mode 100644 build/doc/html/structopj__tgt__node.html create mode 100644 build/doc/html/structopj__tgt__tree.html create mode 100644 build/doc/html/structopj__thread__pool__t.html create mode 100644 build/doc/html/structopj__tile__index.html create mode 100644 build/doc/html/structopj__tile__info.html create mode 100644 build/doc/html/structopj__tile__v2__info.html create mode 100644 build/doc/html/structopj__tls__key__val__t.html create mode 100644 build/doc/html/structopj__tls__t.html create mode 100644 build/doc/html/structopj__tp__index.html create mode 100644 build/doc/html/structopj__tp__info.html create mode 100644 build/doc/html/structopj__worker__thread__job__t.html create mode 100644 build/doc/html/structopj__worker__thread__list__t.html create mode 100644 build/doc/html/structopj__worker__thread__t.html create mode 100644 build/doc/html/structplaceholder__param.html create mode 100644 build/doc/html/structplaceholderlist__param.html create mode 100644 build/doc/html/structquery__param.html create mode 100644 build/doc/html/structrange__param.html create mode 100644 build/doc/html/structsession__param.html create mode 100644 build/doc/html/structsessionlist__param.html create mode 100644 build/doc/html/structsubfaixbox4__param.html create mode 100644 build/doc/html/structsubfaixbox8__param.html create mode 100644 build/doc/html/structtarget__param.html create mode 100644 build/doc/html/structtargetlist__param.html create mode 100644 build/doc/html/structv4dwt__local.html create mode 100644 build/doc/html/sync_off.png create mode 100644 build/doc/html/sync_on.png create mode 100644 build/doc/html/t1_8c.html create mode 100644 build/doc/html/t1_8h.html create mode 100644 build/doc/html/t1_8h_source.html create mode 100644 build/doc/html/t1__generate__luts_8c.html create mode 100644 build/doc/html/t1__luts_8h.html create mode 100644 build/doc/html/t1__luts_8h_source.html create mode 100644 build/doc/html/t2_8c.html create mode 100644 build/doc/html/t2_8h.html create mode 100644 build/doc/html/t2_8h_source.html create mode 100644 build/doc/html/tab_a.png create mode 100644 build/doc/html/tab_b.png create mode 100644 build/doc/html/tab_h.png create mode 100644 build/doc/html/tab_s.png create mode 100644 build/doc/html/tabs.css create mode 100644 build/doc/html/target__manager_8c.html create mode 100644 build/doc/html/target__manager_8h.html create mode 100644 build/doc/html/target__manager_8h_source.html create mode 100644 build/doc/html/tcd_8c.html create mode 100644 build/doc/html/tcd_8h.html create mode 100644 build/doc/html/tcd_8h_source.html create mode 100644 build/doc/html/test__sparse__array_8c.html create mode 100644 build/doc/html/tgt_8c.html create mode 100644 build/doc/html/tgt_8h.html create mode 100644 build/doc/html/tgt_8h_source.html create mode 100644 build/doc/html/thix__manager_8c.html create mode 100644 build/doc/html/thread_8c.html create mode 100644 build/doc/html/thread_8h.html create mode 100644 build/doc/html/thread_8h_source.html create mode 100644 build/doc/html/tls__keys_8h.html create mode 100644 build/doc/html/tls__keys_8h_source.html create mode 100644 build/doc/html/tpix__manager_8c.html create mode 100644 build/doc/html/unionopj__v4__t.html create mode 100644 build/doc/html/unionsubfaixbox__param.html create mode 100644 build/doc/mainpage.dox create mode 100644 build/doc/openjpip.dox create mode 100644 build/install_manifest.txt create mode 100644 build/libopenjp2.pc create mode 100644 build/libopenjp3d.pc create mode 100644 build/libopenjpip.pc create mode 100644 build/libopenjpwl.pc create mode 100644 build/src/bin/common/opj_apps_config.h create mode 100644 build/src/bin/jpip/classes2/ImageManager.class create mode 100644 build/src/bin/jpip/classes2/ImageViewer.class create mode 100644 build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class create mode 100644 build/src/bin/jpip/classes2/ImageWindow.class create mode 100644 build/src/bin/jpip/classes2/ImgdecClient.class create mode 100644 build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class create mode 100644 build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class create mode 100644 build/src/bin/jpip/classes2/JP2XMLparser.class create mode 100644 build/src/bin/jpip/classes2/JPIPHttpClient.class create mode 100644 build/src/bin/jpip/classes2/MML.class create mode 100644 build/src/bin/jpip/classes2/MyHandler.class create mode 100644 build/src/bin/jpip/classes2/OptionPanel.class create mode 100644 build/src/bin/jpip/classes2/PnmImage.class create mode 100644 build/src/bin/jpip/classes2/RegimViewer.class create mode 100644 build/src/bin/jpip/classes2/ResizeListener.class create mode 100644 build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt create mode 100644 build/src/lib/openjp2/opj_config.h create mode 100644 build/src/lib/openjp2/opj_config_private.h create mode 100644 build/tests/CTestTestfile.cmake create mode 100644 build/tests/conformance/CTestTestfile.cmake create mode 100644 build/tests/nonregression/CTestTestfile.cmake create mode 100644 build/tests/nonregression/test_suite.ctest create mode 100644 build/tests/unit/CTestTestfile.cmake create mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class create mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class create mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder$IJavaJ2KEncoderLogger.class create mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 000000000..118985494 --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,890 @@ +# This is the CMakeCache file. +# For build in directory: /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a file. +APACHE_XERCES_JAR:FILEPATH=/usr/share/java/xercesImpl.jar + +//Build the CODEC executables +BUILD_CODEC:BOOL=ON + +//Build the HTML documentation (with doxygen if available). +BUILD_DOC:BOOL=ON + +//Build the openjpeg jar (Java) +BUILD_JAVA:BOOL=OFF + +//Build the JP3D comp +BUILD_JP3D:BOOL=ON + +//Build the JPIP library and executables. +BUILD_JPIP:BOOL=ON + +//Build the JPIP server. +BUILD_JPIP_SERVER:BOOL=ON + +//Build the JPWL library and executables +BUILD_JPWL:BOOL=ON + +//Build utility to generate t1_luts.h +BUILD_LUTS_GENERATOR:BOOL=ON + +//Build the MJ2 executables. +BUILD_MJ2:BOOL=ON + +//Build and install pkg-config files +BUILD_PKGCONFIG_FILES:BOOL=ON + +//Build OpenJPEG shared library and link executables against it. +BUILD_SHARED_LIBS:BOOL=ON + +//Build OpenJPEG static library. +BUILD_STATIC_LIBS:BOOL=OFF + +//Build the tests. +BUILD_TESTING:BOOL=OFF + +//Build the thirdparty executables if it is needed +BUILD_THIRDPARTY:BOOL=OFF + +//Build unit tests (bench_dwt, test_sparse_array, etc..) +BUILD_UNIT_TESTS:BOOL=OFF + +//Build the OPJViewer executable (C++) +BUILD_VIEWER:BOOL=OFF + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-7 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-7 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-7 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-7 + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=OPENJPEG + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=ON + +//Enable to build Debian packages +CPACK_BINARY_DEB:BOOL=ON + +//Enable to build FreeBSD packages +CPACK_BINARY_FREEBSD:BOOL=OFF + +//Enable to build IFW packages +CPACK_BINARY_IFW:BOOL=OFF + +//Enable to build NSIS packages +CPACK_BINARY_NSIS:BOOL=OFF + +//Enable to build RPM packages +CPACK_BINARY_RPM:BOOL=OFF + +//Enable to build STGZ packages +CPACK_BINARY_STGZ:BOOL=ON + +//Enable to build TBZ2 packages +CPACK_BINARY_TBZ2:BOOL=OFF + +//Enable to build TGZ packages +CPACK_BINARY_TGZ:BOOL=ON + +//Enable to build TXZ packages +CPACK_BINARY_TXZ:BOOL=OFF + +//Enable to build TZ packages +CPACK_BINARY_TZ:BOOL=ON + +//Enable to build RPM source packages +CPACK_SOURCE_RPM:BOOL=OFF + +//Enable to build TBZ2 source packages +CPACK_SOURCE_TBZ2:BOOL=ON + +//Enable to build TGZ source packages +CPACK_SOURCE_TGZ:BOOL=ON + +//Enable to build TXZ source packages +CPACK_SOURCE_TXZ:BOOL=ON + +//Enable to build TZ source packages +CPACK_SOURCE_TZ:BOOL=ON + +//Enable to build ZIP source packages +CPACK_SOURCE_ZIP:BOOL=OFF + +//The directory containing a CMake configuration file for CURL. +CURL_DIR:PATH=CURL_DIR-NOTFOUND + +//Path to a file. +CURL_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu + +//Path to a library. +CURL_LIBRARY_DEBUG:FILEPATH=CURL_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +CURL_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurl.so + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/local/bin/doxygen + +//Single output directory for building all executables. +EXECUTABLE_OUTPUT_PATH:PATH=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/bin + +//Path to a file. +FCGI_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +FCGI_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libfcgi.so + +//Path to a file. +JAVA_AWT_INCLUDE_PATH:PATH=/usr/lib/jvm/default-java/include + +//Path to a library. +JAVA_AWT_LIBRARY:FILEPATH=/usr/lib/jvm/default-java/lib/libjawt.so + +//Path to a file. +JAVA_INCLUDE_PATH:PATH=/usr/lib/jvm/default-java/include + +//Path to a file. +JAVA_INCLUDE_PATH2:PATH=/usr/lib/jvm/default-java/include + +//Path to a library. +JAVA_JVM_LIBRARY:FILEPATH=/usr/lib/jvm/default-java/lib/server/libjvm.so + +//Path to a program. +Java_IDLJ_EXECUTABLE:FILEPATH=Java_IDLJ_EXECUTABLE-NOTFOUND + +//Path to a program. +Java_JARSIGNER_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/jarsigner + +//Path to a program. +Java_JAR_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/jar + +//Path to a program. +Java_JAVAC_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/javac + +//Path to a program. +Java_JAVADOC_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/javadoc + +//Path to a program. +Java_JAVAH_EXECUTABLE:FILEPATH=Java_JAVAH_EXECUTABLE-NOTFOUND + +//Path to a program. +Java_JAVA_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/java + +//Path to a file. +LCMS2_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +LCMS2_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/liblcms2.so + +//Single output directory for building all libraries. +LIBRARY_OUTPUT_PATH:PATH=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/bin + +//Value Computed by CMake +OPENJPEG_BINARY_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build + +//Value Computed by CMake +OPENJPEG_SOURCE_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg + +//Disable TPsot==TNsot fix. See https://github.com/uclouvain/openjpeg/issues/254. +OPJ_DISABLE_TPSOT_FIX:BOOL=OFF + +//Build with thread/mutex support +OPJ_USE_THREAD:BOOL=ON + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Path to a library. +PNG_LIBRARY_DEBUG:FILEPATH=PNG_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +PNG_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libpng.so + +//Path to a file. +PNG_PNG_INCLUDE_DIR:PATH=/usr/include + +//Path to a file. +TIFF_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu + +//Path to a library. +TIFF_LIBRARY_DEBUG:FILEPATH=TIFF_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +TIFF_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libtiff.so + +//If you plan to contribute you should reindent with scripts/prepare-commit.sh +// (using 'our' astyle) +WITH_ASTYLE:BOOL=ON + +//Path to a file. +ZLIB_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +ZLIB_LIBRARY_DEBUG:FILEPATH=ZLIB_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +ZLIB_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libz.so + +//Dependencies for the target +openjp2_LIB_DEPENDS:STATIC=general;m;general;-lpthread; + +//Dependencies for the target +openjp3d_LIB_DEPENDS:STATIC=general;m; + +//Dependencies for the target +openjpegjni_LIB_DEPENDS:STATIC=general;openmj2;general;/usr/lib/x86_64-linux-gnu/libpng.so;general;/usr/lib/x86_64-linux-gnu/libz.so;general;/usr/lib/x86_64-linux-gnu/libtiff.so;general;/usr/lib/x86_64-linux-gnu/liblcms2.so;general;/usr/lib/x86_64-linux-gnu/libz.so;general;m; + +//Dependencies for the target +openjpip_LIB_DEPENDS:STATIC=general;openjp2; + +//Dependencies for the target +openjpip_server_LIB_DEPENDS:STATIC=general;/usr/lib/x86_64-linux-gnu/libfcgi.so;general;/usr/lib/x86_64-linux-gnu/libcurl.so;general;-lpthread; + +//Dependencies for the target +openjpwl_LIB_DEPENDS:STATIC=general;m; + +//Dependencies for the target +openmj2_LIB_DEPENDS:STATIC=general;m; + +//Path to a library. +pkgcfg_lib_PC_CURL_curl:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurl.so + +//Value Computed by CMake +viewer_BINARY_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/src/bin/wx/OPJViewer + +//Value Computed by CMake +viewer_SOURCE_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/bin/wx/OPJViewer + +//Location of wxWidgets library configuration provider binary (wx-config). +wxWidgets_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/wx-config + +//Use debug build? +wxWidgets_USE_DEBUG:BOOL=OFF + +//Location of wxWidgets resource file compiler binary (wxrc) +wxWidgets_wxrc_EXECUTABLE:FILEPATH=/usr/bin/wxrc + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: APACHE_XERCES_JAR +APACHE_XERCES_JAR-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: BUILD_DOC +BUILD_DOC-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: BUILD_JAVA +BUILD_JAVA-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: BUILD_JAVA +BUILD_JAVA-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: BUILD_JP3D +BUILD_JP3D-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: BUILD_JP3D +BUILD_JP3D-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_JPIP +BUILD_JPIP-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_JPIP_SERVER +BUILD_JPIP_SERVER-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_JPWL +BUILD_JPWL-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_LUTS_GENERATOR +BUILD_LUTS_GENERATOR-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_MJ2 +BUILD_MJ2-MODIFIED:INTERNAL=ON +//MODIFIED property for variable: BUILD_STATIC_LIBS +BUILD_STATIC_LIBS-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: BUILD_VIEWER +BUILD_VIEWER-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: BUILD_VIEWER +BUILD_VIEWER-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: CMAKE_BUILD_TYPE +CMAKE_BUILD_TYPE-MODIFIED:INTERNAL=ON +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=19 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//CHECK_TYPE_SIZE: sizeof(unsigned short) +CMAKE_SIZEOF_UNSIGNED_SHORT:INTERNAL=2 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: CPACK_BINARY_DEB +CPACK_BINARY_DEB-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: CPACK_BINARY_DEB +CPACK_BINARY_DEB-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: CPACK_BINARY_FREEBSD +CPACK_BINARY_FREEBSD-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_IFW +CPACK_BINARY_IFW-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_NSIS +CPACK_BINARY_NSIS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_RPM +CPACK_BINARY_RPM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_STGZ +CPACK_BINARY_STGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TBZ2 +CPACK_BINARY_TBZ2-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TGZ +CPACK_BINARY_TGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TXZ +CPACK_BINARY_TXZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_BINARY_TZ +CPACK_BINARY_TZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_RPM +CPACK_SOURCE_RPM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TBZ2 +CPACK_SOURCE_TBZ2-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TGZ +CPACK_SOURCE_TGZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TXZ +CPACK_SOURCE_TXZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_TZ +CPACK_SOURCE_TZ-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CPACK_SOURCE_ZIP +CPACK_SOURCE_ZIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CURL_DIR +CURL_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CURL_INCLUDE_DIR +CURL_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CURL_LIBRARY_DEBUG +CURL_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CURL_LIBRARY_RELEASE +CURL_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: EXECUTABLE_OUTPUT_PATH +EXECUTABLE_OUTPUT_PATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: FCGI_INCLUDE_DIR +FCGI_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: FCGI_LIBRARY +FCGI_LIBRARY-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +FILE64_OK:INTERNAL=TRUE +//Details about finding CURL +FIND_PACKAGE_MESSAGE_DETAILS_CURL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libcurl.so][/usr/include/x86_64-linux-gnu][c ][v7.58.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/local/bin/doxygen][cfound components: doxygen dot ][v1.8.18 (3b392af822d81ae51919feb2c2fc4c539238bb3b)()] +//Details about finding FCGI +FIND_PACKAGE_MESSAGE_DETAILS_FCGI:INTERNAL=[/usr/lib/x86_64-linux-gnu/libfcgi.so][/usr/include][v()] +//Details about finding JNI +FIND_PACKAGE_MESSAGE_DETAILS_JNI:INTERNAL=[/usr/lib/jvm/default-java/lib/libjawt.so][/usr/lib/jvm/default-java/lib/server/libjvm.so][/usr/lib/jvm/default-java/include][/usr/lib/jvm/default-java/include][/usr/lib/jvm/default-java/include][v()] +//Details about finding Java +FIND_PACKAGE_MESSAGE_DETAILS_Java:INTERNAL=[/usr/lib/jvm/default-java/bin/java][/usr/lib/jvm/default-java/bin/javac][/usr/lib/jvm/default-java/bin/jar][/usr/lib/jvm/default-java/bin/javadoc][cfound components: Development ][v11.0.7(1.6)] +//Details about finding LCMS2 +FIND_PACKAGE_MESSAGE_DETAILS_LCMS2:INTERNAL=[/usr/lib/x86_64-linux-gnu/liblcms2.so][/usr/include][v()] +//Details about finding PNG +FIND_PACKAGE_MESSAGE_DETAILS_PNG:INTERNAL=[/usr/lib/x86_64-linux-gnu/libpng.so][/usr/include][v1.6.34()] +//Details about finding TIFF +FIND_PACKAGE_MESSAGE_DETAILS_TIFF:INTERNAL=[/usr/lib/x86_64-linux-gnu/libtiff.so][/usr/include/x86_64-linux-gnu][v4.0.9()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding ZLIB +FIND_PACKAGE_MESSAGE_DETAILS_ZLIB:INTERNAL=[/usr/lib/x86_64-linux-gnu/libz.so][/usr/include][v1.2.11()] +//Details about finding wxWidgets +FIND_PACKAGE_MESSAGE_DETAILS_wxWidgets:INTERNAL=[-L/usr/lib/x86_64-linux-gnu;-pthread;;;-lwx_gtk2u_xrc-3.0;-lwx_gtk2u_html-3.0;-lwx_gtk2u_qa-3.0;-lwx_gtk2u_adv-3.0;-lwx_gtk2u_core-3.0;-lwx_baseu_xml-3.0;-lwx_baseu_net-3.0;-lwx_baseu-3.0][/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0;/usr/include/wx-3.0][v3.0.4()] +//Result of TRY_COMPILE +FSEEKO_COMPILE_OK:INTERNAL=TRUE +//Have include assert.h +HAVE_ASSERT_H:INTERNAL=1 +//Result of TRY_COMPILE +HAVE_CMAKE_SIZEOF_UNSIGNED_SHORT:INTERNAL=TRUE +//Have include ctype.h +HAVE_CTYPE_H:INTERNAL=1 +//Have include float.h +HAVE_FLOAT_H:INTERNAL=1 +//Have include math.h +HAVE_MATH_H:INTERNAL=1 +//Have include memory.h +HAVE_MEMORY_H:INTERNAL=1 +//Result of TRY_COMPILE +HAVE_OPJ_BIG_ENDIAN:INTERNAL=TRUE +//Have include stdarg.h +HAVE_STDARG_H:INTERNAL=1 +//Have include stddef.h +HAVE_STDDEF_H:INTERNAL=1 +//Have include stdint.h +HAVE_STDINT_H:INTERNAL=1 +//Have include stdio.h +HAVE_STDIO_H:INTERNAL=1 +//Have include stdlib.h +HAVE_STDLIB_H:INTERNAL=1 +//Have include strings.h +HAVE_STRINGS_H:INTERNAL=1 +//Have include string.h +HAVE_STRING_H:INTERNAL=1 +//Have include sys/stat.h +HAVE_SYS_STAT_H:INTERNAL=1 +//Have include sys/types.h +HAVE_SYS_TYPES_H:INTERNAL=1 +//Have include time.h +HAVE_TIME_H:INTERNAL=1 +//Have include unistd.h +HAVE_UNISTD_H:INTERNAL=1 +//ADVANCED property for variable: JAVA_AWT_INCLUDE_PATH +JAVA_AWT_INCLUDE_PATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: JAVA_AWT_LIBRARY +JAVA_AWT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: JAVA_INCLUDE_PATH +JAVA_INCLUDE_PATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: JAVA_INCLUDE_PATH2 +JAVA_INCLUDE_PATH2-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: JAVA_JVM_LIBRARY +JAVA_JVM_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_IDLJ_EXECUTABLE +Java_IDLJ_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JARSIGNER_EXECUTABLE +Java_JARSIGNER_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JAR_EXECUTABLE +Java_JAR_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JAVAC_EXECUTABLE +Java_JAVAC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JAVADOC_EXECUTABLE +Java_JAVADOC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JAVAH_EXECUTABLE +Java_JAVAH_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Java_JAVA_EXECUTABLE +Java_JAVA_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LCMS2_INCLUDE_DIR +LCMS2_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LCMS2_LIBRARY +LCMS2_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LIBRARY_OUTPUT_PATH +LIBRARY_OUTPUT_PATH-ADVANCED:INTERNAL=1 +//Result of TEST_BIG_ENDIAN +OPJ_BIG_ENDIAN:INTERNAL=0 +//Result of test for fseeko/ftello +OPJ_HAVE_FSEEKO:INTERNAL=ON +//Have include inttypes.h +OPJ_HAVE_INTTYPES_H:INTERNAL=1 +//Result of test for large file support +OPJ_HAVE_LARGEFILES:INTERNAL=ON +//Have include malloc.h +OPJ_HAVE_MALLOC_H:INTERNAL=1 +//Have symbol memalign +OPJ_HAVE_MEMALIGN:INTERNAL=1 +//Have symbol posix_memalign +OPJ_HAVE_POSIX_MEMALIGN:INTERNAL=1 +//Have include stdint.h +OPJ_HAVE_STDINT_H:INTERNAL=1 +//Have symbol _aligned_malloc +OPJ_HAVE__ALIGNED_MALLOC:INTERNAL= +PC_CURL_CFLAGS:INTERNAL=-I/usr/include/x86_64-linux-gnu +PC_CURL_CFLAGS_I:INTERNAL= +PC_CURL_CFLAGS_OTHER:INTERNAL= +PC_CURL_FOUND:INTERNAL=1 +PC_CURL_INCLUDEDIR:INTERNAL=/usr/include/x86_64-linux-gnu +PC_CURL_INCLUDE_DIRS:INTERNAL=/usr/include/x86_64-linux-gnu +PC_CURL_LDFLAGS:INTERNAL=-lcurl +PC_CURL_LDFLAGS_OTHER:INTERNAL= +PC_CURL_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +PC_CURL_LIBRARIES:INTERNAL=curl +PC_CURL_LIBRARY_DIRS:INTERNAL= +PC_CURL_LIBS:INTERNAL= +PC_CURL_LIBS_L:INTERNAL= +PC_CURL_LIBS_OTHER:INTERNAL= +PC_CURL_LIBS_PATHS:INTERNAL= +PC_CURL_MODULE_NAME:INTERNAL=libcurl +PC_CURL_PREFIX:INTERNAL=/usr +PC_CURL_STATIC_CFLAGS:INTERNAL=-I/usr/include/x86_64-linux-gnu +PC_CURL_STATIC_CFLAGS_I:INTERNAL= +PC_CURL_STATIC_CFLAGS_OTHER:INTERNAL= +PC_CURL_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/x86_64-linux-gnu +PC_CURL_STATIC_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu/mit-krb5;-lcurl;-lnghttp2;-lidn2;-lrtmp;-lpsl;-lnettle;-lgnutls;-Wl,-Bsymbolic-functions;-Wl,-z,relro;-lgssapi_krb5;-lkrb5;-lk5crypto;-lcom_err;-llber;-lldap;-llber;-lz +PC_CURL_STATIC_LDFLAGS_OTHER:INTERNAL=-Wl,-Bsymbolic-functions;-Wl,-z,relro +PC_CURL_STATIC_LIBDIR:INTERNAL= +PC_CURL_STATIC_LIBRARIES:INTERNAL=curl;nghttp2;idn2;rtmp;psl;nettle;gnutls;gssapi_krb5;krb5;k5crypto;com_err;lber;ldap;lber;z +PC_CURL_STATIC_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu/mit-krb5 +PC_CURL_STATIC_LIBS:INTERNAL= +PC_CURL_STATIC_LIBS_L:INTERNAL= +PC_CURL_STATIC_LIBS_OTHER:INTERNAL= +PC_CURL_STATIC_LIBS_PATHS:INTERNAL= +PC_CURL_VERSION:INTERNAL=7.58.0 +PC_CURL_libcurl_INCLUDEDIR:INTERNAL= +PC_CURL_libcurl_LIBDIR:INTERNAL= +PC_CURL_libcurl_PREFIX:INTERNAL= +PC_CURL_libcurl_VERSION:INTERNAL= +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PNG_LIBRARY_DEBUG +PNG_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PNG_LIBRARY_RELEASE +PNG_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PNG_PNG_INCLUDE_DIR +PNG_PNG_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: TIFF_INCLUDE_DIR +TIFF_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: TIFF_LIBRARY_DEBUG +TIFF_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: TIFF_LIBRARY_RELEASE +TIFF_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//MODIFIED property for variable: WITH_ASTYLE +WITH_ASTYLE-MODIFIED:INTERNAL=ON +//ADVANCED property for variable: ZLIB_INCLUDE_DIR +ZLIB_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: ZLIB_LIBRARY_DEBUG +ZLIB_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: ZLIB_LIBRARY_RELEASE +ZLIB_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//Result of test for needed _FILE_OFFSET_BITS=64 +_FILE_OFFSET_BITS:INTERNAL= +//Result of test for needed _LARGEFILE_SOURCE +_LARGEFILE_SOURCE:INTERNAL= +//Result of test for needed _LARGE_FILES +_LARGE_FILES:INTERNAL= +__pkg_config_arguments_PC_CURL:INTERNAL=QUIET;libcurl +__pkg_config_checked_PC_CURL:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib_PC_CURL_curl +pkgcfg_lib_PC_CURL_curl-ADVANCED:INTERNAL=1 +prefix_result:INTERNAL=SSL;IPv6;UnixSockets;libz;AsynchDNS;IDN;GSS-API;PSL;SPNEGO;Kerberos;NTLM;NTLM_WB;TLS-SRP;HTTP2;HTTPS-proxy + diff --git a/build/CMakeDoxyfile.in b/build/CMakeDoxyfile.in new file mode 100644 index 000000000..f346ee4d2 --- /dev/null +++ b/build/CMakeDoxyfile.in @@ -0,0 +1,278 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +HTML_FORMULA_FORMAT = @DOXYGEN_HTML_FORMULA_FORMAT@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/build/CMakeDoxygenDefaults.cmake b/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 000000000..efd88055c --- /dev/null +++ b/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,673 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f18 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_FORMULA_FORMAT) + set(DOXYGEN_HTML_FORMULA_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/build/CPackConfig.cmake b/build/CPackConfig.cmake new file mode 100644 index 000000000..7c9e9c365 --- /dev/null +++ b/build/CPackConfig.cmake @@ -0,0 +1,78 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "ON") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build") +set(CPACK_BUNDLE_NAME "OpenJPEG 2.3") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "Applications;Headers;JavaModule;Libraries;Unspecified") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "OPENJPEG built using CMake") +set(CPACK_GENERATOR "DEB;STGZ;TGZ;TZ") +set(CPACK_INSTALL_CMAKE_PROJECTS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build;OPENJPEG;ALL;/") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/cmake") +set(CPACK_NSIS_DISPLAY_NAME "OpenJPEG 2.3") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "OpenJPEG 2.3") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenJPEG - OpenJPEG a JPEG 2000 implementation.") +set(CPACK_PACKAGE_FILE_NAME "openjpeg-2.3.1-Linux-x86_64") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenJPEG 2.3") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OpenJPEG 2.3") +set(CPACK_PACKAGE_NAME "openjp2") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "OpenJPEG Team") +set(CPACK_PACKAGE_VERSION "2.3.1") +set(CPACK_PACKAGE_VERSION_MAJOR "2") +set(CPACK_PACKAGE_VERSION_MINOR "3") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_RESOURCE_FILE_LICENSE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.17/Templates/CPack.GenericWelcome.txt") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "openjpeg-2.3.1") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_SYSTEM_NAME "Linux-x86_64") +set(CPACK_TOPLEVEL_TAG "Linux-x86_64") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/build/CPackSourceConfig.cmake b/build/CPackSourceConfig.cmake new file mode 100644 index 000000000..cf8510754 --- /dev/null +++ b/build/CPackSourceConfig.cmake @@ -0,0 +1,85 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "ON") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build") +set(CPACK_BUNDLE_NAME "OpenJPEG 2.3") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "Applications;Headers;JavaModule;Libraries;Unspecified") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "OPENJPEG built using CMake") +set(CPACK_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") +set(CPACK_INSTALLED_DIRECTORIES "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/") +set(CPACK_INSTALL_CMAKE_PROJECTS "") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/cmake") +set(CPACK_NSIS_DISPLAY_NAME "OpenJPEG 2.3") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "OpenJPEG 2.3") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenJPEG - OpenJPEG a JPEG 2000 implementation.") +set(CPACK_PACKAGE_FILE_NAME "openjpeg-2.3.1") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenJPEG 2.3") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OpenJPEG 2.3") +set(CPACK_PACKAGE_NAME "openjp2") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "OpenJPEG Team") +set(CPACK_PACKAGE_VERSION "2.3.1") +set(CPACK_PACKAGE_VERSION_MAJOR "2") +set(CPACK_PACKAGE_VERSION_MINOR "3") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_RESOURCE_FILE_LICENSE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.17/Templates/CPack.GenericWelcome.txt") +set(CPACK_RPM_PACKAGE_SOURCES "ON") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") +set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "openjpeg-2.3.1") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-x86_64-Source") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_STRIP_FILES "") +set(CPACK_SYSTEM_NAME "Linux-x86_64") +set(CPACK_TOPLEVEL_TAG "Linux-x86_64-Source") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/build/CTestCustom.cmake b/build/CTestCustom.cmake new file mode 100644 index 000000000..5afda93cf --- /dev/null +++ b/build/CTestCustom.cmake @@ -0,0 +1,40 @@ +#---------------------------------------------------------------------- +# +# For further details regarding this file, +# see http://www.cmake.org/Wiki/CMake_Testing_With_CTest#Customizing_CTest +# +# and +# http://www.kitware.com/blog/home/post/27 +# +#---------------------------------------------------------------------- + +set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 1000000) +set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS 50) +set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 2000) + +set(CTEST_CUSTOM_COVERAGE_EXCLUDE + ${CTEST_CUSTOM_COVERAGE_EXCLUDE} + + # Exclude files from the Testing directories + ".*/tests/.*" + + # Exclude files from the ThirdParty Utilities directories + ".*/thirdparty/.*" + ) + +set(CTEST_CUSTOM_WARNING_EXCEPTION + ${CTEST_CUSTOM_WARNING_EXCEPTION} + + # Ignore clang's summary warning, assuming prior text has matched some + # other warning expression: + "[0-9,]+ warnings? generated." + # Suppress warning caused by intentional messages about deprecation + ".*warning,.* is deprecated" + # java also warns about deprecated API + ".*java.*deprecation" + ".*deprecation.*" + # suppress warnings caused by 3rd party libs: + ".*thirdparty.*" + "libtiff.*has no symbols" + "libpng.*has no symbols" + ) diff --git a/build/CTestTestfile.cmake b/build/CTestTestfile.cmake new file mode 100644 index 000000000..09e8841f8 --- /dev/null +++ b/build/CTestTestfile.cmake @@ -0,0 +1,11 @@ +# CMake generated Testfile for +# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg +# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs(src/lib) +subdirs(thirdparty) +subdirs(src/bin) +subdirs(wrapping) +subdirs(tests) diff --git a/build/DartConfiguration.tcl b/build/DartConfiguration.tcl new file mode 100644 index 000000000..94e572508 --- /dev/null +++ b/build/DartConfiguration.tcl @@ -0,0 +1,111 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg +BuildDirectory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: jiapei-GT72-6QE + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: Linux-c++ + +# Submission information +IsCDash: TRUE +CDashVersion: +QueryCDashVersion: +DropSite: my.cdash.org +DropLocation: /submit.php?project=OPENJPEG +DropSiteUser: +DropSitePassword: +DropSiteMode: +DropMethod: http +TriggerSite: +ScpCommand: /usr/bin/scp + +# Dashboard start time +NightlyStartTime: 3:00:00 UTC + +# Commands for the build/test/submit cycle +ConfigureCommand: "/usr/bin/cmake" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg" +MakeCommand: /usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -- -i +DefaultCTestConfigurationType: Release + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: /usr/bin/cvs +CVSUpdateOptions: -d -A -P + +# Subversion options +SVNCommand: /usr/bin/svn +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: /usr/bin/git +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: P4COMMAND-NOTFOUND +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: /usr/bin/git +UpdateOptions: +UpdateType: git + +# Compiler info +Compiler: /usr/bin/c++ +CompilerVersion: + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: /usr/bin/valgrind +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: /usr/bin/gcov +CoverageExtraFlags: -l + +# Cluster commands +SlurmBatchCommand: SLURM_SBATCH_COMMAND-NOTFOUND +SlurmRunCommand: SLURM_SRUN_COMMAND-NOTFOUND + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: 1500 + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: 5 +CTestSubmitRetryCount: 3 diff --git a/build/LICENSE.txt b/build/LICENSE.txt new file mode 100644 index 000000000..e8fa41040 --- /dev/null +++ b/build/LICENSE.txt @@ -0,0 +1,39 @@ +/* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2003-2014, Antonin Descampe + * Copyright (c) 2003-2009, Francois-Olivier Devaux + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2002-2003, Yannick Verschueren + * Copyright (c) 2001-2003, David Janssens + * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France + * Copyright (c) 2012, CS Systemes d'Information, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/build/OpenJPEGConfig.cmake b/build/OpenJPEGConfig.cmake new file mode 100644 index 000000000..79517390a --- /dev/null +++ b/build/OpenJPEGConfig.cmake @@ -0,0 +1,53 @@ +#----------------------------------------------------------------------------- +# +# OPENJPEGConfig.cmake - CMake configuration file for external projects. +# +# This file is configured by OPENJPEG and used by the UseOPENJPEG.cmake +# module to load OPENJPEG's settings for an external project. + +# The OPENJPEG version number. +set(OPENJPEG_MAJOR_VERSION "2") +set(OPENJPEG_MINOR_VERSION "3") +set(OPENJPEG_BUILD_VERSION "1") + +# The libraries. +set(OPENJPEG_LIBRARIES "openjp2") + +# The CMake macros dir. +set(OPENJPEG_CMAKE_DIR "lib/openjpeg-2.3") + +# The configuration options. +set(OPENJPEG_BUILD_SHARED_LIBS "ON") + +# The "use" file. +set(OPENJPEG_USE_FILE "") + +get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +if(EXISTS ${SELF_DIR}/OpenJPEGTargets.cmake) + # This is an install tree + include(${SELF_DIR}/OpenJPEGTargets.cmake) + + # We find a relative path from the PKG directory to header files. + set(PKG_DIR "/usr/local/lib/openjpeg-2.3") + set(INC_DIR "/usr/local/include/openjpeg-2.3") + file(RELATIVE_PATH PKG_TO_INC_RPATH "${PKG_DIR}" "${INC_DIR}") + + get_filename_component(OPENJPEG_INCLUDE_DIRS "${SELF_DIR}/${PKG_TO_INC_RPATH}" ABSOLUTE) + +else() + if(EXISTS ${SELF_DIR}/OpenJPEGExports.cmake) + # This is a build tree + set( OPENJPEG_INCLUDE_DIRS ) + + include(${SELF_DIR}/OpenJPEGExports.cmake) + + else() + message(FATAL_ERROR "ooops") + endif() +endif() + +set(OPENJPEG_USE_FILE ${SELF_DIR}/UseOPENJPEG.cmake) + +# Backward compatible part: +set(OPENJPEG_FOUND TRUE) + diff --git a/build/bin/compare_dump_files b/build/bin/compare_dump_files new file mode 100644 index 0000000000000000000000000000000000000000..99c04f9c5c3cc73a5dc176f85860a6e40ad263e1 GIT binary patch literal 18424 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 R^&hN70aAa)36tRt`yY_YCE)-7 literal 0 HcmV?d00001 diff --git a/build/bin/compare_images b/build/bin/compare_images new file mode 100644 index 0000000000000000000000000000000000000000..766f44a3c8d65021bba0ca8a556aa394c52ff2ae GIT binary patch literal 113528 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
  • xHL)`~afu~*kBFsSTy#PkS+RK@dGnJ@*w+K%Wy1gFr`RfIjy2(Srq{%l z{#_VsdV2sE#8P`=o3aJf6<@nP?>c{)*xecE)>3b zYx%DbRq~pY^yD5q5Q`-)cIwLWUqn8a*(=Pjuj}UAXOM^Y*P?5Q#ZrsgQgv%*#L{J_ zvd&_uX!fj*baZWOWo%Oqgv(?<11lrCI}_bTjb>(|Jr_8!#+sg3I@%UXy+E256irwD zl5}(%vNj&`3(|t3JJvX&6xS}2J^QbH`)0->_jSZl17eNQo>*$@lcdXjN#{>Qx0S>a zi@Th71sIKwuD$m$b&Ve_yujlG@DQc)WfGO1l${YfXQ)Vz?r}Ae(LKg)y7?(8iLUc= zsP9;6(|Y!*?d%7iti;+&_KPesT|P%rw?4@ZDZ7uE)8$iij+mPx#vIdBjtg|^`EKe; zre3O2N9fcgZfZAEPgSXJFI2M3b5o~GLFyot+M`qNbW=N-nuFUys?9pJ$4x!&2BiK{ zrLNMcx4WrTHzM^%D)j+L)mk18Et|A?61%J50@+M-FI!Z)W-n}-RdxD>H&JXV+KZUp z_B5EW2G2m=WJlegHg?$gizKZ{ryXh1*g5AAm;2bT8g=*-%lda}9og{7K31?YH-C>y|^V2}F#$*R> zX~k<{s!VbRS|VK(qOl~HU(%OuuD}S7?kbl0ZT9D{quPW;Y&yENF6k&scqt{LtLOr$ z4>Xtt}E%)}2kZhw|uvc1ol#e1qLWoKf?Rc@wy<5RlD8cjt zph1v@vy9;gil65G2Gga5KBOu(8?oTG)dYn7B$a7qzqpcTKbe;GlaxZ!^09RF@O1Ui z)FngvAxUATiqs_)2b^g{>XH!$oN0LKlHmuOsVa3zmCj@V1y$F;3jN^Mm5%ktDqZR7 zipXP|QXQscuGvff8DLv@@=!ZO`puwkJSNHNvXWxy*f>w$vTxmEx19SLHIU>$t-5V}>MKR`KbwP(*NJ=>bO@T}KS~9aHicuwMkX!Y!ok5H zzNNcwQ9}i@15VIFfD^dbLq+dd9mElcrKO+bpKLv3oW6U7rF%ma6OM1bWk=z4@I>9I=7~u8cCG2x42>M)+rw(0s`QF(IDGmo? zg<996*UkPHL=;i-gHW90N>A#w0q_q|l83DR-J|AvA&(k02?!xl0~HAyH4`tpE*>^& z9>a%RF_ij;+8rd|fXls&6q`5(}Os>wfMsw)V)e<@LK zVL4!Y^sV?HnZxG?Am|M@>|s(HKPgkm$0y6BIfjcp@?w1nBkz2~f|!%EyWQJpJ)<(o z89FADoMqD5ZoMFW!Q2b(yZ}oQU72Y2{0kOdfTgG%GdSq5h**Ysy-+ompiNNYf0wkH z9kNM`WvZ*JV5XW2VJ2~F_37U2SSM2+x%EUQJGt|*hMrE&LD7lq#fjbzMjpiDN(bmM zUG|G{H&4JKAcpZMsA;=$R)2(C>M}iSz*?s$R z&tSevTrf>BT#Go(un7#C$gqorSPUlvyA6Aa84O2Oq_F(QU%~P&#qyh)GHD>O!VFw z|8Tne{c;9PfV9r%I*C4vFY-1xxF(!BwhaIEzGvC?!@%4mvIZbY{8{{ zk3BK{0xXoDnf;eE1SdUgD+vLROYpxdvd)RD>p0b^b{s6*f=#PpvzTm-x@iI{O@_KK$Yr0}-tgWyI zQ0;|SKl`2%C#8I9BXjPHBp(5~OqYLi>WR*HA&gH?mwyqVRFaQZ@)xD$S}?(uhDXp1 zk1GEmXxksK1-J(SBqSGRA!MQ$-}|`IVlAes+F{bwl~}YJ1unJVLLkF+`F1M%WD8hk zuXc6654jQ>rQt@Ftp-72<1Dbo(%Ux>F#IM%B5@?;g>`<19bQ04r&5Fy{e)GTkaHg{ zypwMXSUMktFxvn%L7Nmg_Uom55u(yfH9GxFwdZsYhIkZgWd_Q9i}~AG`1<1TcXKrmDrZY!X<~5*R!^}xl zUI`5ot&co0xkMYNVe;wvZfo@!5J0TBwR)_R`>ZrrN}tJo_s_;$++Xfev1{~k8|x;X z>EzBMi%e7+5-2_0zDuj6@c2L;A!M?D0e_fdKqM)Pl9_0S)~L1QfS zN!`VL%AgZD>8F1bs+;?=HoDk%r_u4JO6<;n3@=L+L_5K>lUdF*GF%vtq0p*gBu@t0 zNO?M#7+wo;gi2g3nfhI43oHFB2(eqjY=3Fljn_3 z;&B4l!xamc2EO$tsJwIw)4ZjDN~oLKI1~%vvDD*yerh8VtO;b2BM?cAGs!C4k#Qz@ zioOF_InTST_HJV?={Wapl)jr8dAZ}&$dSp(2!p{C9gW*tyxUpc?R;~KSu}1jN;tTr zlS*ig5)Zx3hbi&HvhP8g$h{xWwx8_z6wErg2Xv2TN!=*VHPZS)MN$|wZscWR;}xgN zrUDg=B{E~LpOo4(0nZ@$G;Zny^~f-r05d#DW5+6w50V{`WkZzn^-wH^{{`zjxy;SN z@-xZPkxH}W(J&=zx|vZNdN=KqIR}AFvKQmptC32%KDmNCX!Yz+@JI*`3{F&Hyabl~ z?8!$!lfCngSfcr=TjC!O^p!~A4yeShfJYxC{_77kK8*_VtaeMDfm|^>JwQBQ*y(DO z2&|=_tl+@X8Pdus)cb^gKF**r99L{E`y~l zMLQ%uM%^3{KS|vjhTi6E_BNevFEWc6Z$tSyPaV2O?S9Ig6Pr&@H&&r&wQhK=nyIl> zVEs!PM{}G@v|FbwoSCUEt2NdYOG(}8 zhM(9xHr+^HQL2tss@|e3#fzgYbqd7QH6xZH6P44lRFBLyq|bq+Bs(mX8)~vDOZ8Fy zLK*xD7(|w}B0p3YFN3A7{x7lAd6dz$l!TO}?)$x1N@DhBDIpR|#cRbZ-E zHU}TPJ;!QDCFg_U$@O%@YE_zK5#&j&k@@`1@zcOcLK1J7Zhi6v8N7;rc~a)la(NoI&?P-4X1# z_eVzq(aZ$w=|(Z3c@`lLx%Oj)KC<(1m(5&pGLJ#3bVY}hTLnM3#!fEC8DmaY;)0~f zcz#6<&`tNc{&MYq!e72JSeiqTY@FTD=|W@~-nT5wS&XSG%cyC_cQf6P<%m9I8Btu8 z5q-hW0HBa~6>WW3iT{$(7}?-$Itxu~)Hp zHo8&~St|OLr4J{paAoOmWjUF$+zwe1A}8l#)CAqrc!`KS_=SJbRZJ{!AUhcA!Qcc~ z7X95U@hH{%pbP%jZxD<1HN>)=Ke-1bWIZUAXzTN_@aHZ4>X836^k^9d{2A?PHPCI`YSJQT4f(5{P-qs;iJ&Y6)>QUi2aHDQ1=CC^vR)J-FB$~0PqdrbIv2{+TAs*}L8YI|yg zF=qI!W^(lM^E73%DnZ830P!rBc(V}e8JG~O=@;s+f^|qPGb3X+-8BX_r97@9a*}4K zD40-{=lBYK5mGZtEXo4;RC%L*2Rl87Uo4;$&H>vfIWbJO0+Q!GhSCxn>Bvsxp&`}2EFH>6XUQk6tiS2iD7Uj`yEA0?TQh5X1`kzQ-NZ{p4mSt#A-%{ z4)sFTLMqvcyr{Wqxu}rpQ0H_p!3EHVEAlmp{5(Z2Aw_3H&7zE?P!1WWL; zf&@#%yt0?#0ed|wELBeIH&sDJpUJ)t!KVC&y&-cJB(R3eA7T^VljTq`dl@LzVh)Fn zd|6YzqzR(Vr^GPaZ+<1kOwqxu%B;8O;5ro~a}u|zpi~}$kEp!o>D14uU`z);tAgD+ zI7bD0bns>s?9johRj^YBFGeu2ktRz|@fq&EF}XR0faElEYUE7B@dqkK!kg3PpKo#A?q1YK8?Y{3l!IaI&o+`~_b|0E&$70}Ke+u&KNR`GCQS`=4 z93RatNawG|y%Db06$W$vg6zFonC*-FjFAGy+x?86B-?b&mel0oX2-PJFpu~)V@}+7 z=7bPT5u>euMX;3~#`k%Jog19lO+)AnlfcsaJqVUNYWlAX_;tUB~!Jp{N50m zl*Pr_qFIGq->BQ;7wZWrx@IlR?B0zq22bp+#ujzDGSc9>!^cOrM3!;V>4g^_i%Mcp z^+MO81?9LnsVT-px6nr=dsq`tDX6pfjl4BZ?)uSri1j%&+Yu{4Zxp1Tcc#bDH#hzI z?bIH>BemzJSe!i%^>d~l`Zy!X<^1;$&g3gDiiw$VR&;i%o4`tM6|C1AOVwe0w}y3` zEohx^7;GTZoA~Da65XrLm|BdT@O53tM3;ucI&AmqmXDF~Vn8OE73aJmz*Uq$L1sH4 zUIQV_hE)p7*Xm|v3w2|x49PBKBATV+X2o&8X1pO(EUEp(rUAw!3%haPn+3R8JRS5sjs&->w8`EF63k7JS0ZB=}a^0RKJT!sfdNbU4$ z$R^C%gsO&$P@)CUbrs9T7}YC6scYR(ViNCBCZgT6dN*plEpq?m1%}AN5U8!1?$jiX zO;DUZNk7~}J@e-x5>;e2@1pAX5WI%9)=UE2qv&VShox(_mpp_07K!K{7Pbe4buZZL zS={yf)Fk#Q-JbK~*5~}wMH26YC-@QzrFWS^VHqiOixf)1`D&H&nhl`Ftt|^U*y*%Jb{)4)SOfh0fr% ziqxdF;MM6h4BWa6gZHLk@V>BNbcj>HNYV=Ez0wV&YtRB*6Tpka1Z#EeX}6U&A3|;{ z<|nTR=WYz;CugGw;co1s$O{|G+2M@^&7+szpBt%$On4@q{$nh_Qz<}9)oGxYDrh!n zHJe@<#4Sl^U);A8k~}c6v&5w+4WlTxDd6$JBFb!vvM`DPHbr?DMX60OFi3%!yCvwL zAc0CwM0;6B-LXVZFFJ(Y$b-)kmLn$7Gf3v{A1Y$Ny|F}XH}+%0RDKorDk~-ycb7yS zcwM<$xIsaw4GQAY$OBJ%#6jDFSlbrF10oMR>JbOc3}S6&5SJ}lsOvOnZ4hc}gRp!N zp3O_;2aOIwZFCS0Ty&x)4BCFLw!PPFxqZ0nmMfL){ddcOuG59OC3GF&QUpy0zlQ7{ zMbKV*R5JWQ4eN=Xx0FA8Ld~P#4+F#>9xNic_ycx(g!==w*sD-LA$_T>J zMJH*(pfai=K-hjiC5;@E<~=x&IpBy_5wIbOL?1?x$El;ad`{~`Yc~* z4bj(vMQx5e5q+&ATgLvU)RWyEcU|WofRUn9pVe*pte&vQU15<~U+Ell0Q%qsp^EBc zy1;Xr{#2H(*@f0Km|#IQ2D=Uv?JgKaj~3~gELyQeZ9A8u&L(zVtV~Gf>O^Owo$FZT zT%E?bepy8G-RNvO{m!L$?^a4B7I&hvNf*gaRN(J{baqc^G!msWc$F@?6j?AL%BbPi zfO4QjN6;W>Kb}G0p<)oPk^?6}lB&6qPF?4m^Y;?2v3KrX@Jo+lD{x^8 zMzoc#+l)~?wcQ`LDo8J@8h-sv8qkv1#@5NCar(%7c9ohmdLz^9F4d&bDVb*Xq9#pg znCP%OPLsA<=d;Hvlg2u1(G}7HFiTe*1k{3uo`auD*X-D|vz*tSO*_kY-Gzl;UbA>I z!t3sm=Xu#P_?ZT2%pCSsdc&T2qdL0M412d1H|E|=Pk5eSdDa$41*u1;F?=l{2)NHTB{=h&1dtj4;KX4T4GT`L=Ot#s&G*`jNuQ`gEiT`OIv6;z1l z)-J+z-P#@IJ($s{-P*XBZBLVC+{`wjNi%L{Th64>%{sK3b-<0N&_Hn`ajV^0aMzF6 zqqTWG8fUSLF+G~zY-u-2Qxg1W2c1N(BEnbN2EgELC2pOB>9vC-rEZ;ssmGRSsUUR% z70^ON1+cjpb~~Od2iMr7efiX15+oTuX8IWZ&-%pXm2x_&gmc zVWqLVwK(pD0)6|+Gp1Gif8#6mh=`#C9Zf++WVJ;&WCc^jUZ^J5UOvw{#phYi71#BU zd6uj24jDVyv(kTYI)d$hJG9=!AELK-@G*r%@XCR9hvqJN61q`ELO?+F3-toayyS(;**s2$I&HV({g-NEM0!& znQGVJb~>tLv>B`eB|30WPbT{&CUl^C9$EG@M4!Rsm4@gqBTv*k1DmW#RYunF zt&C`^+&z!GmQ-c^;!Y>BtOfFb99?oIJNpSJfoC7kzT1(vBd!>$G~p>uN|VQ^$v9V& ze@gbcPE=bP*rJnBh9SEjtOYx~vT!a;^7a{_CiyE%lx#Tv2IR^-tH9L6mLs-)@zWKH zP6d}X&BZ&Rri)`{!Xa!%R~3~C=Z6L?&@?koUS`n zw>?$Um728evQ)Iw=W!GuK2**G8kktT&Goazd?bv8zom<}b9cy+vmr%8bkEl4-(eIk z;6(p!tSnVRQ-8y_-x;|R#7)Z^Pge#%!_}&qS}mgNh;nkrDt8X&_c6^clKc@|b!+rx z^y^ae%YmX#aY=b%J>FcyVt^)o-6cj@(oEiUCR{K^iT1As6nej#=@F0j-T>LYpDDfT?$Mm~ zxFnEVOtZs~+^{wJN(H7TPW&*o<3wjwL-ZA$?Ug{b@0e_-ic97%Y08gi${*j9Kej1< zbW^^vDSvoV{;;O}peFOExO~BB$~Ab@nrhVZ=^8hIlemW8t()zmJG69aV+98) zyl8-n&#m!N0V2T~mQIqa{b6vYlYZu>%#)nVtci`hICa>rTE25MV1s+R?o;}{|IJICu-MqRzeunLBsMYuW09O&53Xd6tyYN4pXw!YdkGTp%9l=59K^ZO zNe9&F`eUwOB3~AQVN}#`iJFKgya0l~$nNBhL$0(0gJ;i_WMgMEfGFd@E`3rh>kn0; zqh9TgN;gujzDjKYzf?uKk;3*x$EgJA=pB90t<-dMroQO-tUFba5PRUw4O(fum_M@o zw-|M?Rg4UpSzocn##?xi(@pMujCaW?jKKbXT$}=r-0&mgkz=u8(5;c7tPv~{NJgxu zn3}3Ai02x;P^29=`f=$bwZ%)9>cu4ta9G*SR~Z^?wUhLio4%=}i)-KMX3CYiq{2{E zmnn8Mim;=#H9IVZsv;+srISKHeu}`yZzx_}K}J~4$&JFhqj>oPL9C%wshndZSqh+F z9FUV2;wFEzk~H#|5U9w+Mp_te&<#R+$RtN0AdLS6H-!e15k><&ju#C+++lIlYD7Y# z%hAi+d#dX7e4woM#~@LPv7h)7Y6U@Iir{fzpn9MbT9{Ybv0Gr(kq|QN?D(ZpZ4qMa%Lmjrf1AWaqaoM?e8<0J5`CC<} zeT{NDY?Sj9tbo__l((~AJzoNm`?spo5KUi{{+?8o_=#`#ToaPa#A8c6CLRr#?biE& zS#-661JU~SzbFB+e`OV>@DL@jIP275@?BmdV%F5R@3CbZ$(myB+@t8u^-JBkpNMUE z?gKV^a~(w8O=?YSDoMFVayjR3uEX0XI#Hf3htgG-fpD}(h<+%XVKv_=!K4ymqYsUL zmu4yd+DO&7E{04B)DFK5p!NY*aGtlHh_-U&paGB0u{msfv^DaebaSR4Y$J?raf`*~ zH$Ht=o7oWKF2RiSjiu;I91FI;+3C-yI;vDXN)P7wQ1;@`i*u`sf1 zf^_mm8nrD^S;oItja#!{!-nnGB9({7-*TMSBA@ESrtH@uM`Fh93eRm`CwM{M9y|j` zWxJRZgT;et+0YjsX>zHkVmW&}vTS`IC!>nx+?9#0f=%$^JcgQdbQL!8VdGjyCfXvg zN67%BYFipx4UV?cFFRo8SxJ{?fFtqRzgs1XKIKWIyMcn7J%u^fdepiXD4^a|NZpn{ z2KJ7wp_SLVcWu0Di;OMbjdMO0MGz|Ai8~Ut<&UPEk+IRXMT3>Zh!pzQA~!_4UyGdH z(GdLxrgC^_iK`#2{O&u_826wt?s4i)f>U>nV4s1;I0e28*OAUL`-N2)1It7~NW281(FK0|V3@3-m)=X?{>kmzdv#_Bpmo1sA+iR>E|v^%~L zaL0TL3=i(UNOk{Mv`y0ySqhRuF!$Wm`9Q7$W=Pp7nt@b|xl{ePnbbmOfJ6uk$ zNm~&E2J2zh*FBle3+HsA%jx?br(jilMRTG<{r$L5?S2dEsT#dis^U!8e6Li+aH)!a z$bBW}Bc_VvURTi>ZWSqVRf~#TWvvi$vJ6(;Rgh1+>(bpl)FicW6z~|?4G$Bu>h(#@2v{cd|~SOj*;J$eDuz>ay=leJsoQy`hxh+(vGBRAGz(c&z*@Ckt~ z318-DeEdAbej?Ub*M&cib9uuJ5Ho!OM{8iYt-ZxAz2Q;tOKcgJ=p7vA@dPZKh^LG3 z>GFRLQ?B6p>B@W=!KJL2QR1!1bC7=w&Zv^8*viNgmzA%%@Qk`aD&>rX z#AA+F&2m&Sj=^^IK*@hW$(XxR!wVm}o^I#4ZIT$=k{d zP|BRHl^KO}4LD~(nPILncL}_cWx;g4EbHJfGqnWdWf6O zwK~1-a&o$+NfGdchD|;awepezij1yMtXOY0E3WZ*tX8NctU^|b#IRakzmbMNqi!(p znHXr025M=UnP+ zvTdUK@OHi!U(BOrE^cDHBUaL6x-nTpR?QRbb-eUyk%!;H0)l14(w*32Fql zOCncC-^wjTpsgOo*;2xjSX+JH9lUCi*Gc}Bp*d2sCe!s zU#i3%hLRS2mpfK<#=-y|rCv2QlLGx+4E-u-N>263Bv`nK3}A9DUrX4mr09?+Ir_?x!;Ze9dE$c(dPKUJJQL)3q0F%L=R4$`cQ6$W z>I|MAuK@qFK9@_WgO`ZZyUnT1?R8)jOFb*qmpus#b#8Yd>FY`+S|0tRR6t!6dJd#a zif`eH(tk9A(o-_>fIfdu$&|?+4uNv_%aW%)1j<)ycoo9DeO!!SXezmy0;%(((tHO` z&X`h57lWSUv+;cSlVfm6KTgVYW2>U40uxfNOh|R6o=d&izF5@P)9<4xxnaaE?=D~o zIt#szU#ZY#AgR(M5&Lm`BN;pqp1A^dxN&mtr)!%$RrnBxxgVb5SRd}OvO-T5?g~BM z(0WydtYK(MIBy(@X(^9GeR3s&x$mJo9Gs0?yrz?GCJBZJ3<;^^S|R7(hU6FV7j;G( z#2Qt|zf^H1ZIF_~!%*E>P&!iG#|`zWyI{@Y4_`zEySje>S)iV&?)QBG@^K$s;zyLP zB(aefCz6_oE(j-rGcGOfW8>Knt7^Q&MIPRSdyDa+h{g2j&m+zIoXk}y!|ELp(mSy8 zq>Zs8I9?(m4{pctB&t7wJmw8+?bLDd7t5eK_$T0{0=so%!N59lWQAKF^6y z&2uHRm;JzD@ge5+a4aWEQPJ%Cr5#r4lo&=t^#-3g*0oBGb;ZUc>=@1uBw5}N1NnYi z*ti8(pSwS=O&~8i{3f_vfr$ zS5CbXt3fHEL_I(ID(kfmQPJRlL|ki6tvgzzZc;K(><^=zkl>(7G^v#1c! zm+r1+51ZQ9iPnc9ssk6_5QQcsiE5Z>$4VXOGuahQ$N>2`Ds)$5ysX0Xxd+<&0 zrrhC!Fg`vZXB}KPS;mkbXzEj3>NZk;k<@=22=017)5FGi#HW(GAXs7}|2p^KFiPGG zy6+T}{Yh|3H#6McV|RC_K)zfP*`c)}Rng!SG;5@{ z51!4jDwDklbp^Xdl$`9Gb3Y;qfK^CVsmab&WEiZPsa|36KVyu)_!)uXuR%<1w8i{b z&HT3yi40e2+hOBuSz!U!gcUF_P{3aB&UK2Bl=Sb_1uO~_z!`;Qz*l(Il3#;Xidta6 zFR_5ztO8Ef1q=%mP*GSwQ&<641qwKi1q`$bI87I@wo#sjB&Tv5gbOIRYiaPOumX0I zQ-KD*)4Y+t{T$7Eitw((0S)51TdRkc;F}&Wxp>3fL>KS|=9r*!yx*VWSUbn%R*sMA z9DA2b6?2 zc4ZiM}sHs+qITyeYI%d>v;nm3|qG< z?V+`ZQGHKIWZ6n&SAnv~GQM0CkP#C3oc^nr{P|2!H^fL(icbW(ebq#tICW!k=Sx)R zVDRAQz?b$|k7vJ}8cGLU8b3f=lDAF~2VixO8Ibq*@>WU4DTq~uR(%8%UdPR1yA->T1h z;scrK27|dU$;I5VWXWOj$TjyObzJ<`0EFRzPVP43X#%u!>O`+1v)soK>HP7`a8a3y$s@^|xVnw1siZ zp!VgcHR>S_JSg2Pv{}2WdHzAOW_CJ^gC4jVS=WyMZ+DG)BuLPgF#&Q3YqiMp@aybf zk~bg$xQ$yjRU)1jJz%)LfGSYSUMbmkmXLj;gYLRSZA0T{EN0!#&sb!VW#9u_;Yere z{v35r-^hPJt*E7h66d9P<-L_O<;_HSiH&4cx&%|fp}b*U%=dUt{(8wWlf4;(O-i=K zCS(sSoG>Fnx{X@MPRSzxy~ZP3LENfQJ2;EfR$63?1;0VH87963g1FY*1kp3ew@`^F z)XALy3Db=gph!z(kcHXx$$gdkqgw`+pexSF+Ve?G`k*|cMe%B+GxkMi_I!@o4;{OD z>Tvpg=**r^nh4WQUdD@cBg=n{du8c#Giw)*PiR}UTHFA`qA9SYpeaa$De%$Ggz=fP z6`*F*)DH)^=aV^P&!>ua_k2pcKu1Yv;?o56qzIFHOo(Ym+0n`AmEs~JmZBz`v^bKY zrZxT4LscUwjUTRVu-)<%7|ZgKEfRE)7dO}kB*9+D&mh_=Z&5g#WBbu)UVz{Vek{Bn zKp$_$ybti>jek`kVbl66kw-r?0co~pndB9_$?6=7QA-;G%~Shk)`D5?;PH`CVyX*| zV@G$TACDo&BX7K&!p1>nMy>H;YV8`_C!`*cKrhidOvg)HVk5Y%k=w|!$3d?ec}3*w9SzAhAirhL zyOEp`A!)!ISJu&6N^jPf{0DXQFS^{g6p=t>+|ByqHNip%Cthtb^vm+H6_n!1(*Zek%M)9Cz%TZ<>y_A2|NjgXyGO~{ z|N7@rYO|8!dA@j7fglTyJb_nDQP*_wPEg+a+m1SFl^cVeTY*NwyxwTLIkvApP7)Mta_ z+m9xZCmttvwS`xm9)@>8Lp1vlOF_ex?lvK^pqWyn@v5;dza95D8#}rn0YT`;HxjPm*s9H+iGyv$E3?`}OiDZS3 ziXn+r$jBHE>B~erbrkJHSHyojL{2PjsJ!nS^e| zt&>9g(L!4F$ihf0Il1{Yl03PPPVwa94Ubl~W0Lj_Ok$A2x_2MfynL@Xg7v27&3miZ zFoddL>+dNb#omJ4CSY~AM@8ftc(D?PD`9S`4Etpj<^y(9I-ku%TM8numv$BQZCX$L z`CKB}s<@PKCMfLuHP1)ohAq2GxbK?8;zynMI6DE>)`@Ke(Q2C~@^oOCT%Y9tf9pU@ zTVnBYtR?;@ornAewQ;otGby#O6Ya^a|IEI9SEe?nMX+?;s&oxhigxd->q$>){rH5` zKk;dq)N>P4&$n0G4dXRr)8Cgdf~T9QTjHgXl=+OYmbTN9Hb|7_X`2O#hS3z;b6cN3 zKl{c#tmjO+t~EW$$Zwu&#qeM&Z3}(@1kXh4VGwwNYjh<925&2-Sdpt~$;h&XLJrDr zsme(f7wygP0?Q|0eipAbLKG0wor5gI$&0Xn-|ovFn@RFYrfIn|do1SY*xX|r@fSBi z?9ZaNKn1T!S7IL}c2q={p}$&FwsbMjse{$>OjK_2hbI;O7>XWi&i2rVNjpFvEAm_+~D)y5RkBFtYtG ziZ}Jq&*FH=gW>icipkR07!faX*U!_y;3`*`7sKF-59nHGKV;9wP4?-Xw`pDm4G!#&{iJ^jY`ibf% z!9;2IW%MXk-<58rEPAg=aAYh@Mg!~#3Tiv-Wff-_p zrKhD69#cHIkD&qB;i3P6TV=#=apUBEjz2KqyWQo^M_ow6s{!+1!+R&a`7p8$ZHDKf zmh-bbpo2idKhL#yo?u29J&98Z+X7ifdm;?-K_!h zu{EI8oGzA{v?8!R9Bt7rjLQpA2&iq6oj_4NP=H^*%*qufY{;|sm4L7(V)+Td>I!o+ z^hADmWZ4d8!2aJ{mGnHPBB*+vYW52|p(Ij&uTxKSQ)e-Ci%Q+7Q@sgw6H~vdQoo^7 zFLLwtFttIYF4d{kZfez?NWER9PS>d)a#Lq9b)rg*>QpYb`-44J_s3w9IF_GPhCY(43r)gE;WGepF9wTAbTZbX0RDpQwK?Vk=^A_^JE<@hV)FowoXU0?+Z|CoiW_#+Ap^0c4a6#L692>N}jjJxv zZG6!wJqag`a3k~IU~yC;M@YnEvOfXq{6-hx*r}ORzx2D06bx9 zbS*q%1DpsO2gEbFV6*LLNGoIMYfu#%+^WDa#%^>SqF;|~`U`64)$}!GsozE(`{yHX z;FIs&#?8JDjv()eHAdG47Fqvs2ke4H)@nHNl`pEM>GceI=;mkBlzP;k37g?w?DrC~ zswTTZ5CDx0m#Kk3_Oy>DCAmATmD2bab$l@1U0I9$Uim?C!@bvTopwi-e-te>5#4|~ z-XL}SchqsNOqHX|RvCGC9n54*_O*jI*$a`!Ug27LbcZonHJE9W{VZUz%~+i?COdXl zsLA%x+qB8fQTJl9b;znrmhwsnR?00_32XlxTEf??5}son>Po3`OQ26B7O!yPC&0iz z!y1Npk!vmP@#<$P`b7SCZF`eMGLmyYc|%(hC5%AjZ}e0-?LBse7iV!%Mfvz&FxF94)h)ES zQ-Ufy9;>UE(0157EIt-vL?J*CcjVOqi@ztJP2`T50p0! z^@BdV16-WkH}OXw$}0OWz_*(qrV|HeEg`z@TmlNN7 ztqZMl@*l#i^S4^)Jd`^7t%Hsl{hw!@$+S+Ui05zXXMq7H(tr;XF#^_1BgxrC68)b>Z0r7VP- zqVCnFd42=63(fP?@59W~I2}r_X8C^eU_2`@&&LqX-yZ59iQcNas!#*Bun25R@Rr2p zqbjmjLYDkTLvr#>lJYUg)ZSuO**|Xu{Ru>E%)?bToD}ikVc5#2K^dZZ=mQ%3v+aFHw(ogpM4ClN!y{*ik(c%d|?MK@6!3~v#JfxtWL8JsWxf5b((!TwMi4> zpgj9Lag&CF8|_1CySZ1OTuw=r^TKQM3h9O$dhyxyzM zzExk`z}RcPxUmu-53=CMX!XU7ad=Fr&kx6U>?&AaI2w8o&IBD0d3ZB|7^d*Zyq1G) zNabvnor`0H=A~5EU>TGTN#A)39skUoC zsPvFFap!h*40hy!LBLT;?PvUIhx(qY0fg^M^}aLz8`VEe)IY^lKTHtI1UL@947jkU z2|}7!|4q_;`YgdZ2cHQBVI=4+9&i&GH@#?DlU|pQvX* zo~TEuA0~)u=3)X5^@N)sh!;F9_6z*_%6v#o5ER5Rfrom+O%TKj2VjD}G9OYC1O>57 z;Gv#y69n7_ zd`L|Y6hxcg9iX0{{7*wYM+xG=clZ2YW{3NgB7A_TJec0&BBuR-p-`M7Xb9^@`&k1D z15yH!u$oj1B3nH0}N>Y{Zps!%!fiH z0GeZhDg|M{0jShh=0l+pV9Er*6kja`2loR|sjtk3LM4EYxd0zNm4ZX|0jShh=0l+p zAjMbF>U=5%2jT-zsjtk3LL~qNZq)Lr6dYa;K&8Gi|GQOs2g5({Qs_J~6*W6d!gj5g z9VQ_?NYv~w32BPl%w_K)!MIuKACJ9Hh`-eLN1^vOW`>N5d(^nd&GsA@--?aL0hABQ zsS&cHWB_*fMwb1#xJ?e(r=mj)<9(Q18-`Q-K0Y3;>;t0GMaLAHou4$fKOP-?2v~wX ztcY9u|8X-Dz@6U>y$w!b;H+SgY;X{OVLOzcp|=?-%&*-?h@n^ySP@tcIPtJxQCvy$ zm*svOJ#+;R$WcG@JP`EwH}!6;yYK2C(IZZ{IJiYMow1L;bchc<0$TXdqeO+H$8tfB zW-nEL(PRJADS{pkp-KmU9{a0ONZ-F%&fpu<=i||Lt(Fb|J@!|nkRj`ks&oM8vA-&X zqQ^t%cn5$U`>RqYdOUv{uK*aOM|f}+gctp1{?{;5+0MIAzw z4gf{NkoCF1Ea<_#?POvj#WNKUVH?pFL$m2V}$s24opu0oo2~mBPS0Yy1pftK05A z!%}N?hZncqAzZ5q7;vv^Kp-K7Xk@hxXL8x=pGXYYQD746h}~BTSjh_BsKSg$4B#uQ z>Oqdaw)TJge;RHb4n5UO+l__n_)h2q;oq*A}}ZB{;$n8I1IW|i=Cy%xtOiaqiX3LHGD0TK@P$i_;Z zNgp*cC0mww-a{`|^tu;3W01_!-7Odma2`8P>%e*Jx8O1ZpPo5<f2+&+0%?q~TGD zJa&ZFm2%Y|c}}ZS+2yEU9Jncr5T_61z{vm-g<~doQn3jfljtq4tHlY$1McE?A|6;- z1tB)AuLffoUY_ja$rkfY5dZa8>8Qa_GVb;!|~Jmg4D6z1v)xRxzC8|NNl zM~{;qjbQ1b<5e;+no2&}B;#;)If)nvI8>S&pmO?qR7MdV8|iA5o>Y%x^#;nZdOWrK zab&QQ<-~M1r$?;LP5+#q8deHp&C}ECrrT+gtL%`)w+fUvF4yBy0|9qJKp1}VxOB8W zmb&g2IPjnz$Nbcf$05-7!)p8Thc)E~HRa2ia9Xd5kFy%~eMwcrM98VCVK@z)9VylD zC!Ol6hG&qfs)66@OKikR%=;?ugI#$8Mmox=!|}r9UjvVHGgI1UfwgFxjM=g{s9a=I!?yS$TG#K1Do#mTfPeltQT=Nl6UL=hPz?BtJ;IRA-wx?FYZd33N)=!pHgsm?waR7_&$2*Vdv51 z1ymI{TfZOzXKt;KugOQ(v^$(RnghIYC*T;Fnic4L*0h({30;x^3nF2dov@Ax;w6$+ zYNve_X^a&B*?yFrR9}!Z!cM9cj%?||kq0%p@?BYw?N~c$tWM%-IHm9%RB~GydQZnG zB+Ftr)6K0^oa!cryKKr108s}@X^Wj7?TDWnOP9BP5$=fIZMfU4o`FYXKTp4fCS=}> zd)0`hvwY@8>^GEW<4Ft-agq}-g?N@r{2>tA@@$T6>M3Q;Csn%si_w)tTlYa_OK~K1;$WZ_B(22B)%!q$Lr2p! zo$0!I#EG2M?-2#@APO0Iwqz;0rIefk)9sJ!My?)zWDg><{>Us_V4>@ckJd*XjH=od zMPF1!ix}rCrCVr#n}@^BP|<<>{4C$OGSK0(e0!0g4>d|HhDLQwco^4!meWh>+|8<1 zR_bSKEAeFz`Md-l#swnxghle9LDublwZ)~0YnWrDQ_)zo9Gh@rQe?# zX7ts_#8Zp%6HJeRr#d@RJOTFP=<302%xgwR*QTRu5nl`c4OXUM0h;mAHA~hZ#~9?O zS3(Obbc-rDa9d9MVprXV zD%(9(w!5kX4s{relQ5&(Jym?&5mf0`s$lw>M(>-6?og`qyfamLM3o)s=nmEj2bexo z+2N_O!&PNRuvWlyho_3KBZ%iVY3km}75}QDe@o#LhwP z7>31PdkpjS3>crY7{ja~(bwJ-L5bc`gRvZ&s@>tv=g=JN6FVbeW3|s;K&i%RZ`}7) zgQCE=?`<{3OHgjfp#$y6(1G^jp#!a&=c|EsHK){i>`g3gEiyu_!s37#Xj=={c2AD3 z8jMe8L|aEkSL2ICbXAUx0arCFKr=qt%7M0Z406=0LJkbHtAnlzrmIKuP+&i>f}5^U zEzTWi*D5sx`yIR*zza~LPrTr%0lZ+;0AA2)6vYcljj(}MV+MDi-Jn!qPlAE=U~2@! zJ5=ctGkB^1GZ9?G~kq#ta9mN~fsOCuZP8G{@( zkE&sNRdCn_(^aFREnwDbo%{>c;qAeym$4Z8Q$S+T20a3vdXuv2jQr+5m?bZGc0x zHbrrW(Z<*4P&a}@L>r9Xr-?Qjlr|moy@RhCKoMwTLy%%b%vI9n0x1Yy!BHsK3uckpQ*{?6lx*5rF{Ea1F$nO2 zYy%5{04v!Idl2B!!3b(#zz>m!4>c?BaL_=2m3|1YVsNwtQ}xl&N7GR@fLeNa!0`+V z(2S3+Bm`JF203b0Cpz*W;pfTD2&}eOn0ve-@ujQdD^8k$t z0oE#QG@vU>tbc!~80vb;n02-qW0FBnBD4;Rg z_1O&oK2u&e`r2c)BE?vJu^vyk z#oijs?EXU0Vx*SwG&rZXTce`ooL&aLU25PfgP_(yB0JPdHI7J7FDJYNX~Xp6%0<8u zyZPA~|7TuQu{i!gYmQM|;SRn{5P2X~qyR2>^kT0^&@ve1jb*SJpe!RV7)%J0Nv)A2 zI)YZiN`bK&)(Qk!cq>6w*sRAnJ~r#&OSQPD%}QoHs8wL3S~QUF?8tJFaj0$BHX)gV zNnOR0;D*I=!5NDs!6l0&!7+;^!99y5p=OIEVP&dV5~{0MlBxmsMNauHwX}w9?ix^6 zA-c5c+@tQ&025BWy$}dmRqK&&*H~~c+M4?C0h*D$AY?TSFBe+U65Z;6cM9n{%)gX3)Xt%aO**S zWGfr(+{LX+6|!ZdS=_3S?^ialZvwJq3Kq9k3_%dMm9dG%O-|h%#VdJvCfX$U_6qD@ z^5fg(gYhxnXwzuyT#K@IuSFML%v%g2P>zo_E%^!Zjp2^BD-YTV>M)B{g)>=h53(N0cIUstY91y)$t|+26$_1M+YEFTADhC)mQ&z%OE9Eq( ze`m@8+N0(yXup5u0Pu}+0Qg$Dq5$707wl=EoWl524yZUK3u9}QavI~mGv$Evp`3;E z_pcoAzEKW%Un^G>?;GWU{UVf8ke|u{B(IirvJFbPj(4NY0r*2X3;6F}IlzCT9N@oJ zt|(wY9A*PXIm`yMaz$qYM!Dc% z1LZIw@E~;Hw3OUKP!}C-w}#N&2JsN?1|o?O1Ce~XWdq|bfdbZ181|rR0Re1h4A4t)q$?Jn3$c>rN*-;eUR(qs+olm2ps0<=f&&wr5KvTRAb@?_3t(Tc zrw28VsKCCVob{=%i27!9!9En(%%lzg*86go4Pb+v6LJA#3V;Pl#?oq$b9P=CZ-jCM=qcjxJ9}*#p+1n=96H8b+WTA8jDUY#4)lHOmynTpq-jV7+`amShY1 zE)Rw^1u^CdrI-fK?@TcuTqxEL@a!oD@N5(Vc-D#)1vnQ zm}`}C8bH4@&|0~o0NN-QiZKD8J&cJruPOTU4Fxb$n|)-?i01#Dof1=z61S_^F84He>6APpI40Rn(D zVf={m1J$TtW8reJQUS|s#@c(dwavR%9_$}i_zpLgg{N@FVU~r@ z#v+AAJ<3sK)z~=jhT=&b#gjN$;AAs|A)LQh5+@5qa-ks?w*pd2n-KfqIF5 z@*u6qU7-HCnmjPlOddWd3)J--{4jZ73KpoB@!$wd3K*MMT<_Gyi@JauKY+JyW&SV; zFXQ{>50XAO+JKbN(Pen;m{W*`ez5~FUW{GxLu4I;tj+gAI5m-27Mw_+fMug`TtLBK zqN^R_euGRTs2+OHS+ZEYTq&t%NbiP{n9M*)d!7{DdTpD@RLLm0+*Y#aY)L6u(4TvX zsu>d%#iU}1EL^Wpis~8DyP+uNO;FUHH}ywROr4CPD{MuJ&Yp~-!S;_DRkJ55iV4P- zWD)yOrD)5$=eC$bK~Z}S)gMJMjWUWpYAafFCS?>2_E=C<&7`O(CL2GJ1?^QzQ9YA- zH)^z16t(A5{ZSNCDx>HsThXGkDx+wykAOtp-n zYi&h~&bExA!Ep?VVz%W?NV0*$f6grIt$6^@W)(Hm!4-%9bVk-Wk#+K5AlmDl|C2Gm zap~^)1lp;MD~Z2Tk2m2m!*~8qI?32{{V`WKPAaMPVd$vg64is`OtKSy*>Pl&UAW^< zER(FnMMd&(N#0@PBD=`C`Vm(;&dfw_>7o+?aRcufB&T8I%cVk7$!=r;yFG?UCfV!V z4%dZ%4b^C$|7kf{CcEZ^x1m$AilQVo@}iE189uoRVl)fw-HKL<$^P-TZ>!TGazDl) zH#0NIHBv}qo!rb!C4Y=CLcAcfT7`H)=m#pq3qq~9WRh+8OQq9tmrAZhIM&!Km$V30 zcvQ+qC~;#mvq2e3TzF#2`&2raoAiRiQQrQInb(<~;v;Fy*Bke(JTQ^{Q*GJ0>rJ?uugQR9`1Zq$LuI$-|thO4Wb_Ex(h zK0!Ux<@1ohgHwDb4oyKd>Ed~&#|>_+^#VkJvs6K%w7buOhOjSoL^B9)dW0$#; zx~0qiH7T^rT_Tb4C6xIhf@0F#GF2v3Lqmgdkq6sREJ6%PM6e*W z{)$GyCLswBAY9yBNicyJ!o?~so4q6}o85IUkXWhM0Bz2KQY(G=^zzE_v{qaC*4h?5 zz1Vog3vX*ZwQpNnOIx)>u*F&_wl;gd&oeW>{rxt()N|hVb3W$}ewuw|p4&V#^UO0d zzsoQ@Lg)NE7^Rbc%*u|m;{AdNPmS<#LF~+&XoPkV(%G@&-nT0Cz-K&t9qcQ~xkeQ`2->gNZSY_^ZB7<{+ z_U=878o?JIBA|S+%j!!}v=?edbU*%4fCey;hzvMDoWE;ipc}*cwlybaf{(|{(3yg* zS0C9$u>h)Ygi$)Z@5Gg9t_kre=}dlNN}7#r?to@89g%~`VNPb^AJo812b6|{FRZ|R1A1i$#g zix}0zJP%%`FmLFgRqbE>?op%4Ra|A;)a#Rm)h`r+8gOiid`er z@l;!!Ei?RhlIKYr3WZ(9iP=g|vNX-{nC5sa?*-b4B=?h^;f6_?*EvC|q=r!{sm+zj z%QRc(gyb&G0-cg2LuXOidrs6UK^)IFBe`Gp3mwfgksK$96XT>m;RK|+pK`*YEG>R3 z-7X?)r4IIKKHh0!>(Coc`ize|2LD(H;zG&YBRD9@KisewLNuY#V14)}+$nQd$1VoI zep6zr2s`ux0wOWTB6Ty-Rmot#3wdb(0C$}BewsBiyRo7Y2Ij$Pk}QSf1;o>VDa z7w!o{%0sebPdITyZx?ldbqXC_NdY*yS2o;!G9>vOQfx8f^C%ahlgMgq>n?%Z=$}w} z_9~<2zr)o`?j=shog$@ltd}X!y7xO|4oa7t9G}$5U((S1*z6Gb?pV9-QbwKw7INrY5=nbnICSJQQ$~K*8Aa>=M*5q|XI?7WEGz ztEZ(l%b3J6-ZGx-WAf1=^cv}kpl7lT#wSc+`+;Vcp?dPGvm=g|n+!UUPaJW)q*8kQ zKXkHcc>BrBjYZNiz1g6UHWky+S0REM#XCnzc720&yaNPXNki6 z@3g0ggv|%`B5*61?g$Vm>F5D~o@Etr98KuxM6T#Aw|E3il^VT*-%4>@O`M2^TwJ^f zLKO-FHM1$1bj$)^HHpiUjzVO>KkUdO;t|K+8m(Gi;L+k31ybIlp8g7w5H5LiWY|#) zk))%FG@Pl6Uz(g=Mmp$oy`NEgzx^DIBYM+&`x%kgmUK*H&Wc2#G&v@f?~xjJjwDKw zj*lV3=0uUexuy8ULTD)|C6nvoRmmwo1QLj2t#q!aV=r=#E{<82AlJi%9=RHAIC=q< zfV0tf+a~3!QO6KO=z??!k|0pmyaG(p@wWzLz*|U+J}0?Gk!G&=g^+m}IkaXuL`Uyr zp{KOa_mN0C4&xV{dTTez`YO`YOJ)rc=RHyfp%Vj1$A1G2wOgH>auTU@mA;GIqZ_SN z`V^XytAu0N927WK?FgRG;YnS` zgH6ND&ph4yo4lmsoqDRk(e2Kp;|(Njg^eh$gyA1fI-bu#rpB&_tB!8R4c?^V;MrIc zHzggnG+%!%W5guk0%`i;9#@DNSv6RboBo7l5k_=$Z^jRj5loBN_JP}BT_XVL$PA?cX@(b z>l8&2yg1Y<$L5t-b6{z)>whY0(m9E;_do*mznbfx-A4K+Xq}KsI(~c>HrZ4=KfsLl zS$cv&FUO`3BXCOMhUkgE#06R z`&MLtzY_RsnH42JVl8jRpy>G(rlLt&(J`x{7oXOO zRzXqH@vjiz%IrrX>9|v8cOxOY$XQAzV?w3=LI$sFCA($}m&#Sz1U83Em@#?=U5s1xnok)BhfABEDcLiXXH&-jYedEJ-8M@dKBxF6m24yIdp1d!sLwKeD zHTqd9VfqR%B^|FWr|}lQDCzhmQp1ipz#ehT#xGq-$CJQjixSD{`QV`y&Cug{2plMY zXO8#4pPYW0q)@DM$tST=Xw}n2$uo?{bi?0i*+7#EPj<`d zN_JhVB!J52n#9pbS5X<(V5y=)a(W+8*fKg)m5Yh5O*-CPmP=rfO`vsH>P|W?1D?f8 zcD;tyK>VEo3|*u2g>}+#pHvA;$44iq`8|=7j$aW_4*LSqRD}xiGY>M#VGlBEro-NZ zmXjU%JCp}ipO&gf_=>bJ>EUr^^Y#i;_{(hUyGvCwpF-lqjHJT}F>d!oNF*Kg_&u?G zU()e{W;}vK(lM9tJ{0~QvRsVK_nv-&eD4cd<}*mJ$tP+c@+^tqE>#IE;OA;ToDRP| z{t!&V8bHgqw9K8MZ zUuvKGTIF*w<-H{(Y2%UVPG@Eh&Jr<(jE;*5Sqjl)X zN!M?xzoC9p{f+gmC-$XFeESKsG3f&blH;yCfq`SW3flv*xDoan5qH$x?~D7QF~c8@ z8u31#;R*Kx>vIMA-Mv1b6CqDL5Dpmz?$;ScMUOGr=xV-pU0YXk6O#Tw&=-OVBOYey zsL$_<`a&MxydHPV7Yu}aM(4_n^Saww=5?;_Fjy&Rk{9&F&#o`-gQ4RzXa$fD+2uot z{vKbHsz&t)hkPNfCsj8a<^{k|=Lmh=Yv>>^Zi)kA2XNYDp=fv`8=p-$-{GVNp8JA&i=+uNP*Cju}5 z4FJdOP4r_#RFe3XPH)YdgoDp#(=ek%Sw;nkXo_A^hFm1!t1Lx8OxU& zRpY6o#iX|RvkiU&?YY9JE;qKJhExwzx9+eF(Qv3&#VAWir(jfP1mdIs&RCJ*j6B42 zjN;Mgjs{}kP@#CU%E_KEQhg3mL+ExmI?vu7&;1v*(>|pqlA-VG8F_8TuND3h1+U_( z)11s@9=`@zk2p>~=rZT(wFFC z07sYNhy{8>X_o6r1-f-p26LJ}g7wh<34hNZX6y)ziv$LI!S^Al?CSFcdi&z&LPp5%tlmXKgxe9U+!Axufw83k$i<^4T=4xXQe$S**u= z(ST>3H=MvkjU6UDcNu02o9GH!)#lI#&;P$tr~8ja&YUto7J*SYTsWh~5@slG!UK22 z!jh&<_A~9BG$~>Mf)y1l?y&?Q4tFpZ-o|SVUo;Ap_L&luqp6jO)6+|?dadTg_8NaD zb$e_BR(DNmafdlGOO3HKq}KE1XuX{6XU3yuvNwz3f7&xHtg|X`8QslmyN$K$8XKFj zeIX2c0_IG_M^C?(HY|V<(eDm~l#^J%HLIPR+o|BJH8Nk+DIpWj@-zKf$@g&uXLrf` z?6ne}MU+Vm-IDJY>+Sq?8}0ei8Tpq#YNv}FSH<;`Z^Dgs{y~>LU$xnupVA}qh1@}P zh955H#f%Y8M6v3$tZ95fITX{I01n;cmA(O5%=^4pg~of`F4EA)A+HXDxIY{nG{OlT zXV+rOHdxLBnpW5Fc8G91wyXma*w%&O*c!wVkw`cyRSUjo5`lCmj$VcYw!uMP95Jkd zSCE6gxJ8BpRJ@YQte!wTW{Gyt5b$F84x6RD;4j=34a9ve;B*xjVX&S;5yjGzuNF59 z;e8*iDlsdojf>lh1*h?0x!46~qgj_k$gGV4LonJS2#Ip9uuZF#_EPxsXDxt?K>^lH zgolF!nnE|E!JD;M0&~i$nrqbNnKuH6C0JJmJh4iVRxj&UjUa?(qSsRhHn*Ugt`q zquroQ5br>+o)U#>w`C$BW3lv_I9~Q;tEssT#-<}@~k>+rR#88Cg3qTX&R($ z3AbS;pX5>N5EL5-VX_FI;O5m$txa8GLt9gKt7vU*TiMzznwmS2>8RhhzP?>_uj_2@ zzOJ)bG_=<@UQ@riX+vvUce7a8Re#;u#`<z6)6Dl_?@hujkZ!H_jlo`j}~hq*uM(ms-9Xrb@R63}bu2X>EiM~wHR zvxh8M@u%)`a^f=z-lO2x{t5nJMgLFjM`KaXyq-X4-c6Aj>`FshebG3!qkNUc>dL%z z+EGLOg_CKC7vS3x4HuXR6l)@G>UQBg>vf`-4e*K%Ls`p%Ud9N9M+YeMQik3SIQ z8)xeF5#1LvFVux%Q5@lv?nogt&@#Qy9HpWDY@@VabS^Bs%v!^=Sujb@Yib-BQTH|# z5!1VEa=}h{7YpsiCAaY2K;L7jXsJ_fDk@rxWxSYOQNBzrf{_T(x*QN;oum4S@{h&J z6Wg83yaUxM29|jTt5?)jR#w&_AL4vyh1Q4r2C+m>%-tWs0tPn%Vn(>1+Q3_GR1Z{B z-W`i!6)SInVg1KbC*K{VFfEz~NYqznR0L$bDyfDQVU@Y5W{Uxn7gpDl)8G8^#pMYn z6xY=Z)X<+cBi#=)1CR=^58zKV7EdV)>T2q$tmYPq`W{TrFdV+7lTu}R5Yw8KZw#^% zTgH1rPn3}#V>w_-SAI)2Ja*D>nz-wu&LP1+WpI2ZRArmkXm$|^k_%*Vq7%21N|8zX| zo68D0@7H9^`yF)CmiHUgwcH@QUNV~y)yM29H_=#ZVOpYfJ?>P=X$sAuf)kl9o8q=c zvQtGc+&!%`8au92%aWK8>m#4;kqrq+yW<88$GEWocbDBEAN9&)yMI~r)!Rme zQrYL;Du*)07H&hQ#~AMD6UOuc+2dAy4e*2IWf*}RwyG%_>Bb1qV52Rm54EFJn?)|& zv{|~mP_(Hg!rg-wBNmSaA_hH5Q2z4DdroR5@zD$z$;jW5k>8n-zeD8@D0r`ehZH=l z;E00HDfm+bqilr`=&1KKA1m{%{KorjKPt*n4(>yd#|IIB%=J%Y;biUvtW)OH&*kkc zEodm+hx_zBK1>$2KGDmw!Zv>F!`(xDEmzwJrx*;##tP|vyqs%!E+uX5L_CapF?fs- zRS`6yQO?(L-aYX8@;vYbT0^9-k zt=AzB==cNV0e>|LdBAH=K>j?`|0LuAUwaesfb;(ddBAqS9e|JFZPJ5)2i}G}VBJ3; z54f%XFJR*HiJt%(fKN?GrJR5}CZc$fam)m4>-FI@;G3vEdqH!=gp7@ymJupfM-4idBE^a$OAqO zI0E>yB;)~8cR?QSclLb_@_^O%LLP9zS0N7=Jp_5cZQp@B;9Z9y5BTyAArCnGIOL}Y z5j+Zcz{dfdfM5AJWJ z^GXT-LHuooZ(pT&2xR9M;&RZ4|J1>;R26($6qmLX&sbG*{y4 zCcrW1eT@+H#ihIR8>dWc9xBLx8HE!L7wHP(?|WY!OI?arV@$q+i}Q$!=zH+@-TUxP zEucxy|2Qildk*365{${qF(yrV>rg?#2lCB=i0`NPn~AYn4xhI1T{_X^qw?Ov-zDD| zOBLGeaj-pHf8fubbjBMj3a&NV_ayLp@cqQi zHhR#c7olB$jqfK`*yu}4dO7HS$G1L9px)FUPnX{g`ZUD0f3ec@?_vhBF9>=P^tWvE zlO}x+=r#aOHU{J)#@BKY~A zK{u@Qf>~zyIXe${R{45=cD?ygC0O^cH87{Fy(`we-*L%`!@R?Hp|}wdJAIs zYc}~~ru-q$&qr+UvdMRt@<%~m4*GxC?0eC)?5rKDizXoUVUBp%rvD*R ze>v#KK>xK({^zEAJLq4;+_Ksx-)71OL4O|fnO1r?ljZma{YlUhHv1!{{f9uGiMc9Q z{f>hE0_L!LF&Cu!=Zll61nQrYpm)79mYQW9&jlCpU?zGI=FpD6kEL$4+Lyo0w7(qm z2SERejs7Q--VXZq_r_A+v$fA*vweb~&lnp^{nA$cOJ@0dKz|W)=C^J7zhUY>1iIgm zO8o%!NZ0R?3A%nqK`$swr3P*Ca)5IELB9d?hivq(oBE4j*B?Ruo{fIkq*FW{K0lSZ z19N@4{NeL-`R$Rm}AjMOOWDinRVipg%k} zm0D_zqXo4bM5%s9L4UD2m6~TQ|0XV8_CM&qJqx`E^*ROmWLy0vnDr|M{uhf=a{kou z*O%7c4*KuULJxxeCg{)D?0>?ve-G&U>r<)IHu_s8{SfF|R;5z!+US2V=|@3tT8r;5 z0Mq^RH`D%;z+ZNKD)j-|_?l{tuOjHZcvC8MrA_~AQ-3+|ANHkEf3>!6{-4eMZ3q1f z=xc29t4#SI@K=UXser9~uUY;c&?8uTZL`ToP5DE>9~nrc*4oNnZI*u&^uK{V%~t=C zbp1j9<87(bTpRszlU@YB{OfMmXQO*fdO7IMJ5s4VkMuVb zm)@D*P(0&~g63jl?}UcpIeQ$f#Z|i}wiYiQIYG7>eya4=Xpy2n zT+wO&LzkxGHdL7M2lAZ+1a8gnb-c*QkhVB{O>i>6)`qV?(Y+sBw8f%ph6G}|f*Rmf zpS<=-`}AJsK_##6`_opIt`A5cHecxEl*Z3cd2M&A;-f7hUAlaH=_~6q)yepj%Ik7Z zsr=6`kaTAHfADigwSQ(&EvjGFE9h5ntAe`~{H%iaDR@}HrxpB}g0CxhTEU4kWj!xa z@CpTM6>L#(y@GxPw<@?>!OtpqpMr-Kd|JVuDfqgArxl!du_|A|D-^6%utmZ33i=h? zs^D$~Kdaz<3LaMQX$60#;Oh#WR&e4hRlb5(C|Ijti-PMF%2H`H2>rws%P3i6Zm|z|G|v*C(VREmVvKS_{{l{?w93ZmYSr-7ui7< z-CNDe(w?^fPx|$IOT2XL#$TQo-!ESVK3lyG15bMVYQBCAdAgp*AK|aL#7SAf&xis4 zfIq_D^dTowLJaXQbi-i6zp3#2Oc=D;3V*?eoy=LTCelR;zx+yx=V!j)Xjk}^b0nUh z^#V`N@JRp7l@i|!99>a`KdkWlOc(f_z~_llVR-AAj~?OD^+koRQFw<$i^ITYYo8I| zsocv~Ihk{|;{TDtf8iR5=V!Q}{Z`@i_bE#h|DP3Jf3L#NWI-#ygiQMN_bdD?7Wioj zufJ#EXRyGRDZKuEC7|@zD!l%l(4>=gJX6kdP#!p{_ee@Wr> zcQE{{6!$dzC__y{Yv8bSsL&kRQQ`;mH58` zN7r11?|aS3d46_=RIS24{HDb7Gc(}npI)VMjZ+fO&&q)BRQP{6Bk}x<4ERk7PlwUc z#m~L~0}4-v($dAxyZ{plPv_Ip#m~9`Z&!Fas+KN(#s#=n;px;`y7<`^;O7*c4zQ(* zpJ@SpMd9fzTe|pJ7T~uPo{qJpi=SZuKBn+=!Yy6=>+D zKUK7TLfWa+hziD!pZAHLP0teWz`GuXQp^CV;!=A@#EJ&o0T5DpCzqy#TY++ zowi%)eUUb-LnsqoulYX6L|$=4%{R~ZXG1w6$4K7JojnS;L}2mZz!_&nUW zm})6cC!;y|KM6ef)eJSRwO`%E_)EDsjkGC^FtFZliN$H8G zcg5tMNVescW9BiTH)VN>j8c@1^87t^wT>k+2X_Y9Qb`o|46Sam)|{v z{?F&&{|4{|=$Y3OIrv{!`ak-4CyVgAaY((DgMSik3}>_d;vD$pIq=u!!25IHZ()3~ z@O@g^$?y2V&RxJ8fSK1lIrJRPf&WPk{J*hZjlZw;Mh^b-abtzXk>Qi^uvHm08~AMP zwv_oV#>@I{=7ihJ%M*>q;t9VWAKJQHs~Wpp?QLtjT`qx>T713u1kV?B#rs{JAif-o zfx{bi^#<|TVbJA`hodomQy?6{=dE0{aPh+IOgN?|6mYqtQTLz=pN&Nag`dvt zb9oc}{euv(chggM=rDkCR1gOCaLf)`w#?WRfV1!$AQoW;rK8 z;5$4QeMBno!L9lLk@~eChbE~{EkV#2V^dWj_sE7Ahh)z(anH8bCuSzygrOMw+q zTR3u)3*Cv2=g>sW9cxz##08J9a(-1+tq9^9+kkffnd*g{3HxJ|p%K{9Ro~I1MLHS&(#(SM9x z>D%I>PoLA&1>A0Z(KJT&Q`D1*R4s-hEX=UDaiflKuJ(1^Z~z>DfCDiy${>wY!?js! zh+~J)$oBH-ycUlgm5wL~RR~h%1Y#P45$tN**twBSA!Bhi2YoLr{OGU@ZDh^{Iz6bF z&mQourEk2mw|uW#J2npu7oAyUH;qr1v7_)cGEP#k<1qNpf7BBgV5%|M!MF?hQM`4i zC0b_=|=ctKHnC5!?|2Nv6yOQK3^>T**be+7pB47y`C;juDFDs4hXQ9fWw<~bHSi^ zIMaYtTU}jhUD}AS9mArODyau}lh5zQI?k7Uq~mZM;Uab!J*_Q4rP?haYbio`rAn+? z=_HM)D}7!H`<6Rnc*U|gl%LlMcKzv-e&9`r(ph6P8Hdp}9ZT;^YK7iR-65 zWSopI&IeUwbu){5BKFWiN(CMd9U|!JL9Dfmy7{O*nj<5)iOSeuf85;zh~8t^r&Abb zzGy^L;?sFwWqm_iMcm!1a=oEMWltgy^i~ACqLOl0|MZDU?_db}B#cKTMMoZHQyCX% zQD4wa0xA^=#ziF$mr5ind&9`aeFONVod}r19PulCeQNK~=YputS{%Icm^nK>V`A*~n-uGa@-G z(e^8}xCIHSs+QO9$;`M=aKvq6yN3xot)aNU-<@Nhb$KR*?Zy`%1X?gt~(W&<-|2kyJceT8JU+RpK*8@xYx3*vV z!GVnO^?Oxk?mT<_wVpp^$eZt9?UVBNO8_o;X*mtg0Bx1Vn)C+s{Ic`uy zy9uxw{+og%OJ&2Gx}We0l_-MlGe&E5$h1bt;7U$`?wP z@!PZTKbD2xorS+A3t!K|zZHW(T*MgF!d@{1uqmCa&# zi^!rmrU|}+V;U=9m!`RiG6^0U~eup{TQ zVlF?E_1Nsc4@HXqc#)f%I4LHfd?9a-=aZ14yj`%_e@xh6B2JM8)(ksjzh{nVKft{( zHdpYEi0jnNfWh|n1Hg)V~&Ebwfha4jVsyDIbrnYb- zz}kInZQ&-UH0irL0^UY1Q4kDtcCzMsJA-djo!-?vuK{PH?=$F@utPZc7s6%j<1v4~InL zUPO31a5(TrBLTk@42JyHwxB6c3~**+BqBU`*Y5Ie6fIlT=8HrE5wpP=o4cm2wtAI! zv1$bXITzc{@u=D5DE^a7d>c6q7}cOS(s*IbRlez7c=EWC9k8aZJ}(VVc*f z7Cv34Wm#b1%X5P2$}N2IAxnjYZ@oWpTlnN#7R|z!a}U*Ru<((HWZ7cjPfT(d+hO6; zHB^>X3xBd?0(MyV1r~mnh3~ZR_gVOKuOiEX7XEa}1k}1Ojn@q2zzr(X4)p2D&~#*5 z>wbRxDT@%$#4Vi=NtEjNbqN!`*`#4=mG<8Y5gVT$Nrml$Z;PlNzQy0WHaJqzON`2hT z=~+Zm%H!pno<=mKI<9hhBGEKt$EW<=WUw+qKwhTK5|x z8|rKO`{)Xx^`D>%g4W+p*Uh2LP<*f1Ij@GX-XEa@8nm*b09yBGffjpn*X&+0MQNY9 z?Ko8=E0?yipnc{y+`x$sb74S>jc6x^R%(vZ+DjkmMM-Ouq&4R} zw(XSZf8VX2NBk^0wE>DlAq2MVwDJI0j(54IB}AE(?8)tJ1?C8mZusj-DL4w|(;7qyF$ zwMVG7)vWzKuNC&*`%@y(v+WcQr2Eo_*xqwmEZV2V8hZVjkyp9^7POdWbWvZwXQZ)G zuRQH}k7Nx7=XK=r=1eU49zluf}o>#g@8};ekqq^SOJ-X7l|2eAKjw&?D z&x7b6s)2v4yUzh97q~G4{`!Y5|B;#w7VyuLNbDr9jTLG}(E`#X$0YkQiTn)W@dc*k ziNf+lGGSUCGNs+)N%j%b^bq08tfn{M#4S2EU)m;VZu}lH{vu*GlxI;(jhbXAPjXa` z&Nqr4=Q_%6fMbI+YGeJpyNCLrIov$N$cw>@qWej(=@*&<{|B5uV$L7+l`=PD7_l(3 z%`~%^%zR)qvyaToGm1WL3QQ$|;<*+-UI_HkxQRcGAI+GOZ%Y1JRhiN7$}zW9crk=~ zv_lOenz63W@SwkchD^Mk!&nSGw)d5U^FS2_ilMYadxhtmzTQw8fyO+8!%Gd%pmtb0 zG~)&Mp+4wCLo@@OqTCOWVxs-;s&(ty#p*-q8SYsB1-Q(G@-}ZgnY=wZ#T6sB()1o?LlY{n%Z!#+&4!1 z%m>h(3T=ewi2nzVwI9S!aGb&MA~M)8pdIq`Yq6J}g`9cv)4-epRZL{jJV-krH3+FQ zW2Aolhosbtj(vN7!u0%odtYSH`w5S7Tu0-S<8xIE$`jAdkuHw^0IeL_0wJRa>)5K#2y9ee46d= za~^n-+vo*@ilN*IY=!62-i3y88_=}V;Q~J$kZWZrRT)Yd0PK9cOfS;@BZ0D}kc9FX`=OsS`& zls+9gPk_>5%G)IHFjwjU%9TC~#85tiUv%o8diaV0r+g+`5FOWB38mpKLuo)ATDRVq z@+7cSllFo-)@p6ii|>mj4ObaT2?<;0&D22IN>%*|10bh{^8PFl*<~PxvIZ5_nK5~N z)?(|9*2Fw#PJ3Q;7)l?6G0X0C8_ExXra3bwX?|lg-%uXSQccM&(?v(u;YQI=c3w#| zdbgph%_5K-&ruJqFo!naYBCR^%TInfAK|iLoI6fa6@4(~aw3MhDT*2J)tr5MUuDsm z==+%>H!lG(2h2Yx6zK`jncB=73p7R;u1w~+ zc{gMaU_N?A)Ee&bM1CC_Xn!$pf94n=w%-jcLwW29VrHuLU&{sW$u3BbH=m?eJ_4hcDzZM5ZXFspzdZMMsb+dFd9aTjm5FTUfz{?JRAz4I8Lt|49^=5OoQE?5f#(n3S4U+ znr7aWuizHZuxYA0H8CFeEv5AJYeW>k1Y)-HyD$cyy_BO$OwW}xa2_QOMGhY7lMr2g zQoqJfz5y(z4CA+7c@w`>4CP^9na&ua=mo05U26A92i>NME5~tgjiP6$4sOjM`OSAM zmka0qADAPPrtSTG(HVyFH<0GpD*+PUOt(##)y3rS@k-}`JA?*UIlLu0I_Y;s*&-u* zW@I^LWc&N{O@{J(R)r6!hBt*2G+a-Kf$J#%kJ5SIO=JV}?*KSd;^*;WDEE-uVLma~ zZ+2dV@BnU zr1Cd-u+Kw*r}@V~hKmg)7iygG0T_mo2Xc6CkD+{73O>U5mqWuP-B}e&R5eu9 z*BvSiO;zzQeyEJ#rrOy1wXyScH@(T%QcnCScj%kH!N@sqSyvbRN-4n;unrngo5P)|-WpJw!tLM&yq&&#v837-Kut8%L@T4JD%YS?wX9K{plv1+p#Z1=SUl4cm}=vTI*2M}mdQ~JN1 zuhgn#rA=yQ;GSp@Yp$v8?ty6O&yegte$Y_(0TNJA5{ zpzgSYQNf6`1}qfT)m^@}pkFPaC`uzG6WRK3s7&~ik)UEC z>ui*MS7VJl;HMnX@;NGb*2Q|WI)DB|wwhOyGrS6KT`1R>(M>rDXU0CWTJ7p+py=POsx~XB+Dvzh8QZ*fu z1tiqhrjkf9U!{>sHQ3e`XhDT&AqNlvvXJ6Mdt~QEyIb#w*Xr&B@$hL+b<^) z^eFyoz!AW9ocx8D(VxOas~qs>fExfm`@2M<18@tiJOG{n90a5?!vxH6-$v%>Ds;@A zJZ^lCV_YHe=inHE&zpq|fz0xZ-GDlh|JKDsf zoveQx^?Pt>oDG=NzmuEi`p<)XFY5U_sHFbCB=z4wy%TqP{2g1e{$KOSLJjKjkh?xS zy9a=?>Vm?DbE*r9KbPw%P!Hu*7c6*4(F)2B=4%BN-Q(63xH}6fstU@h3KmossE~tv zb-{R^M|x*C1Uu$TNXD*~s~NbOfvXv~nt`hsxSD~h8MvB(s~NbOf&Y&g=$PW>&DtQK zY@>KAOMW9HznziaC(3V-7azK>_V?P=4s3cVJZ3tXfs6 zE@)_shV-aeqM6CT8-sm^vZFX&d+CZJg4)=u}tG27iWhYKk4!lm>h@ce4G_xyr%QV zepgKOxok4)5&fAiKZW&V=$~ACmn*-&O_v}0owI2_^&N7${M6(=hjjilc35>=Ssc%0 z)06u*td+SqYvp{B&M#v0*_FNIvTLxfBNPAH&AjV-jf9&_hRG(}4PB>j& z&W0&2jqyD8P9nuIF`8!`n7!=r)BKu){14drg)9@laEcpPs-#)L?x{(8M4vBWj z`Dhd8kIm&m67g zi=01poPP&=`VQazeLj7jG|g&2;OD?sGw_GN&-DHLAGw_ZX8#V~feUq}@A=2!f}P3l zZ16MfkGPS`kKLEy&SGbikhkw^Xac_w{bJAC-C68B#oIM@K71gH{3BWT|D1(?5`4<% zsOU#I&VQOk{z4W$E%s8odTiriGV-5k-^5JtGv&Wb$lLeDRAiA~2Y#k;au>Igx?afh zbSLMJ-IuY8+aJ46<uNXEd%Y~R zL&U4Md$BDE!^m9^ZNC0XTudo zc4O0q-iiG&^j_8LkG8k(hKhyq($8k#;q?b29c{kd3@>OS0dG^g zpI)p2cCggm7HE6cZCb-1*c5OrDKB5fuvJ74`ny0Zx`h+r<_HnX5ZdaERqH%n&-xl< z#Y~aJ(*mX4DgH><+v*GXv6aSK^U3v9>uOhlYZ2p{bHKv3N3TZ{rnQ=lU|}PUbh4)I z_UfuS@9nEsZ}QZ8>#M5kJmi{h?@8|Cq0K#Rx7@fw+f}Z#v&YkOr>gma%XD9hpjtvv zS7S7Yy~061a}m|*i?lMAe|HG>OsIF7HM{Vk1wN!mBfO~V47B-3L0}ziI&<+YU@oAp zmM};?(1l;V$IaCl<{QymfmSiIwEAI0Ql_do#h4lrzq<)yaN}zaHX(+vPUgX(U2QJ( z2XkTGp${m=UQzx!4&ATgQiOY9v&iSr3c--;BBGkhN}S;JIA|?G>dWUowdm8 zsN~UB5Uaj?uGNLX8>FCscKsUg@kMJ``ahiG=8}g6<2g>H)^FtfiD0w!KxnN->dWWk zEx5i>84-}ydniv*A9tv{+=*Wjk^1s^S`!O2=Sj&@Y$V%`I$Dd7`trGZ?gUe*Ug#8bqk=+|X_D(4>R+h;7IbOsNPW4UBmZ8< zfM~xQUow6<4i4M=%YC(@3sHe0Jj>C z7JbS75D3|l?e7!!_eX`kCItmlZFDYzr}%|#^`q?79qhxWco-=>85TlNVP vPL>Ly(nfMS^4ziN4~c+^#R)hUl@&N--e@kPLe-i4vr1mg%4{c$-T(gr*bmll literal 0 HcmV?d00001 diff --git a/build/bin/include_openjpeg b/build/bin/include_openjpeg new file mode 100644 index 0000000000000000000000000000000000000000..48640f44c5669d4e149c8d89890a6593d2d73565 GIT binary patch literal 8568 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

    -9&&ep$6VbJ;1 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%0DOqC3>^n^%FMbl9g7AS2_hgYc$0gxq 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

    5YI;9w=u?bBpDE9J8?tKcG#9d# z=R(%sz|2=$W-U4Q8FAIw?Tvd|~jiK}49%3#QzUfd`9MTj2~$Frd(^sGTVxu`m6 zY7fN>?FypNuKV(Q0GEzu!)r9@R+fh(3zS>{7z9zU z(fg<*K@jO8K`QA3L*X`+bZFbM9k%kbD#+;6f=UqYO^_ zlB65|tc>MlQc35v>Pz`Y{nK70fa>}5qw)>Ur~kCb_k0@Dk~}}F4PFM{^Xc^uqY-#& zte@0_iz*PAl;r4aSegw6}VMMW&r8->Ats7x*=aNTgqrIxmA? zlSMnqmrQP9W@JoC0p<$)9n$q~nHZEVm zIqfaDGVY&Wu7?EX9$dC!-qc+E`B*Th?3eb33z)>CaYgY<`waoL;fThkb8iA_etU}w z5nwN>pW9OeNG`Lbb2ShM69z~+7ehrYl1uSz>039@hjxdrE#5VcJ9kIrN1S_HS^6Fk zydyAC`ww1F2{^s_1Plz5jMIW}LCXv96kyNaYfHfI)m(wL4n%pgK8~%0z{@zk3)*E! zq~^^31QsyJU$3sX7+pCJ+;?4O^Zc{s!O}ckaWT4tBzW!O)qg?%Mg@h}F1q4k^n_f{ z(p3eh!@P;a?oD5$54G$*9a5 ziA-dlE?CAOb95K9qm$V;BJ=vRN&CibQb3YUK#tDNEmW7%$>FE&ka8EaqtnT|`Tfey z{xR4IFbYHe*n|U;gadL^!i{qq&n=*+=n-Aeu7c!gonO*V)n6gci#X@mc%%xHn$ zgd0=#c2^R`1ueU@E3T(Tb3scPRnJui!38Y`G2^z7E@)W`@kvGcE4rXXkENxMP{*NQ zBgB|{6HpQANs3jqE@+9RN@3VG)M5(61nYv9Wf~wh3xGuFFA(Qkr7mda19Y_Z!1Thn zp!J&LBQQ47o`d+jx}f!%V-iwPrtgCG`9jEdLHo?vqqv~`^R=D2pk4bPz6;tvRx7Ft z+A&&DUC@rviX|>+Z$vZteZsnyWuuh4mR*84Y-x$GS=X|Jt1=#J#kDMrEaO^sbO9Oe zT6R=;-?eNbN^m!lY~xy%498pvu4P%c?^^cMpD}(1T+7lVqEv5Ek4A9!SMFMt5aITF z#aS$EEkdtX==B~nzSRE_A;RsK3-mG%n*NU%3b#ijh5RC(7Fci##Jz2}eY?1pWfhPj z7O5mMBHaGTO0H$^c&pun8?S5GC$T05ecTuR>(9KH031th=ZB-RqR>`J13&8 zIx(rrl$oYo7^|%xUKz9<(R}jY#A15C5|^>eJi5zR zSiEu-rqpF@^t-T3{?smGmDmwph!B^tG|vyN%UG64lL8|R+ni0UHartviOX2#ljeFQ zE@PDgqj~tX&2_*oW7+kBPkp?aT*i*kC;^wT9=BhK%h+*qn`@jSx{UqzpW1cgiY{Zv zUC2Rm8GGO@ThV3g4}QYU61a?gc2)(Kv3J|lU7DIYNG@X!yfWL_dVgG(v17>V#9YQM z*@v^k<8~SQqPTxuY_u4bnmw1X->Mq;L+yDHCTkGG$^!xP3Yj%Us5K zzC6#46~pg|6?HSSB(|Y6)>(=tcK0uc6<5RUOR*4E<-{SP09@{^s zPvblXu57X5bw^{rh#p%bHPw44e(&oo)W{Z+hk;H(m%@u^QI6)_^8D&D@`|1pc9d1s zmu$oh%p&}mzu=e>Z9RylG=2bExK!nZLmpo}kU(zkCa--iK>vVj1H&^I4iLd(SR9Y4 z#CwZVWlsmi#O?J@b_P=%=GC%C15craV=>|=ee&Wh_hpi^akTB4eJE;Q=z3Z=CY^LJ z{Tig(y&Chzp{25#BqB%7LzX&`S6!Na35rWMh)_5RsA_)w@B*fyfc!?31^~SED*zaD zLJ#l{DJZ-drw%`f)S9*R+!@bJPGqLaHf8aC*~^zVu^%SXdjU0b?HdJZ%Csyu#(D+e zp}?hYXWvG+IqO#MyB$#m;jC#b7(xvw_NNW#wE!)vdP!}csF&KB8|zIaY4_MP)}pXX z(rkskj5K*QdH>|5TCfVYDhq!t5IhaQDzEY&PB0Kt3bYn-5Aa|TAua(#A~j37yl@E@ z79w1HbGFr@S79G5BtILAxWE#3l7skJ!TI z&{>%uoz*e(a}%E7w4FlyHoe|4YZWGarqgzYrVBN)B{!Q9fh7#lIKUw52=c&cO7Yql>LosQQCEq?CIHMgveE)zbO1GekNi0;h*|hCb(qChbJ!y|l?Y zL)bl2$Yi`ap4dh{g_>p|l3%FBExpf1s`|qBrsnh|JIFAskjA(77He^=gzQ^S{U${v z<24?FlPe-{utC*ZJfSyNSG7HS&l5BP16Y!#23%3QpEWa2zyBIN%$5N$2ty3w32Ce; ziEZRLj*7*=jdWXt0sNP*r(C$^Q5-%b#FUD=m-3VuKvxg|t?q85t}bb`m6D_jh;DSA z^v@H7Bu$CVXH-9;(rwcLO9~1f1x`)oY7nDKSA%3K0GL%sNk?ZgkDXAbtx zY{~Q8B=KmUo&zo<1TXo|l4RXazsy3R3Fzt{vxeKR!rz2&gW0(5C!<+J5+6m2=a!S( zIth0-vh&2HiQ`4EtQ*q zFQZz{=39kT;_!cVCC*|eRC{7+x0)PJc68enKwP$mn{^B!SlHv<@l0s&+4#hK7B^gY z+#56F=sb7h86Y>v_PhQn!1htrT9w;Nkvl;7bR1t&)Rkod8y90x-bptBN_khhtc z-8RGfsyAOK2iqW0FGZS+qs3XRm8cfU^BNS7R=)uQ#7rb(UT@A+_qberE*7tX+Z!|p?+*DBm}vl@=Mhs!|fat z+>Jz4!hl66Na;l3OqEr!PNxwshXvVk$N1UOIoi>GM@gKMKX3IW$7+I~8v~c*EYPm4x%#Nv;@J8YgBHI^@~C*BR!oEXxKD zzHZ#|$P6Xnox@x=~`@O6KarlVV{w}<%S7YVo zoa7=zodJ#3VqVpIogXw*@TOf|iPUFwuP)>5)!{2RTE7j$?}(%Ib~%5~bdub2iOM0FO^QH;%G%09XL(lkwyqs$vBd{Cls1EmS) z+;9fjCd#SyC?Vmgz8-pn&zPV=1L4D(54oTHrcfi60n?nuNP!m~QD)>CBzeB#*9{aA zgauEf2n(Ki#Mwwa3Im?KVX@OzD?ds0Ow^MQ=!`2gB-ua(8frZfwfDku=Um+j!*Xv7 zhGDrc35H?0YZp{2Q7m^s5U|{FOBjZN_EJGsYFwDpbDJ=&SP9gq6J{8(PW~pg5jjlM zQ^DA@C3@jXcGNk>m% z-4X(zqj4j<0S0BWb&W3-aH3fIZRriHJAtt|frS-@!tKw9;VErzr#wv!Xi>I%_@2-? zL(NB-5H&DkJ|~kF6$tnYKW5XT{(M>{D!Jbu3oEA$c3tbd`wSZeoCIHljRS3f2*2 z+%R-U16|==wq{zqnj)%UMf$0iwgW~;kuJ|*Ib|7E50-;xnICr~rr>f?GqLS5kP4B! zL1hq?N#}aB_2qllbmXPh^=q5XF~6-PXQ3P+F@+ZxzeyyAX_C)39T88SJM$5Yp(i7= z@Sf?DN?E>KgJdu(5@0{ntf^&h+{xf(kR&^%EeNQO^*W;75n{_CkFaSDm0`XY=lCtv zUfW#l#jqKORa(Vss!HVwgk##xfZNigfh(1Mfs}4u6b_PgG7kri+!-La0z17;+&sA%dq6MRa>I%i$ ziHuPF>j8{PCVe*2CGw~Alxh##!gztzekDq_#tW@>!;}m82{knjI)E(mq|KcCkg+Cs zDlm@B0;$WYVrRdt2%grooWNVBf9Bv=jZze7C z5v&5?!2#e1u~RaCA$<6RGT9y zSPPObjrb0Y+-K$jvV?JCogwsCIqQgv6{*|R@5M}OvdPBBSkRhH1Y}x zyqMGzL*Z`}$0_9+BB!&N79_XGs{k#k7>hc>1iQ%wf|Ki8PO!DAr#;b&RugQ_&baga+%f3!k_A)D<`YOnJlRo}g=)8jw{t9R znk9k*;IdRICly8Qf*GtziymlW1thw~kt-rzy{DU4jxaz$jSkr9b66BmFs#k6W@PS| zc543t>{KygsUp}QIM>1l*l5T(rNVq<^ra4oF{$2Oz08= zD>12)_v)ObT~0&yVwkaby5d$8+zAosGfvtdSN)Ud!v)V%e$6Olg@cY5#VP^_9IdG4nkgi-g6X;!hE#g0HfCH~2Fmi@Xbm$m_2sp_u%A4h^tgNzzTfc0Aal6)_6!>cmg8;@q zv(~_T>=WKXLs4B89ml=1t@x!oO+{7@$QLyTKXRh-FCSp9LyV z1pQ?6_TVV?Bgg{k*@jDT>JM(0D4b#JMeDWP4t6bw?OOdUU!?H1iWn{_jA(|f&DfjH zP<2aVbZVpOcAoW!-veJg-Okd@cr1=W4eGlgj}Yh`U@tE6XZV9yE6@GroAL}F6J3z! zETU}Tr`L!)LwC}3gjtk&l=?ZABBuODRfD6GVil?BEy$X6<1=YwR~A<4QNUt?b9V2I z*N+CL(gn0#F|-bvr2gPa0y3`Sc+=nSsGOGUCtlgn&=nJ)p*e=v^*QD@GySTQ7PO@(G4tDvb%TY3< z3JxiDKrJ(YSwn^S$0eiq>|DW^t%H0pVHjc0GY=e&R zo6wXUXv+0qIlg=EKNO8;$Kb2bl(`cjlt}F0_`XQj_sqAfSetLGkQx|w6*l}8++E3* z6bQEtU+WjS%WC=S;v@inm}wL5s4To_;d^mI<&uTYk7G`MJbC7e_XhgK%T*vDv1493 z)LnV0B`ZE>f%{Er^Yi zWc-Sxrj*cBfKU(_gK|rr`7c2VFH;KZ)3MD$;RkdY1~Q`c?oue@z^!TMuFXPT^2|*^ z9CgHj@e5_6R{Z5Ooxf2sFQb%ZT%k1ME+e5x6pm(;&`f~Pa*i$xmbE!#Iod7s-ayU) zoh%PwM69?_+~+Rs2GAx{{+&T&e@A3kBLFSjV8O3c0KZZJ{7MD-v;uuv0mLq64KQt| zNc3q1`m_QIFSY^^bDmx(0`crU0fG3{&`U-jcH+sVt>LfC=iH@R4aM&YVtJ=hoKwnjN?FeE z5Wko&a3Un6<&?DdT>{}cE{J53lEU68`iX9ytbRHHfVp+(Hi_8QQKv?+t>JdgpDdE8 z0VMgmf#e)P(nBOzX=8VT5oUH2@FnxBSWme9ow947lyIlYQu19Qc^>^B5!<3jIN#WU z<1jMe(hRkM3@$V5lnmX>kU=YQg3^8+Oa)6Ok0{v^u3(0Zl3_D5q$I=UaQjBto7NI& zP1p=)GsBgVp^F*T>!fwP8w%fvj)HKs7AGAS#Ja-mck0W$!eDeI5627WUb%YUfD79X z4|*GZ96aV@f(XO0IhBs>K@N%sg1z?#+vfphe_Fd&%E&E#MQ-sca$BZ=Rc?_ea$BN* zGZhDlkKPr~3qO2O<<=4tZ09J6Sz?IMaSS}HbsnG73-G`aHV=)3@60%lO0w*69Z zslVIUX!AywI6nyA*>4d5E+q2R#`mkVlrYU zsfc2d*Fsww3?TVQlY3PlH}aTb!DN&B3|EK@<_6(5_uB)x*)Uo*EKidgN7+beFgK{T zx%b=GSwT7SXl@y$5K)(IOMz@kY5q#JgZkZ#jM52mHSC$i9sFA}1)UiON3Lb>D}~X! zF-I=ysLmgywn>)`gI#LzVDn!UU>~v~4t2l}JSB)$G?5^Uk+oi=5Q@$^8w(oHo%RCG zbKxV~s(oP*fKYP!!=|H=H=3zhMydc74p>1fwSuLrE~qK$fxk&6KNr5Vmj&u~L<)W` zyv&BD{SN*AIr#f}E_}Jf4Py;516_q^mI7iP0Y`6`W#~A+@pR}|R@^mP zluQw`G7Bq7=Wy9{TgJcx6iN$Isf_|>&1H-xR>ei_ryGqz#dVurA`=2B)?02XTa?05 zk_vN3&RxzOG)kh|(@NvQAsYZ)=n;bD=Xd}^R86<)aTRGSosC6`Oe=tB z0+v{}8&`0vU$%>!O`@EAb)S{9ZpayYnC&oflWyB;z6uuuXV%@wFnXJdekO$^HR6$Y zqPN;vvL0MU$rcLBi`9Uvbp;{z;~KU*@|h64aPYz0lh)j>0K=x8AZ>C9X|vO9n+-wv zvyPN5fbASog7x94tgh2GRdpKbUxz)mxstgl@`Qy_M_2aAPwTm&WZ1%hGC5gM8+ zA#(>p3m61YVjKU4u0Jd-=lWFhve!^XiDg(_lGD-aZEuU)Pd6GzZ|f1Rh1`u1&?Bup zWDhj-up3EZ>S1k3ecDfz%A>Be?nY81$=d_T+91)X0o?x@NahLxaz_HlTLa0a?CAmI z9}Xl>Pi&LsXu{D7pLJ^wQKzO;#ep+e$0v=> zdgN7IS2E%H+cOlTIu(u{bR>5paR}s122vsn7Q@=60K5e8CrWmz~|#4G*C z3Z?Uey^zVq@k;;Yvp|l69Kq6Odyr@+uk>vOGFbX4fYbx~bM>S=FbNU32*|Qv4Cz6I zxq7(XFUTaLorz0UXSuUEH}7`?WoCF>P1Lv`C;$t%2Q%gMLUBL|+%?F2TW%;=#@?%<)9K;bt2^Ahh9 zV&iX+_^cpibJ+L~N&Gy-D1kQqLW$>*6(!cjzfIz~ovegI0XYHMCFqkc!2uKs4nnJ; z^;u1ks55e`fLVw^8rqxrB&|-;q9{c3)#=?JN!$NR=HuZUZJ?RMv=g{<%dhPq(1Sq$ znzkFL(R!i$_vkmrJUU7Qs^yqG3{Q!cYxK2TBeYz~YKy~N!Htng0lZ^q(3stV5+Nb!bl~nsLf8k{ovjDm~sM<4u~sc2#NOlQjp&^(n`>pYhTU!CZ&|kE{A`VY z+YFg9<1d6{5Fza27N(fP^X}4a_gXX1x!cHV=W!76!kj0a-^rBt5u6h+tZl3$Ss-1l`3<)39cq#cmMWPdAP#2KBFZHCpS0&!3NJxr zED?F0fT=oD{c7PLusN|G%VGHBl=FAtlkqPy?TN2j=hBgBkIDD4UfjEATSaxk=vCp_SYm5i31A?T-(2?RFClQLVECPGJHSuHkx}Z9oJ>x#Zp#v^ z*xBP2&^7f)>(LoH7-bf!@x_H|fByC9yj6)Qs6;Fj>_fRABUE@Nd4(Ajv@GKS8xZN} zd_s(pK9A`M!NrN-NMtM!h_zo#w{0<{=J)HqU5^{bIL%lrJh?KG&}MOEXd~;*N@W1E zu9Vt5*gj{u%j%rWEziHmaa@KG!NFmWIF?J(2dOjbRa&m(;wYshbC6`NE0Ien(vz`* zlH@RPg(R}5KqAXw;?)W7*k%5Bvkbi;!yGtgBkT~NKJ00u zA2OnPv62j(LjojqAnT=y>P0e?2uYCS{|Y42szx$&1?wcqn*zyHy+}sUtd%5RA4sO^ zMe=k#G%CsO4JJiO>wtAau6dF9R;UM{v$Vl8u}MwCTU z4sFT|Ez(%)Ts?7&G$~E3Riw?pF3eo<&%}JDCMF+ycm^FB6AkJ-e)?09jB~!G%OW7s zj0PZ-YJiWVWPc8J(K@IXU3iD)k+X*xv%zfkm!SpZcuddUAmBVHRCl7w0NYCd=cn6x zAkb6_`Cnnom3-{rjFk><8Lw_*(H~+P6ge#;5^s99$soNO``do+He7o~Pi_-IM;QWL zidF>DwXImV!d_;%SzE^Mov{s!-lUBZi0)wYt=b-e=$jeciE?4HoP*aF)*kPD*ZNOa z7?Tdm@^}v8c2XIaQ@JEf*0*%qG|=mp`@McSdVQbN3`ZI^h?pPu6UaNQtv>1UXu4_~ ze2}F5d%Ps+??|h~TU(Nr4WzNNBMloNxLqP zHa#KDTcsej9d%>T2;l;Oz@c_54kko%6FQ*N71|713j`wE{*yltnzp$@^THNG;r6%h zV+w7QDr>56nJ2vAUaTl3WMPe2x**OABouD{GUlc9g2T-qd$e`kKnsP`+17>3*c$4T zpN*UF<0NlpV63emd*;>b{dvvDtsy~Bx;2yofRu&483(IvP`71F3b$o?3?|u@AtKq9 zsTG|j3oq`fMlIo%=V9AS4J63646EQ`Tjt5|or4zcWxI0J#(K)OjDX3ujC{$q3=1*) z9RK!|k*XdFoMw}48O?V_+!bEAvMoazOumo#`6!JhBV;>2NJkQVZ_&y%a z<2;V@L6&9GJ&zarJi@v4h>B@FX4YH&SkWXVq?! zMEZUEmSvvs`Sx;)6PS}|bKT?j?OT>9_W6b%6SwxrG819uZM0jo%Q9_dBE*~Qw=?)l zw|L7kK{qmhG!yU6vW(k)bX^*gK<;7-nwBohph5YTWpGf=$2jO)meD%j=dz4kI@p}# ziUZ%WjOWQN%XkNRF3ZTI1tJaR#aosU*;$q`+v$4EBFi#%|HNCq<}J&F1ZS6J`ijM_ z#`Id2X+=0n2Jvz}CU4drex6t@E!STJ&elm?=~oa+n5>5c{z4EhfV#jLp; z`n8)Sw_6%eC{CWtn#-fUV4VJGV8PftnKhRieZfd?AVYsO&YFu1_Vqw;%>}o!80Svs z;ahV#_xH|dQLZhq=CW7X7XF&`GETO1&84Gu(|)OE?wU(eZJjybUvp`4U3qIR5};jk zkqYT80O6@vgRUt<8%tx&QKUnDezRaOMZ3DMK_Qj ziPe;+`0JGyGaG4JTdvpIWX+|;6kx5s%Rp;x?XPT|Yq3{{a%B}ol&UWARLv05pIW;~ z5~A`_sO;*;hM<}{I9RODa*smkmNNYYc3wTur(K4 z=*TokN3Czo1vSdh3a+^v6oTT^r+RBHG6&sL_10Y4pvszygpr1FY1T;zvn85r!M9%3 ziW^0iqq#Eg2yw1e#{!r-6!z}C_i5Ip9k@_I#$Ik+`eUEyxx{o;v65M$B$|Pr8u19 z@BUK4kqcRqK)f$4Pd99VO~!}Md3;Z_V(oi!J;ZPr}OwpnvA z+r8FY=9=so)vUSn4#BLLgoH59AA(tPF)q!Ti`nisgauv*zBL!TV8Pe@HvR&o;>`k} zbM|-bU-8twy7qFP+(*}*@00uJ+AsFWeRS=o`ebL#WfXE`)*qT=%|&)=^&K_nCH-qI zzk9{Ym3gIx;dzt!Pw6M@`4^Q$&N+6?MK-Z)-=u3UvQxWDSoc_S znd1vB)g;zU1?ERX6aOinKe&_By8hDpN&TOG?q*shSO<`LdnWBO^8)Ykka z?K_>dx@;xWIC6c6M|yOwvs=!N+Bs_&a&nO{$_x}t#X0kAJ;H#m2;9gRq}D9Uz*ihc z%$sDrIZREC1i3;*iOMHRJR+`AQ9|^I5*$RGIB&&eAx;&N?Z7g|HaSp}H`nXJWf@~X za)`%zd}|5UwAd!FUk9qKx{M*QYb_e%soI-CM!S^wRUYD#r8k3&<|i3a`89kgS9{9+ zIv*r5qLwVF{GUEqdNatF->g(^vrm)Dp8Zm-raL}w)Oc(4Oln7ax;(I7`(inVY9QxZ zXL`U4%j7LWa=RqPd2%{cXQ|ei9&zeNM&k^f zha2gg)|o%jEtpLn7h5YePh&M}6M%qM}@%76_57A>}n!|XH!8;}*ECPrt) z0y*}rSnM||7N`u_W962;r&};`5G-1$;nuETh_9Y27%!l)niY)wb_E08Ol$>gx4OI9%Cs5Wei=1r{SNF#V8m~y*(VO{I; z1s)jlnzU0awXt>LyP=0~(;*n&I{0_W2WtT0eyb@OuQA3Rk;B_e!T1h0$l+&9vG@*e zmBWpQ6vGC0;lgZ(EnIAuBx169tYOe&;lj4_1ztOsg^PolEq5j1wmr5X9@IvT62roU zSxC6XleC3HORbG<)rN7lPm|^i4GS0BRQqrFOs|ZB4w|+N4beTL+HZZDG;C;S*o~^~ z@@ZJO5YjSL1}7uc^r(B2)J0nTf9t}9^m5|b*ZuZb<`5TY_3!G!g`7BzYgxFEJ%n=< zLlQmFW8uP_?`7s9ZT&LbQETrcMFcxgizn%{Sz7&^BmQpi2lv}AG>-!8kSRQrq%hfm)-zG9c@6|$(AI}s+V|N?FK%n+wD>!9^^|Qr z$t>SN=bamO8&4>9O!v9(-f*7wPr;oX0z%@f=Irg2EikycpE4}Gsp0j zP4VG--fEi^XU(n^5=YH*WokApg7NNn_U_2@ZVB<$j=hO$Z@vy4j0T98@M(bhP?bF* zVWV!LURyU(%{9ha`%sl}=sRp5s_J!ou6Z8F9G{C|swHsqtdnkK=bHyn%+6fr{G^YY z1I-yyIq>{dbM;pE6EN+OQ>A)pIB0xj?q>Fa+B$KRTlmx5-G9WR2$)jR-c{ctqmPnp z3*<;MsClgo_3J(M-sq2LlZi;4JeOx4FxhV2;cBxd4}ZxJQ&$;f!ovEkm50BKfQPy| zeS)qsS|Ijj8rPkSB@uv>lddwVGhJoWEnQ`lNbG81_K$5>-l$Xl>P=S}jlV3nD6v@Q ze`qY#^Czbc6Q4f(Wjs!FJ<2MhB+5qk%Uy1ST8m7KxZX8Y=DJLCBa~U`bCc|>GJe75 z8-8rGsC(9TmjBT)#kF|pH2Is6#kdgj8zB_o{! z*}lha>ZM`V$ceHMEd-Y>>%l>*g+>gvHI%hpC~iF%STL!QJ!i4!3STe~ zlK27$SA@iw^C+tfn9Yii zIhtZl+B?jO5XNhEMJUxAhikJUB(5jv!-TRTBzxm@FR&tX1c$43$*-;m=?0RmX~A`; zUeHT>dF}_ca<%wYbtEO)4!-88TA7fBRNsyBD}1t463Do`bi=;cC!^wujLS+l@XLL& zRCvg^oRpMm+^73w%sojybydg9{)epUVExy7k_J^rJjy`M|0GR|9K*1~uX?LGuk@jM zt2(VvWmQMQFl#yD-fW5HU)2#enybH%{N?>wdj zmna5_LtUO`UFrerGQ(6FxI~G#u{VFeckClwmna-J_D8Ktf9#`NmnbJU_HygeAA1xo z&C@LA0Wn{W?Yayue$Letb;vDaOPU0P}$E9?2h323JD{0r= zL%J*Abhix~TGgcyic_sS5e+C40T~S?EB;hFv|S>}am@$fS*Vd@JBt>X_TvV-1a*%U zmkT_Kch+dux(mtAurw5LT>k|U@jcA-W#-Gv(2snypf_gJWT z#ur+uNvxX+%m7PXYWqrj+~*JO0;#vT=`;0{eg5EX1Jd;&skbM`K2!hhcRd#F$r1}S zdnCKsV)|XE+2JkJv`TYCdq$rzNj=I!jifHpd!a@`hjWZra%}t4TKdHuvQU!?V#hP) z&BH>C_`!6dv!0BlpTNU0&n@*9YQC%6W}#+*Ne8Y$&E$5!3pI1$SQcu;w!QS9W}!wx zunRSKL6>(hjkhl+D0$xL`}U*n!|j?|5QX-AE&jzF zIjVEO+9TuSZ5|pG2r{p$QO(84(zw%m&$WM6m;2#aT;@A2-9*{zXP+XtEWWq zH5b0jZ42IPu0|^2JQXD>pD6K&xIje-(I-l9A{N0)ZOFyMkh#&-ojsFlyn~|2dW}w7 z%MkRd-?nwvHH+I= zvFj2;IXRDNn6s=)Jz!myxh^r3lQXrtJf>+2#vXTF;uP=3{KSP#0A zgE#4U5283FWEL|efVDjWFb|@b0JJl3iVBkpHqLdXe7u$!tCWz|n{x3T*0rV$raXLy zbrESJ;%yr6dd?O}B_<-r8W_Iy9BJ`wng=YUn03&t-?ELWO~)`OTddry)jD0{N!r$- zrD9b}wIx1H8agzr+?c0WCiygJ<PO(^cU9&TtgdC{MuxCy_5VC7ikw@qa$^Pn z4I-?6Qde%)+Xyfbgq0iFORInEhN_nSj>7Fgck z|4}?5f@ctcmi1lRu%Ww7YA*k1fo7-3qo^MxIdbbyqm!QB|A(YUcK@g8N&U#_Ni~nO zDxd2$J=^~U=^6f!(}T0@4u{WcPYEB{{h#tl|H$b<{n_cHXNsmrcK@g8$@s|W!8oGH zNzZqm6h5-+K1k-Z-EBCWR)703In4^fai$%}BZ88Hai$u^@M%>EV4Ob4rqBNQrjw;Z zuoupKy%rsh-=%#g)`0(8Ynt@M=@?kGJT2$TYx2-O%EY@~f%h9w#vpl)?`rh0$K#`+ z=4$l2$Kzvb&DG9I#K2Nzh+U0N`#7R8T(8E^;CMVqqtijjz&#-X>2zze$Jbn)<#pZy zU3+$6o>o5_rwMtOP*ysfhY72WEWq0QHk>x_UshG+LjvZNxqHnBq*c3S`^sFWU&c*Q z&gTJE8E5;&JML8sj>Mg{{Il$6Mq%Uq@O{3W87u2%HUE&AvcXwh7Ur>D|lx>Ej?|8PZJ zZ+FB@SwyaYXqU0u@IfmC(gwoj9F8p+GV0Q{9i?l!oaoIC0x3iE@?L%88|&j(+mfJ`l)(i}sGQ>|Y(x*Z(?4M&d{+j^K_axYVKWh4O_G%#Wx$ z84!r#uV>Zi>fw;%VLWPEb9I}u8`0e(&h8(ycG-mFu0Y7*T}!cAf{+Uc@jD3bzZlds z2z%lcE8Fr`K(pX2Pv^a#c5aK8wN%rMn3QRC?bS z%tD9<8BMw``mWA|h*6G)6zEjEPoJwBGg+02x;RmTb86?nidjC(Yod~`)5{YuM-gMy zE{Rtk2r&>)*qRcQvEkWY8F$pK)iTCAx)2KPlEv>N-CmW3$9^Pa{IyR-T{q%6da(Us zJ@AntG?mIEQeVzzLg~ycd~qNt?zAb^Hx$`aOMZPpbqp{lC-ZnC3j$bE)GJNL8xZc5 zKtNJ91{1!TECl6kf(}ZjxbO;WEz9Q0MtK=G{+z!VrZl0-MYEfBXJ{XiCAn*K`kPdgvyk|dGp34iAgz8!r;PtF>?z8< z$ef_#gWE~n?$RY%eh!n&G@wfaISoPKKNRKoE(IL4`79u>u$&z!Z=jaR)m#GDLAbU(XHAb^r)%6=Xg<+?b=WGom05^_qQ%7Gmjt=T+1_S57IVRSIxuzbmcxM-I)0c$d z)Dr8cTD>+>fp2}`o>E`uf&ff6AU832JI}Namag1<7t5Dl30vBzxRtOm=BirV7^(Oq z4&b?x8hqvr8yIiMSJ_9zb{xJ-g;d=Bqm8ZtFA3;zDjei*aV`E398dTnUN2ARE5;%n zhzSwRlUItxc2uq29;rA}${F8#kL}Rc8JNwAq{CUr3>MIEYxm)E?6@el9o}c`crWd? z7QAR|H$3UY@3Nt;)2f($JOYeHBC<&_d_O`~36Lj?t#(eMbb_%Co%_Rcx9I6kmVH~> zvQyiCp`D@Q0ebvH^5yh_2vlbceIH@$ke=g1yjv_%L><6_6eMd=ngR%6sd1u{bdous z!jdmOcxkj9V<3e7VspDhTu&WWt}J>@Vn_u3s^N0LhOaw7(NAxc90QWp*15ZTI*`7i zYIS8Kej=1M6t(G{t77_rkkDCG`9jF`nEt4WZI!+Y&&-Te<4pGB`o~g%MEGuJN4Kja;!xb*A$T3V~?AnimxTClg zre@PCx>MH#)8jG;c^-V#4bpx_ROcbBwz^i2#WwnK4W$;BWLQ-T9Fa??1%V@S3AG4E zB*eis#F5x{LW~;M;>q40D zjofe{N{_z6^tsh5B!KER$L9^kryMm`3ZnGwvr>H?aeTh14+>PvQ9UVb5+#u2b?TwR z@o=y4AVm-p*rz{n;LHEv}A$ z{z2{8wKC$0&T%3y4l<7M@$GY7c6Q|5LFTaY`k;=QzdDD?WV%mSV5UPZNYcKuTRw5C zLF-bUR_j{*(1<$wS4L8Xc=6y$RkhSJ$*I&lGZNG-XC!EL%t%n2rq$nw=NNERZ@o#| zFy3^_@n&|6H*tzbdEgKi{(f(=CL{;a>c6IQR-caFTs$WXgZC_h((DNy zc^XFse(u+6tG5|;8iCeUIZ(49YC1MKjFiDwt-3@Ls2ppgMVh4H2u?mST7&n$Y_to_ zCd?W;+ z_+zNukT1K2xqUxvd=sYK5QHucO{hc5#XEuZKy|uCnBqlfbGjfC$$4@IJV|o%pvyaA z$EqDs-6-kl8R2~|EGTM0s?KT^-*tT2i9BHmj#jm8hxq7&}<-lrBLx4iZ6yjVhJnWx%<@Iv>HhnK|lLnJv zJ)4R?qPhk9xwX%USX-xsYZ7B#=Uwxh!(FUN)xBSpd2O4WbgA2QNLJM@@vN62+B6V* z_Qb;%;=yYimUGY+99jR9R*lXy9$#G=0ue(pr=>}va6~Cfr!V`%PN#P2o8bHh zCHL)bAu%S_x?E|e`w@R_S!NEVXCdd-?rOyWaF*HyS>Vd&)Dq80V~y49o>tQ-O=oQ_ zaw%V`t`=hV?UG;lcx^=>85(1)#wZSOTbwwVgn3Zilai88dxzy$st5A7d-+hj5(#dj zYv%g%lZ`_rD7@rQw;lea)vTb=E-PB-J55wtXEts$n1<0 z2QDvS8&GFDFz~|Z(0uw^Z_BW!!@1f6N^H7VxT9HbqL+j_&*1JbV}_{YJ~&5U=USQ& zorG`eo-d*1R4Nzmaz#~JXTmUVS<87)y4wNx8|C*mx@N%sqJDol#vjt5SBglEy)6t| zGSC{N6<`1fYVbn6Z?~+d*5<4m?j5VzT{OTH1_CnAkN5++Z}(c1!AA+pJZ%yTOXk8P ztST*CG^^MS9V1GCq}6}IjLQ2di@H%smQ8KmJZCF=0l=kw$B>huPKxx`Tcy9QsTzrq zP+RKyuEfIJv@bTH7Pd6&n>4j%eHWh*MH;ly)ovQ8HOu!o;#O$eOsz9o=tvdKC$`N# z#+O_zU9#NVHel~M_p{A;g73w(62Ro+3IKH&39v6}yiWtjHUVHxLhdWW4aR20DCc;> z1)VwDYOg~8Fejh$T8;TYVN@f?bt91M%c8G|VfyjJAdj|66bJ%lc8VLv&MKjh=f;8S zEQur4#F2koae$7*fgmJ~R5y;f8pm7>%k8P~=v8M@{AAQF+m)ruk>m=jhRIEiT5-lo zw+`Y1svOywm9YqN9kg0i&g)dr{(uz9Ut z`wi}q6!WxD``O0<9jCNBM2uQL&fc_Z-jFv=+Z8$ssl0=BV?73ToW6a|9)yufhZQQj zERRO-d@`XG!Dec(xJSBfJe-+#4BHpf8zr^&ISJHE2B?A{rA-8bT!bSgh31K_!xy8* z>A^a52Q~WECK;8Av%2eWq)s+#PabFPj!v)AxBp2O3TPOXjD@;pXO%u!Wsjy$(!I3$ zm(j6SX;!V0F-iCE9&jk_PZ+TMmJ(`H^%vYCaSG{1_lQ$S=l<_2q%uqNUsy;hY>+a? zCV&r5L?P)xQ%FYNq%oU9l1-*=hqS@V7p+I3 zd(p@Ga_g?R>2jQC)74n5$#zqqc4yvLz?* z@7;%s65Kp%$Arh__k=al?+os!bCdd6Us8X18IoGGwhPxx!VrpiA+O1C?{UC>BqF?V z#!xXBK z@LFu=MK{hVN;=%OYrqTRn}ayXA+a-%8El(tq%9)pZgbo4N?@IVJsWz(6a?2M4BRuG z2A8o~gKP5z*JgvO5edsA66>u9&KcLovE-;D>E`UwCP0Y0UVFec=>HIBPW=du7tx_T(4) zPAAAB4iE4)|lE@aELu3I{u9kHnv+k6i!vBx445NWa#@ptjo%kBT6y%~(dyZfu zz?G8)sc$w<)ud);!)2x<_wUF=pH;r`zFm?nohCUKlovecQqJ^Io`!U_?M0#L^ny$P z8W^|Q@0`npbf+eJm$X+*1Ej;$=;sS+^i#(EC9k#%nwqt%%2>a|OKVrg^~I zd_DnhZ9w)kVDy>jpKv?2=1_(y=Dt+Pzlm9=U#;78xW(nL>(;v*wr)o{-t;B~O-S2n z5O*#`fZB;S-MmxB2^k-&Fz?mz4$QUhQj_TP=}zl4GNq;kkK@#xl68r%bS0N<_h~!z zqR@`z6aGkT|MIr>FV>;X1(Bpa zjGZ|fwnCn%G?ydh!gENcX*oXTXQ29Iv?+OD7oTH_fP~}3$uC_$T^bL+QDCW zz-`Ua-8%z;yWqZU2;yz~GGIC!8@#El_PfpMgkd8~!J~ze|7|+keA7Q)@>foI0YKEc zmQN7pY|zD&dc^N0Iy==|mYGmnb8$~guhk{{Uqyb^4R2^l@8}zW`9!={5QHdHu>j>Rzx=(^07CR#xWx4=P4_Gs2L zL^)OI#25ynN=dIAr0mn`S02Oq);lON=^z@UgJ|&5fLrkNdSYpyJkX^%1A85qK8-kS z!0rWyR~Yu1!#kj-7PqVdS00`tx%lw*%=L$!`+SGJD+$-7cQN4|vg4DRE4mWxPyPQQ zsjrqv3zG7Y;%xtec|yTO)}saCd?N!-{LdZh6&-4J+1L-M*&Xtp%RXn(cLV~GReIAm z_T7)lvj>>oiXV6F)weYGX1V^h-<{{mk^bH7aFLsVCL(s+zIsfxVdCv@_VEYe%LYPl zULO%_G}qsa&djTs7j;e~1I!mbnVzRSBsh#XVVrqZGY5K{;o(YS?nmI88!X^~)GzbI zdU~l$xRC~2qQ^XO>PRjIj`_0Y~%;#mwfeGdS zdQhE~!h6^7!~z6!|Cg*zVWL;O+KFCi!-H^Vm?){WbrOwF!9=e#O58^0%pKQ8%zYK+ z3(5P>aqhnOyu4H2&ha`e7$;XdORhbxe{80+jv#NFZmY$xMf2^Tt3Xa z9s->`F7g-Sh>6q8%@49`UJj1|RVWl(o->Oty-W?}^rgJUX$Rm;=Hs9g)i`}WiaiK3 z7suRLd8{qgZpy`x+B!J{*)Qb0DpyiSdrh)8fsV4rgu7IewE7qHMmmX6ru(2^(p~n_ zXfd)- zwQDSXBk>c={Ezbrm0R0zU&ScrzKXq|hG&dr9>_jpT(kOEO+{yI?AT?o&a|1a&Rbua zlUwtrz|k4OqcwAm!uh0F=jy?Dbm1^=ugA{OFJkBD;biQ%Az=I8YFaOf9XqGh9FubB zl$wmYb7Gx(zv+xl6v5zkFoC%+?WWy_2V*Z7TkV`M9jnTp+AX>A zzM0*f^8NTuRMO7e*E(x3rG@7?&`ND|&OdW>4-S+ZJrZ?PulT}(u{$$3+1jLdrX{wd;IGH7|b;Ls zXe`4*s@F%9f@faCJi)9&5vXAEjV6W@)8 zU~AUadJDWz#A~0cG!MA_P=&Pm6MXKo zhhr#<2g($ROj>@s(5?cs*XYR1u+ARdtJTBpi&7t@BeTABc0nS=nM~d=5D0jV8*ru< zusX!`n))%J=$C>`tZvcUw;9;9$O{d6B?qGjT&S6F)Zj8JuqXAhxjGZSQt<7|P~W|J z**-;gvmAAo)+TX`x`Cp{28OiwJ$xN_Q%$mW&vgD^ZHQBFHSE!Z&@5XOhy`1Lp zQTaZj(ds49i0qF>$Q>SqXk-JFH8yuo(o&^<{ElV_GQ7`b+VbCV~|o9TEo)tpzQ-oax#RP=kDvi%2aJKY?f zfz7R2-4;n(`ygU+&f?|TMTVZEnzK{?SF)rFC%AqbX@Bxzj?yKE&U3b=mtJ$<;XxbB z7)PGbt*JOvGY4l(C$d9*)^v=WPJtT?P4JRDIrk#_IPbz#t?rD(<)qq)>!V4rgKPFX zf!}u|8t=+>wcL*+$#Wm-EyDF(oZrRmfNd4#Bm*x zRL`Ym=KBxI@CXcjn#5Tm>x0j`OX`D_zTVv zyzO579WHT?q)yT!Yc6$iX6@iIMno@GUdS` zp4veGsLEm{=^MOP)u0TWc%0PbT7Z`+jQFQ>tDY4UC@n)r3QY6Ueli-%2KWy?zg={z zTgCqmEIPSQ-4?Gcx(h6Ew^Rym=}KT`vuClV9zLOuBJgSls=X=s?>JE$e~C76@j=hzqQV(Wn33y&`@>LPW0yFPKC!;EM1n=TIGAVW- zZT)4K2t!aE!S{sNF_Jv?0Da~yPVU~qom#0cNg8_pRXT@a%a$!&7A;u3 zcxholyrlGw=#t_kOP8&TF2vEorAx||6_=M67e#L`iI>Nh6&EZS7P)6xNxV2(EdGW? zaHz=Hc7haJ>Fj(CPuty&|K<3<7XLTl|5Nz?ef)31|65|SXV02_YxIVt%a*MiAB`_6 zDUaS$u)KJ2aXh-HpuF_#c=Yz-;?iizlCs6cONvY5NKEdy&+wFmiiq0>(CqAK2!;KdfmYsKH zX~hzNS-Q9)Ub3|GmdsnDS6&hAOS$k?hl67g()_}L#f9^WSClO-DJ+T4FOL_Om6zOG zT<$m#Tj}44L^`fA`yDTQv*PhnHsAXF7k=A%_78>>J$%)Z`&QpLclom~Je#q5@2_&c zeARRBe(%NqJpATW&rkW%6Jl(utQ%x%!%%*wkxtr(Jjb^cgc}<$Z4U4f%6!ylL*u zpO1`L7)-7&{mTJqNpbWGrc@%4Xmmy96=RCVM^_qiuQ4kwFb9pfSIjWD1!t**<#t!L zqhpFBv?%_HR;Z_zk8rJ|P=EGt-294}s0Zo-S( zgvD*j;+iyxDQ+W*+nC}-PE_%GH0t;wV;0+Z;>!w3%h7_CNHbbe5WgIWmVk;&ZQQ}b z@sh>GzHAki$C0BICXZ#y?y!L>jl~5kkzn`8lES#Vy{sT!Tz&=0B8r%z(S;?;%000M zxoFgl#Fm_R(HKy#4OUaf4O_Eqa&0^q_l37FzRMtxEki-J91!A4_We1EM(-{~XCeWc zENZlONDt#Xv}|cf`J$4AUJjzsWyQ;p_mbNe7ppseI?$?0w2-2@C1IN_r=TPu1@XHk zl#~_~OZJ?Y#)e2(z{C0r$(0)EW4{1Cjq!ii5xdK_2s%@NAl)4U07^+P}E0NwFXBppV#}s$OYqjTH ziJG;v@UHp7Ui#q4S48tKm_K96+-t6$e*H}!?jC)%xSuw2Anq^d5q|E6gb(+D@ITD` zg+0R0`H=A8J`ld+-kgP`%>l_c-`)j1_B>oS<>o~0vC%~q7N9dKipG~lhth5vu5PYnu*YE&@iS?xj8mlw`Rv~m^FP){^3+4}Nfk=e!NrAs9VL!-B7`$H4F74l@+)%i{CPmX=3jrA6}>p>AUcBAaq3r=&c-RGrPd zy{u$KbT-CTOHu2yiiVE4%>TdG?iV}f$Fc&{=+fJx;u(oVe~(|J9>3BmVC3WmQ|`u( z(~5}|XGDotgF;l%F_+-~rTBlb-Io2!?Ei@-O4psZ5x3&z!`wM;#C=$JjvFUjzq=b^ z(oBbrku+dCe^&mK=|j;aU{|5xbaOjsqJ+-ZN&@s=y)49-6J3M$NNY(%E;$(=&8PFWv3ZvODLOmCVPW9U}yc>McoI;X>W(h{1Ck>dtFf zfslKP|d}|6B0?Dg57#|4x3ab@Ml{{k&}BuG4aL z$GP^nj;E*EuwWYP@rc}_Ab)Edt$Yv`mXgf>+GNklwrJK}rQ_b%e_i}B=S+ITtUUKb zYcAS+r`cFut`#G$2k)2^wNoBb-TvLSqk?Ez2|ANy6@~GNWo|bV!KnAb`M4^=mC=0Z zlZtf^8@+uc2ANTF9NoS9SLtl^9`E-tMjmf20-`$VH&+7Dl``g!>X{XUCf;6w#7g7KmX@u=U_dTn!^6Xfqxd{Kts|{EEKvb>IGwI2HqAQB zeSQf}%;!Zf?7^p3I>E*C71Dzs$n&%bnk(SqBAmUWxKPD;+v%6)losH^PR5;O#mn^4 zIsZa6t7%q_t{DHa)+}}UsoBu+&REC z5}7wZ1jzh{yF2f^XwFjf1~NM({w_Z+Cs+=FWKS!Vi`(L8&Q19)EZfa`u$)fTH@|{S zoa3TXB9R9C@4$cgYsgmP&KpJSerC2gz5T_W-fb0Qdsm7@I0 z6{{AxnT04WSXjPD4r=$YSaz2Ockk6*6xSW``4WU+({{JKU~z>hCTYZrm)>K;jz;xj z(%r*_9%lO{1fAQ1eqZ*G-?Q6z4FvhEbT++uw#1B(q!yfarFI3l7?0}piT%+EjJrkq z_^Wh|4LUt}(vcG*k)2ovZM>>0k$O@jQkL75$b@|WHV^g@*fQ7_*bT4;U>jkFP3uau z!j6IMfSn1Oo`$h5Y$ohF*gV)>uw}4UTnGQK&9IHIpSd3XVM}2}4{$D;W&u$i#0 z!sfw#b~^mSE{EL!`vPnu?9dtT54#w)19lf|`iMy6SFo9|?XY>Ur_6+Z*mGbvz}^Jg z2)hin74~7+4%qL(rk@;%{2DeBcGxWVhy7z7{KKB{IrxXY8nzL35o{}LEo=wuqp;~8 zk3>E;8~$Mz!{))h1X~6>;s*GKy%e?)_956-*aNT~u`~ZstO=Ym2mWDy3!4YK39p|lgZ-RLt&2Vv{$W3fC4*Mj zp;+|lfK9y({_!^E^KhrnMA)pmx)O6?Z;p2*Dq(+(2YVV|lh<@5nqbG{x#@$j+h8M~ zK>6XlKT+8Ao4XR(uf_(&b9qe}4ZLs@bTVOx-82rPofKB~mB=RooSlFz`;UD&%C*dEq4t5>v6R_K0 ze+koy$ z@4`Rqd-63v*vR+69rm3a;0}A{kFYEQ`;T2+iT$v@XzEII!tRG1iI+RP1v?S;UD&y> ze}`QGo3gtru?02_b_eWfu=`=hz;?oB!jAkD-l7dV5q2@`T-f_zSHRBQ1OKo;`Wea% z_Q21PZrIFMknT@MBC%g0-LT((9qESs_+I22_Ksg8->~1_hkV0+{WqvDu-E<;^#yk7 z?@?dQh(!Jdn+bdW0n|6x;y)nYu${0QU`HH8eS^L1O{5#P8MYJl8*d@qQMkt|@+QLm z6Lv1_Pu@m-fnCyucwxWL4&JcmA3?fdH@%B^KZADL0e`R!e}zBT4e!Ap>~7cw*gw9H z{KBRmMLmVR7B=!(J>{S94_h##J8=+p<(Te7 z>Y0(qmvE9|+-}=RF*h<(9un)sF!tQ}> zg*^b<0ox6mjvJ^iIv@UF&&-5>*i$cnf7pqz8(`v@}ee)vZ8#V>EqD64i`)ROI z*i6`L*m9VLu0(4g1O^@DF>@rSK1% zF%kY@cf&Tpo^%=f!+sMsg7et2%i$mPp-J!$`#$Uf*fiWdSqXaqYy)gQY!mFOum@q2 zuYmt^QO{wcus?;(hHZyk0K4`|_=i2`D)@)p1lt5V2=~Svgsp{*j6-{bjl!;;0{^hD z!Y+V);A;4XopTNR!`8tz!Tt{RAZ!P01aHh3f?G19uouE+!%l@=02_y`gsq2dfZYMx z1ltOG5cWOT$a#^-*)jNs&4SH_eFb&_?69fu54#SwL5{;V!Jc|8{KI}5HZma+IRYDn zJ!=~L!>)u~0Q(!*O4xT`8(@>KgMZlbVGqJy0~Qa1+c$>t%Usx zYy<4*>){`^Y6kqnzBvp2Gb53U=XNK?!oGo93-e%SmUJgpz+Q>_0vlkf?}b0u6Tbj| zuxG+XED36+W`9% zY!hq?>_ONr*hm)6D{J5%b}no->=xJsuzO%DVMkTMKWrSf3AW)r_=o-XD)cuOquy4d zy~4ix0Jy<^c^%p-Y;z6foM7L05bYJVa(#DVKkT@Nx)YtS&(VXyrg$`|%4$G{7=G67z&J7BlLPQ-j$E9?(3_tpVBG9{5nzXJ6W zHWM~CEs@BBU5fXytbmpGvTT8U7r(*dd>Wf7r`lJ7EW%0smKlFYH9vpPrjYEPyQ>mq^G}+1K&>)Hc{s+#uHi z`@JiXZrI^hA>G-L$OPC-*c{kA*w4e3!9D=H0ru;#jj%1St*~#wcEAqDRa^QLc?C55 z!%l_GgZ%<*8SD?IBHge*$W0`gV9%bGNF0Q{88&itBvMhBNQ{L&YZdNif&J+h6NyEz zFFuTTVY?nhys)q0W16k7>G;TJ2kfY)5$`o<-_Ijn*tD0y3-+x2$S>?<*aq0yuuZUE zggprR71&4)X3=4zu)l}RhE4e`c)^Z>t%SW2wgI*rwh8txzlVR=rw_t^4C7YVDD3h- z!awYCqX^cMWXUi>HchrJ%Q3AO^Rs4 z*cq@*u=m3rg#7?t`;A;1(Z391B7^Ro9T~JDebDK{Pe|P`2xWoeqwv4s0*uv8z{W}G zQ%@RsUE0U)Nv(`rb=stJFB<(>@hWbRrO3p~yAr3$fhi}YKah0Ii9Yh^c3XxJm?r2 zc>aq#eKhn-ppW$HH+XsubjhCrang6Irx!t&^rH**!Y}jmwa{bGEB$)X7u139+Y0?j z=nn?;YFFO_J#A7~;`0H0j;kMnJ`MVefS&8>DM_e<&?PRn{BBZN%WpLFWzfU&mjgZC zk6vWM&-aI)WC~E?TnqhM@E@jch5iQgX#xK^Zu<8?KVfoL;<|tybM-^eFMwVc&~J0~ zlw_nI`sV`rbXOk@{YmIy^*aap!~N(*(7y~ltbVVB{wVaY`n}cq53ApMpg#`(VfFhE z^shq?tKTUpxE6*UR=-C>m;8O!&&OB4bD&H5!|Hbt^#6qZ8`ML$ekH#?NC0d3Lod0q zD}hsxr>|7}s&9qi1e*ZH(|D&N- zLofB~Nv4C5^yfhT74(9DK2HM>y$E^+=F)Bo=(AmYE%fW5&kX3(TzxC_mC(cTw+H%~ ze!@Ql{rP^vPZ<)49D*KJzehv=T|asb^j7F$^}7iA0q9}%d#&{!R=>AGe*^x*>h~V# zzl9!FzYjrw6M9(vPQm$2@)uUWM?;tNht=;K=zoRY7%0D|-SR7feqVN1VrM}AzN@c= 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 zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNZ|ir*M45K zs=_#czxN%-8F3r9%L-bEy9ixG-obVSEh5CgMIa^g2MB}GE?TsRa2p6AxD$gGwWvF7 z+(e=-3Kxl>tE4(1EfRFP$M@drnad195X5~x7w(+rob%4hd_VX1J1+qO1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF1Qe*c%(*S=o?_k?S^@+@3gq*G^FYW=FEoM2_XUoBI|6~20_C$oOaZA05SYzU zvrtGi4FUuR5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfWTN_UJO)4-IwKjKc*!>AeO*(=Z07U(h`U(;P{Wb?In*bkdJ-Gf9!ogdIGaqYA6sO zK!5-N0?`Cg9WAlE1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Cu% z7g#EOwQB3UmP%Y$f1{wtc0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBly@Kk|a#Ve||&TF|W6`e<$o0~;fNq|5QfqY)r9VDxm1PE*u$jAS4 zTZi-r5C|ZUkNvzZ2goWS0RlS-q-LiX;{*s0AV7e?R0UE!)nsxJAV7cs0RlS-tZpo3 z4y|o{#i4F|bu_;9ReA&n5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7dXY=PxAepL|U z`bj_4E5)3W009C72oNAZfB=E%3-r$f^EPU(`*vyi(Iq56U=T>nP$~!zAV7csfyoQp zIdSsT)p!4{Cm&Qm0t5&UAV6Rc*q=T;cKq}&P1m{)7-SR#2oNAZVCn+bT=%EGiRB|e zfB*pkg}}M9e}4V!{h#Zu^*w;XMoEAG0RjZ3DzNzf|6i{AQ{BLF5ggV6z7(V~+`tAp|u`)z}009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF{5Jx-+qbPoZ~dg7>b;{mT>=CM5FkK+009C7rY(@42l6_9O1nI52I&X{ z7f4NT0PzVBAV7dXP=POBK6Ci+(V*eQCP07y0Ro`}4t)2DoF}cwq?;AV7dX zP=TLbJM!b}Z(jHLf6(nOHUR_Fkygx^^R`g46^E5FkJxmcXsg?%jRq zi?4j{A8WHqOMn0Y0>K69A3k}wzVe{yTK56L_XqI_5FkJxhQPh&&%giT#oMm?F*di9 z1PBlyK;W^!rS+TV-+B8^-L<|4XulvpfB*pk0R-NA^`qZ@Kl`ieet>N)A^`#f2oUH6 zKHYclm2dyJ+^l_kb5DK!#_)fDuHSU?!+8IDS^@+J5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7e?|3zS>{X?p5?f<6S zUo5Gf_obEq0RjXF5FkK+0D%w!JyFcjK5TS)6K%f_R^SOg7>j$pX zf1O?W`kuWX)c1Y+)Mx9V_&`1eL25L2MMH;5@9H30&1b4@){Xc7$q1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7e?P+(FFR7KsD<$O1$B|spSz*gsmSOU@#h%4au zkGtS=H{B30s#U92oN9;O`u8963a_~009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72>f?}`Qo9~w9ad}l=BMHl2uFs1U3ugF0tn<|Kd%b`vWiH6z;*&nz1@s)0t5&U zAV6TO0!;Bkxv3vvw5FkLH5P19W@1NXy`D|)i{{tv&lmrM6AV6TO z0<+)$|8U(O>kgKS009C72y7v6;?ooB?|gZt|Ng)2`#i9Pl_3HI2oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{#t7`3K5aF4>TCTb?Hsc+0t5&U zAP`F6&MzKYTiw&tZJR=c7nT440t5&I75MI<2flgq@zcKl54!)wCP07yftUh^RxUoV z`@L$pZI8!PkeUDi0t5)e68Q1xrHgmH`?2r+W9@cn2@oJaAhvKTx z_k;KZ2oN9;L*UZw$6mVQ{qwH-F?P3<1PBlyK;Wvt+UmJu&pvq}wXOdFdS4JAK!5;& z00J-G|JpCV9{$O7Kft~gkpKY#1PF8jNA~Qy_w(OAte0OucT+ljrvDwF?bq#mKi)k~ zOMn0Y0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBoLzX&W&Ur5!i-D}GI+0vv*S853mAV7cs0RjXF5C|bKygvvLT1Wx} z1_I~n*}$nZn9wCafB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 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 fXO91im%I7(FP@*i?{Ph!=Gm-Twat^mHBJ literal 0 HcmV?d00001 diff --git a/build/bin/libopenjp3d.so.2.3.1 b/build/bin/libopenjp3d.so.2.3.1 new file mode 100644 index 0000000000000000000000000000000000000000..1393ac47c6500767d39ac6c9992177470e2ababa GIT binary patch literal 187096 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

    SZMJn2^<6Xw{9f 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 L9h>_V8~^_S)ct75 literal 0 HcmV?d00001 diff --git a/build/bin/libopenjpip.so.2.3.1 b/build/bin/libopenjpip.so.2.3.1 new file mode 100644 index 0000000000000000000000000000000000000000..888bb639a24d1baefc1ccf094297079cb5b5f965 GIT binary patch literal 151848 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�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 QT)R#GvJ+Hv<#+V|11?A$!~g&Q literal 0 HcmV?d00001 diff --git a/build/bin/libopenjpip.so.7 b/build/bin/libopenjpip.so.7 new file mode 120000 index 000000000..67eef86c3 --- /dev/null +++ b/build/bin/libopenjpip.so.7 @@ -0,0 +1 @@ +libopenjpip.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenjpip_server.a b/build/bin/libopenjpip_server.a new file mode 100644 index 0000000000000000000000000000000000000000..de6e1d1eebbdad24efb915dce072e4eaf8cbb9af GIT binary patch literal 226376 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 z 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 X&HZRxoO2Typh61>${`e-MAr`hLcuP8 literal 0 HcmV?d00001 diff --git a/build/bin/libopenjpwl.so b/build/bin/libopenjpwl.so new file mode 120000 index 000000000..ae84433c4 --- /dev/null +++ b/build/bin/libopenjpwl.so @@ -0,0 +1 @@ +libopenjpwl.so.7 \ No newline at end of file diff --git a/build/bin/libopenjpwl.so.2.1.1 b/build/bin/libopenjpwl.so.2.1.1 new file mode 100644 index 0000000000000000000000000000000000000000..3a02c0eaa06af9f1c1734919c6f9dc0db1eb1339 GIT binary patch literal 264120 zcmeFadwf$x8aIAg8Yl`TAZT@Qtz5KR)PlDnq5+8n7qp_)s%Q(PrN}L|jTE&|2+_tv zrMjS1QR{Up-l`&01WiF{#amU}t%{mO+)XU272UNeE5Gma%$$?SX#%+G?|t`=H+&A~ zJl}cdnP;AP=04|iiEHu&$w^6?@$06Ys}WU`D-fp)DA!WtlcqVfEUgFrKTbQAd2MD$ z*N5HJ-550PnwHKqrO_Q%&HW<0=Kev98~4@$OlqEc#odUP43gs2%XsxNo^cP!tQhxH z8J)DJt3`%e?}H_uaVK8-Wq(;Vlb(ZD2tBR$vcs57Gww#bOAwFrJk*~TXAJ zYI5tC)XyeQ-nBIO^vdPShF)8o`q+{gpR7slld6s1qdhV5&d>x$&u)h`c`{Q{E0eYK zo;}mQNUF14@9AFSYI5{F@yyips?4b;ubVLA#JU+t!pThMFu4i#Qhl_sC<64L7MI!Kf3D-tkn~A{hRa{$eZ6yM~ z*Kuvb^#-mtalMV}9bB!rtiK%qZuMSr&iAj3`S#7H=4`Lo`pV!pHaZ%w7_qqE?tu;7 zGtVDi^Y8JwS6_DTf>l5N_{h0`yFT6Dcf<5h*>!`){yggZjF+mvJ)-pPlGJ_YEf`gM z-#hn>x}yJMZ!g;W#x1E0-lZG1b${~99{<`jH)C1h8+l=y_e$-Jl&e3y)-mFoWlPR1 zU(omF-IFTb+IICUv}R3_m@jv&U^9s%;zrq`t$czH+UC6>%9J?=1W_? z{OjhnLBBlLr+Cf7_l}zTkLw$Y?{%Niu<_)wmMLeCId;kLub$CHH2wL8*N>a-?SIl6 zo*O>T`}^#3p*aU@#7nRc<+bBx8HYBYmZ~{E;;kKyH;%e_j7$-#no#<&GxFL69=?k@y{nd zyXjWXpVJyHcxU(ae^0&b!9^ckpF3d0{m-0VdqwfZJx=|pqV0+opBdA5)D6AT9tcFn zF5mD`QvUu;8%C5iUAuSo#+}_ZANS|1vhBOxIPc%d$2~p%=4Y3Ud~NTM`m%WECJ@=*3Tdq0r@TH}vez*ACA3peK z;W>Xw{cf~b!Fw$)$Wqa=RBj@hIM=CiFY4;DyQ-t_ji*{ z*l|(5bNW-Iz5Xz1@5^7@dGnpMc|UGGvh<<$^UA*Y>Vt2N=nlK@ob;y$N-vtR=)Rkt z^}6OWtU|M8mgtMC6~NI$p#Gc$g0 zW}W`l3}5=Ri^sqI=eBI;n=5xbeCEc-=LH7eby4fQf25?I+N<9MlmAd!erbknOyNDF zA6PNx=wR!DTi#gW9{a$q+qCL$*LHhSyJgDydj@}&^7O6m{E{)Kch(1;_6s(3u1mT0 zn<<-~|6=`u7iwqTyY$#%YGxDux@kQ%$3?Nh^A6XvzOfKfR0reX1AwP9N9=zU-Q)8= zl^h=*+ATi*U{ZYiMs#%X^hvkH$14-aSr4`2$@w&ap1l+3c~=5`{+d8eN&-7W&A9e_ zDuMowCBVN)kgtxO@$)-9LAtjl(0_aa{L%#ayqLf~)OV)ivi_DOkUtfS1Fg)UpMm^7 zaqtxO!(LjNABy33KFW`NAzXd6UfN@_Bb_CJwGIr}2#>T2;96qFZyJ|ZFKx}wPz=AH zd+|+cWq<3Xbzdy_w~Juy*d9Vo+jfCF1-o`3NRr?5y#P*>_-YJ>2wzVX0lzx_ALC3e zuU^^{-wHX@H`DK9sb>$V=Pm(jxoqcN+Nyzq-v<5YH%sc%`(1%QE@15}ssBkY2*npj ze1z2V^OFSs+v28OB<=9pzXX39(xV?WG=1Z=C)de*ow!Kw&tPs%+ragxmo|5=0M3>8 zJ6w)OYjuweV#F=+;WA&7j}(fWBk@tv4u}6u;EzdM14;ILTgo@=e7W?8JF5hLhvcVm zPao|F&3TG+5TUO2uH>(HRq&@u{4l9cnqA;0N;~vH^gi0rTE5hOu#|t1%y0hJ0vIUq zVkzeyY3B)!O_t+a=~r_FtPPUo^3~UZzZQJ-n(TOX+u{)HC-Kk#6@R1%9@)ze5hrCQJE0 zAeiK@mE|%>uxm}y&OdDw_Vh{q%cTCjs3FDgv)&?tQ`%wan}Xl4LoV1z{vaB3;wRmX z$D~}onZgbl{DyudQqP>b1)YiX=(h>!lbk20BH%~kRr>uT>!bGwq0bkvJO8AfxyK6p zn7#s@BlEQ^AmsEvLg2YF-89(_7~}aInXiAye5FfuPmyvSYZY>g`q)dB`}QG%u}Shj zFYVALB+^?Z+pG5wPWig)JBf>%cA@0|iU#fYjTXsh1Eiia9uoNB5`RzPkGv`Hvm}0! zw8P!0LXkewJ`YMixqO(wuMyF-ze#-T)531j?X-!qUN^{kZItg-QvYR^dbCsG*B&Mm zG3w*l5)bYa3Em?0{7L5b; z)^3paKR;UHS-QaQk@`%N{&wuwLe8fmSgVtEzDu^-qa;29 zY*fDfH3G;+e(2Xz%AfbJpudGb(Ql%Z@B4?4FROtTl5#@t3ckLw9CKuOrO*HXzXlPk ztwgv(OVjc<4w8ttQS~Q%ddUJGKTzQRkpBG38zSBLGL}u2`&-h^%O!rQO!r3F9!fFV z9a7IunqcB*_|;Nr|GPdA@};|LOJ(^^rU4Rulf+HiA>}{)xX4$Hv`@aoA1oL6t&;x% zDQCPa*h?htm;7HX7W|WBdvY}FLw3+*|2|yukC%41TJ}e0N&IjrXWPj_&Yco}LFV^E z*&tPm>}lu7_Nq$uk55bdeu=+5Q~*1LIL$B1{i1IKeznA(lIgx6>*>o5h-7$;f%pesCHR&~e1nufe*_f3?@tmBNj<-jdJYoNv}2_` z&y{wT&AGNk$|-nAqlK*aL=f2X; z%O&1d@*gD~Ty{I!7Ktx;SukEH#A#!so@-=1GV=AD^usHfh5qZsO?w4*(&xLqLXN@z zkmTG@J5c%RhsKG{BKS%W1aZo{M z%&*aI90j(%T5m1Q7{5t5OBwH_)yR(JVu@GFd<~NFCrF&;2bAsv>4%1Y_LTN4mHqWa zl7FSNLyK&OR~{(>YNQ`_9|VE;6$)7EkoLbz_ICp%Ud8soxY5#nE|>oHl&rreNd9{1 zpM(A^?7SU%&~Jyt-F2F@Cc9mY z($0cBlD|yOJI0G(ZKUMC`bhx{c8L3rQqM|R(QBprccg#*^p#LV4kxu7iF+k(v?m*- zoMjb)f4NNeSZTL3IUY0W?=D$h_nj>G&yoB;gCzZ@H3?uM{D6L+Njd%|!5olumjC&w8sZAU!~ONC#lbEvcERU#Vh^1%9!^_KXFU^RoVWySemB&UD~--3T}|N zUFx4L+mm#IU+TZ-9RbK{sof;y%#rmj4}A1nCG+*Uv`>M6HJT@pou8ETqFm;yANbin zPZ$1aY(H(4`aB*HjPFW0d!_tmq}@)D_{XSEB>zX*5AKq9iIg+o??TRP5-*ha)6x&8 zNPL-*uH-ky!>>#E3#I&Jl3&Zqn>BC2{Jhe#=_O@(d0O7=`LoNkydvDRyh)c$$(vbN zQaEdNX<1>(WmC?dyI_9dWz%QOEfit#L-GpBr;~u`b7$WO#tU!An<^!oKX-a*XL{Za| zV3sMBm3ZeDXoV%yOW~CT6iim0@0~YeQCVT>+`=O15rw5Qg>gL#7HV@B%o>>~b7Jc*{z)S%veFd|6@M ztRi~O^DLOVNSgsAq=(Ss%)-*Lk_7@bbYmXQ9kLcBkP9Y6QBh>}Kzb;e>n$yooTx~% z=8J+u$O2Dclt4+A!i0dy1`E8x@#uN>d~N2!GNabeBT}OZM33B4My-uwirZI#0=hS$PXez?e4|?G`&k(%ES7m__r<<`!=@Y+PDsSPP&b5oI|S_AV~czPMpx0rSufmZHKi4||{$hWWi7nOKQrWRH+? z;T(C_d8iN}bsp+R8JmV0yS!qw1!z7ABNvUqkfJa}9yM8Aw1@$P4#JWpD9#dY&>%rT zoLy;51u<$4xvyz88GfB-lu!u|#q2SJNMEN%(I#;yky2G+FqCEft|kL)FA<&G<=4h%~psA!&ljWnX-$%u(Z zAv&*M##{{AIEdH{dKNV^u!vTMC){tCKG%z?4??O$kJ9vIMy*0&70iK`X+UIID2UNo zQyABE(X?Wus1?b6h=dw!EI-OOZ~C0VxziV+Op0cgV-Q2F5Df&lpP~Ul6gFAAFllqe zNNMiu8S_plU2w{o8lDQoQ(hs4!P7AuoPnx`ih@xe@;Z|^sKckh3NfCgO`JSw{P}sK zP8oT+`51i~b;=n$u21IkRoyhYi+?G&Co?U=Y!cT@9^)wqTVnt3-~R~Bwb^{TO?hV z0I#>;hMYzV9+Gs>g4flH{Ipu|PD!^}@J7iWw%`tlcUbVuCxm=Wh8uRvFlgg0>xEnL zr&(~Pq|+^UQ1WM5@LWk}S@1T=@3!C`NoQN|j;DnF`4+rN(!~}$^=ZLhZo%uG5qPBq zZ;<>o7Q9jN*IMuv$zN~5TP59K!5bwVwBTV$w^;BxNw-;WP1-GF!PD1@e05mxG|As- z!LuZPsth;$!SEA@1vliUTX4fqGAy_uKg)vWOWJ9{4f)v?yj;?`7Tl0uY{6?J?Xlnu zGQX7;yk62(7Q99B*IMwPr0XnrNb)yW@HR;|TJTQE-(tZ#B;9JkollDL4O#G1DJN{f zb0vSL1vl!ECgU09?veZs3vSe-Gz(rO`7Ib&{^M;D-Df3*IQ{S_^K-ueac>l5VizPDuwXcv#Xc7CcwdZ5CXU z{b0y~dnDaq!P6vvrvmvk$esdo+art3tlhzGc0(vq%$qJVK=7*FP601 zf*W?rwcwSK&bQ!(-8>e&R?_7b+^}1f1#ggajRjAabe#onk#xNU&ysYb1rJF&Xu-23 z-D<%*CEaGhizOYl;0`%n?XcjLlGbFnQSKQAZQN!1Un}|3EVxtB=@z^}@@HD`TuEnH zaKmnH3+|D0wgorrmT$qUBwcL54ZD?F@H$CXT5!W|H5R;4(zO=cuv@(aZ5|S&fIBUCmZaSY@Tvzz{;&wh?|aJTNvlzC933)$wF>^6iQ>Hw1wUKC>lM6A!5b8O ztAaNw_&5a*D!6f`n1Wjr+&E)Mc&mb+MS%RZDL76InZJ;N8)xe%Fs$Hjo7|e#q2Rw) z@Jcv)3U0iYPrxdP6ZDtxb|?=|ML|*Rl&`(lL&Vx_|*!3nu5Qn;OPqfvVvzQ z_+kamRB*e3XDRq;3hq>Ju@@`?-3mTT;m=m^7Zf~K!S7b^d)Z&2_f6}(ZwjdzJC zIH=$cDf}%8zD~hg6?~F{w<-801rI5>SHZ&y{+5DwDEPGs-l^af3a&j8_5WrCPgU@K z3hq$w848}J;L{a6UBO2yc!q+%ui%*q{;+~)Dfmqa?o{x33hq|$as|&;aHoRjD)<8m zp0D7G6uel$XDhfz!KWyAxq_dp;FSt~y@FRMc(#JqDENE@uT}8Z6}(QtFH!J%1s5J5 z0vi;(zrx?B;4KOsRPZed-lE`_DR`@byA-@l!8a&)NWt9-9#-%R6ud*h&s6YE1;0+g zwMV1=f1ZM;D)_Am?ojXo1y57(nF^k+;5iDOq2N;$JX67I6+BD9jdwCA*s0(jDEw{( zPgC%01;0qaa~1p*1}!7~*6aRtv*@N*U1 z?c0;;)@@H;GDvg#gJrhx)ra9DVZPT=w+g2HXS|P~{X=%(fBW%HJP}5W8pBf5d<=ZQ`sx{m3!MB9k2VftaBY3dlMWcpsB$&3*X({~b` zN_0Ncw-HTKzDPFH%ZNrMw1|`G8;L%g=uDW^w~tykSEf>^eCdK>yOkiJ&b7T5+XHB z45W8F zXAo&%`gx+MsfyGwy_V=9MAtC=FwrLxUCH#lM4v>ohv_?s&LBFU>D!1NN^~~U%ZMIE zw3F!@i5^aLCetNEk03go>FbE5p+m&M^bDe@N<}oLuOj+XqC56+`4de;+enD%3yB^{ zbSu;2i5^9Ckm<9DK8@%GrbiKdI?;7Z4COV(#+lZb-bT-q=h`x|$C(}0){Rg5mnJyuEGSTTwUq>_zDI*T1 zXApf6(HhfN5q&Yy9Y1mT6HP0w0E5GGQ?^gyC7C%Tg9V~M_kXb;nUiKZ?wlF#&EL|;jCHq*&OUq!T&>7OnFeKpaU zOz$O{ru>m~roSTk8loLc?;`qIqBW*JCYrk1NXL&{{zT^!9b$Sr(KI!Qv@*Sg=ov%@ znchfr0nrUiKTq^bqU)GmOLQU8HB3KDbP>^&Oy5iNETTP3-$^ueK#_c=ZzFm((b-Hd zBl1Bs@gU!;=hV~Ji!w1?@wM3)nt z&-7tLFCsdd>13jBB-+XJPg6kOM06(8dx^f8=yayPBD#WT2h+QVUQD#c^v6UmA-dxS zE`Opci4HNno#>@Rw=%tj=w(C)nchgWkLU)bpC@`b(REC(CE8DP4bu-3eGAc*Oy5iN ztwej6zLV%GqVt))jpzW;*-S4Z`Zl7SOy5YfPIM;IB}A_vI-Tk3h^{8u!SoEGZzoz~ z`YNJV65a7HE`OqHhz>D*A<=gb-OBWMqVFU+$n@Dn|B>hhrbiLIis(9~hY`J+=o+R6 z5`7oZl}sN?^xZ^znC?q-Ez$W*A4c>&L}xRdO!U1(JDL7zGU)q=&SZKo(QAlKXZkCm z?DW zMK$|}%;3Abdh8q1G4`ys(JjY4w9_5<((UU!;)ebhmVS1D7?$?DW`C&2emr`OYqruT zwCEK3@#I1ns#cE;aQritiTJ-z{H9;JxdR>Urto?0q;2l^ekn_Xu)j)Sy@W6k-zu+i z>}bf*yeGMRV_!uCs1*3Jte0CKn~Z#fU9dpdjsLFMW^;fs>ASA_jGh3cedlT3!z0&% zQ|OKKuaxOWNaX(3Yj}K0&+b4)XP~3X^}Snnb=o&*MNQ#U`-Y%>eJf)9j$#$OZ{LuT z9oQln5ZDw-9l6E6-u3;+Rsk0U95vT$?IO;tYolD>3sF@r7UkCaL9nY6L9kHj5a_76 zN3v{pRETd+CiDus1KyB3kki)e+DGP&{0sl-u6^!WcT=dFySm@>~`rK>?1-AEfCi z$zx~j*R-;m`L?9j*dn3^L^gtLY%x8L9y=R1`|?U45%P-!;(p45wvguzG>8B8-TwXU zHzr_wPhs3ljF%)}tXCLU5o1OI#w7~l95B}ST>FxAn-lP8*FO7-pD{4rNT2b21?rOv zUVxDB9dPev+tGMrRL^O1>r+CoG>rHTKAtdZCv=OiI%2-ltN>g*)(lskHh{dQ`LBw3w3lb!FzxUw*;W z9Ii$e8Sr~3j_zj(y0ch!P7CPMj%Ln~-%GYD6z@lHa-80;;z_r?M06ZI-XokE41civ@FM#+!M$$#uweT!`!M%1z?|%63ES{U(1x;OBv|Ax@uf0!7vfg_F3wH(W8?qfHuc~DM z7>YP&#}I2A{anCdC-Obr_Wf1ynFgy&?ase~lk7YHLswhx%;MNu=( zofLRu5?Y@CO11wsguIf1DC~dXnQ-LxL1v<8RQta|9Aqsxr(ilyIKQlCP+lZyU%rEU zRn67+i02R5t6sJQG}32zx^UXpcf?@yZ7loxmKdyqF?5`wnq%4QIt~B!j|==bF3|A` z+!z(HIXszE^u3mjO4)+i(}IfB4?5_!ZdVS{#_lH}D@AqMn;YK)egckiqh3_Ez1@|` zs7@bKke<^bs?(#O4y`(^rFi71y*+r+ZPyVU$6c2Z{%fn#+aDdEI%PqktWN*Df`q$T zP@PiZR;Pa871e1wvBuHwU%*ZOek=jghbmKL0;Y8;)71%>{wSE>j>`!d@BdH;Nw$=hc4eMCN*Q0^<>MYTpteOh9s)nLMuBN;Od z6a>^ua@9qa9#HO8tV6Hl#6r_4<$f68NlU}Gs%ecK{ji_z?0BcWuT%tNS_@D5djEd@ z8g%$U6rztah5^L$mtr)|gnh+&49I<(sfO5>V2EjyWWK(dFdA3*w%n{ws7W2emB%~6 zVQ6BS!#f*pULY~dYt*)@V8YqQ|;93RntKzTod$4>SlC~ zZC~H11nHHB-nZy4QiZ(S6=)h4=rlW+cB%!j9SnV{Q@1@l)$CyCo5;HD4gm2S>mJ}{ z2Q#-TlhMH}q9CJ#>3u#^hGkJlJjDlTVbG^G9I(E3=nkFhZW7gYY7mS;m^!ff3HuqM zzY5|>w{0XkPJi$|;lH-OI_`r5^jB4oDEliH3qL@AH4_Y?zoPw`c=}xc-0ZLZiADN& zOhZ(r)&xu`D$|n*n7#mxq9DTca0w;2mo(ax+@n_S4N8p~XfNeNQdL zqN;E9Jr^LBkGqW|AJ<^acNJGWgwC##I=e9}!oG3>W;#CZ9#uJdcC=ZbNnED=*)3z3 z%f7O%Q^_;617g^0UryiAjOv1bN1-=Hp0|G<6994fQ~<8!_6=fcm$Q86mOyL3KMi(k z_UGb%Dyj&5&QNDEo_lGR-*qNRV43!KEGrEkHC=4ejKz9NK{US}oU1#s8Z z!zk~jFXZbDWPb@2rh4+%r`(AUPQx0LI9>PeS{@4K4>5!Zp zsgp9g%?%))eY1h1iqQ&}ZX48<$!JJ3DM-%=iIF<3#~#{9U88tBQs0I+x-E$RWj?5f8}R1 za<73RG4N2p5~Gp-SIBX|waVZU9a(eue2VPPhrHiBBhit6hYs~HuAxQKBwA_ha1U*D z`@&dvb=5cfXG$AK#7uz5cy+1ME$jCfSJ;>dB;tK5%G+V|4~cl!f!FLG5;5suiuMms zFUeIe`-enPvRMb}9};mKMJXSwe;B$=sdU^woVUy9A6DR zOEzXEkfF>3hM7F^W&*xomY4@ny*4?WO8?)7=K&O~*>6t)ffDDzY>Up-3QO~W)l|Rq z7l}!XklZ@2Ht+Y=UqU@pAQ*U0^i5Q+!dD`fmX2v5cT7QS1<8)-a0Z^Gy`eab?*`yz z$8=j)CZl7zn}UpvsrPiIlws9xGs1V(9B_Eg`&-<}{nbUC+$Z=yUY@=q{J-wxUW63c z$(69c19WnCfI)O}6NxpBolAk6o!r0#OjA{+f79Mz97!WprnUr34#7lDqT5~o6L)fJ zi5oj27`u-U)Agj-W(`AhcD?vR^q03jIK9Vj z(@8jc1zfe!ns`WkSB}MIcQ%IDjm_>RoRyYqu6P+im96t-`cNAd|8^&d$c5ta@iq=Z_et<1*W{0|Ds${%4$F;52?F$x* zE}7EvagF&8O89{5QZ2gEF@`1ESN?)CfNH(;u|H$YuLIT1RP@ls>S%`y&r0O5|0|XB z-RgSVRrN%RZ{N6tNTwohbyU>UqpQ>Y~8)tm^Iv6dpxCWnV6(&z} z5Hi}e>gH{_>rpXPZJ-S~l>N8JH#BTSsW)m~Oq3`Gv@xHt(K_gR97QV@?)IS&!P$t2 zAyZ-{dOL?ec?J3J@59hYjwX|h;vwJ)>N$^sr&1Vw_j_ihBJ{Uu6XfgD(J%?k3WmFa z?!Z=xPpbb5r9;OISdowA@vG}O)wt%lOBKU9#bsMyut8hM4zkNjg-?UR36#u0H0a1D z;_S=msHf#{Tn9mXIBudm97hXP5#Gm(U!I?4QNDX&FD<7Ln!xecu#1uJ$is-6K$FMg zN1OE_R=nmXh*J_j&Y*V?=j;S=E=L^2-FOA0Q5=>-=@cU>RVc0yZfr!JXA(M}5R)~f z>nSl`xEF@9I97*DV?A}~d+xyY03EAhD*)Jn({08XpI`#zo;%B!1ID-QJqVY|W3++o zX;-7DDozBTs@PX7z>6WmZQ1Rp;cIbM4?t-M_gjbzc5%PGsHR;aQD;J@w_GiOEeK2! zhdHH7g&;=nzx_-qY8b2fjL+#225d$#`-9$ehPg_qImh({%Qw6UtFj z*$y0Wq!O_zSyZKeo+hhOA*xdNEckPg+rAi0xCHqMmY`p>q+s_plGud9Qt%s}0LZINc#yGxLBz z*=YiSG#mpC@SuW@Ie2JrQQiL{{PjX}(}9;ZXQFh&r$VM-2e^i?!!?QPy_i43T^iZDB6I5*AVTRF_T#pHYI?ldcmB5aguQSX_?ER^#j#8I2Q+ zTi&P3qoo)>+3o_jTR)weC3K<9;omp2GQ3l}rX8LY*LAhaqxyx=K^Ofk7p8$P|{LhJnrmZIQ=k-WQ_SYY-MzNBDb5&!w-? z(Ee)iV#TF+SvnWP{CdmS9$n!&S`0v6r8_-n!-9B5Th<(&PkA?n`$2Q#s(CBwdBC;a zV4G;LwGv{o<%5j@W6x?OfB*z@dlNMJ`*1nnD%T5OZNb)3fN~!coy`MqGnOEiXv0&$ zD!QX}f@1)(9>X!*%JGv`Mo%k8o0a45TP&%pH#pElX=E5bIOudd<*far7zNf^BQK)J zK35~XAh6y&#?`p+T|^KgC7I9luOqzsn_O!al9 zc#mp!EvK}xO%`xfHM>?o;Qn@6870xo%KwS6=IE&^uCqU#8D95CU(`D74Y*{ zDYpu6M35`)G6s!0^&_~dTuT`$A zX?bu_&&kz8e!<_YZ|{MJsYoJP3TR@E`+|e;a2BO5t3@%~tJ?jY+o)=It%kfXr(x=T zZ{4_@DS^LE3bdhdNktrUR7l<&z6edNY#CyU(zTgAvrX-=#-SkG)rH}!$4wh|jeHf* zx5tSNs|A|i;wm1(a|jDKczKP+aOD13lnM>2@VtqhsmBTvVmir(oA&SD=K2)5o$@IQ z5YEqw4nK;voE9;V?Wq7AG{3UM7MDk;iJc=J(F`bTsTYg5*jD$p! z@+Q2{zF`XCA{%n)qZCr$@xXJ!vH_Jb?%^1&&qOT>Qx~}nvB@CCf%gJ?O*^E+fb#9T zaaWAHT(qi7_t4Z14J++8s2zU`E$aCRg`ivvZpKorTim0OY};<*t&aeoN@(U`zXxzL zzX&!1Z-+N?d*|UNI*y4y)25+au9WvG{9Rtn-H88B1`CqMITFkjJ*D$Y+>P}A$#~-( zXdQT_m($#z6~wT_*sLl>a%RDv^D@Yi4B~GqBdB&ea{W$rJCQpVw)yBSjz>_lV=L!#ucGL=+g8ly+tO_) z4^0#+*5dRb_24aPZT;g$#I7!Ek871%Pp{u>R!g5e`y=j6DmMs?PoyWIa}pF;;N}zMT>Xvt1WLTC82Kq;?Fw zF%5^Rv;R#(gg0iR{U$rcw0eI)MqtN~v}5!YXspHK)!98<4^1@8?=z!G!MqZ41+*b} zaHnA+-$b*WPFg!GvY+DWys@wO=6A#88e zCu^lW@FwMmVEgZ3tKKgIU~>`Vrq{aZSLq(v>b5_-70HKu6={yL?)X2Q)z1vL*6FS^ zQF(P&CK_kgruJb7AG|niX+>HkqA#&y3YCrrFj8nQDs$H+nytCkMH+EXLU*l0hIH4a z;jVR54$u^rqxb2o&b2K?_Kc?RtLPO;>7%VmcR!fYXv#%7*!?t)6sa|?r4Dj9dZt6Q zp{XBPvV{#fT$5&#D@WUxIyQLfMBxH8vopl_yJpI}YFanKY{2%0w)9*Nd) z{}R|Bh|y7|+kOH56GH%po=HR1vc3omWAYU&O&!N))!Ms{T^Fmc?1M$rW{t-x7*AoO++}-< zd1%nk>JE%g#r*(W@EKPnEn(9jXFRn~2Vh1hDyQmhZ=3R5QhoSF@2FTNj8%PTR+upk{whTTKq3ovc; zco{60#^Oi<5f41@UVZm5~DcUl3d*- z@gtEqx7!iCMhsayw6fpxMkbY5TeGvD69UC!S{)wS&n6ykEDtrfl7}1JqhwracqJ|y zUx#dbLx3F^r67$!Hf@i$>AYmsraSxb3m>#cdFTxa3vl+6ZL?@mMq}ha9*pJ|-Fhon z(qv^#GZN15RjlJScwM^pd}>5cXTml&sg0V*+F>~?i=rA)(!pl5(P?r3jVug~P^SfP zgBLrOR;;T8vE(c%F+^V}araKwwDee^FmF0gHj$pQj-=2Bc_1Z;r)zEaf5#{@p9-8jffA#^+B5fCeKBRd;SMcE zx}+F204O1mv@_i-q3|I$`7FSh9#cYh!}p>k^ggrXY{J?mwp>t=T<<5fR%ahhF!o(^`K?W*Dw@o3U%*^$3|c1yq;o>tBuZ7&~_)az`VBECf71i4_8R23Q*(v6Z zsEC+K8Pn*$g46o(7VmEH^%k^kaC%oKIsL2D@`nHTJU3;XXv*-N6*^skBBQ2k;C)u# zb-!Tv?i0dyJN2C1+&bf7r&uz_Q;2uMU3fzE=>>tESlV#(q)J9leYv`IqUxoQ79v4f z$*Tp$j+er10n{M0&OmKFslAXW?Ex508b#@AQgC7EuboxAC@G93 z@Sq0v8^|00c|V}a!i-|Al~}3kM7quaG-jvtT8vOJh;QIvvD*Q)0v`;ej-%z*G)t77 zm}W^^Cz~aFTM9#UN)=-=VZE{=kUsBD25hyra4rx(gPGdU4v;=Lt3a82NMspCqh=Fa z=~BBxpKHi?G1|?5mvf^T)sC9HN~2=xQ(Czd#CKwRTMl=RZY@nmaFwVu^J=Y5a-^_- z3-&=H-O)*iB>Um~?Ba1TrMcaY(){pA+W1=|HViR^qr+9tQNTIRhyZ@?rP)QEuF;`* z%6GpQ_GQH08|+3PN0G!($kuInWLTD+L(HLiI>u2p3E6@-2;V^Wg^%SJ;^8$d?t9!n z{4Dxc&MbFuo9{+`X`uu*9Z{}a%F50c`AAojM^G}6>BgW>-fdc z61y1oszI1vi6lXKkH<-~yOygSz@_d36!{TJN={#=!+R5UzUmlhqwVGsk;Q2gle?Y% zm*CMn{ZJ>S15ZE2=B&=%AIMpQ#NI}fOGsrAoX<4hDWP1=}&Z3=C!E)FVUl(Q)l!xw)$w;{n0S)Z)_`~VN0W7+~e3h z(Xc`phDJS1HEl?J=$!*ch_)B-Uu_snif8ny`l4x5`>W zlHhx8z4ynQvh5STp`wVBbC(HCUuTr+3bk|_K#3Z&5jBQalCbGUyTk+dyI?p6`qtwR z8na7`fmkL6VrVpJo7U-Z2k_RP?D~Oq(1O_IP=(f^aYmBIbseI1e1nppXgckcCE5Kn z&ed&X4^&hCQJ|V#yW#7&h3O`f=(<%G=7jWY8~_QE#ioF>%2g8Yy7%l1gYnOwK%tAtcgoK`07=Li@B1J`a} z#U8EfxTO`l`RGW$X4^GO#Xc3=HL?l9iN!k#@yT%c&Ai9RX);2CqkrFNE!E*DxELd@ z{gaUyXC|5z8VDI#FU=w171~LpQqYuabD~}H{1UP9atHC}Q}Kvwb7p$5=2!(J9o3!K zrF+t-g$iu${5N6*UhKdvuzC;uUmeE(69WF-xJ?dJx8a7Q9ax=j#iKeLqK#YK&l1>+ zn#1YHYQTRwHQvqs2HYrJJT^ujgYt2kzlEOgYOe&E{q*&3j-U$ldw^mLKpJY^lg$Ll z)=hU<`_xxq05S0Dk2jTdKjlS^U;O0|r28q4aNV*@{I{e#I=3U*7yCMs%g*$5b}O6M zUefHRkB&Q`N3(wbp6c)vxrIpz-~~<&;OVwUu=6q}qcquWzbZz{^SfwyjH%@Uyxknb zd{!6cJ@6KhrSV|aIhEn8B(=o;N+=}dUv1pHYfr`q3&o69 z4(QT8P#4ytGrw_o_HdnB&DPVar81l)(GI^w;ZhkCwj6UKqklv}1^nkAQGDnJ|L^zq z5u>c@It?Wd6&W9Dw!v9N-5L6OZgZ9Is5hQ#0DKYHnZr#vKTA39TnvG)3MY$)j z8Dng7nISSWMkLHZ1|*YJSGUp=-X@}(5c(+!S#qG6=8$HNKzVOZER!lrBAEe}$sC4E zQ6@uKvTrjfgi&BB$?$EaCP?!h>D!!1aGCtN=;?>UDP$lm{)&b|U(KGxC#e`Q#-QPK z4{+8zkYQpWVAxx90FwfY^}+D#2&(eil@R0P#FGf2QwILpIDxktfpsE~ZZRhgu&>W8 zqjKorEm#uC$FkD7gEJ(G`E1P50~UbO2ScipshbeP>+j*){MvgQQOVv+6Gani9z!q$ z?Z)|QQ_z!CNyhO0k$W_25x=rPmr(Hrst`mBS$A0AW%ypv=oI_qSl%^p^LdNSHRVgmI|=OJ(I%lO8pt4c@+tQD=fO%KwW?U_)3x*VifhsRheVlH~P4Pk~A`LP~s zRIrHgt1Ve^@2|8ZoqrAZDak~(YzjHR)AJxasR!kWil8!q2U4O~gp+m9?oUFK9#bxT ztE}ZR{{ghBAJOuI(GQ)4Q3K117O1|OBu~Oh2rqqnbgQ*sG9V>dFp&V{#k8;39Z)Tw z>c;!ikeDPoUe!gvj7;XWkS@JNa@jEuLItjNH+KJV@z~+($BG^|;Lku5F{%vs2jjUt zy_vD}s0*2A*93>oe8ZWG3$qf@exotyQE+N=40_4k2OWdHQcG3+U}Mm%``FuJ8!0!m zKG*;=58{nM6d5XZfJtQ}hk|mn^ek!v4KRsU3_`o|=-`PC9jtC`bV@wn;n~r1mvtFvwOBLT`ppWq?T`hcv)6Ol%HX6`2_< zlR0RBNg<+4;tw#nyDf|MliX|2v469r_!BCFZ!=F-%Svcb_&fWsY9di|wRAJiUmSd% zb!`g{g3uHTQDuv+uO?C4cD&+KS|Do0!+VeyW9UntpN{q-8&zJgYT=+LAi?7F=&NZe zE_%E(P?wDLAv&I9t`9x63hH+`l$n0WJ9WiwTEgKTlU8har_Nz4k9G~|x?hH!J-n_J zZ|{pjy7FV!EzMZ*jFm4#;_t6focQ}|adrdk>!+rhyKWBJM6S;Mfii0Dy1B?~SgXO} zKZVEHb)y#+X#g|_oW`!3vi%vDvU@^c+l0UydJewrf&*TCTrJKjZ>Va@&Z?ZYD%TDk z*2{BY#-CciZe7cSKobrj?5N5KRk?OnO|k6SeR>!4GXFY)vTL_)DLjkE1pzr@xRYFh z{3fysokS%aSV-CC3MExm?9|H6!T(ql!T%{`SUbzv$;B)`NmtWF)&-`lyC4e(6_U!% z!2ii*wDAqMz;fOWc5r`}sE3*dG84#QD-q;W*?iA!-rmJ`i7M-8Zg0blp`dyliu{) zfnhZ*21qH7#F3IZmPSZ8I(w*6+Vhb@Name0zNyk`|Gp?HVgDJ>>frplRvY}Iz>jU& zG|Z8gLtA8|4P82>i)3o#n!Xb%AL%2Zls6H8Wm_zHKD&huvSS$LN^76!t8i$GWGNju zD&omVXev#C0;&Phi7enK0H#R%xU(ud$t<6$>~0bcalPt9OOb{`OP7*z#rsm7comoU zP$$IUluq55#>bYI3?v-6OP2+XwPGm5f3gC*$JkkJCt2}0=x z6v+qTOA3aCz@(<s~x>DSW&dO<1ilI!*|_IM;J43zR6*`aWS8ZUJ2-K@irxoo6F>!W-_aCXNJPv~xTtS(s>VP$P^mZYAWF0|eJao)vR_li8W-F6e-# z)`{JkAO0o2mlhM=qJ)2oH3{q!#-xY#EtjPVx}=o4y4%5UnP4 z8wmb^0o5H1FAFTWpA> z(M&$~wm1Oqu%+BcR!7^6hL?wRzIk;?ky@6r3Il`Nf2EOiXD=3BZ|1{!@RFexi^dVG z(T&Kn)M%BdQF~A0%Rg$~vF#e9Azfd*aandFImTqfh`8||lIN~SZS!#YL=N8Lh0%Z_ z4&HEpI1M=7@QE-`{KR-p5JxB}!t;v+VLZc#7j^(86QxBNNR-w=G8gM;Z0sKPTbIJT z*tw|g=SSAzrM4`5wiU1LQ?poY8x8_}@BR=~bM*M9*d79M;|V5tCrEE!^1WI-aY^%c zfeBd*gnGb6=C>^{NWouh@~4UtmYq>I{3ATp^;zS zXpFo8y-6Q5Meuz7n|(yKqPdfp8QL15qfkV43g+r4DL;zQXoj}6)2u$ojHdrnJznp% zR`zMPp&n15m}q37M0-~Jm``Hq-B#sjr`@ACA;wfYURaf*2Jf-g(XhoBNZ^f%I{U5XbaLax0}A

    3+>=-dX6*t!o4+h9X@<#LU|miY%sAjI6P{Cyd>lW5@EZpDJel9fnMvP0-vOe@p@u zB6}Yt@yc4N74W&)%aPl3Kne%F8y4l52o5DY&g`H5Iu^;A2hLctWs=*30~Nb5il>4+ zf;-4PNIUX5Y6tlT)uiwZeQt%#5kWZGJ{iX}cc$@v{1=n$^p|B(i!uXLWy% z$b((7dURABTQ}C?%BJwtDzSX*3)+pG8QCIj1>dx$L|J@fS)42`#>qZ0wsQ2|&d>C! zjidJi{A|to;ejo%!7oKa_V*B3Z|{N9{0V))6EB#3?lirh}_v z+F)ESt95^)9Md@We<;V|4KDJkagP6=a@_BKE64q!W!z6LIYqw4g0Us{k$d6#zlD<< ze;W)lOJmg_`iB5Jc-Hw}_`_9)SOd_$i9bmgSB*of9|y~cY1kyIE$NT4{~xfWGv&W? zwJZO3jOi4wC~?J1`M+gOTD$l!eDi`fg?uhAktOFzaHvakH?XZlL- zZtf2;IO)<_(4n;7$ip)r9z%NBS}4nMMq{z?KO0EcS6uxo{5zo*hul^qlz@CFO~oN} z-_&>|l=fTb6I`C%C?A-_nYGm;-7{J_TlO2|Ex8bilSb8!x}uHsJrU#I+b_Ovj#4 zl&po*%Z#sHcgH7u!gt(+|DL+R+>XX~PR4D*loRtt+q~BXYIs>0g!VH1*PaV77ofY~ zg9(AbSgf#JC@8%j5xtpsKQMrZ@K)y2Q);k%fpbW<;}MEYoCzaCS(8-TVZj{bggN)5Iuv~ln4dl@5FEwT*%RbPsMqODahK>mc$p_?%| zu)RW&-RUCuxoGgnP*QLtT+4PpV;=;1)wD}4-Q=q7MLE97@!Vw>4(rsx7*BxMdbqfqY59{%O&v}v2 z=`Vk45t^0&e*icv4HHn%gzAF*5!y~e$Z~{CD%c@xJ8fL`WrN8g^O^ts3Hk`Kf4=15 zk|`BIh>+Aq-_UFh-v{60a;P$cCIljErV~X>GSl&f?7ot#7m2o+4C8!zl3f1X_LZ}Q zCEA;0=8{dRMuNkP1dobvIO@w^Jjuk&mpe<_I4k!dT)h%Z43DEWTER zb=s}5so>K_h%!S)=~sis1EprxV#RpG%^zM=sq{IT$7iY_9qQ+67*$#4WJ;X8f3({4*XqkznkdJyCMwbpNuqw*pJjF~x4l2ga{K%h!)-?TDG8t8S-P1da~prJ z&H+7HHI!8aV(6=hm)tEjOYJ0pvjqRYP^mFv7`0cQj`H?x=1h9!3GFaeP2m5;ZPph5 zYY^W)T<1G^ys?qs5B(kK`hqE_8_i@V&G$6%!i03w7QNNXEMz#}=9>w!-%cN+!$NZ< zC~hO$Hye4z%V&_M*m^7C8D(UqDx%V90WIKfBPpC49Bm1(wc2kMCWnnt7O*<$sM{`6 zk|A>~-Aw;;U7Mh<7IFyT0-26=Z>~re$yj9AXz4=Y$Snpy&I7>rG=(GQbkpoBX|2Ps zJ}WrJPX@5B7>)puM>1IZC?kVWRiD@t&q2S5%Cl{CqkPDa)S8LXT(Uvu1Oom?k&N-Y z3eS=2(NW=LJkkrlXxb6l4>FU7*CHF}$mi%RVmNCp+!>xE-1%aY-8AgaFGsbdq%HB- zo_&6h_WVUMr__vOg)A1L`1TdEVIh>*!{F6dliIQ+!`4va8#6=2&HNYG?46jngEm>-Lyqb@LAxLLgXwO+p}E){?K=7xkY%6te6N< zgo&;cCPMdtbKF$>_|TQUhQ+AnLkyj>#3uUspVCC1Y&7b_$gP2oCl$O#4u-Vbhlt4d zn^US>Sq=qFlFhKF?Lqw2M6<7zHGbuV$e8XYufSkPUmbN7{u^_no9rteB%g>07|#3w z{y*wG_y(Agd*L~8eEHLtjNA<8yxPdF=&JUAPuXp^v4(~u$^xunW?`qROBN~uNZ7WO z0;28HTgVR;JKYl(y9iZ^od6U&-C~Lz?Vp-3-hd_fFhAWzn}YH%NVEP^D8$iCTlBt< zD-p&#N2{_%GitvbBYrdjHN=XaV%5tGTSS|KdmEz_jQq*X{S_>3vWluJ+^?5F@j510 zO-tT60S2=)7^^WBCOB%x9f;CCQTNk5){Z{|;C3F>#|Z5ux0BhiMQ97!WYj0(fFulyGc|y(HkCGumPA2(L1rcr ze*vEOla})Mf!OW0AH(&HGB<{K@D?Kwys*bjaxHMMDdivep2??VfUwJGmTSLAB+mVi z{6n|0c^R(sO=eSlwP6r4BfLephfBBz+9Wd)@`p$kZZ_;y-;!Zrx{2$frX$^AO=l0# zB+17es#az?Amt8mKY20n2nF4O>7w6^>r&b6E5F6iP`B++gWR>v$Pi+Z=|n-$bVr!w zC^Xo31>H0s=@4MM#kN<7F6?o>S&3iyi>E@>nuWf?c# zZINL%!jO?_$oS_vLq@>A6G}Gw*BMINzQi9Ql(kYiz!v*OTYRBkWKN3AG8DbDS-2Od z0mu)x5i}kVe3ty&jHZ@Lcebg^NY+B+C)pSW-{ITLx?zY2qwkNr4!ip{vyJV`9{_%6+v|H1IB6pS}N3ra3M!EB`TUapf@W# z`8S7kU|3m2LX$c$s|joiw2bV)+$MHl7WfpCR9Sy@FMTrObmNm5_Y@%R(${FZVNU7! zeF)yrOT#xL>>FspXr5N4Gs?)4x5q|oj^dR0Mq0-Z3G>j9XPn(sQx}T75E{z##aOnit z3bfNalwOck3PgOtmlQ*>b+`kVEbkGE2_52_CMZ%m9BYINH;8`Vth3oUfPAIqH4TrxYMjZicv+}FtnHh(56d9?v_*f3mJY3> zkRU#nf<_kySV&lB`|puOoIGg`pMjXPa@h&Fy8^9Au6@3FosiS1E!v3$P4k=O3?t&O@^)n~*br_=zl}I@MgC$jN@r6Lr`TiIw zTv25d_Igw2Ov*iuEQA7h8%7=|cr^>khl{DfFkiZnGwAzye#<3~Sa_MNBBYg#@X^aP zI4eqdp~G+@=k$G;fN&1}U|w3}c#2I?@R}+fDVp8?1M&MR!dOD0^FmSzts~+wjPHGs z>FDf8zxE75;Jsxvpq7-XM-eoh$CZguZtRYc4;O@PE)8vC2&s=OhxUrAoNu6q@ zNuAm+HJ}O;atbN3WfiZIpc+amvKstZA*zC8jsK6mw}Fqds`AGtZAt^SPJp0YEE2HA zL|Bc&YHN!Og;@t|G$PR;FIxmkb*WZJpt?<)GR@L)IyB3ITUhiT6|_o)Ebgs;{{eR1cW}bWRx#ymH?z!ild+wV{ zL%4xq*RZ0_z*p!30Yt^Y#5Sw4k(~9Wpj=DC@6Ru%CmsVNDfg$F(R!;tik9DtBOa~0;^V0ss>K;CZ#L+a1H9sEizYsxR}#7Tx_{} ztVJ6bhn9=JJ%7%Ztp- zRkjntGij9Bd!SpmtDkpF_9vct30hkGuW_T$E{A4^;7yedouBS>+W=5FF&I_5QT3qA zthekUo}m~-{ZUw{hQsaOR>S$@Big)Sls3ouO{%ScOmlIZ=)>`XHfpMUkI}FBsZX@; zNye#%_f)KU6@U%``^9vqA!QqIu{j1NwsgEOJ5r7ATcLqOe_^^CS}faAjYDVR!eU#< z9N-O1@-RX`IuS?50M5n@FwIQySXhP5?LZY^=Ea9r;D`@)DZ=bI7591~4yWmS*Pz2z zfjv?cC&qV6Y%%FdEvW zUZZnj*NXdn+J`Vs45B#(se17{l%S837pHL}5jI%DZ)sW#anrE1Esu3Gfbu|Fs(D19 z3mi4#g(|c(?*M4t0}=j-V&Mj?jH|icds$M@B?BVwiTVL4QT?-isZ|G2YEjKn%{xHH zK~#AA#4Z36YU$N0&r|V0Q})DNRShNV5Cz7ZUp#i z(|N@rz~RoSfq)+&ouCPa(+T1*N-yK^Et4zE3?BW1n-cQfkUF>ua;dgmDcp45xRdX8 zL_1ek>NK9#!w{^8U%~N{jnmH`k+X=&_PuHn<6_S3zu*e<~_uuWuaWjB&syK(p$c-i3?< zQ*|M>Y?3gMf|g6GalnF$Q6)II0u}2GIC9Z>ARr=(6VVRDw#?b@medLnZ}+E z!=PNHhobA=9H{iO0Q@U%=hNYfLzOphx#wWox#Iukc78Xm)kUSh!4;WtfnIGzMd_Pfi9@0+e-u?3~iVGBkIw#i2eww+wm@v#l9 z`2O$;Q9wg7ec1&CbOpk}-WcdRYM2&jprS4>=9=p}rk2!9sAjNNt6{3WI;hZ!yPT>Z zzgLHQqftSBWd=wx;hufv(9c94r$#Gwj$L!w$?QY=&(SQi<)2p zS{H&@tabmY+u5j~qkeUe?HuZj7;646YGj^E=~c|z?Rs&crU4^Cwm1@twn{s&YB zd~rnzC`gr4K*7kM0{U1O8x#=EmT#{MJO%|vC)}9ucIDvyfd)SC5>}nO>F{G}_+^AQ ztd5AQQ`?+PzkgBM65;8FP}?Q`wLlE z5y3l{_K^a!mVz{%fmm+l*b42OSV1%ZZD&$>ZPe&qg$uc)dO)F$;P)3CVxsgz9j@u5U2bW zI7Rs|r09qq#%Q{2H>x9RdnchUo(Xe0-QJgO#ETwC zz#D8xjHmifPYK9c51lXG3mm=k;sb#*N2tJ|r(>r?9Q;8A2TtS%D#&#K`mvGz>Aw$G z@CMWXcr2}>Ruay^vXvaWf&(iC(v8pn!3ur|sv_M!6t0}9+5Q&;HQNzghxJ9blJ~9{ z)9yj7@0l0h9$oi-ECu^oqM9qnSh`C$>f&1Fs9{>h@@Dw!xG>H@Vi||3$*wNVK%j!p z%kGXW+PWM_X)@g9(EVS-Ur*)5%%U<)-gc+`Io;pI#8CXk= zLbXm=CsjT?p367ONw5J7)L_~^Rp zvC)bKbu73;QTJvQWXx$ytd4tPvC(%eo6tOK&hCS~JTG2Yc?f=W+W;VFYJ-I2C$W6Uyx(ds>NL^0LAHr2K!k-BL)2G&ax=}Or~$zH|xq4@qG_Tr@C zJ^1cXI(jS}w`v?q?r|k|Gm`?YwSb$_&1(px+tc325!_iH`BSA2v#dUplN;WI`V)sS z(R;y&9x?(qi>2Z_((!IyBr{QBV9BMMZ&jWQNUpHSh%E`X0e2*SRXTnfES^m?UYx~) zhTfLQkglg`C_VQaNX;~ZRK4>o^~`}meYGxginRp$(#^oryovtQ%(R<`8B8%)(*p))1oH9hNA|mOxM~N9YMb)~g z#`T~eG#4b)+zp$b0~?tYb}>nMT+xnMJvk! zz8II(9l79T9Eh&xaY`RUkPj0?v8pYY-RH+dvtv=pww=DoH*N*;Q@iq&UHOWxAcIC! zgoDx;+J;k!12WZN(KM>80{dx1ey7#TbRUvj1*uKO_sIUQ==BL~Shvekft{$NTSOnq zTQ?V3(YNlK4}i(&vAaUO9_t^FP2mpiC-49H6lfV#`H6(6-bf;ahq*tBJ2&=XXL=l{ zr_GD+U3H)NHrQkz6O=}ngi-7JXQih~=&}4r?rFiv-~^;Ib?=$@8?Enbzz_5n<8Z5D z3x2Yl=i)B}Ei(LL{6QjPqjeELQxQe$BvZ5=H;2?|4DL>|VD;E~D;a8S3^U^SUzckz zT8H3yY)8dBN|r7^OCPdy@gnGPvUK}ddXS|XS$aydB&C8l7DyIgYs)+dN7o;LVDffG zPWE|_k68r50PK(qFkl4bNz8fNRaRUZR}T3(PfA;Hx1Bey-ZMnzrXCz(S4iE<69K84 zcJOaz0Dr;k9;V>EEB>T93mTG>11a`M>f@E6fDyqgvJK}EuWA^1C8gUER)E#c!vopiy*l5+Tyl++J zF&a+Kc!OA`XVyDR);-L+$Ipsk!(_!hKD1x_tT&mgttRUTvyLz;Mak6hM7Wtb_^}dl zeeF>@@cxyUvuo#*|%P*@bY~RVDR4CRjGCj9`P5E8DR< zRQ4vr^J%8+eJp!lxa`t;f9=UXN4*GTX6N8ILyMSqDMD zB#360KjG;@N95c|244L#%MP2;H?bH(>ja_(n-P+IQ^aDxKH;qQYjkp0xfHNI{N{#_ z#iFjk=jK19=u=PBQBXQ#N!MyS?c0s$xNV>c$!vj23Nj9GHF^j z#-u472i^_C@_cmTjhuU=+j_wf-_qWjsLdvc3=8Ksu1?N|T5H5JNZ}s~t zghY+&=3CS8O{FuGvN;x1sy)65dpuFfL~~V1uI5d4GBM$d)0i>2^j6q*cB99{n;)Gip8%uU7wWX*4&3^fE!rc0PO1WB<>y!3U$ z#O~qmO0Eq&BNXS0$GB;>qV==GUzTXCd-tey?+)>JfvJ1J5?8$b<3#?EZX7$b{s^L15=oPM4)^))y5~h1~|8% zpO~WS@kir+bDpDWE|;brtiqHgb#Ep9!hcl2NRvoqmVl~-DY13%{x}umn!eUr8Z2sn zHFrnrFYJldU)C3`Ukc-pG5O(p!ZUI}Oa?+ISdx(0SFf{3@-2dQvOi49zaKdSjujI$c^suOQ86^R#vSR$VXa8w;FEh$ifyZ*H5VCv2!HhJ zUQ&{Lkk!NizOQRY$cV1tqd9nY5v0tJuaofAK!{A7m>UpGWW*pvXpV$3gvNU?!nRCj z456(N7)liA%TEAbJ8KY?e2{-5%ipzHK6uN*s<(k`HStlGijYeQXxss~Hd9428oshcUULC&Y13d_1^X#V0@NA}*w3)8xq^`>wNhB1F@= z-^@u*2toq|;k^)q8?P!W2;ZFnK^Q^fqXY<0*1Hr^Dg8EILl+DvlP#>jlg<(!al&7V z*^Xxp<wa#2t^Hum9)gK)z7kA?wC9D&bOcvi;th73 zRTDu=AZ7*O>C>6rFGq-%*z`0?nZD*<(j&qNl&~!0CV$Rmpff#m`4T(?pc}Ibp z=s|jd4t>80wfiF`_bi$4c+RSNenqtN65z3yynYDZJT4hsbE@`PKs8~15GEJ{LQMs4 zx|_4D?Qj&#@`;G&;3>=i8dM-0AB{w};-QU&(KUU5!Uy(k7tUy{8Gb>6O|91?3+J?+ zI{dWYXoM4YXKBYb{U2-kQ>vg&_za?_ciIo@g&E`Ls|@GMe;PK!xP?tC%5=&^GI8(- zPzblCtocliUVjHH&-_%=V32PWey$C|>((x7gQ@0?iBw~EHog=5AXBkan2?{?Lg}A& zv&j5ewtIF{PiNzU%rJbRwBeA=JgO+p8yU@H!#U=>Qr5-uaG=>V}VBAr-5>9%`5WPq?Y1y8}41~oI3y7pW& z#6+{qWEO`|Hj$WJIZqu=MkiZR{MJQI#V^QJi5Nzwzz<7c|%b5gGY;eHDQnWp^?Fob>1 zu}+0i$S|9RiUmqsnLs$3i3Q_rE*90Y#6*H#Y+wg+E>NFwLAlh!K%&0bA~dFB7s!O- zj7zzmI>To}48;xr0sh6v20+Ue4dn3*$ZpKJHt zK2y>;c%?9ph--E$Zr&^JN&PpM+E6C-3oiAPGN~M|zyh)DL`R31aVk>ngBH8B?MJXgfq|6E8M67b zXdp$G%q$a(;)i*nY>Q*|@pf;FHI2dT$1}5c49)z>RWH_30&PV_l?CDW<0|tOm43po<3dFq0igtmMXB4d|_)XN_Q-W-sEUx z_C^e;@eJx{Ji{_>2~s6(KtfK(bzCH1WO^|HA6FR?YRjd+7wN;xrU`MVA0`xinZ!>@ zw*}38B)VoQx!w-FO57r<`&su0V0w;{97(rrN#nV!BK7d8Hx&1VUZ_B-2a^pw__7k18woQG z13@3OMqBIna9Q3dI+6NT*{U>evD)SN!;0xIP%Ou%jjFZn>hS@yG44{C2zAmL+T9&_ zSCx==-o(h0Za*<`X}fCtT1-q-Y@1u=zHn%_u_&K8f zi4@jRv5a~j4;Rva7`y*Ld|>AY1`Kz=a89K|ah0IpRIFI|i_E!fY?kz}@c^l7p(AId z7S!=91QEkqh=))*oZlt0k+4|(t=QKEKUf>x!!H|+!E0wKJI6zNvpqm4r3sDNB zC8$as)ou?2n4PSI=aED$#OFKZ(_ruDfX11-Z58kQfet4gOf5AsdVQzGkguBm_clzh-K2`ZqOQ$y!BoC6|ryxm`*DC`g#hGBzDrg8p)wJxu?~(~A)$ zh$sg?j%w5((Z47m>Trvd46;P=Az(w4VQ)l;+Ez?LZ5TJzj#n)nV5v88^mO@k+rM-+nksSD8tq#Bar76KF-!55+VaVb&kmze(&; zFKe&73D}35^vsxHKjkFkDLLZEKnYDviaypLxzGDUr<|{ zi>QtJ)E-vCizTGQ)n*c0QsLSpSmL!P(H>vALa`fn9tTV3&dYXeBqx+6@T)uwy)5Iv z$cSUQdYFaM>A$EGCy4nnhbS9c6!>0Zzq7IB{%5QC1iMjTROSe%9}z-!&yQD)fIehO|f#IpjJTN z8Um#xZ-f&?QdJ_L;(jg=3_Uw_Cw5(o0cTf z7n*e^&RORKTsVs$|5VD+HT4iK;2J;#{W>}GtpHm4ocePvHU6CYtEB_vSl~P~pU!x5 zRtI~ZI84(um+9%=YUDBw(R_Wnc_+%@bzX2SC!$+XdORm52aIFqV}MTL!oBo`3W%a2 zZvfi44`2B(VOjP=fH@JfWVkH3qXxbJ*;n2&ogM(Zqp3*28L&n?8T--x9P;2*(BVzs z>j013WI(Y8fQYx+Y7d_e4*(3wIlfb@*81WM^9sOIaC}&QD0#CNs~qavD=2+)5FOqh zHjrxDZYWq}ngGpU)#w1`r9quxMA8EUJ08y0N~&}yw?M$!SZ^g=T)aC(ef~i%|BB)w z-li&e2+IKMZ~)WF1Ki;Ns>@{0xYU|5sh_i{5u7-M_wpj++RAgx!ip!F@X5sLZ3Ae) z^toN^X(Kqy$!!;_`?(UCu3X!nt3;JcD^>&4zVoOO&ZAX#jLUN{8awQ&+iFqL82ryy zA)WkfI_Q=t*pb4!YAOiqt4L7}N3gcZBGb~-*;;eAt$3dnf~od)8S%dpDIRBX@P-ix zR8Q*=L<8zDlJ+hfxAGj~Rzn%&64U7q90$Hx!|AmWl$lXcV%ET{!06ZEu0vRdNwyAT zi=TKyIFYUAC$=HcW}~X~Q_c^h)F1`NrByf<+t-TeGVI0UPsVqEGP8NX z=EI@}aj?&hzOW(L8$l*TS>*f7wbO8pmk~*fJe6`UWvjqk6!Ge^#T?(^sTXM*zWoQ%08zKwoRBS%D}7Rp@tI zs#$?hO3jF~&ZU-9kDt}lp{-JJRK@$f6eZRAITB9{__xjI@kI!{^KXaBszru?f7`&H z4S2&#H@cB6ON@Wpa`X+&&c6*)0jjON7uoPnngBWE+YV2?svps^>7y7**7cLr!(h38Yko@VqsULWSe!sSKo0;S8~eRaGn& zSO4xH|MOy(xj}VDU{Dn@IEdydQaBq%i)2X0@;#O0`3^+%YQ!yQL9;vxal(vy$EuA? zCCA0w+Q9nR2wl4O%;pXC5+WqZQoZs-0!qv(=5#iua0MdL6tk3bmtFxS#7K%;eMKZ> zey!RF!RidCJ-}-cWF6NM`hedhV>A{26su$)(7^m&hQiV*6b6shrxZnksz`k4ey+qsgOVzUgMO6&_|h* zXZQ>|#dT6tKd`EL_<{XkE82k5gmPRYv{wDa{RE{H6O=OhZuyog{!kK3haJ{vIR5t) zMf2Sj^nv_o$N;(w`vcOZ(>~Aj-Y>GO$)P^8n4C{;PxyBApDcc(NPy8eV1^UO5xB}h z^GLd5790;aq*&ID+@a$LddLj!g*-xX1WtWpCnpt_Xc5`EA>%Ae5E!LTCX(AGrOzD1 zX-jYhB?Tj^VYEo3oV`94%;N$=shEBU1mtH)@*8-@6i-@OsKCT#HlVnzAsru_7vC9O zw;a=bzcY(6$C33^a}SC{d&-z7lJh63ai7ii1k~i9VKYl`{oXbF>U|V4?k-8@jujmS zyBCWGu+65JU>BRhaE0ui<#VVi9q+*$hBp-Q*Ihp98bCS|t7ez?S}#nt4@Q>b5d7ex zl{6Yb76f@vtm#{ErLi4;deMLp?}iFaPX}fA3Bz`mz%CY888wElLuQ}MT73G(>Gglu zf1uyP?q-ZJLo7ueqVTocXOXTf=`XwiP+*4K*93t{w(nT93a`IXY(%GL&gRIII(LAB zLnv|xk+@iL2U>pzx3R2Ss?HuGv~B;0VS?4lUm!V`VPD~nvbPfOlGDv36K;XC$WKhS zP&Q4{Nv>e=O@tGqa1y-ot3?|DWd!nNK^+1Ym@#0P>UbFg_TpQu0-rn8ukWWq_MCO} zoO-S$!^6mMB4$pQUgJnHn68@afKg>b;PLo`ehlMWVhoq3|aGo@GFAoOL7t z+;Rixt(MkbeJE%hHHg6~3QsCW0?@_9vMJzu#EO=;4o~%{`8h(1W4crmFBLW8dD*SxP~)^X^pxe&4PIDIOl7K`QBX-A-A3p<(qD zj0Mb38d5SY2+tgux8vlT!O(&-$_}|^O9gO_2{0gIp(-#)=Hq+Eu6q6@qN6#vbYt>w!cn$AA4Aq1Xg$JzsNt5ql;h z%d2FU>&S`=H9f+ehRu8IIQWxSipRkw%HEU(JCBcG3+V_RD6si(JsbB8c+8ScC;BiP$z5yJDucmC(ajn<3bfXZat@sm| ztFF&B1?&@L@D32rOV&WMqjdfo%|ZbLM-=?)pv8$Gom#s?7|Q5pRQ zBcm6C_|@$@w7q)u>9F2I(M@pNgqPEce#EZQ0hiTCVjVKtt5+^X0h~F9rrtE3F>LZD z)71?K62q8e-!#x!KoB?MTg*rY^&;bsL;f5|K?78B*vTS#wm^3SS`*AXQ7dRtuhmpI zd8Qd4ITCrvQ)Zfj4dhjtVCIn{!CB^+nj3S2N&_UhX9sdm8-r3a`LvY&PBkml2}T#e z^em1E$|wvvs<=UHKnkVAM}J}<1rlKD zQy%|;S4awML|L{T9t^j*kMkLU6Ox-|iDA(Uvu!7D2H6o^|0`~iH4%7-g-wv^ViT0t z)ND2OupzXdDi!Jlf0X|W3yb?hVkogu64~f}hPe{AmqQ}_AoJqhiXDE*K?!8ZEX&_$ zx*rc`s_yaUBQHsuh>UBqrzMU;0>7agPec9jeFz-@&|}a?UL{;D*x8erb_AGF@q|bX zE>%%i0v^$!b#JCu*AZPGrB_}(n<^Vv%~aNhy4XS$oGrH-kLWn<+(4tlI?0rumbX50 zW(wu(X}%R&C2@O_OLLR+OC`mwhy5By*h$sW9M0CjmfD@?(F{N50q^o{h^ee zy?6u_eK5Xvb_aS3mUg)n9$y%`a*E(1S0NVH_2?l4_KTFH2vQGf;2MdxfLja42*pG@F zQaF^b?mqbHOU1U&xunn)g!5<65(qN~ET5n4E{2~4_~Eo6wxljfJe4N)rmjFm&}s8H zuB6rG*%BP?lud9x?~niW{sU`q#rMt%uoZ`7ci<_@>&Ae>Z~4y{!=2r~#3m+>krJ}beMV*T?OiKG6>WjkUu5e`V`N;@NM z=Zc=0tRiqEw4M`zt_HvrqM?$8$5{S$HqaTwNsDOxc2v(Jn zy%Q|11f4dT6vkq;5IH*!or$hHkmozA5J({$Gtn|l`3c+P8`q%*Tz+GW{uT<8aZV%M=D^D>)IOr%;IH`1JoWOc8DtIT(4xpq20y9$ z8&G#*=}i4@$bI>_U<)#r&eX3}_)KDwHW_)s24Aw(vZNYfV0|tq~cb@Ha;;5 z;AKlR3QKLA-OE&NGqZ!tqfd1f410eIWQuoUi&O8B`2Fl|8&Mq8sLX`;&EXf49QSuV zd}Wv|F%XJNNgNbHc+XLE4X+tUw)aNN)_B=WHl*90=EZwg;bimeQ0v}Bs-_`ulKlD{e&-%h2L zr&|yiV@>qm+vN^y&IQ+^H}&)5sk(JXFX?c@@U zRY2g)rYbFw;L?h3CTyq`e+1Fbe>~X^5^8Kw?{*}#&$n^Mj8^=bUlfbcwLm$1_Y{ig zmPi{N-%_z>K@}>dY{)qa?6w!l8ZnGqT$jZ4iC4031y2)*?6%>465JvQ3I2^0;xDuG zP=zW{Ix>o{ppQ8z!7_8k*A6`iFZ6uhL#L-%%58N?ZyK+dWI?)5irc%YmHlY+t`7a& zShPxsZak>ei4!oo=8Nivmi^w*HNQqK_6RZJPz5<%Cxw3iRPv7gGZwk*SRSX@6Phm; zooVb%EvT9({7lNRl=UQr4b(4n2Hgjgza`jAJyuz~lEVTn8xs&qA=o3aMNU7bPOr(+ z;q_-Pp+-so`UxVJ@gCOM}YFo~yOeB2u&ts3}D}Ei$1d z263Y!J_r#@q($Mp;{uAwdk4~b{JA+O|5T4+mF}PW`AB*>G0kjR{ z)QAQrsdEPtS+QyZK^n;}m~O@lN7gLO*fP8pX_C<{Wd=6a;bK@Mk!>iw%tG@vTzv6> zY{N^xCy{D^SFqxdL}q0bKb}q`A3@Eo9!aFG!MnE0s}jjy783RNe_KU=^5+Fy4Gr_S zPbO*ouO@CcLl_IA*M#@+ufJ5+b;i(SS*@CXe%Uu=Qf=KZXDDLaVk2e^D$^Y>XBHWA zhGo*U@mN_sZiexfen*7ZeGx)c%rV`q|7tAKuW17?w=AV_(AlWwmsnzy?CBgqw=uyO zV*r?Tx-7t@p4d!G0O~qfnt(~L68KoHOhcdGa3XneazVAcZm`u7slz$fi>~>s3XPT> z?OfwpRCZ<&t?MGiN6w|wN@WZ}N zWfoRH0OBI9*>A~7zsrp|ybc&cX80${2<$K0q6_4>1FL#rmkL+xlmz!LoxMpr&m6X$5ax1hm<_K7baN9rth2&Z<(_R)?(Uw|FH7O`7fCSqJ_n65Go2 zu!FEvB*rxARl8v*w&;xj=o34i;}Dbu;KuYaSOC11AwF~#?k4|nBK11E*4;m&1=fdX zX}NFwg1rTUp!O78`J(rPZ5I@=hD_5T1l8I831~yNrzUj1e#i6Dy6E^=R@yGOOrBRr z5o{BliEF)BvDRi1#7Z?`Ce#?k{bC-{EMSS5lX}4=j*C%Lc_KbIDiKS8k}Lgb8toDuQbav zR7I2+Am^yTB}Xus5z3DDHz*5eu z_a8W`e*3~yPVU%$w3kcrJ8kOoCtM%o2|F|;SK>Q(UYjejyp;ZPAcC4`!f7)T0k!F;#KBKU5EjC1HBGZeoG-C{M~CqN^u zn)(3daFP6!2XMxbEf(4o@hd0|2N+y5qK{SGM#f|GFd!v28{T=pzN@hy&X_~=%$l=3 zIPcg|$BC42KZ(TXO6k?eHirLw2nC@-xV`uY+o>C(rv*6^+F+VvzF_CZxAJHJDgH9h zYtK+s?pTdx6b=O|PC%8*Cj^SZ=R27nlsNVYmg8?2z+)L$92;1HONE(&tpXTh2JQ6r z*dG;7u4kjG8Bn;#ANsH2^eITsf6gG~E&vv1b^!=}ANiybr1?299D)wPnSiU-kyDRGZ8(zL+H%2Ko__*kE4J zGNe3;3i$mS3di7Z$~5bJd8aU%)E1?y!LQqh%%+wHC_7NmBOo7si;+lM4GBSiGN(jn zzUOD~8aG=z$QJG_i>~kEDu`*&Cj*W9agdn5#&9`*k8fm#HLmKl{uu0H+Elf~YpZ~oYk;reiN&5t2HW@nbE zDwudUFq?bpOtqnbv)-BDh>ANKWtnP>=g^fbkacHyUqY3g%8uYw0o{N2L~)lt0yO29 zC(=_Mc-!#+!)`0SAdL%6F&91=n+M|i3>jv%HIEmey>#n} z<#TYa&x?<=AB$fRuqhXnqQ=s@ZZ4a0dTAnWZukuBSV&PtbiLmnaP>mL?uK$syx(B& zr1kyjmdex6?fqt`D5>(XE}iyR)_WP@5~hCXM>Gr3JE_Bk*`kEZuyj%picRHEd=Myf z86A&og2SIU{&?Cbq5Jv{=Y4(bvDgU&L+r(TMHd6^s=ivTF>PHAY0#TJpJJC}yC&NU z?ycMAYb1}GfyaTnNMcwQM7rK-~0I=J85s>oZ1kWP1m5Ru5nVknFHCvb5n z?S}9UfCLvhtfEPfiJt*Zh#f3@D^2 zfkMLRs*osyCO=d=l#8eRScn3VKlq^|k{oIMi~()}OGogHe;u-#i8OM{g^@QE%xnBY z0DH4TVSPne@1h_mvVPbPlNHf57r6lgywP5YR_N#;%b3m=$_=}Qzs^W$C1axTffRR; zJ3w&#_)wr_+vCCl6gLVw*+qwnjg3zC+GV|~fX;Bepo>NYyOiWb*Pp4AQCByVzrdBR z?ivaa(h)%7Y(G)j$0nkEvR;*+NC|UybHrglk{g8cjkxwt`jmz&+ZGE`vxffGO=|DgUofI)5i_c~xH!ag> zfN^IA*9}^E^;PfYWs!j4Tmwn;o`YUOZj?tv?E6hE{KkL=xg^PbZWuWO{L>=?0QD`; z=$gENB$Mxyu_h<@5IhYH#p}`HIn}CtI!w*c&gi>wFj@mO%6gvw z+Du}p?L_}nROq;@5~ zW#}5dMHPe8p`|RQZI2a`*QA)(d@&F z8oc3e85GD>#cq8#P*5RMK{O%zxCfg!5uV)vNB~eV3+W%UWaJkckYu4&@)JB+h_zM? zzw3`Uk)ngDiEM)#3p9c~yI&QvQ{!t}k3l?XeE_$|gazQ&s=v*RtC&i_Y``i#UE8VV z4VM_#%$ zN2VP~)onnP_1=g2<4He^m&w8*t#becWLd9)qAnK`=w)dU)+f|{Zv}+P+j&$y)@3Db z`K-4LXdxj-34y@(ARjRR?%|VEPf6MAPbcC*47mDs&)wE`aT!vF(7lmQz}ErXl3Lk% zvL&@sReB$|ehXYXVJep+QK|eMs3#`dD&BYT>P;$sPda{2f5B=F(4?Y-aSXdvW;R0x8mr!Nj}6gZ7s-g_apBoVSBYXx7nXjX(K-~S5S<{O_LipZbl1Lw@Nh`x0|-aXGGSSXLqw&Epd#&dOLH?c#2?J`xn_Yh z{vcG#5Spo$oW5L=y0#o4h`ZHn=ABF76{ks{ItS1k*|JWg!#F~_q|F3lf|yY^ZAPr( z7&Wh^EE_E4xt7ORcYuHhCpi_Y5j-`fQZ+&11WsbBwH-l)h~I9{voc@Q2A-+6MT?aH^8$GUZCj@a>5MY1w=Ppk+az`R3ln zYy$2vz9^21PzQi>T(}u{A4yh)P`4_+9nVa%UVTq={pC9AfMm`3pd2b(bA^svL)nfl z5bfl?<5pG#{~jZig_Z%T~h336}zG{EurEO~Rq8|_%kV80xfOxw{>>SCg`@?XB z4BR;83YnpFBQ}lkOk-W@+_jXoZnKSS^|qmMU~>q@<#^l#5?#5GMWs7D6vb=(k7p1^ zO%UXNf-OK1!7N2z2o>d(D=JY!QK1}IO9@yN`fy48mV^jjEyZ_Sks#p}V!V;L5}Xw6 z+@{o{E*tRWbC&?DW2(zj{)6MoT-+WP*XrU%T-y5XZg%>l&>hM;7O%m ztNYi1(oh|5C#BhrZp8Dy{2Mh)S>t~U>D(AyQg4@Y7uZdvQb<|F)&Xd{Wc{0|n$wLt zp$pug96hO!)uSG^so4kA&A=#kA-BRjrKYKc(&0D;7GRqg?>DN!0u5HdE4vWux!7un z#mcg3cMIGDh~rdQm~==GnnX3;^CDu6 z-BfcrSW(qsg)ne33!e65-xBO2@~~#Pg`0sV2oKkPXFCd@RW%xNcZ@J_>}y0z7(J6v zG)J5mBOKL9&p6QY4K!Ig0q~dw2hS$}ex?P7h)n=IVZkRxdy56Hoe=gV7Q7*eO$%ly zG14$Ej?v@|Ja>kRvx7&@q=!R5ZliSIKZp}YpTG@;Cq88RHOxA*(@TYD3VIU7&n=R1 z$aHI$=+_0Lc4O@3p)V?if;Gj&&=lX3N_xj`9C%G-y@8wk6Lli>7$-F4&OnOx=dL|G zBr8b3PL$Izf(VHHjeXJk1~q}}HZGxcsyItev26ed`o26` zRe5wcxwIFiR4<=-M32s&Z3fFx1k2n#R#G10ivW`BF_3Px;`0+BwptMUEk+C zF>JEtam9qYFxguCG!gx&IIVgPt+Pn->yCnX_p%9K_1noX^t732_yY=<(ba)wQN`fPbrRnu(L?MmjP9N0r20JP{mkv5JZ z8`BAJk-p`&4NN1;UPp!URMO=VGv7m*sv?e8714$1{t|&6eTSm%6cj$L1JNSnpbYyD z^)$&ua8wLn*D8#R!%#yMH<2t_>_i~3omr5V>tjdX&jwB=bTTk8Y&ZizdkFuTX~yt$ zSTW=)iD39)Ef~$bojO#+^0EnXAh00}JUrDrl4{(un7iA! z-zU0e7?_Z|kd7sk&-iMYyKQA$BU|i|g;%2|Va7_TFkNdgiBtoKKs}p`e0Q?y!omWq zz$Q(VGfpg_L@i=hef0kL-o>d&6M)2GYH9&G6bl>^C3ab*7Et5^wMsQ5@H zakJ381JJTDsldgL#2aj=WZ$K!)r_0~T`K;t%wZS~OsG7Vq%w%9y!|T$-wkWyRtZI{ zHACP;YDWH+NDb7X8a!U~{^p^@;?3~nG%ckAUjyo_8=shT7YpFKR`LM}L9Z#g79WD# zHiBh&54iE0^$tgkMZ`TVX2hCP-sRtMDb<8_2_NVUzXEWS1$bNl*ku4< zlfN(vU!DD%!8l?m+N96hOhbrl0ce zKuT>W<;{T<1PXv6QRevOnUBu{-d~?@0JG6A+Mv92>iKnK zQfB*4UT(cz>OZK=zT}c+pCVNr9(1;Q+xbM*5XVXGY7NOLhOHP5W1>6a+;M zZ5`r`ee~CS-_r0_(oj<0L9Oq9KvrCRl_b+lp8(20eGU9-z?=HI>xod|o}kL`L}m1< z$`~+vfqFm=I+jSl`LMl=%0Ti_AGp0(!qd>EBH_aiLNwsdJC$q_mB9=jDar6jmx0>V zF7na612V|R?O{IZz}e$E_-AedkIs+Y1Wv+(&_ zBtoz^2!RN9&I>(s&Y8Az4x%KCQzaJ%aT}`Xp-Wj>Q4dXhBh*8$_}nF=>w72+xzLqP zDwX*!yTm!AiC=Ju4W)?}xI~_ZY2&#vFB>}roQ-H{rq z5V84Y5U3{zgmAYFXJa$SfYC@Xb5$4|S+B`$bjB(W66h#oAsCl}yNfgo`1!UBf*^d7 z3kx_em_&A|!{JDB{crW2wbB6XYtaQe5~-Vb<2HcT8s-35oc+#*!7TO%8wNs*JuV1_ z=)6t9qxZ*-hgp3K(mMnle8e#KZxK^EQ}YAz0@ntxTY=)&sncK|;C+-0a98{WstLdw z@O*lw0J87%m8IC^=zV=aduzGW`y)vCDpGD;JTHDrGN43%W`(!0;qY;lwMimdRJG$lrqa-`| z7+bDJVH$)O?HtdITC+g|fr-f|oPryHj5llyG9ChH7@vx7%Er6VvJoDg><;t*UiOQt z3*)yX+i#0};m~aSHi3F$I)2-{_{Noozzu-Ja2~Aeqj}I7?uy@*>Sx)QKcV{5Y`5xT z!4W>9(GBlP_q_O~D^r*W6*b6uZIBM=7tp7zkpD2yneADAcQztQUO{o4Fb)WMe#fo* z54h4;{I?-Wq7xP)MYV_QGlWPri#E|kAgHXY_jVWpU5VA(sm6@E!`>CrOREAiw~biP z>ING8Q;mI?jIP7~3?ZS=Iy3)UBt-qE{1;mUa_(qlF zxWx=K$N=Q!OvL%5KlAT6KpxK`?*QUOcx|TfehG%6B#jQY>yAK@8G~L#fiFUriaP81 z|D@48)M__s*N(K^fllU`gZTdI>+5f!TudGn4swKn5Y9cotv!QUw>&-zcbdSFF}ul$ z-QdKF(QDguqcB6I^1e#{uTBd*_(gCIO-cmE8n2 zj?cUCc_-?9cXZ7OzzrHPel&5+xKoEbUp1y+CF8=POuTRN9AUKdthancRD;cR_b9na z@P@aM4hB&UsJ0morB4W62mhf*{V-O|o9~2w30=1mKzEm8HYzt-65E0I87@wpUa2a1 zBL!w7826p%wI5KG?AjXImPc7!7!o=A--JsVh44`}oQ+k3m$-lwb|K~#>Z`$)`qmA0 z;y+eL6qD3+#5!$0zqeeBGSI>=LUdk?*zU^v$5G1{!wkrJmE?IUjwdidjrTh!43$BM zqUb~RhH6!E_>t~T#q}Z>TBZGW_(tSJ)b229s-e=J{DUu>o;)$|FAF$(^u*v7D|}^9 z&%OvfySOLYsW0@KIgOWU>;cU^uyAX!b=q+Ee&sIoH~VsqEU=SBuW%FRNQfHHtqp$4 z&jKlPLV30aQW}`moU1xkpmZ{Z`(^`Brwsob40fQCqMc7@xL0>s^rj+MAg z)<2x$Tc*7G`3v;vA|Cfu++?SvPbsVNUoWLvpi9`^~ofK0@1-}Na*JUuOYPaEE(KzuvA<)vKIPis9p;Q-t2)k zUdz6daPaQQA1FYz72_0hHp?cb}FK>rh} zvfd?FJ%m^3{b3G$OY(UcG1d%+wxEXqD#W$A8^E8Myr}$o9eh!`Xd#fUWfw06zy3MIFX)WYcKjZW#Fe(=bJAJDbnS(t z7q{c0@^pDG2-3w$(+z?w*pWKQpuedM`ik=CQ;L47pqESHMIU_wLyA0wwg3y>`edUK z!MWN=dpTgtuaNz=5ah5Q|8|t+{P>HYf_m+os8|Kree813dn#5!d)(N47uXN;Yj86s zG49HwqbXHTlR7fNM&tG$8NyJ8m}s9ml&jQjCo?Zq>r`}G>1mmx+PaEW)Uyx}z3sF3b)+$4cfn_dQaX!huCJ-uuyAkmfOs`*=MV zH*_Jkz0tDhygW8$a#9>nvI&e&jg!->LjH|4!&}I zKn`jl2N?Q%Z}DkhQL(r9{ERfOS^BQ)->rChmA zDr(kJmVKdhF{!$hx*T)nbZovjszd7YJU4_!M)mi=(a7CW@U--^ zd|A3NV*M^;@t0oC%1AhqMo$J@W<9V=4 zFS(rPL0Wd`^+!FNF7C?JC|kSoEK%G$PbF8~(#yT;iZeWiR?`fxYM<LE)%<@GQ5DKRiB=~ZW%CZl5~w)GeEEpOzZLj?WxOx#FoX8$*U2X>x|T_JX%hew&9 z%h*)zF80jKYQ*|QUdJNwo`YP7C98^NGAIyPxrP)JiTA&zg5pg(k+eQYCYW5OOD=S2C>&8d z(qGWMv)=E}l2A`ml1WMy!eb5Y*ozZmLYuY)-B2CRu?4u zs&GdRWR$s7m0XUlSYDi`17oQ;zfa-a0M`U24Fu;?#e*Cr7S$-f3!&;~POf2wAC+HQ zET(gyL{&`JLriIqke#h@C^Fj9X5_va!H`*a_*(F~)GWODr&65B1qn7*{I|f5J~IE? zC@w|O?@8gh$zTyjGU!!FVsENiXB$Nt{|=Pu7*i`6pN$B-A0=Lq68|BerPql(=#{Bk zYipZCO8!m9026!Ib%#x7{?#Uy-&2G}_z*%1;hr|<21v1M&d_bF9{`F#a~k+1fcKR* zC0-iypc?UvU7>s_fcC<9uw zJ4nQE>k{x???n0pdj>_3dl6d~2oCXQSL0J;mGY&^8g-HR7t{rm9_Xd33z6851sG*h zC8Hcisv$rI^~V*pF7OJ1mP4O>0;?2<*fVMEGd5%* ze2&^MMb!%-Y)Z&)I+n;r3=Rxm)tam)jF7wBcCfk-nkJwbayKU6*b?r%mLhZ;8j>J1 zfWSE?KZUZ1`ow17e_8+B>qpe0=b*&`uh|)NGjZLc%wkwyuI5^)#fKDkc?{F}*3wvs50*})ZD)41wO_(oE#IeLlDSw6!#g~aBX5&rO& zNH#4t*KoVkpzpw?sirq>gM8is;m8lW?*~ABW;t7UT)0~BsiKftfDJl9YNPATh6j+z zTUU)3*6^+=&Il2G3SHCr1{Q+#74BxS3AocB!r7WhnC!N>;NZ7NRW>#UU*@xcpYY;4 z1r_cesm4KE55wuBTyt3fT1au$n_DQEJ{=?XOob*{7f>gp8wa6xzzTFZau&HCgeL@7 zZYJCJMS^DB1z6Creq>P--uck+sxZnaZSyd*&EmDM;>zNI{PF#l?VcLFFMc4ITXiT_ zy-=!yIZt7j+UHH3U(xzh7#J3hVTIX`lO==5tU@+MPqg{0@;|5fpKKHZU=J%H+YH8b znO*N=qb){YbLqXlV4mu&N8*2sJQCl}qK3%OubcV3tLBv}g%w)ODO?B5P3FZE@5P^0 zhd`CSF`t0Yv^L;qSnJ>A=S$0Ej!JeEx4@4vqU4XU<>imWR|QMXA8NiTy0nl=DWn3Z zxvdHp?^HU$#X4;Bf#mbiL#YaeQq_+6Z8I5>rasB(uyhQJf|LR4X#ZnHTfHK)>^2I? zK)(#{lYwrk>S*8Zz-^Nl)n>r^0^r_s9YqBfTm0h5PB7`1xG3dIc3EY z@bQroad?4x-II@f#RyO&GVD!FDo#L=NGOyhphzU_wZT zZAkOof@6&Uiy*3A@=?YS@iNSE=7ZejwwkzS5vREpLgfkgRi!6%v-u|B)| zgi~5Q@JB}IP7}#cw4QBam_MMvgG$081vZfkDX?jZK?P=UC{;J*cA7|r2%MBw$B9}g zfxpa*am`A@5P}Htr<^q8G?_o;q`}i<{*;r3T9Q^Lat{h)q^Yh`BF{4+%gF|hR7Ri%>kO>7ima0H#c}mLOWI zWe7RE9E<$Qo3hG6`IYZvX`n3P8i+%{JZYxry5(q8XL^>{7+!10#t`=uO;605v1xk# z0l7n2f(dgL7v2Zj#~Me6=@I=e)vT4MbYwOJD3YQDUyv;^nEq68&OQ8QNCRU5f?ySV zWoJ7iV<0{OtTZVMg@&A3&t zHg9rIm1RG!R)Hl>?0VrF*k;4Z=vb9r*nxCW##T1OgQCh*2P*SMzekEU z61KE($U}2+;z7TcmyS%Q87Bhk2_p~%FV~e|4O25+kq(XuaU@y^;u1O&^*pcRE1DHe zbQ+Taaj{A{X{U=MQlv|yvpvudq&=>jq7U3pCJ(c`0#S9Lcxh+=@mr+;8dVhEb%C5l|9D0>BNra8>3{xE>1KXDYT`T=Qz!=kD$Oo` zlc}mG6AR1pLY>iRvGNzvU?GLn?<*v$$h7N?uh=S2J+KPg_>SMbs~;KwP2Ppe=n>~Y zRDOZQX~TOyoRD0r#>gL8c<^aA9clv^11) zaEiRzTKY8vK}Ca@C{jeH+xCLg7gKs9*^sM4+{Y{_M&upKMWV$V(edAO6AK=00(JzZ zWbqsH&3cc-4=}-#!u0KV*>}YVB^G+AN+8gxZK8jX6rdKpjSfz9bodA1j&|7Edig12 zs=?!Wt0CP>A0ec}y)PUixDqIf=|(z}dqhf*D8f+qtSlxK9(X4zA{UHp6-PgszkR7m z;$ARK;^F`$<5M*RMb#Tq6Br*kCcEESEf1@dUfbfsi0q zK}n5QAcxQST5B34GF@B)kxZ(FOnc;y2Y+tvf9Y5}b(*Vy^OEY!Y+LyG67JsGhr1y6 zRjwTJv9diOH*L6dXAhtYWf-cf#9W`FhZ;a5aFPkE9{WOLir%VDw(p6k$w?_a5Xl=O zP}BsL1Nw8iAQ@0Mo2|Nu$O<8`sxFf5^?M1cL2J}(m~wCp@>Xiy)N9Q(Asy-W%u1*; zP1FLCL5ywl8K^XCN+1}+W`q2v1h+J8FdHgiu$xx52DRKVC+)WScOh)AppJR25rEo& z3P*WCab~BYxQJ2fQBZK*YUb=pZ1Q$5=MG?1P#W-vmAkBHs`Atelh8imt%n1< zXq^%(sz-GbNoE>}h96sAJ;Y7ciPXZuDvK;L<;cq`B2KN;Vqs!y14z<+5FfeRjIQzq zo7rUlA4n!foYbL4012Ia%fE<4rIk~;oHRH8S*DW3xht66%FPUk=0J;C%7qqY<|TG{ z?*be3g--{w)tYR4Q9+i11oaD_ve~!{FHujrs3XifICS3YB6iu$7YXLX$|=al8kix! zCO^v*ID=LADa?kv?&zSAhnRV&6c$TusTZJBUqDqY>kU>J!>7%&Y6H8IS6r$JIk=Jt zK*Q1wKC;FCh(6ml$6skpt|7luvtprS{1|ceZP2>Ap5&SDAllF~laQP^H zMk4aEli|k)96#P751pdFqur#>%f_9j7lR2$6Fm}Y0}1V52e?zND6@4(MjEpV;)j=w zx=~07Yg58Rpk#@=qP31P7Q+(br2HpL`6LYe3_F8#Z^fe!DbdoF>R{qDCLSN4Jec_M z#YmhYtIcjPyr@geXZvyd3U-N2me+cCO}a#Dac{U5$j9pqZ(L->+VzIFK#Tj?z-z{`_AwI(5hj_#6Auf&YvG{4c5N#M&DWfS<;g^#@e`=JnBd56~aiUf}-3euytr_#wVcp;gl{ z&QwjtxYgVEDn+<(lfZWVk=74^(4ZV2o9C57 zoTCpkY@dJ_{< zyXpW)w35hMP@x)mbs(g1FoDC^WiA@DQ||;fFK4}vpa2pJqor< zeOd2Kh%zrq!L~bzW#gI#xzBQMbp7WcM@mj?32}O#RONxOr-|VqKOAFt0Abs7tM~Mv zR>fO&Go6cwGxf+rY!>etX{?(hF0Jcy6@zkpbt3u>-eKL@A|%|jM1JI+6u9sM5Y^NF z=^{GO&+C5$3k?b#KEV7vR8a>Ntn#Puyl;Hp+;}1SVfzGbD7LXEwi$L~0Vcjzar0~K z=FME2p&&jiPV0fPVi40Dz#{m1YEbPu2k0I%c215V95e990{o7cUr{1p_YhhDgA85t zL%1AqkWdm^TViVZ7au0nC5F7Su;SC7j1Ys)BbeGgY%gs>MN5LL-a8bPTuR%)sY}?t2`O zJ7)%!geLx^n-*%QZul#fCnB;ySRK7fK+_3Yk%*|l^G&=YK=RdU9G-OAR>8A2Kvkzv zGa1F(PjqGse#?&0LZaeHFc4?$7o#PPBWyTjaW+yB5zoNzZI+f;ow^plMa6ClX#x}0 zH9~^bd zzMFD6wlYCbx_!0Po$U}!sof2sy+nckvT;rWBEv_hn&~!LDjnZcUSH<2aSlz9;s3%P zl#xT%u1+`i&}`Fp>7fmvtnjRIHU4_(D*298RSaMpI1#6Bpz`TUyGP=U<0DZy3RExR z`PK~z!|aI~&V+cq{?iyWFQx}%a+>IxyHnQ^P=Q!MKMO;6C_%Ek(_{f|W?@n?-oriD zIViAs@t)}Vw?W?|jP;tGk7H?e?V*6?F+YiiUo{-nD00Cf0EE>z#xJ6K4$!rT7SI~Bl3Bv6?;<4%z zkfzEI3^^w-0|K+X44Rw;xm`d8%Ap~918x6WrZja7h#V~78?3r=J37D3WC zFFp`m^DpwfowvNN!GRAJ=cU<^&_Pj<-(sXi*!X^W1%HOV)y9v9B?CbFB=KUz>5U{q zlF*_(x2R>wJOTeTH_Q`Py^o8q+a&_FXk3Cnw7Kjv z!a7bv295F3t;P!?eB%ZAY9)Kj883)ZjIn_6GD09@qQGSwFka|#DM|?#FLS`oE-k<) ze3B>;=0~lFg|uF#cjXW3%1`aeR~kPbNHvxWaw(mbT(M+M;f@gLZzr$z;OLhyQ>ypVo>2cZt#w>iH&S+? z=4f}nfDDvF<3_uG6_~%+X!rh!jdn-=w??}m8JsYrjy>A_haIRO*3pi)>8}(cC_PEy*oS(21Yv`?j!)NIMXR}`N2-6>Lnwcnd!Jep@oA2x=58`jEOmL6K=Gb z`*3vK<#yy7dw{I8V1M2L@)kRi{dot-zx^K@`3@}|`O@-+9=KmST!W8?hF? zH2#QHCop4=EndxTi?(1OAK5&;DN-v2MXtd@`r{5kHDXtbW8D#EA7_i!0^h z@<*&zhwOhxtg<84FL1eDXvF&S4n=?b%M3+b7VX&M>(lU)mCn^x@7c)NB90VtRS8E5 z@sqmg0tW2MnkA3j>bjMAY_n5f`KC6PzjdW$5IPnQvE2p}1KSVrPIp1d$a={$uxQ3d z5R&Z!?gqVuZ=m0@10a#%6Xbghzq9eR{NdR&P?JvJgGJFX)4a~cwz$|or0^tMyh9dz zCUdVs|MOG0n^x}Onu*1aPSy}hglSn~OP}3fzs{Kxy{ma$#bc>QQqOq5+l~4s>Asl& zvRI|XaW%uNvGG>hWw zQ}Fh15GBa8DEIt=b>>WDG%D%7QU2j>k820UfRx*AEht)k24J}ynmU~=pBx+`D;DX} z9R%Pes}s^Hgz1bfh(cy`V@=QBn{6h;HHSh-WEm8BBEt`2fE|^7pceZ`pO+ZjJOZ3N zA8+8oPsI-zCcvLM!vV+>6vg+3R731?Df|^qj1Mn<^PCJ$m^4e6^m9(uwc`sZdP->4I8z^^2A5bs!{7BY70?Y*p%80ST#VA zp!^9?WY-jowmyOs`}=;+nYs7wW;fXg>ihio(CnR=GiT16IdkUBnSXQ@;%|@Zdv#y) z6eJ+JUecs=BzhCv7oTL}#$d*NkRvw!W0H1DPDXD^o07zKNu(#fdG#do?L?c?iB;&2 zz!S=5bt)n?aW^n}*zyBze$iVF-VO|XJ`nb&0E2r;8w5R?A;)u5>ELpwv`Hck0r5>Y zY-Kjjjbl?xx%niUxu79L@s)^0o80Jnsp4@`iw=p|C^6$DX0ycHA~ApNCyQ|HGIF&` z%o7r`h2_yP+aZzr8Og@O2?lx+xNrh%6+sTtn+4`KK1`(C0&TN+@OA*C;PXC=hbQIX z(Up`dd>9|kPEdjsk@_i^V9&sl@(6#7GMyKI(dSv^H*fj&dkB-V+x#D%w9gCVnPB@|AUV+|%QotP;QJGN)7M1+%P9u%Kx zFZ2R;VPWLxE8fGg!wGU!Tm|5Ky*D~^$GV@y=+Mm~@=xr8D6~rSLDat2Q53Lg^ zo*oz@=gl7pj4f5+%v+qjAJr-fI9j!3OGiU5^XKf1(s#(^M$fXr*o4h2Bjn7TRji;A z@pKwIvtJ>eEe20fMwdtrcbu?ZMH{3->!sR(&>QCdh|gj42a(JA_t|+2oxu01d0=;w!9o?aDG*A z%A}w)oSYXJI$a@7?Rbx1YsXI$#QoAROSEBVofapSvjan{D-;G12PO!=e3)F22|{s- zWr(DR!5%epgyO(DfEnn(G~pxX`qPBsx$|cVB84tC9m*)vWo8OrINy$1<6-5c6HAdS zGIee_MYkx2h}}#Un5FP!0We$_GLr>?%bhIrKqgr~HU14i(aA!uOcqLm7X!UlCks8W z9H|L(vcO?QgdXQ>(wSYtOBvbBT!ACKohuaP*~RBsp8W+u#DaWVKU0cvWaw{UKEar1U6<^XQVty@mT^--s;oUM!| zgx!FEc6|7DtJ_v163NmieF`FELj3K)(^4$j67AMYVUs820t&-X=b7{&SWf&NA zF0BHIdz}x(w^M#GxBPA?1f_5vZ!XotnispZ@ZO_0)!cNZnQG<;MGoUQxaw^4T32k) z*syW?*XP(V=soaPuhQ$g^;SJP<}LV_HsvZ#LBSxwh+u?W3VDh5(Fz^%riFODUq;)0m4eF{bZ^A3aBt#I69I_ zc3b+S@k**_C9pb1ZVS$^adm4;f9d$9l!A|Qg%TU0suX;j5R`~-YAN_Q!k37zx)gjI zxXS$c4%#)kcp|JGL`Hsw*4I>q$3ysKIEqV7bFCL*V zOV)T~Dx5qC3?)Wmut<>_K(=f(OdTfT`!RgmqnZcid8i-AhKTIhT`(Kx+t8wW5#p(3NxSEl2-Vn7@&SbO{sZLu+#?80 z7N=eQ?EyHSs*lAui?%rnyXNDx&V0P5x-{nM%eLh0*{O8253P%aVqb&siF>07pEy>K zCl39z-HRDPt!?eVgZ%w$y?AOe&}W!oc&qdNXV14^1c1}P49=#&U2eV%Q$Lu))Z0!C zFm*iw!c-h6y`b*m1p{Z{W5LB2)D4`5kGcyG!)G8aUVxZm`B8Vlf`Li2RYKV=aX3a( zcsQ^UFU_8ULQ^iy!%6YR%Cd0tJz6=53nzGRqiEd>=`m*>eD5PyZ?P;aj105DnFrtd z$S{{XTzME7X1+5Il^Pl55?Kft8K%yew_r3pOW>^@4Q8n`Z`o)t%bj^EMuS=A%v(Mh z%nD~-eYO|wKpZivjaG$QchWT&-2-Dkl>Hxx-xJ#yzGMD`!SG$F_|SrI^EP-3@v&x7 zeCUGuso4a8;zM=e<}U2Kj1OHLZmxp@&VEw!VsUl#!qJE*wIQ>|v#iD~p@!8W`f}zs zqP7{Tm3hqV!E{LK{t#NcXG36e~(+ zl~|^T(rCkpv;{_#Y#&}caHFM(QmMm2HV&ksl|H4NUQ~xuw`vrYMOKwC?yM3Cnxhi2 z%8F0js_aoxC}l@YZP)~Ls}$^#^L8{`_pc+xO35m0Kl^7^*-FNgQpypr01rm&$!vi+ z*_{=($4!f;FoKnZzxW=EV5N#lsiS`OLntRWc-66qoVFHpoKfg(BFyNVv3ckpTmABrA!g6(F{G)WOdn(3RY^I z@Qu2IX=IW7mm7cg;5ZG%GMxC3TJlgNmjbOma<`F0>A9Q#sp9h^I#I^Zku3&<>M<2~HhF16&vm{Vg(}gi@ zmg!^1NL3knMWfs;%rPjHvEq=`&+zPlS6n0{R_GC-mGtWEmz=3y%X64;A z;7_LW7}=ZX=e9{NV3bXWL;%`d&SAmpD9u@HesxAbX_XW$pGlW4)TVici}E zTDRxmw%W-cfogAPm;RU=SnW-?_T7X?IUG(`1CCqND>MrfB56az;c}OT!}+-@q^`n@ zT;OaU*er)J!7?&2oKw&oli@4F6<&8#GN^ZZV@HIwl`P(J?4TlmdGG*8!*}#50`5e| zU2fQeuh$3XUg{>7$OW&9<9*Oh@0+6sr+e4G?X&j`A9jD^KD|_NU)h@dfV8;A{u-fo zsa$t|1+N)7h|8W2mrICSCsbT>GRQACPu2kv$)^p%q0&86uCCWVtjLAf2Y)dTz`1-_ z7vMs0qr&%r_XvlOa9XIEYx4~g&~`|ulmz0m)DOr1g-_?==Y@L^v5Bis1CDrRqIVM> zo(F|ZA^+mA#(IhA~UcZP(OdZ^y1F!AI z7#!~}z_Ts7o=#lcou>)5{s}H$~_Ej9tPZ`E7icSsYaRN8PaORQxln2YVtnKt2G%iV5TO> zZ)#G31kl~;3+jvF@V1z-(@Ge_|3Z;mwIUh^Tnu zUMvu$6cdQ(&YWZlj;2}{PxL7J9X3YEao1--h0~4rO1Cn6cejiwm3*nCAN0pw5s7n1 zVzpwrLNUELx>w~{-*>$b5GWek!)Ch+S-D<4UG_Yn84`(#NRD2%B<{C~<*u87L;41; zvv3buvlp$o8#$qLIYyv^H}2MU?B~siUOO^`c0_*~R9%D7bI`P5!xA8ng`N{J_COE4 z&4!Oa81GER8xMr)4+D8G^zm#wbn~J-Awa5AHaD z7X!hD!(@@qERe#K3E#DljBzX`hi=eB<;R)}Q0RuW>c9CViB|9VqwUa5M4q*xBbVKS$WFmA%kNAS8#4 z)I0YN$&ZQ*a8?`5 z1h|+9C*L6)+v{_2Z#Y@4ob|bg)&3CTd@e2l7dxDWP0pfrRHZ|#eZ75<-_3I+M2al)d$code6M4u7wKUj<9{3KqY#})V50$&iRF4zM7 zI_XtQ*R((en#GB38<=NGvMrJETB08YJ_?S_9>T?)L2GvMpN%#9G2Fl>)@+w=&32h%A2i6HhL7UZ zC=GYdAQzKmEf7FLN-)H?Y%!AyB4tyJ_J8m2ww(g94OuZLN7K+UoPV)pk4qlQuK zxo2cd%bPtJVri>V1sYp5m#}amZu&qvQ-uZ?#^@nxU7hiOe(xzS4l7*;U;bxQWfa~^ zbw;)#i&ybn+(chQ|KqN7VN?p{K3S%c*F(sW|n{YX2W zXM~h)+=;>P>KS(nTo|m7b=)#c`4ht~Xw}`oQ$O*Yl_OYnvs8a^AfUA=R^4$DmuuDi zHOHzeWiX&KbhYVP6S{yBja!;|2fv;%oBzG$9rZ+Co_QAoOGg+Y-XW~}N6kBwH+I`D z-ndEl+yfP6`TWnb^Lh%{dC!z==M~ER-B*2*@ zXK=AxzB_g=3NkL$ZGU~)_)ou&k#3-@4OUao%KQ$pi_i2YD7&c7bjnx>3%F?MJ)5QZ z^E{>1pp9xd-&491(1uk_d+#o2YL4B_2rAx-x{lHHb>x27F~$Y>Da}4c&(#aaRirXO z7vR`@rk()Nza9{vdC!cwhBN;1GX25EOFCoh2>$qIpG6Ba`xsfY2f0dMQEcS7h3Sfw zBh9*K{x)0=kFLkS-MI`b+dF0k{&A2D3^#w?_Ad(j)42C;jH32U;IX1su4IgnkL!@D z2pnh!u?&6ogT#VRi)B3D9qPB?j7jC8pPz#}-bFcd3017{6x4ZDscz2n2@91Dr1$n4WSDvV} zax#w7GDgYRz~|jiB~zLqY_v>~oJ@4`6em%ZT~1Rn^Iepg>_1%J@BD-H{d5lLCDxaF zVSOfzT;Gkw>N;?kIe!($>xALvdr<*1&5~#Qh`$Q!VDx5pD@Wl5?{TqBsK>gmdSzX4 zYCi|EK`ew%rfV86FOOe+7X~b38j7{Hbt-4jxYb8yfBFDktkCezoE36b1>5Qt46mNnal+)%JWK5o?O&pya-ROOnB0a!i8VnDw* ztttDm7|@?D5m;Ws(~ZYjM99!kF<0EX0~6=k%khL&APi`@QqWJYw$CNqW@nnKKiGqM zELhO1y>Jkd$(^_^p9rxgSK%%^aM9e04>fdo-tFV@2#&53^uxoAionC&znYH$vm*Eo zCy&7t2u%tpTpxw~=gjwy)$=ace#QZjjTW zt-KaR&&|gBtDR^&&h-)~X540Og1|YR?@exW6FuJ@_&oyG9Y#0X{FqsWo1e#~t#ouf z8!CIBd~@$mDEnP}<30~jOL}vYYNo?QHcX*Z5bK4R21Iqly5brs1>7FZCOec;soB>S z$d2w>TK0x_=9i2n7&+@mdTJvjoDGHTdK*La%h1Hw9$|Z0#`jv`Go2atM;+%(-y)>x zTltWESvr4iaih1iPG#Sd?Drt@aIBu*!b0gZMz>lI5Wcn4mVJof=z8f)ZS}`^wbK67 zmfxQ`g<$k2#ZVh{aVL-6OrqLP8eW@?@dM0tfpR z1W<(8Hiq=B&WpT`^&ah5aMiS-W1&*$SZ%9c%z%* z@>-badcSRvVLhH2Lv;4<7ve%0+JWlKV(QV}8k{_m6q`S$!Uk(y{X;Y$GKs+;s4{5iK1a6hwKf%PfMk@oP77x-${ zI~`TspvNf+>W01ox}hIh4O)BPy&lmX`}>0p*#{BpH!w!T zxT@vl@|Tjas@mqOL5jF5?n{U|-|eNVH;ZGpWO7>LeC zBzs(5^r?lTC)?<@nET-&f7!@seAH>^bMPeKLhR3q?uJjO2M;M@n@D3%SwmD-|6Yq@ z-QydMhKB>gXB@-lRk85u)WD<|^&|cpd%#4oY zOM3%I{t~W?X7Fq?_CaW3lU-9h}q{yH71oAyU%m4Sg*2nmccutwb7x*g`yf|z)EK-`e||x8Px&aeD)bQ zg2eoWsh}H+VGmZtcr;#kmF)w&hyw4nI(0KOvpNaOjhXa^pa#n{Q_?O_v4qA=k5r)MEj=0|6w_tmm`)atMKS5fZ&a`E2;E z##>{p3)}UgdAFeh_*$^DtI{aQvme12d=WN}0Sb>c+Vp588SqzJrav&NKz2<&0k^RT zCDrigaYw%}^m~uLdV7|Mk!);v!Ins+?-K`>NZnS!C9j1;|bKxhF zYkkqt<>sX*_R6I*2f50EWk^wF5UW1w0X!kUm|r4sB9MrU)JQBeIIoXEVx&fB!}){y z_ke5T8Ya2X4v0V^wX(LU@z$~iUZF1(e*nD>+!lLY=A*3pJUjUU3-+$gtub^dp1C9bp2L8@~IC;>I@|VctfLU(m< zbk-Tyc~xn+Qr`>E4c6ZqIwTI|$5bmJ7bd1%Wxb*;``~po+H#P+;!!j!a10jEmj8)< zFG<6-Lgq;*JNkd{Pw0(^+$6{bJk$dWPlE$?~+f=Q_u z5gH8nHF;72F}99sZjOY1j5_!;(81y6yV3R_BGHRqA>wtg&#>{F=vv&s%WGHjjFfWTMXK&p z#a8_Ka9SMg_Cd{%KFr<{xC{3Nv^PPtEU`4zAd>6Su$x#sMBd$Lo&F{N+0&3!owJ5K z@mAwUKU^7`hCdTN)fWow$HZcP_=Bm;A0YsL37^qNPL<#M0v_L5 z=RY2hy%loGyh@z7GIFgo!-!N`OlCH5_FbAMh32bLV@EaFM5P5PJKCcg%DY^{k0yt>X`0(fiv_y zr}mhPOwE|>wa}~Da%c2iXQ=rx0X6As21zerlpqX`cR3I5-qmea$=*q*&-uUDtrZvfs_2E$c{- zWZ)w-@CmQbmLi2(@^0}Ui<5`To#nQ4y{!B{esSnf_s|4q{4iR-G@MqQ@+H{2=VP8? z6vBL}Brf7qoW=u#g{F>b!QcnW^oDPDYliWufP6oxJgx^Ane5w`*IFO7akp6{4@ z(cHQZM4d-q?o+k>C;c@%Od{Q>40&OXuqfzq+`zq~R^o9fIhTawj&QMT*{`%tS_nlh0x@f?*_JmaW|<>x4OP z4nn~$1~{^FA|m}yzf50m3#gZ8MfXYaFbz{!{q+PCO;Xe!7qE({KVD0Sj@9eSfA%e^ zZhN&n%3WdA-skt9><-mv==^*xj*~ca7}D38_gq}C6H`K@q1~1m%@1XSIC0UbY+yi5 zXQuv@%z}+A?TntM+OJ9DC{dW;1XLoYJ8Ja7l~N+>0$P!JBBNR{qh+a9RJ62aF8oK( z4g&3vZp>dnYDr(0)PzE`X0Vf)~`qq>; zlzZSe=^pq^&bTKpzHq{+iG%{^c*A9iDf*i(=p&0J`$NFw}clM;R9<2BVXkR7XV5NK2jad#SAe{Z# zAA|}~*=4ExD8!))y#Y&OEyx@is6|Al8=}3nAO25-dW}6oJLKr-X2c++GP)U|Pz=tl za{Nh^`}|zB9qWbC@3g86a60qweS)LUnzg}K?IeGX%}@0aPX17oCiM{2DH5S*844$_kQAz8s#DR2 zRHv$+$0O00s`mN=xqjij(V^hg0C01j7aa-*E@c?)0tW0q5YyUeI52=^(CCo#ox3nK z6Bf;W04%xY0A>>hLf3;)Hl6K67FHoWZ?0f(d_Z#?WF0devajFE^|*#-L1nI8kHS$v zS;L9L3%K+Cmk(vR1_FR_4OIfbNw)X;z)b)c_$*Qaac4QOm4Fg)~fxZr)c~#G;?GJmT zwq~|npOf}wo5rdPES5BWlBEqugBv{FcyN4u1z3fJcex8Va~I|s0`Yzi;v@qxae%r% zbJt-8;%q>~Q>Q7H=U(#u*xG#|R2Q?GD##Ze{H>Iq4Hfd!8p018*#|KrT;Q}0;s+AQ zNcga0{BaY6bR*SHVsmtn%9lbC zq}^?*!)SAJ_a7^{4K6jkx3!H%D2AWdj_#p~7WP>|-Wr=wEQ_;4-1gm>sA?I;ZYMkcc(ou~m;3UxYhhW9nod=Z7IgjQDf(V@r{r~|3; z+Af`Wau?Jz=g=LjtZX*y2{xn()aP`3SD5DWWDac$Ig{n3BWIvuA$+o!nw(;O`Yh{A zeT=fCBv=C?Jn99Uqh~-!vy+$w^0HhIBUUg1Z!9q?Z?<6Ct1~Xu=h)Z@u9qdq0u8|B z-@v=w;RBk9A5bp7znU9H64?1a$DA} zAH}98M}lcVklO@tL9VF$Qnko%at4sN8;B~W_TAh^C3K>2rpoF@JJwAl*5ipP;L&-~ zo)WrKYT~9)V6onQX7^r04>sir3>EMM?nc*`-cT_#)601QTg;F z(x-sx(7=Z!nhSHF;L%XMO~lpLp@9e?vBp{rK5?Op4dI6;H5~RcP8+a;gQ%E>HPZnu zgcJQWhzo3E(Rn~W0iEr$Mf|o>Nje)i8poVg8aN9aF?TTyplU$_iyGDUbrF(m(8*v} z8-l8SFe|uRfi;X-!IEGYvx23;FlGhIG|UpUPYZ%v^G0kX>F|P06AOF#HsZzNCRB_s z7`O8`F8e89O`ihBq{Vn*be4jWV@nNN1wmJXDIM(q5Akp0C7n(JsecSZHO|&F%Zh?T z((T^?)y&w>qi6&Hu9o(-+oi)ZEN1pc5KfEgCXwp@fb#?fyl9D{{=+UH?J}meP9xN) z5XS>;3-JOI$C}O3`{v`5AREPAW+H} znkNdlneVvwV>6YVk8^1#lsOrr6E3h*XUN3N=kJy-){c^4sIGt@H_YHS>c0fMZjyLj z?7onn?M5vg1d^=TKr7TWMW&!-k$IM(7tamNM3kb?8nne2k&Eajq$XmjL}0a-ICvTP zW|MP#YVyab98x|lqiwX^b7k~)VUjLSjK#OpYYs`PhiEDF>CB(+k_JXi(wPbThEz#4 zC1yV|n;Ljy_n9o+-$l`6dHoe^0cm~P#O+|}oS&i^6X5A;!a&}L!*s8MHe@T=T1@xG z*-E|4(=wYIUGTk1>S(x5EspAT$DAJQ^JnGTaGO7Wp!1rb^Oh9Cp1lof$ zh;-(8k+=n@+W<#bUlgNvP!yRE-_F0GhDu_^+=g8-+pJSJQ_9EEGF@iMz+rLuraoYK zn2Rq)_S{leqEw7b59utM+g!}lowcu?ApsGdUWaph7CX&MsYKKt--q#q!i9918n8$F zdVup0dOewd#ZWz2WHw0EO-m;(VLkAlqzij!u~G@d?Bm-qU<4lD#x&O5%6!Zt=S^7D zKFkJSy(P+|bDH6cI;$5)QEYEkopsI6{XToqR%?#`2re~4h1A}b0M%9DZjg|-^+uO8 z(56Ug)uel4-A~eThAzhSy{qF=GjMz?brD9OF4a<(hVzhnw$zjLs2Em{Z~x4%hqJ}j zBRkR71EX)9VbkzRv`!V_8J>XkkUIJpi_~s1C!9p<>~bE?EXv~Jf+`O@hfk)6`R)=< z;1ypE0E&uKp}w`iGPiXKJaEx=opXQiClK`uxbj~t+jJo!zMZ6mR=+ZScVe*(9W$5T z8}H1Qn{%O-Ng~DVco3*||MhUz8ZyGkHZg12o29d<$AvQCjnCoay_h2w9i!hU6G$y% zgLX+e>!r+Z|Jar}0cG0Q4)L8)V!lMqxqkxqC=#KnazXMcgO}Vlf z7?j|?$kWme`+weu^j1WTeMA~qZY$soJ@4~kUX7tgOlOQk>cjNSMk>*g%tkw_gy|+G zZvl%|_HJ-vNCkL+XV+;UPE{q1NDeGmauTy~B4PsrOP@@=Ie{E~V9CG`mc=xn%eav< zID>7|{0MTqIh`r&=P-y`6l$h-HTX;x0CJe zRv9^Y_^*}Y#6@l^rx5s|ZE(?C=f%0sAkGA~9yj!;#kA6%+V$0N-tDpo1&5o80P{f*LblZQ6=Lw!F zLoq5`DJ6(d0tuEa7Z6du39|8 zg0bbOJ%dx1k00c4Kime6wSIKacL%K9*Cq|zxY21?kL$@=oP})*Fblw$ja5Jjoapg9 zgs~Z5oI&==FN%t3_h6^yH)p;5_{P7sCcxmR6&mK_smyW6CbLF10sJ@dq4C%rNwLC? zW=H{c5^R$c-tfPgm-wTLS9)nFci~K&1=Q^xa7sDpO#A;(EHKQ)8++-L5ZB;!(6sT! znV4%l0i@=LNOp&OZ$T-c>`n45f{f`V?qI{|g=!ob*eP3RZ3#HhH~Rx_Zl%QcZM#1JBcE+iW;XA-~a6wg?Ch-wmdE$W07Qr-R31kR`k z%TZm<8n%87rI?*DoPmM+cKX$$)33Qssu&hMYG1GcT4#+zC+Gpf7CltI{vur5hBmWT z#tvfNE^EqD>Np+{?ONNonS8B37eV&0Xiu?XNnkqjo=zIW;l%Nf8VuDo`#C5QQcDjk z4>#}=7ne334uK;2fn(#*E!fww1-E~O*IfZqz|R|QUJfbYX&p2d?<-w*4$`w9LZoRq zT+mSC%SKMi?cS^{m*pGLJa9BJ+kZ6 z%o}nl2R?!rT(cjk4Bthu#7id~AnEX4v@3y!WL=FK8D9f$!tZEB%CUwX5W^GdJRS!D zMP?j<*j(1Dha}*yQ;c;qbAcF>4AHVkU<|9G6vBWaWQ#6DYg~)d##QO!ZBMD)@I#ea z9FjORP~HaN8{UO4`q9gWOylsai_HT#cOqTMI7Dlpe0~$t$P;Pu^2*{ zL-iNifmN12T1JpGD`7H_vMMT+c5&CN@1@}RN=H*9F+fW|8TRqUa8m1yBQ2oVj3YFO zaO7XQXq%@QyR2s1fre?qNYRD-8>#0GHKg9{y!dVh%)5U+FB(s0!hf_qu7fu^NL#FJ z?4UAgsP@^7fkyQAC1AG>Ft;f~(LAs)M_^;MVQ}u2Mr@#!V^tpmY5yP!&N8QsRPr=g z&^+Sz5aoBgqGIs0^aay+O3aEuxcLLnx+RN(X9?I9G0IX=k;oXl0D$T-ql8gC8K=^& zRrPy1tf+(;of50?C|$9PBVIA}2p!eA7!||#;=%9;sa{q91z2%jcX(Yl`vbHe$}bAs zIt5D1(lrAINat0SkOkwOGY^v*o6$R*DiNyOi&GCVDozkPbh(|fR1RDUYH$us-tVTq z&UpG7UjyeDTFv@pvDV5{*%^oZG((l$VO2H^T`(V!qM(7>s%#`cW!s7hVG;nm>3y^` zI?#7udjy0$M>D9U@gz>+(9(FlaSG@uxPtluT}Ixo$MLwv@B6|`4e5ypmv#R^CKqh= zSKf9&tCBHX9sT0_9E((2VJzy9v54xfO?6;kOSxI-!&uZ0yT0%4DpWf2i|@$jfmO1= zDWx|e{}5DXCMNSEejr!gu%2D!?_h^IPAx^4s9xgB{=?6$S=YcO|Q@pDSpQ$R|!Y zun(AT2wJqm0E? zHb(y8*C;k=$&61cPMv^p z^075bdhzVt`zs<69kFfK5 z_)FZ%&OL?O7|KBfj~5tN3bzAo=4am)3Wt<`L&`tA`y%|qFDydzMI{b)KJiFT_==&4 zG-RHE7U4A1mJ*btTUp8_C?y`}L6@fh5UGyA1UptE)0x+P9mX$!LjzP_1@%AI z8#E)vfM@?pMS$bM@9}L2t1Ptge18eG>Kk88$&42 zJ=2Q;m9FGEwuPHZq|NOukw6>*6`c7Xck6-+Divm|IdFJDx4jl~P)-g~a(K z|JLM=1ac#fDHiI_7VAn`!Q3d{<{lTwjXauLdT1x?hje19W%?{M2CCNKZeSF548?bp zL!r%YE61spd$C38h9k{KxcMuT8*L#qU&GD6L(7ph+WkAtXp19Q-A+&V_FhR6rPB!$ z*ozc;&=ghpA3ZE^er6aUm$Z?bBmdeir+e==b&r4 z$VLf(Zl(>KGH(hx_sfjC!(BYt>A@*sAK&HOS)+mf=`}m?mDOy3bxjp$!lTiI1)>YL z>>JRs@$DiN;pVm4ro)ilA|7>4qsZdktSSnD;sI?4sNV_M-fmUL3>U(Q$f)% z!(@+y4=ga$G+a;sqS7GQ_up7vL0Kmif|>AZq~h3>WrH+*tSe zi%}LA4Ct~zfcps~6i)v1AO{xHN$tK=>uo8g3htviRy9JspO$kfV00*Z&ym^%;bZBC ze_l_ph>1B1W0abhT__Jai`zgdq@Tj>^mn}4F9{i zcs+TFd!xlYG>+{v`)1odDYQ>DvUjNwfI30#a~Fwi*F4wmcxHcbV=z0Kce2&6_Z=b4 z%lyziGbF(tHnLlL2t1<2+#?i(^oWF1_NzE>FFfyIv&j~pKx%`ZDousbD+0-v29m*T z=AIl#erq6ka(uf~1sgb_Be;PRBL-D|k6yCY1-F7+*77#Qb-5d~Di6fg?%-s_o!>Uu z(KA7Lsr#5(-sZ?Q=z%G^*P52LZj9y^3vp3r?!A;c_uw2k4t)wfPAjoj+w3+6V5D46 zMF`}78^~$QY9JSo$wWz3csSov0H@h?0!VO0Q2Z86d~yMt+&iP&NoEKo0qXvyJi-AB z0?m+pPfRu>ndB*!y%*{hNfReKVRY(OFSvJ@ux`q)oSl(fqvZ7G6j*`teQ4`mxM(YLFcx^>s<9C=eUa}>VMaIyXf1&2$^zbmd! zJ1{2!+?Y%apx<2jRGAjL+V1r=spCe1T&@)*9@yw>fD#+;0zK%jxI|5QXJ4V-`LLf_ zsCRY+k_+_Cn*+&{vyX#e<`_~PN2QcIQ-gX@8-)K^XK4B^>>{8Hf7s6p!JLm;s9Q4S zuE5yNuq(Sn^Rm6c&sJyPynGcl-!kOR%lG_q9vk2|$t`cP%|~A5<+~%0&nlq$sjlcw z7#~h=SqjIzMPT52N};i(1)XiAWnMb=kb@^Qd5M{g*+2x zKTaut)kIqgU=;!5vU`SN-V@xK)+++hTPvyI^O!Y%gTUZTPlT_uoImTcx#_*D!tCPH|DhS_-!d6VV{q!64b&3-*eMj_7G zEmxp`_@vJ+z#^IGl77)8*m{L7NSu;-mY*uR1j!ZHsUT?wxw~-(O6^w%GSVjFG6qTO z52R5gVl#-lVTr|hgel$DFEO~Ei0 zc-T?~EQoDAyy-KrlLze}=(-=|z=`_6Exmq5bR826yh)(LuwSL4U%gSWjdw*TW$5qU zY_*czPsvtL%>jKt4cXZigkYZmvK)vTb0BKcvO|{AnQg>qA{i)YRbY}xnxPv`@D@tJ zMuDJ=DTK(Ftuhu=34>dJn9G-;=tf4jYh44;a`XKrVvM;FoXaK3;7Mn0%|Zphtc_B; zP{v3^#;bif?$4LBy?8N6qy=g8B%$6F*tscbKMtfBoeD1@|B7fpZaWzW*u^!GBR+*IBeS}v5+);iM=lKgfay&42mqA?Xa|7taSy3h8S;GGYnp8N zguG55jY~V%8xH68Lps)jRan^obW95#^sZx3-*yJc;@iHC5*rowHPo28ug_E*($|Tj zTygaKIK+ER+om=Or}b~tKMsM>GWRqKH~cGLqAA>$l7eJ9)|2juT{`m}h3-P`YLoz* zJQT8C?zQ`>+4RnK3OjtrA^F)rADh#90Dl8o@e^2`fHkEaSly18Ac(j){2hrXM}2fL zd@x=7x(kTdB&_ff{%%hOsF%Ydn)7M74g?b53N^0yb;b90G5xy4XFRM2u*=Tj=$PWT zs@ZUY)#jsLSM$-YTj%H7=I0Y{2kVYGr3JrmrYohWXVxp(dS;geawCr^79+4Bca|$< z1#<`dx~B(nBah}*|AhE;XMz^Clf8`^6LLoRo;oYb>rfH;KGibC=m@M=K;5gYJ_=9ajE+NzFz(e011PN486AZsL*1(r12{Ni=+#wtUdg8G zD2UMb0`ApE;uv~F+hV?HrlNwrSM*jj+C=o$B=wf|VhBTzo}sQj@u0CpZ6X4D4xvK( z3ozj6r1}y-N-KQyG1CftGKT_sOk=#%cloJGleh@ILaH*% zTZ;L26|%yg>3d6i)D6k*7W9_RV)Y0rPD)Mnyrr{|NN*{D)LY6J<1Ovu9F8ec=l^e9hAXgYjiO^}BIVVrZiU7{n6~MW~!wIfQKvJU8B#oxO?HzEZ>h2u-qOXSUM}8p6d4a`@S>L0w#m zRUEeTmJ*Zoa?T;y0jxHDn#4!E3fTC`62DC1Sv?zn;CIAB*Orzn?$P-YWR)Zs!-q69 zSb@-&rdDX zJHHf2F3>wa5lFV)QWmWK%U*g*8FclP!CY_YoBX^G%wR5hOEnwomgl`3>hr2YS4~d7 z3Y(AI%gdJvzOkk2Y0dP~_=0^U+K^@!e5ai*)cv|r`YdP~`^m~Tw^ zyz!Qr@RqgkmPVUO9v8V+yUBXOFsqTJYwIL^<67TIda8V@lT`PEU|x^6{+dVhkoNyw zJ*522th_-zq|9zSq#5fWg+oN@m*XLY;8*(>e`POFuOT++q3LVDI`QR5FBNy+9O0&( zNW_Ld4@gw5bXWnS#$b)tskb}ex)Enko37OaqQ(ESo;^?pI~HAdravg%6t0~X=|rdD ztpMpngVKpIbQ8iqMxWLsKS_EJ(kkFrleE5vyli&2Fg!c!C2de6)+!~a@rQU)aYrrJJfZZa8$v!2ALHP>Qo2R^RRQkXZXqMt?4od(}klr zvx+x^Vx$3Z`O?oR9wdqf!zPLc<2;k7zC;wF-o|;Wg1D=RE)SwQ2Lj$kI-$i>GTugP zF@*3jRwUGL0NzG%8FmQD6&}Rj1Iz%7_zyQL-vUC|L6Pmudq&meVIb^^H+8OZ^)?>g z?ZS<2tN_^FArkVH2aRkE8NP{3ZkDv`0%>##q23j4v{TaN2ht2rAd~uTR81hwdK;_Z zD(v~J<>XLIIsj-f-bQ};-bM+jw~>$mpJF12BFEeKiJTO88_90YJ934lR^qLn z?sr!=_%YE&=+-{QEM_~kxOFl4i7e1ABzvUMHD+AL#=&mCXs3v76aEqqnCjd`owRYg zpQ5qCtE_kWg^ET}sDH-2n2keecYk5r;mNu zdvz?bxHj4uPO{UOGho^AQ2dt8ht%Wxs?pgG0`QMJq&F8<>KU?yTN|T0>HpGGqTJEQ zFrKm4jjuL(x6mGRZLwM4*ILwLoLVRKnl9Hbod9frM~kph5H3^fo( z24{PYkzeRX^9CLP@dh42c-A@t;s=hE4-Vd4Qjxa`P*)JB!U9#e(QN`$BS71NK$9&H zRA)+n#tRT$^6aEyX>pD4pZKy&Lq=2Q1t>$DcMpp7IjIs$A85N z?-@1Q4(L5+-sqeM+#Wf!H3}JkGpE2tCKqsB&OE&3h0}H--SDGt#>HdM)os`bztS$+ zco8j)y_6VTB#!=wrhkM9)31A%1r zbR-A8YCj1iV^S+sDb=f{Rmt_LalVF9dVH&O?GDeY##tJ@Y6McR8e@W9HKs_N=L=nW znH8|{*GT+wiD${;cUvGq)=YwR z_z=mUcrr~|FSUyltnkv%3Ivq2O_IhbrGHCvc4dwmZYDF@u3FR$CtRc(j^O`xH(Z3( zqK%vpdkY;h=p;YIPc77)#|M%NbmzTzrOM#08><_x!_SL(EES0778}V8_h~=dnA~vZ z1@cwol{bOgvB@IK)@3>8>|o^ zJJ)Q35>FgsNA|=i#H;3s;|64+EMh6k`BT|DMOs6s824MrZXT(m=dIg&w-FO~>)7Am z+rlJNy>&f-G;y8=ymdDP(yBC{=dHUTkS1HdygQ&tF(+9lMGG_DF~*0J{{wa5KlhOD zL7OEoryV4Ws8is90Rs;jLwI#%h$+;&ECJ&fJZKDslP?@#N{vZ@>5deJ!pX_-pqaOx z*6ypDK)2EME<6qBY~8}Y8#?iKY0TB9oXOL(Q zc5*dz{Uo22wz+T!M%vPQ(%Q7_EGIFDJYGxB!V3P|4W9Z_-3>%2Dg^h${oRLxu_XBh zX8Lg^=JkP0m~Gf{Yz{vL_YVm5h@otXZ-*cH%n6Sy`>>$uy(WY{1T#*E&NUUsV^?q$ zmk%)DC`Ou5Qhv;fgZ)^Uy17if-ujin>E14OsE&A1gR-xz|}7^<}x*${0Y+H3F;m~R(X)} zWgwXvPQFhd_XHt1_%Z@REdIttu@X%s(QuUQmBgDRkpl=5Iq*p$Bf`l)W7uxPfIYM{ z_GTSt>nCK|FMHXJ%kh2HSi{QLXB$s&7ajz3My+nSAnwZl;AU-o%n=GPLVX`SxaPNZ z+p<0(+2S-b^Z3J=_sET4Q0<)=pIq(FqW-5pulK?>*%BHlIhQwuwXsg1I`^p;H;A^JUA1u zNx(Om`HhybsW3(T=4!pHc!XsM3WLQWIlynW%sX;YBm*=RI3bjWMhA%KV7#$8)WA1e zGM<)*W+3ZWD`up8ZO-Zq_OgEgwq^c0m%%k8OBJ{bm{&>aqVf zxbPonuttcH(?9ZV`m*+?o*)8JA}XL*o*tAFLphi83?80bZQK%SIF(I}2Z5qpa@~b~ zHjEpXg$m%D3Mx1--555}Ey%yH3v=WioXqP+CK04-5BEUL@&WiUTb2+01XIKC$6eGp zogNmQ+<|)NEiMWT8c~Z>WIIK#2{)1WsnM$=n^~}_fj(B$96AVl64Znroe^B|iw=Sj zD0x35s)XX01Bj{Ygvyax2AYohEevTT=d{{wtQ7%S@&Xh^u`pSF zSJV7Qq;k@s58{nYq54UH%Ai4^W8={d=rcG+WG>ThR{EnI;pB~+q?k+bG!@ek*#{8a z6i&{Q)OO}YG!A~Whm(h>T(L0&aXnOy(ObgFJ0xx+<7Cc)cbAj(i1U{B*X~#sJ- zR_FzxtxU8km%tk(T$xZ&J4?dXRRYqa94#p}OeI}`9M>IdV~B$>1GJ7vA^MionMzwC z!pSd--WKU}xn*6`W8N3u{`mFuU0(b&`xTk0r(|~Veq_lmJKjY+UAat)%yq|#Xc;nL zOHMpNF(J7W9MLKIWlS`thLgCF3|1ILk&u*jg_JLA_6cM}AlVZ0PF z&%+j znW5N?#60DZW8&%E--&i*mtYogVgw$NQvJbbkc6#+u0VpMrrDabL};08{Cn_buDjUy zDix=L3%xR=4F6?+44)E(JS6yzPE;#i5q4Iy2H|vK(14>b!M=g{)#}Z={p)b>jK{_5 zXBUUv5BE;y;YIZHpOJE9*b$HEsvn?(O>`3+hu|Q?Upp$y1QqssHok$|FkndysQh*Z zU|EZpP=A>;4ykV^nfWxY-BAheja*tbnKwB7>Jo;o=q6eA8ii^08ikDpGk-Jhe=ljS z{07lNyYxZ+?m^fTe|bN`J6UXpl30fyC~7|JcIq%H^6yRiEH1=JXpU;+z{^fL*yZv& zNW0;5_zMr~aHbtAMv2f*>{rDqBx%w6uxEjMjAfmOvCNF%JDoUy`iL~V37FD}gC=N! zx&TD(s%$J4nLzl+E$^r7Tp`_oh+^(m{wb~avIzkfCUTfrBNEGdtyZzDrUY>m zV)(k#g2l2!2E(%v&aMC%!APO)L;p8u_VTR%Ju>8Lapep7-=ahO}fxEtEytcH11VS`Q` z^_*XtITbIo`?sCadK4I^E@D5`Pu1cFBOs&A4`L;X+p#4dwgT~L_W4-r%N)M&mXj_3=EnIF*L*tRs{q-x)X{O%HBXZ#8g!0Hgm|J5&c*wn@DLF1=6{K78Y7M=K^)V7gPZ4ib0*wnA^>AV-QnY1+uZ|xxbs^k`*CqR zN?QJzBv$B*H$|OQZAM~S7wb3I_$)Aq#C{|$aG1tRTx7969IF1 zm%a>I8j4DSnO)+ax{bzVoyc4%#fvkl)9(8`TXJ8bxzVlYJdld!x*Lsaw-4oFF&YAj zA3U}eI8s{zlhBVAb-EWKH-3(pe!rvl3;$0$D{#4zfUazA0X6LYc*@)Y3b&D%kzwtS zSnn>^+YhtPun|jPJ=$@ml0HM9!0gtYEi+_O6{Lbhz&&EtfVot;OvysUIc4E0d%4>h zL!?e|b?ajQeuaUjuYr4O2F``#Nn|S+@5p&C*lmKg^+Lq7^3y$LhVHz>(Hhy2qeWHJ zN@&eC|LryIQ>>MfyWwO7a%Q;_4(Jj2MlD!AjBQW+6WPY41=gWNwndwy!j@;}Ak-8S zhAl#hJ{zapB4W#}?x&7$3N!5P!VEhKnf)u&T3~kDE7M+cQ0Q$#6z%k#${O?stP_a1 z>!&^GZxX0v_0v1?@7?o=29ZG%VhhzU$3o&9))K=M$%!yTaz(Y5jjoBu5BU zD%=KFh|E~40ON2vb1Hx_9(O@wfTo4u7`}D3)xjhQrZd~-;@b@7c!gV4eL8~e^wKvr zq7^{`7jEzgP0d%)TV-I-D+b)HRe`cm?kC9iFc8%+9ueP%m#9z)=u{yKhEhQ1M$p-5 zXk3pb0Qo5cfoB`Q2EmCrLZ$a*Gk+4`ZLd=w#M_s`odC< z)WI7i%R447?A1t}`G)xVpQy7VhdXFrQz79w!k^5;`v92ib7U10HuG~dkS~h^rZEP8&$5qnmfM9-j@BONqZ^{@%eO94;|*TBv+$6W&8dafk^9e$>>oxe5U9T=Uzan;G06C|jZ3b)ZNW-w{4b~vI9R#mrwAd5^P|&962<#!B ztaf;Z=9$UdBN^MBD1sGGV_T%JAov8`Db$^|=xrS}y-|*|Y4;FMrRgb9i?So*%jd}u(6Ycvs@${TiXt+Xg}Zuu z4yMFHr~BQ`5cS=px9}cbnu6$NEsW{ISh99IW5jcJmZ~o^{&5UrFNP|-8RbY^aAztf z;afQv5r|^QDvFFUBAh&o^)%d>hQ`k%!G4UUQS6w&ZVSJ-Di{keX5`vC4xVyevh}$8 zYXh2^&6`<`x@O)DEc9P+D1du{WeK160mKlYN>gYrsAzlrvN2{%qn%q>Vs6oGRw|fT z%!kHhrIf6ej*&MEU0f!#(r1UK{paU5k^|OhBYlqNio7f}us*Cb6?EkEXB6Qa~ZYa(}*%okf19k{dTj{%(wp^o z1^JUEKMIDT+sd;kR7)pY_vG=mEgt&KUU_IL=*kfXO|-iqNQC~y)lI`J0St~&Y$n$J>nb$(PH5Z%3*_G05Y}qd z4Q5g7DV9rvvh$D$*N}L?x%=jzM`Xit#w?IoXEnITGE#*p8bn?3PbyTu(%gSO@NSKT z{UcAX7P?LWwE;)@FGQw3JzY$7kI4@r9FNK+*=hpuT%zvA+_~m9uTbRtp5`PG!!Pq% z{w6`o#NpR~y$^|TT&xXj(91k5N2M)Io(d<+w1c7gs2s|fD->;0Xzl>rW)8nayBOC; z%R1T>PJYzy5|Zz5$+v|tP^W;|5>6hgFufM{Gc`hHFOK_FQ9|u5__h0%pv|1^n*ooF z9QeC5?_e9YXd;$*;2Y}mKY6pBiRCF@e(F=ke>;=ohrZp2wPL0hNPtAQ>l<;ixxj8v&2E@fjg0SPG! zC*K`_m#5WXTqwIB1asbKN6^D`1SJyc1%H7qdpa3Re;Lzsd$)d~^*Oo+@$Gwq#doLl zXdh6Yk+E2GY9fVsZ6ew!uUBf9H_z4R56)+Sj&x!h{!$FGQ&3Vmk+MO~f3fk4v~I)! zDIWiJ5B71OB`bzwJ=k`Kud4VD2>_n)C$y3^Dh!AW%$k?s`tP_>zFe@| zfEzHp(xnkIWwnyb=YN8A7~t9{D+Bo@)<8Z|J)9K+92Z=Wteir$gm7{krACsB?7`ft zm2f!uFp-*?rOCPwLfWY5%sAvnOcA%`yyz~wFoQAy)-Z=Lt+FO7k>UA-r@#467%tm!QR6So$m$$kwv;uwqnm&ts z?Y;=*-`TE$ww2Q4Y+#RcT6^#}U+uN3_YCLM0&PStN%t;DmKah4XQBxuPbE$EHYS31^%yzuaW4jz zCu7#U)r;ZdWS1et`pe`)?nR-z91e5CfTbgJgM{Ryo)0MW0I(m52d8d<0HVyFTG4E) z9JHY=$5IzF3_MSmQUCf_{DlsUmIK*i&_UXeKliNHmQy_u|NpS*F0kzKn(l1G zkmFvfoO<%hhcNNXZ}y6T!wNKkFCCn7NXy@Dix_*0)Urivb|Pd43Ez?m-;s*Bxti$6 zQ`k(DSG-w|CASKGkNn@smGi2voY@@tcHOQe&#tIgJN?TS-u8(ft?T~b{l9+lPk%o9 zn96aVIp^Y2wqCq`-V4|M_9N$gwJQF(pM3CJ+aJ8;o`rGf>T9Y_@!}HJl=C7N7(fZK)-*W96j(*L|i4R}*zgKOzbjv$GbmtAv@5!;uwzWW&j%ym%q36z8?+THu?TDyWjigPd(XGd0S}5%%`i%>rRWjbH&G&{4~Dt zt1o@)cRzXCJyRcC^Yj(_e>AS`nEj_baL&2&rd<5lk6e1~AGiMU+Z`L6#3%pyzGu#O z=*V9@HS3;f?Nip4UseCErPD5%F#q@8{o9>4f3fRp|MBeV7had1^YDXj_{&?qJhAgN zAGqqe>yCTptVa?QO*z4)eV&&^rqOF#X=_vSDDXl&xjH!e$6Jz4Sj+25*Z{N?4p zf5*VzV+(Y-0agWYFOM$x=A8H${ZqRqpY*4s*?=$}MsOS0nvx^SDnZL*HyarCrP$+re>J|Jw_uE%y`TMO6 zOYsxsbqxQdy7OxO#y{xb$ntee{Xp4BXnJa_TBqYj;f*eU0ybYzmF`RcqMZ$%DyxO7A6_p=fz~8-dmpsJZYd`(5Z}Rv4z2o7f4~5>fr~EzqeK~RD1N{BO)=A&y z@83GMp3C3m8-F~HzrVfr=fCG~Tkq)T!#K>gt}(Xu{~|kLg)9t)+9!TyXU3% z37f2XMO+vze<3-G(hU~Wa}YlFNe2FMm!@_2HvL(`o96^BC2UquHj(hji=3|$_U&4- ziSVug`zr}kXMRRAjkejodnw^1O+PwLc*{-C&LnKJaTC71plPcPy|#j|=bjgi5I+1? z{VKv~DPg#4 z${@mTF0%C`bQGjLLHO33MxPU2HM3qJ;S&RrI}tW*nobWsX!GqEZxLp0EW;OYG;RG& z0Xt#CJtZ#^t~lg;kFfEtUtCAH^sP@i6SiBrYaQW+H6M!=?0J3HPonfc8g0lSymIO* z&l5i7dua=yeeMg#2sf>N?S8_HuQu5T@8A7wgz$=?AALvo%>Z2+!^KSqkCYmixnm z=cK#7CY*Prdof|Z>E(?G*G!&1n=t+T#)k-(=?xbVc6wS%BYbvw{l60qTGZqO;qFHo z+)P;ZQ_{tRu{Tn^gx5|e{)O`!=g?sLNkKkd?JA7Mf3v}XuUjj-hsPMe)FfN<;aX$J_$9VlHx zc>E53cf#sdy+a5Wu6Mpec){F~&4ep=2QmqBzbYF;c+aeiorJcb=`Rz$*fO~t;iVnx zjU#;Z%9q|G%u0XdIl{XqZ|FjpGJXA2!pHQF-yrP%{;rLLw=Mr9oA9EiznDU}?hW?? zgdKl!9VLA5k?9qLX^YB}2_H{w_#k2b+{WJ%-c(vYMA&?SR*&$;5wG1t*kbkzUlBgt z<=MXx_HMl?gYbbncHd3d=+%$DA$0AEnocy;gpUqo+A8m*17=Utf9}hB0M~~!2-hI^d>st+gGNR5Kc``YDTCp_uNV7 zeY*HG;fMMRC*k1teJu&AzDiq3_`~i-9}^bMO}U2fjrF!G2%Q~EA0zyw<+NRdBZqp2 z6Mi2z9=Gmt@M-jggLWI))T%k z!nutwxpmpKgp0cbE+M@9)$|R758aWmm9X`JdXounKc3u`aB$(kY&*L9;6Z@FW9j$E zVRrlA!hCxld)O0+c>SgJ%rN~+)A9oqKDXT;h}c~rk2B)2Llv57GRxRO;Xd|qPoym1 zwr9HQ&>lM|O)K*HJkYS0Il}}IN(P;wNLIMB7#qm1kz?(dRd%o6o>^k|hDDh^kH0I5 zbyxSXy9`I*qP-$$FCs?WGkL@a}$KqRN`xCrM_mMFfEGSu#W+>CVWj3!YA5IU-Ys=>Iyg%lyQP#t!i zt{GwYhj?|RU-qnlaJFlvyEDRPxNeS@)8`Ags1t+&fpU9EAY>m=IH3Sd} zaYadqCnQ4{_p>7Crd*>6N7!9Zba?$G0XsfaxFQuHj|w=oA^M*`?2ULU@#6`@a(S>K z;&F4YK!3zRb+U&%?h3!#>33DvqT~v>x&~%w1Tz9!w%rpf#&2Yy&tbO=Bkbg7WmcfY zJNH3%&$bUL=$q-zME|7!D2eM93VB=+Z@_QrfyL;&o)GF^?m@7rm`q=V77AwpvU~RE ztciIFer5^dS(#y9Hf#p*s{+9#Em4HCvec#Z8tBw|h@Y_5eP9^%8#_qmbD=Szm-v&W zc|xJERub}f=p>f9Le1?`x)iAU@1x_z{u1Bn-!=cj@4w2upntqw_>@-thZ>YR4f>Jn zF|sGc_0MeofZs!X%sz5#nl{{D>GXNsqVI6XKvZ}{Mtc zC*+YMf<1t^JH-Gcdz!LM?e$;j+0hf7XWA7V8ucbONyA>^^?2Fm_oTL{m+&hX@cJVj*bm#C_G`u!6j;tStXnH0fgBpZF*wqIU5#2c289h?Sr$5Y8$Bz;tZ^%56e!B_(SVY`f*o#{+N97Yt+?gnvuAA zlszkiQ!3l;!teMv-<4*7aCLccz$YU{=ean`;8Ip$xNl}ocMsINQf$!jv*=faAE#lU z60I*HPJyO2r{k>sXzU=P9}RH3L!K~(81HN`7g6KlT!WlkN2=KCc6=nL?(8b2HHvkN~l{G{DlqmSru zHP!=uH_jlmgcxnhouL_?P}uJCh9mZ3r`uO;S7Q#JJfg+v*TH=Ho%f&PdBdLBeE&}$ z&!)9m9&z$GA=d1;D$bMX4qKRiP2vyv$8YT78G7z7tk*P8@&`GsNsQ^t=P<6!yZUN- zc?J3BvHPe$MNkQQk4r8YInv(Mj+OpkF$%EXBIus-K&V>u2b$2R6C#Sm-iVwu(=-}l zFpN+>G!89zWCBYFr_iNA!h^vgP$I?)(}bH9j$j!j23DMB6*!IjDn%L01Ma&!>DVUg zmA8WHBWrE`9Zr3x|Ia{auECcCdZ@P5m@&SY>+$Gk^j?&C*tWjQN{^k_tbAw%ioM0?mzzTPj4!|;aLBFU48j21E&4j|EJv}iF(&x03a% zm&JbcmT~xFXx>p&`=;L~82-UU94GqEr0N9q{$>9>HmCo_rg;^MTBVGC&o1M0xSP!P zeV(*)v@lQ1G|K0XvyJ=jX#(A?|U2(ys%j|hi5B+j>i=6Ixe`|qHlLtt@ zJ?x*C{qxS0etP5n34akkiCgki|D?W3eU|zz_2F@TF;_$a#u$Q272{0wmOD#5IW!h# zVukGGwTocoXrEQptq)CJRow+t%TzU`QeKL+EJo~# zpc;0W&&M=G^A7a;_OpjEm}3z4+s6){Y!CP`?$PW484VcWoVIP-iuo{9O}3~;?&&lH zMasNt7Q}uV&HZAjQb4w$C2bFzR5+?=*x<3l#|kqhJ>f&0deVOt8L=W1Q)gDhU4<1h zLKC42GZhZ57sX@Z7$`b2-Iq?{4|XgdR9G;rpIHr0In_`3ukzPj2WtDczEMn_bs>Fg zeJHS4y<)VKl~Q$zS1I1U{)+NqEWBv+#f59wTpNoYsH9XtLsn6pF@v5XUo<#+>Rx^vR7c(=#Hj43kUtDt2w zrq=+L-sM>O(b-bwEybEpPPsHG)}DnL3TK8mc|;qhjYOFx)pGI-I%p}6C}RV{iOm5| zC?}07^1tXG%Axiw_LkDQV6P0@%bis;@8;NxLKS{oFXNo066nl`SDHOXPstyZFM3o! zM%GFBz2z0k2+`nLSU3_5K+90- zA7P@ha1Dojk}3{tydA`t$U&qL?(8l2=k+(+i&s6Nyy9xC73G+PA}NLI!BVH!kNLnL ze4diXS^I${?uB7oE*g!GC1*uB)!U2f30mG_o$I8@27#lt7(1#+MF?XTPEjn@aS2>a zeNfaO(=E50y3!6GShuIjUWze}E?%jB%F{RA`6!dn6(g&1`%n7Yn4#B*vu0MA2gQmD zMJKKk#oQ^+fx7yO%2{V?sq19f4OI7Ie^3t}re}A6uHfl<8igZD++{MWXdW{X6hCK# zuInRWTu1wqgs^o+F%`>vsUM#ZaXyD5-U#-*D4IbZtqO2{WAl|Z8_*`$GbqIs5|#t( z5BjFug`n!j3r4AGzv0jO9cQB+0RJ;{dSiY!HVJ4v5~l<8FuF9M$;nWw@EeLo;n)L3 zceD?KGFn^=_#O=L*dU@4+=mg@eDR}A8Bti&RbC2Ri%rnMVj85n3M*yON{KgwE;z-7 zo)~rvr`_gj?GywYb>=TZzd{(X*9c9~Gr7;987@`fiT2NT`f0m_FGY(3RpRWj&NV%* z>)AtfgyGmtK^xdcBz_tF@>KUZ|>hOIQfHu%{w7-B8CYOeA7`hFzf<-e3?h zwUn1Xs$dLxF6w)x#Ole2!XCp6Pek0~)s#(apC0UC-qk%rP8a-Qscfp?kfKS2hFLiS zi<$^tcn~)u_Sw*)wAwbA7*VT%I$0Ry3X59cJ~6NT;{%d04`H(iTV-A>W8C&xWz?P2 z5*2%Fh=|7GM38pqPUpBQw} z1I0d}7$aR6x9F^*u_q9m?%-&aV2MHtEiAzTIO!uHr;DyD=)}Reoo%nc%G8?0K@BAK z@UuGGQTq z=Q{lO@Uwh>OrMRPh4{G#KXdUj6F+%cUW#3_Cr7ntgQl8zS`M||l80YI@Do3I#*QlF zu}gJs)37!eca7wTmAIrePQJK`Xe>DohdrgVpDNaTz5wDWW;D85qg|O|+#s1j({NT$ z?0goB-_~7FyEtf6R;xqwDrHm+OH>cuO~&>y_SI)o+ZBo}Kl^aZq|S)gEP|fA`uv;G zq3rg^EKzKv3}CP7CVqFP-__!CHGNLgphrF0$VhGpBRM zE^GcjwP0G=3p;5j6dYNh^5t_LRQ*6RD8=1x$qHA~R#OSRhcCm?&aQ#CC;SvTTL405|wH~b(`MPXM zrn^h`YtM3dM$VeE(n66&p^&%K>v#IZnIjhfcG$Z1Pp{Sx9QQ173dX(1^Fzi}x@r6t zXD3!+rj=^ME@l{~ePn)7j(sdTmt?<-DLA@HiH}DR8H(?^Ms%MQJ1vbNXJl6o}8@IcFE_|E(1aN=f8r_bkG1}2P zUx2-VWx#uY3xID9s?pa0&&3-X_W>Usj`Dy{;oY3A8fn^cydE(R_`uj2eH!pJ7xDpH zc~Bm(5V!;Qpcmf;2Ywx{(Hk_zGcEYb-dVtG`V;LydlkwB_Lz(OKo@Wg@G;;Hpmr1d z1io0dPEU4X_Nj1GpD> z1UT_Qj%O8DAU|;1O5_J_ z#T%o`fN!rseqar74Y1vFXlLMZ;0fTiO*MMc7I>Bg*bR8$^EG-Qa3U}Wy#8f;`2e^O zxDL1jxC>bE3fdd^4Y1X@XqPSMUqI(p^e^DdZ8dro@Q*iZ^rgVx|Aqbu-19d23-FWo zkssJ*7xLq&nxh{eKd{kmq%JPp+P2jm0Zc^u^eFa8Pl6*BV{J(`48GhVujX(;w(>!1rrVE^sowza9k+)@$^Yz|~qz-va!1a!fx6 zJf0HMwF@xk){E(O;Gk5jM}YO~$Mk8yWxyzKeZ!c(26$b1Oy32(AS0%q06yC&rZ;Vk zXBAt<^xnW3t&tDd_~Mwp0C-Uw+z;(chU6CL7KsV$E?glo!2>H4rKk(!J$PavRcucPX?idl%mjaI$puRx+ zHK;G}Kci6Ji}9@HXw(-tW(?{JymxF&F9U8Xg5SVVE~LJ99EGx`VcoCPs`CGa)i7GTCLh&S*tpw;TzDJu1Ahcg12$TS{J=|rD}iHx zTYzr^4+1l8NB&Ga;|sI{*8%f@SKopBz!ShIaO$1N4?GOq0vvM}@&oq*wT>9S@wRlAwR?~scpoqixD_}JIC%;3124Z9 z`GI!;w*bGr5BY)9?nnMCv@g&Oyy5}m2ey6?`GL;>qrf+TD}kQ@w*XH84+7gPL;lXN z53~cI;15Kd3M8 zn$w6E@aA6;FW{QrP%d!N?QR{#$JUk7U4@r-d-lnd+!%mb$8==wC^ zqrfO|@fGkFxVDe3?*Kl6Z+xBr9=k@@oA$tW491~c;9lTF;AvnLu<>|ZUkdC1d;wSp z+y|TiJPlk7Y}FHXfxUsHQ;;9H7gz;sfHxj21>PHg-@uU}_zkR?3%`3|9e0baX8|v{ z7x4nVu^jONrmR4mf%_kU-@uR8Azr{EFQZ)Gkatku%kV5eFb|ma9_kBx=L6IicnY`@ zxMVlV1^x^?2z+`E%FWfp(L#cjG<%GeRMj-8bw>RLcO{{&;4wvL`@a7}FHFOS#!ZJb zZZ)Dw`m6>~t^WmAUedDzMmDK42-x(OKlD*V3~1bResX@J)Z`JcB;{_<{UIN0k>?rm zdEniU{{!V3`E7HONP&EK6hCjC{zEUd$cqj6Hpnx6`$Hc{9;xzeecMs~4xkRL@7$fAV$vIayKQ00+)YJca@RtCL-!h; z{<5M`&#UjS-JY_r-rQ7ME*YkB_dvcIFH68uDy}zLR)ORvA>RS{wPtzpM4>?OY5{-h z;aZ|wJyU*)L&tj32x!u~3VMxtV{K_m&>Lbi^r$>H^e(%yM!((cw{3yZe)AxI_^KK` z-6BsFaw_Lh$ZzjkqyLy{Du>$dP^zVzozNSPYnU2~ozsS$qmcK++dw-sHQ6cPc5B{L z*dl*hpgxz5uhA!2>=YUP(%0q7CSZ*TU85bs(iO^I1bGzl0(1Yc4HX@OYGBvrzs$knb<6(NE&DAx}PT z)bAwZ>u`;Bj`@7BH4-NSmKFBP;LCQOTD}wxE$Sv{9 zUuc_~VjC?g0Ugq#Kh@WuvPPe8uIFHG4|)0vy+@%}GOI>^$E+9c_b-!8vbPg@4XbPP z8#9nlaUCJb4QELAM0`&|&xLEuDAWwS6yg=N}o*Uj+G5$o*z{ve&3z1oFd>-)NEl-HEdEoMMrWH{=^2p9}dl7Wr^P zz6bJWA+M``Cn0|x^19}S7MQo6g1oN&*9-DzAn#=^KOl-1@hyUUE9C3U^5iEC|00l& zy{$&yY>_{2$QMI?9P&>s@{bJp2FM>@h&P{E^oNAYb=N1idEptzejwM=L?ic38c+?B>k&tHsjr=q}wr(huKvOwWAs>Og zoH_Vx=q1lG{G0>%YREfU{Ag?V@gU@DAFk0aG3WQlBFO$`$TvZbC3oDu>}I0;{g7{i z{3^3t7BA#~Kz}3Vbw|^4P5L@KG8uCMsCq0clF|!}G zbYnb8!94gQ;YPvdDik(3c zeN8N;MExQEYK^|aoIm+~qx=q#AA!8C@nR6J_zz3u@_rp$v;ZSsh)1gGY{10UCeTdM_Zvn zwGwe%2)(R>nAgmDHW>_x`&!7y;|0qRiyr}_AMb?xiLYz)&&i;Qd-6V`A0LIh^bpQ- zi+sKz&uD_{Cdj|H$m8=$Hss5`snMMl|E3yoD1iKn!!`N@#BDWdx zg^>UIyBdAArThxRzqODL_`XK}%p%`w$ag~i2jp8V@>dP{QOH+duY8F`{!bwn{U6sw z=VA}NrP)7frwrjD<&yIs^laE$f6^QW(lbVNp8udX|3uyM{2a*J{aB;lYqn#%+vqnB zLVn**SodSTHrkWQdA)(~S^2XKdRP5kqaRO6(ECPArKBeOJ__U<1s*H6wz_o^CF zKWotp_X4oDPk+Y6DA$%|_|*&Ya$8JaVwRI%3$6WmD)c_Xy@9%}6XrmEZoQc9H2Y(l zYV?N(As>%>2Nzl7tql2Q$j3H}>6cRlReul3&`>@0Lp~kyd1iUCyig{PA_%RggDmggtM|xU$F?SEfQ9Z5q?_E%JVbd=BJ~G_TwL2O)n6 z@)MTwzc>2xX2@@C5!27bd2Q6+)>I6#)Svf5enY#M{uS0ahMd}IpLLy<(j0rr*>$&f z2gtL!#`I3+IFX%;RIic!y#RWhE{*Bk&HcibZHx~-$a{B-=^t6-yA1h4$d7f8>E#xA znIT^bd7qxO$Ajv-6Y{iPF@3N(Klyp3wO^iuUZ=}qdRMcaEz2mUMGMSvxv@IO$zG7J zfP5~>G~${pCnWNt2=e61WBT3{lbrTz-m;#LbD+2G%9#F&*$?t}ecWHN_bBuR_l@Zn zC+f9`>rsE+3B4=(#q=5GcCwX-Mj|^$A)lWY(;bO+#>MTBUW;>a?`c3xKbENXbzG0i zy9#uzdJmpe+ygjI36q;&EbK16CZ?Znk;~wcyaVLt zjf&|T@YyIQ`5D8{L6AQQIlYS8klQXX?7JaKLz)W2aKuPeh0{Jhum%%$66cX*dUUR zi|MN^_8&6ryCH8rKBjvt@@a;A9^?}tpJ0)XG31XzekbI)X8BAZ7WLZ(`6|fkx;{7r z`Iw1#p3a=#biJN}d*CII*EP;|fIN3nO#j)OKlum4zd?{UoE)oleNX+=4S71`Rp$Od z{nT&mrwgGsWeVn_RAf@~ne9!n$xHokE#&ozYcGf7J0Y(R`QOat*eZ>Fcogzt+*>Y% zu3?q{7Ku)nT>TlY2%(#Hw>r!`o zvmw73^7iKZrhT;n$Zv(b$}CTo8{<@_5Av@dA83}#Z7;e0hdiaM?)A!A$jczNoAXZ* z;Su?Fvb?VN9)gZpS;qDZw4-4%e-}u1KE&ofc#cV{`kId0pu4?uRFgF^68Mz zv*eGj#}-2V9^~UKa(UxM^nb`xX2kTDEb@(p|2rXH4*B~Q`P+v4DC8r3cy_@oH{G|$ zKp`H;>*~MRklzhCE+^ytM|N)!{{qNwfcz`7Jo$5@e0sCjfO0&`YmrYf{<7^2U&NHp}HS zEYE+)&x0JpbUgo9;hvDMg}e#mb1d32idu#yn^stg|MG{zKqAQyZ!B0tXUl{TYkbew$ZTqdF{UJ}^71KwV{j`lR;&2l3J|EyaG?qBr zY{a1jD!ckatkW#{`-=P&hhF%#V-MD`W;wO%KZOc;EymHQ(7SRku1kneae!X(R(UQe zy?M|(2)*`+_RhE3TMNC|B_M>&9>J%&ECN(|x0>AU|?AVZX(eXT)hLEmM0H3>bVy3uOaVgmh-(C@^2^Pry$>9mUCw#`BBK1@$*c*e1nrC&5R+Pw(!{do5A7xTWPv~xt=0U|qdp!X!6 zfgE9p_h1ok^5;RwKe`alOr|2C{GoQ68(&|Loo&$T+g{fv;j^KaTx7)U5agAR*A@4a zEbQ|_URS$zfZTr;`5?&MkY}6Am)kQUUT(;Pkk_>?oCo;~$m?1cJ_>mR^19ZA+aUKr z{&I?`{-<3$I^%OJngyk4SqxKS*b zD3_>b0rcL#Qr9RRA0$YLOy1?Ugvdq3oL9Rkngj^ z^Fw3&>;-u?o@MuDVho1g7U2m4S?oF|-d*?y#$b4PD4)>=l_C`06 zjR2bJwHA68FVXAV-`EMc3v!1g{*#UPABFtkrMmvQWt`n?jI$YC@Ex27bsZ4*qeQwu zCCPn|r!PZ4wTv5^#JEB7g^;htv%im7iojnH_$vZ`Mc}Up{9hA+X<{=D-`!?Z zj?tw(9g%d2Dt$etY0Hp~m7Jz67CM@Wn?2Z1mPxHu4sBxKxh_uMwG5m3IK&Sx);5bSOE#5-zsIPOu}i^+d-+Hbh&GbWEeYBphiHwB76gt3xw zKI0O`)r^}Mw=?c#Jj{5CF?BST&)AVMmvIQ=c*YXOO2+w&OBh!(ZerZdxR>!T<0;0} zF0%K7*oe``HUSIa~X#)j%O@ktYn2s(4roegu4dfCxSeq?<6*{AjH%*bC6v$DkujHX2;+Fh62?l#`HV{#S2J#6+|Ia{@i5~l z#?*-%f5wiCxr{>?$1|2NRx--mxF5Vq&R1$aR=h&R6RIC2BUExTXZ}pLQt}JO6ezA> zOuiUFXud4Wmps`RQy_Vozs3~i3w?S+oXS@hj)Df|Pwyc;xeIApJIwUR^dh92BHbk{ z)1M$sbL+d}p&&#BI4ALzqe}PPo<@B54p#r?aiqoH0O8Hby-#JdEujO>T z2{P^A^kb7{dK}Uelg`)5^aM_)h=)?J{y>`i{THXFvHV)`@IKzZ!Sb;9G8X(s+I+ZJ z{~3A-2M#yVRG+2d%MrMr$7vzNuabmxX+qkYkfwZOFGoCVjM($}uz~zk_)dpIvOns29iQ2=hi9ieQ8e z_RszV*B3n5Z^e9X#SatOnu?2|51#Z@Tnzo*Qh!>aeek4Tm1w`4)W3`Qb*fzOq`!vw z9g3$Lx;Rwa51M$=S8+eBcwU&FU^{tFa(%&*egoEP(1g~ zLbhYXf#YAsyb(8!f3y~!>@Q8U!|M?h7gbIYc+yvKQRO6Yd#Sjna)>8=6&F=b61P`V zu8%5*c+$^eUX`QHFBL~s4)LU~;;70=;`UW>ROJv)`YMj9oTMy}I977GhCX=Ge}Q>J zpZmiu=9OPb;7R`o^UANJc4Qq#V*7$8{Z`B?zmmBBbYoumMLg*bV_x}{)QXJbx{P_{ z7xAQD#k}$>iTm4K%qzc$C;c_dE5GDl+eZIqUin2l>F;A+`IU4INF1s^E5C>*eKqbV zzml2>bGx({`K89gLgtlU#FKs*^UAN+`9d?wyz+~9(qGEF^6Q}n(jPSr zD!+&)eKig$ztnhpknJeH)OdTEdF9stnk;cN<#AQ{MLgNhVqW?65RcD!3F9;Iq(3oX zd~VD7LFScT#FPF4=9OOqh{U1Bf8`hPBvRwQ@~au^?_xX3FXBmbgn8xHO=O&oXXH4j z{34$8TQRTv8cw=6x-qZ(BA)bzF|Yi}BxM}am{)!gPx@8NE5FVqWgK@gulypO^w%)2 z{NnDTZDC&dMLg;6V_x}H4;&pQm{)!gPx=kk$v7y#h@(U4E5C?0>np$1{A*`B3f20g zH}eXGar3XFq~xUJWbp$?wj~_(Qmse*gd;)SmXdHJsGpJiGy4tx-imzYkp|7Y^V`X~C6SieMjiTeLjfB(#WVto?R ziT)&}6ZI3*n$4DKOHFM+KdBHVrKHqHkQ>lX{aVt=_3G8H2O0hRH}XXN#B^eLiSqx` z>4s?;jndK@HOjz0I*?9JYuG3wBRwOXNRduUPtSm)5j2HXGmnYM4f24lg-^BV@>T4bf#b-4D8-gS- z^utGzkv2Hv1F2ZGi9iOGUkE{nv_&(~s>mb^ONq!t`9xloBAJ{QSj#A1YAV*GAO9#m zQU3q4M>I*ZMN_oYXnn0=G)>EhHqx3zn`-Aon``GrTWYPM=WDH_7it$r+h}d0?X(Wj zOs!KiOS>f6Me7>P(YoOcuRWu^wA|?B+7;10+EvlMTK{OCHZYp64UP`chDC>KS4Ru9 zYoepH(a|wlQFNR(Av#f;9G#+F8@*1O7IkW_s9P(EmTKPUbj=qn*86#uYwk{rc9-2SjdZCZ+!f|}He;vedhs?|rG8blkQUJbRhXd2$ppApT# zt(?Zu##$4tX|!pynRbrWJlZ_kLOWM$sht-+FN*r&o#CzV;Oj+r*LEAtuC>+LY3=c# zaAve)6g7`_*1BlfRQKqmT6e8SRMcL(Jlb39qg@%jO6wP`qyEv++Sq83HeQ<;ourA{ zN2h7Unmg*Dx@$AE@~A%=jE15Stx~JfW@~e_>kb5+NF8)9JEg} ztr^;>X|xI2t1;@-NNa@JWuTVnXvZ|vxgqM_05PbKSfnB*^$?vD#L0$;B_n!CQFD0z z7eB*>XbEZsY6IBA z=mlsS5f7~;#eyP1aiA#37^n!;UVjw<_=p%#6etc935o^%i>e-0Yb*?@)cyaZ{|(L0 z?_<@D$*d3%p;-E+I;cDtfh-_4{ARox** zCNoR-5R)}^Khi9rU`RD zystk<*pK_Ex;5RVN~$HEv)RtHN%&wo=Hqjcc4oV*0$*Fbo~(m^PS|OsMLBNRCJ@JK z%&%1O3`%~7;Lp>B@qG}b|Ebcyq=Qi8Z4T`)QnmT>BkONT(63?sAoHq$(h;a6+|57O z#cIDb^G6c+PRyTRUisMzd~N<*!TKi?^sfR>?fVl|5Jz_j8hz)nHaqm4L(*S#R4PVU zpT2`heDh)+Y7bv|6n`+J}C|G_MCPL^EJ%3 zWBc@uHS(v;e#b+CVuzsCYikygPw^j`^|#elzpF1ilaR!32Ig^N|Fe z-eE)jM48V+nvRc|-y&WnrfG^l44&#Wmg}`ns%yV8Z#yN4&CJioeirG!#ymH_M(=zl z{=Q$N;`gkd!Th|_k`V8d#mDoRpZka8#k*wjk=_wTc5X#2=;$ea<2!@QzrwtDcPwN> znE$Gw)StuplbK(2uH>&rnvUtrU&cJ2z8bwloyu)5zLbdXNwfaF%(tZz3WxYEEAR>C zyNj2};BUxCvGzLin=g`t&ip>+Uv47_@vc+Y`38J#{qtBI{D11;Rev5PUP^}h$>c1K z-?`lDm{-p?seWF~d^@SG)kim`IDE{!_zpW{Ety|^sq|mGD-?Vu=I4knspI_`Z09oO zs~?j3O*jrim{<2%t5|<5^K<$BYh$G8a5As%t8Qp4c|Y@m2T8-?9iR}+VP4&*%$Mrg zEzEz$_b(&t&%Ml#8Y+o9k*4EO=D!#rdGT&f@Xs-??&~60;&@H*;^muoha1~}mw9#H zSG>a$IX-3nM4?pVY}yg#`;C#jcvmO%|HJ%qZ1{6otY*W2L+z#R8{fu!Q|2!iFYT!F z@nYuHePt*6*#$h!Bc~I_`F^ZlGEpiH;QG?L`KerWKU%z_4P{SaUfnmI&Hj`yukKfW z#(bE0b>Dg`^HJv2{p%&n-_E?ck1gJ{3EBP3tNYpF-J0MZWBy{7^k0o*8=3!Nx@N&P>QJVLr^yAE^1UH}mSb1ShxGVCL2R_KTPw!~E5Mmjzxf zO2>O%!Phn}m9zdck4k+$?X|x%e{hxLKVtuHV}7IfQYPN}$^8Ayx1)&?#|bX?apuo? zLh^jNYR@x2fg6^GCv7|P^TbR1Fb=aFdWS#7xye(~&RpgXF@HDn;vI{S{mgtBP0%>R zI~9RRcz~1aWNwhWc!whRCd}t=l)QLnBKV7$fBJdJ(>jKZY~~xiD2Zdt_hEkWTatKG zs%s;d_rD=|o;I{e%-_CM@?34Ll=&;(lzgTHt&;icXu*I(yrU2}kNH{ulKciC#d9Fc zci{_59`3be;A`s-kFfsw_oW>V+u6i?V3*``ncrE59ksp+?Uwp#eYG3{w=g79par-z{AXMtuJ};4l3|JgRd=a zzt+L4IBXaw?Wp*~*#6thx1hptsCCyD%(s)Yrux5@FYT!QpDONupQlaZ`-^Z+9L*I^ zFSDUTR$H?xexsGoQv4<>-&^s|TlwLNf5FO6Qv8cnemZzMUwX0smq@R)YUZzFUe$L2 z^HJvc@pWw}^RFi8Kg|3==GFEP{VfYBH)oKHo8q@KKZkjK3{Lw9JdGzBEjV#BWk0`Q z{Z9u=J3O3eKQaIKP|0s){WRQ&rgDA5B(LVdcFZpuF8SfyF8!E4JVNqnUKq*z-~!1H zVf|^$-!@Y6b0uhD<{KAE;tJNkmHDBgCEu3$<;<6jk^Hml|0d?oA1nEHn17G?L(G58 z{CCX%t4Qh>vHf3}Z#`b}qnOXYb0HL;=@TR`-jxJfZJ0kbN%FK`Ku0d~y{Ab20p>?A z|KU{0zbnj-)7W9Rpw6IHShfo^(NqLyaeDoEe_T zquvx}2lMSjF8mEvF83eIk6=DIUFyHXyt=-ozhy;sV$APg{dUZ6ze)Nd-u(kv59Zyp zA%H`?^9PvEe9=E8&zIBMDCT{4OJ2O&2l~^%pDhkAJSFuLCDE(dSt250;81b^l}Dv4{ebC=LR zb6vuXD+KkWxev}1l1csqYK!|SX+>n9n28(FxQ`PWZMq9gMMn16sTfUaV`M(~_4 zL9<3O{u$z>I+`|+9qPb*nC+{1v#a1u2KZxM9sHO&cn{nE?Il^Sxx8)(Gv7%3(FBaM zc;1kXxpmmNAAB=f^=EewdZ)SDEn_=B9F_KG2q_+SWB!~YlAp)?tIY3vTk?6#?_$3G z_mcmL`NPcr%I%`~KbZIZBo)=VB@Ii8rntUHJinTOr~bc>Hy(Pk{Wi@1@`EgwzmB2x zV!jn$Hz|G?^HUZ`eRZ8amHEHFCV90FGlTh|9G}Oy+&ct+=6$inf@dWY(BG9O|1bQv zw0|qhUZ_KV59=S``!a)B{~+__4@*M)ElPa+f%(8E)2EM(J|pUw8$vA&P_(@P}5r=>QV`Fk744ldsL1(jRDQ@ym+a%79L|4Rjr z^P(HqG)3BbNZ8@ROt6vdx4KCh;M)M&JIqhak^YN!+9Kb6=Ka~yAKt#v{#}Rt)2!e7 zHd!d$51^wS7TDB(R!x!VQue=v;3a4Noyq#&@rJ#4mm(A{V}4U->CZ~e)Svm|JnzUT z;ay_P2fvX8s_W}1%tvXVg=48Srb=8tlJdx`CDW`4_lNz9kUYi}~Y{t{WCmzm!M zp8C&9J}-u`okOfYp7m8f{E_+gi=<*Tw_}X?1IH!rVml2mepCBSeO(gbZ?fWJOXfdX zA^F?cpG?7XW)ob&`UTCUqMFx6F#j%(w`v|7%lzVYQomk3Y0Sm^ji;pJs$FI?e_to5 zKZMI($ozzVNqzC|LCEND2T{E);PF}Qx6^#3+Ro&@wzUp^AKO{L_2O+u?IiP${vfRs zu`zmHpUPdr{p3dGGr-&Vvl&{mzMbbOHD7dOeihFn@5*XxeVD(CJLV`hHiY?CK9g|} z?@)wnBJ*>PNdxz?emV0Uxq}olUnO`>nBX?nUq?3_arjtvAM@=$lf)qAA7XyWlalCw z{zu1i%>RQIjLOcxn7`?DY5!ZPuI*)h$%m5Xuxej2|KuLY^ESHnBl96FG3L|R z|5eO4Z!X(wdsi8^yP0ndUaXVVb0$)(bz=QpJdm$r{VSONme(QIF<&TnPME;W`d{%p zf)%_tK1Dgyf95ro^}2-l27P74(zRFb}2Z< z`fHlYaZkJh6QUaCvwoI(ezw!Fg^bU@6OtIs{JG38;c>VJ^KF@bJX^+rhcm4w^9Oi5 zQRmkH=3~5{ugaak{Ef5$h(r9%EufeA6y6V1{UO5q0(E}z_%@IERwsoSJboyTJD7iv zE_iW>cZ&j72wqT@UmIAzkmpA`OLs88pZkv*hxdS|_$RJ!53>H-nKJ&bOVGY&ei6s{ z6IpHTH1kbgkp+ss@r{oS@I?^nw-wy4)H=Bp^BG^tdWmTGJg)Q6ROzGD&~*vmv-7Qzlr%~2PGl?7B@b=q4as&vvZvHF#p{@rM}t^{EGRX z6XNr;;H9qlcNzu|ivQ|=OMle3+6KJctjM2xvi=9ROX7T9f947P%nV~$zoM}WnD|=` zP;)bX&2d>SZ~tjGGvA8q>t&M=H~e4kzQs}kn7@p@IfGa6+?m|w!z5z4n4z+>rn#<7U?eQ(QvsqfQ+f_u}0vwQ@z%AKJZaLZp&ZX~o4Zzvo=PDdnImUG$VxxKWI$6euf)92nItHb9l zM)rbUj^c`voXc{1T@J_Ho>_qqlyZCZ(1Om8H&U(AJ+*?KN;6k0FGJ1!9w_Esu7$#| zbM@6)dBE-WYsKCGlKAZ?u8w#D6%pgJR|p-!ib%0nvZWsJ(Iv9DXGM_F>yJ3fp-EWc z3j{*GKxq$Dr^-=Y;nSewaQcE}PVuSO6OkWEo#o~7liTA1=jz_GXZPMh#~%olhvT0d zA&*m$DAeN z^;y#8&MM>!2YeL~Z@{lr_9F8Z@6MnqS&N;ZQo1|BVb7U#k27e^Q;9A|u`YL(dVte= z%;3noJYJvMTS<%qjYEA3JxC;7PM@p7=Ztt1F$>+p;|K>teuvZTc9fUNt|;^oXtyC{ zUGHp@h!awTb0#iQ2_>pBi)2EH+-8wXD3SC_xZz?arD&$hWKboP$YgM)%WQC_%Vdxe z#ZK3ZilBqec7Gt}vffwVyh7Ndp&*wiinkuL5n957X1C8Xt0sXuN=C8Wq>uB#TQy6(wO6s}-K53{VdujK(2Jy)2b@&`c~lApX7z~A3mB#Z5%fCz zo~nq$7jgwPl?eIF2{f!B3A#e@ge!6!f!N`SRQUsr*)CHeEEC~i zu^|2BVGs4}u(vcZ-OWOT&~?b9%7An?6i6eiQHnWEs)!fs501H6RvTyb zlXVl+D2ZM)OZG&~>GK6#G(}@cSKOwu46=|L+p%wpwEI-B-G)6fbL&gjk zIoL7ynn74<%XPQ<><$MU7*pI>GC2lKx@N%0;rY-Qdd)b;;9;C?*q||>ibm!u149c& z4IEJ57&TJ#u>FT&CrZ$?w_2fr$y$sWDv` zq9gc-F_TwTAbc8EkOG=ep|Dup(!fsR2(6cBlnaYF$66FE*J*hlbkMXM#+Z$?Cs>SY z2Dh8+TA~=n&^X;ebBLrxF>X&d5(?n*V0h6;_@^#NP;t5(DH64yY;0+kH&Q0&2Q081 z;Tc}cAQ)s_0e__@6mbMYfl{nG!&q`Uu;|Bx0qd?{buDfOLmqTp4|`75M2#`g`CV3Z zbd|7`nHdg*B36p3MFyyTWm?4LmK}y`S{e2SYiX*Xr6MGlaIol-je{u;ZHBsdLgiFx z#1yMtivop1Hmb-|j+%sJY&n?XT-;$H?eOqofto4omd!*eMn)|Bgf*Iw z6X#wLXw(tsA}tV&QprQTn?%Byc5&I^p_~t`ezPuvoK(kSY$N5ez7z z<_?;~U1;308IBUC*B96BrOBy4bakWG!LrXM!pGiFD{$|ZJu~c<%NMPX79I$KD-a5K zu&|+iE~<;1;!NRoBbRW_Q|}foVJ;>$jCbC!hx??+th%wVO6n9L(G9rcit8haAWD$y zMs2v??WuAEO0;qh#=6A*Bvol#qqac2JkD~O@ww&ML5wvj_EHE(I~qSYtw$tniXnj1)+pCdM3(XNLL0R|u%5g>YgR zlNB!RJ+u^@PF^|0#i^sbG$eY2Si5swOy{z3PN8kOce8p@QrqZ3?$H&j!&4RXd0p60 zQ5WWN1Q$W1RwB1~q3UpymSb#`Cz(SysG_Qt;HK5Kah7$@6`pfLnND{3(Gee(ML*(} z_mo?P-tN6bXAr$goK3<(3<*Y4sMAr7D8fp7s3B5aLSTrE&u69+RyGrD)YR5vMK=&7 z^O~CG%I>*5S5mh^W0^)`^TB~Vn1mgXfFoEE6n#d< zT6)Qy1La9pj{NXIT)K#U%Y&CZ$z@PQL9$(Nmf$)G0cSPX!K90x$c-W#QEjg_t-OAW zUAXR*deSC&BKA#?GtO|Q4dc=tk>_E@6oz=bl>an}%CZv{X<^X?MdOKr&8G@B@oG8s zOyi8vjZLQ`mPW;5v5&bzockOCaXO*(=^8A4zO#^Qiq0njj3Ex8vh--#bQH0O2Qvv( zu$GBYE^$=QrI8sPpR*eKmGZQw{%4F}@!+x>BJx->iIc&o9Cc^QSmOyf!xT-2I6>4J zK!uuolP3d~TOzuu!}~lX5e=3?6=CdzS$io*K+Ld4$&L|~jxoFsobQthVlvNDN3kZh zEUkv(^ANW;cV;*&Cw}(RJn@@)k#Q=C_QJS3Lv(l9K``W_?pS1$VspaO1g5S>^)QX; zIJ@X1bBohW3)ePQQr9%aUkt(Qx~IyUF!z=SN31pGG0Mf$g^^^V)Hh|FL+Cv9Cb!VK)(Sb#@x9gZ*#Oi%r$xK8!t2tN*6{g_Fls z<)n2OhJx7%U4&0EDqRj!q9^mYBsPvkqey3kZ#*hmP6T;PA;*$%1ncmS)f@8wZ)#U9 zCtO{QD;HoSB(Y3=@&_WGoKk;9PH_eHbGv%onn;y7F|+5mtNq9+F%pszwHOg>G!nL~Y^ z?t&VMah7{sa3~NV^I&MVE(e2`mV>jP9Gli>+{gK!60MN|Up2zB`|{Yq_sbOWT{@N; zx9f~F-H$tkzv-azpWyrogZ$h9-)`3Uac?7kZ+uF}kIJv!FQf1@p2MJnZWEG@%8%Ps z;>g2qvaRx~_s}R*e<3`p>lH#s?)MPQCv|VHNJT)1k^wtiK;J%0G~laH#j>D5U2|>7e|$)qF<$s=!ed zQ}IKG`a35IFOanHo60gDVI<7?)q8go7N(iC=@}4tD7-!)zj{B9LZzpysQRlkJ>O$4 zU%kgi;Y}Z@mXSFU?a|{0=KSjKx+rX@3SvyG|02$>N>T3xQi!*NSq{4;rD+c!P35cn z>it0qBMI?KEdTL@{OUbJ3fHO!rnub1_^k&|_oP+-QtuCuik^ShVvgJ<2Y2@l>e$9+z6SueD%Jh1uLXQ zIzP;Z%CGPf2+jG8@4>8;`RV)g=0oLE_*FuF_5P*2RWiSw&wpjZu0Ajx0g^3MfAxIT zw3j5a^6%CRc56~QhBW!#ErD10dnNE3PLYR1^ellY+pKyczo_MunZ#$6U(u9SeP3~e lOWFUtY{}B|FZH0T;-U`!?ulp`>S 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

    >j+kP`+&Ad!6 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 OxlEyd){IOu^Zzf5a_&0- literal 0 HcmV?d00001 diff --git a/build/bin/libopenjpwl.so.7 b/build/bin/libopenjpwl.so.7 new file mode 120000 index 000000000..d542b9a47 --- /dev/null +++ b/build/bin/libopenjpwl.so.7 @@ -0,0 +1 @@ +libopenjpwl.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenmj2.so b/build/bin/libopenmj2.so new file mode 120000 index 000000000..678631da0 --- /dev/null +++ b/build/bin/libopenmj2.so @@ -0,0 +1 @@ +libopenmj2.so.7 \ No newline at end of file diff --git a/build/bin/libopenmj2.so.2.1.1 b/build/bin/libopenmj2.so.2.1.1 new file mode 100644 index 0000000000000000000000000000000000000000..dc1d02491d5b2865db475b44763f483bcb61cdcc GIT binary patch literal 261256 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

    FyC<=vV^_H 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%0AKWPMI8$7UqiDWv5;5~R2S73!mQL8aYvWw^hC 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

    o^D>AXP&od6X^mZf)}MzTpQPrNM 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 DHVa;y literal 0 HcmV?d00001 diff --git a/build/bin/opj_compress b/build/bin/opj_compress new file mode 100644 index 0000000000000000000000000000000000000000..a096b005f188710a49ef3c0bd378ab8df3921ba7 GIT binary patch literal 161352 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 JJfuBZ{|(Xz79{`x literal 0 HcmV?d00001 diff --git a/build/bin/opj_dec_server b/build/bin/opj_dec_server new file mode 100644 index 0000000000000000000000000000000000000000..0a9945df1774f6414ea6246cbad01ea8a00ea241 GIT binary patch literal 8528 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 GuKzD$jV$Z{ literal 0 HcmV?d00001 diff --git a/build/bin/opj_decompress b/build/bin/opj_decompress new file mode 100644 index 0000000000000000000000000000000000000000..0beba959b2b93f48bc1de9fb01451ce78c98903b GIT binary patch literal 153192 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 fF@FF%vG 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

    JrhXdKY(i^rvr)>3kcnbz+Nm5 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 z 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 literal 0 HcmV?d00001 diff --git a/build/bin/opj_jpwl_decompress b/build/bin/opj_jpwl_decompress new file mode 100644 index 0000000000000000000000000000000000000000..443334c18fac8e54e3457051599cfdea58096e8c GIT binary patch literal 105184 zcmbTf3t$vQ5;s1ZED$6xK@*9Hvg&#gMM)Gikwmkwfmz*1L{t7ROjUJP zS65e8S3hR*V4inWoXsYgpLppSiJ+yK0+VYH7C#DfeCD;lkl(zT^`pAccbq{#`RWFZKIWCu(x>1DUkTkm zeY24B(P>GGM|HebhJC%Cnp7<8E&KHGWO* z%=#;S>b~Vd(5B)``s|6X^rYh@ds6oiNsc(X2b^tEl2j|%oze*DRVmIU_03hJJ8auh zpGLuUyHr~>?);uDj%mG-vs-R=7KOMlPr6RSw~}t~xmR4IYFvHz*5G?Tz7OC#3*XuJ zK8SBEzH{-Nhp!*shw!b#mp%{U8^Sk??*e@5@qG;6C-8j|->2|>8sBH|U4-w8_+D^L zWr94*`{e!|KleFfW9x+7TfciDU0tF*x3B)lJv~Q$aeMAif7Zd!fW)hx>UH&7trPxH zI_!_Z>BDEHo%6_m-pPAkxDsjiw7io#*Y{UtLfsN=;WJCL4??XI9v(C6m51|}Xqy(b zPPpg6XJ?HDzP{(Tf%oiPtWR82HCx=&d$}JS2+) z-;+P%W5~HIM!7p<=;2U|dc7Y*p4=FG>SE|$jgfv#4Ee(`%KZomI90pk0Pi?iIe?#v zA@tKSjAW#3;8j&*vm}O`ug1{-h8X3ph*7Wn81lRsBmMjsaxRF$r!fZp z>lpP~8KYiXW0d<@4E*&m@LOV(duxnxT`}7IU<~~f#n6A>7<_(+k-j8`{5Qssza@tJ z2V?M0j=^VO53=Vzl4B$o;xiiUM;|)^f5JCkij4SV82Bw*FIfs)F7Qmm&p7buE2T=_ zs`D6SB$u`t{F99IrACH}4gR&C3dEa<;#y|l8?pp^mXW>?e3GPol4S5V(2~dC-#`-u zd7)AYLt6@OhN=&_}Ax6)=r+ z^jT_@JLsfx8_e{E9*pEtvLSyiO-k?~ebMJ>17Dje%6-tN*HJV5B?3RsU^LIbx6Bjy z71#lNCK&Q3y(-`yeZ-ylK6xT{`J)YPCrdte*&KLmVA=l zW*U4N(nY%cNJpOvgHP@q0&a!A=(F2MzcgOd>qVY)O46G~`j-EQbf+2VgGirbXvp&($n{lC;=p7t?M_jdIO(m`g-*sm+j6N)vMSH}t>E z#9u8Eo@1oHl=-Jh%1Qe9+Tfr5Uy*R;MdCWfkhA_;0k;}_=5T%cMeNx?OUXw1s?h@T zq0x_O4ZJi^$a&n*XM=%v81|E5FdAmyTdom^r3U^bqh2j1^~d`S`5ntd!uO4SQDg8) zpD*xnXBu=P{nAYW{uq4e(`4Y=n*_YfXx}dx-%F}b6ZpulS+1eym1cusJ*2X#blTlj z_gBy=$W>CIXIy?^NojTI1CDGQ>6&XTQq5CL3L$WIdl)?81OW}QPq`G^GiAD=u%(7 z$eW1nF0DWfPQj;e`qX-g*8=Z^HQNV;$A+j+*ep$8R0YuU`c6}Zwg}!+v1#1cTKS` zk`Mw#W#9zd#1Z;rSH6n@5(ySR`R=Jzg=NzssL4fBrxr0}Ht5NvP)5_zVF`s5u;7X= zIfQB~f*JCXrJ_?s)7LVc{%YaetpX8yU?klP&7Y!iDXmQR%G-iM{_m!8GQIijo#(74Kx~bGRs=TzK zgn`ip;1>O>RA9%VE%T;PPb;~}S6yBu6;j5jqAT+~_cB7>O7_zwEn(SWxqusLrcNrY z9#h7ArZbBAg^+}J-&FoUX%|t*N~e;zFi@B!pke_*<;7Jq;nk{O(!R37;wkq?r2CTc zYN?DnFj7<(PpL){(8%HWxmpi3JGba33l+0#rF`m!m^_B z3S!AF3kiIc_fR@tWrb7*g%7~Ueu8dn< zLUR zR6b2AEG3T)!ldcb1zsXEBY#&&p0LO#-CtBa4K`dzDw+hfO59l@kioNfdJTzGE=`(R z<*O7uTlAUfGmDGOZXz(HR+KSdOew8^J1?JJRZ%ok;_SZ4s%cYMnrWpogh=epE314M z%1V70{Ki1!lJaSVHPd0`Rg-6!1=A>pWcZJo@sPy>rpebgxky3>GEZ1G2Oz7d}t&tx@Q^BMR@{^M2z~yk+Ggzl)1;_wMNa&h`jNY=9OBf2L zmlhUJEx{Iv7^q<~rf?`(Xr*RqAr~#iOYkYGo-9>V!e<+3LoifTLV<8!kw$}NP3et# zPMvv=SxZBEkXnMKx~40ts;Zb-SdJF0GDby8&Fw)Nhu57Bs0fWRSsLy2j2KyX`DK^G zOPTjWBX?Is?=FjCuZmzZG9=_D&r>+`vUI87hS3>U7N$!>rk0kJ7Y!k2P+EOoIgR*3 zZYnK;oTWp^3*A&%Q(as-#6!^v#@Av5J&f|rfz`Zuy+@ae+b%eZ|5%sew3<*k=7181#y&G?Ai6e9i_12mvRZZNMXm0 z6!9^+nK^qhM(lA>e##S%ub8ITQJTPkE$)av!6X}fqGeDzlQ&UFCfe=l`p+JLqjz0X z{J%p~nkefBREnlu4t#6+mm_lTDSd^wnm#sY^pHWX0-Ri4jy<;1q#r@2JZCVRAhjE? z?<~sSLpo-_{g~ce>JBWWfArD6p+UMyNd_#+vs=ouNmp3psXzD!%8QrIMtb^CJ+Fn5 zh!=gTycZ*akCQGk=;r>eA-=TKm`9`=`?w~)%D^X_G#@qL)RXXT18%N7kIN;iGI~4cH0C}F-dqnL{9i5j#T7z+>LFsL zCWx5m_BEodu;9^LkxzpKZ%nP2w#kAwrech5w%|!7^Rv@}H=347Ef&17 zB*1vhf;XmyjBmH#jj1Z*J1ltGG>&|xM)hMXT`(!Zf;VlC2uT)v-v|>)O10pv>$eUI z{tQd{K^8pim7AY*3*MYN6D`w%H>SLtCD($->Q&^USn#P4EY2TT@aEbVk;hx`{VnMy zTJUFE@KY@K0Tz6f1#hlV5P60LKhToC)`E9f@O2ivXdywYx8TpWq<`9izrccDY{6e> z!M|?7|HXn|YQbM*!LP932U+k97JQlozsZ8X*n)4i;LSB3BJZ@|2V2s&Sn!ux@R|ir zd&cIc-GU!tB601o;4>_EXa!7UvI&0vf#ZIe6t0gZ^7@h;BT23TJA81%Ia{{df!hE(?C51z%{vPqE-9TJTjCe31n|!-Ah=!Pi>w#TI;> z1z%#p*IV$V7W~r|e3=Em*n*#I!M|?7PqE;aTJYr-{0a;HZVSG_g1^Ut-(=krbW7z8Z0!)Oq25@hcC^#T~&cq2AJo&xP9wwjqPw z%9q{MOfYo^y^7&y2~Hq* zBEydnOd*8h==>-g*Mlgj;dM?9p1XHM_r!#!a1(-r4 z-NEodf+;l8lNjDlFijP7iQ&BjQ;4LuAE)|%MX-b57KXPIOoO)G%X2C59&vOreY3{s*@|!8A3}TNoZo zFoiIBGsD*rOreY3!0-ryDP+-?GJG|`6sqWp8NQrgno{ZY3|~wzg)Dk4!{-xBp^9F` zaDRd+MA0WQd^*7tn&<@#pGGi+Bzi8xaRgH+qNg)_EEh0^Ai9I$g9KCPp(ioCpI{0( zbcx};1XHM?xBt%VPjD{5Eevlbm_iG^nc*!2Q%IpVFx*7&NP?F#yoz87A@s!zFC&;j z2fd!*B?ME*pw}||GQpz>u44FEf)#=%GW;099)b%Pewg6v2+n1A9>Ej}=;;hUKrn>> zx`W|rf@$d2lNi36U>fpuiQ!2E(@?LsALI5Xn1*=0h2gOT)6lLrGkhJvG^Fbd438j~ zhH`x=!&ehbL%6<};mZl8pa)m_M_bX1WzQm zh2iZ4)6l9nGrWah8dCKJhMNd3CU_~ss|cncRA0>SGJcs-jsGUqw|n_`{sl4ZH))z!40^5@=R|EE3{MFMoDR6vGWlmP z@j7$8>M=$A$)h%?do~CXxO$y~l#OmDnWIE`bBRl))*a)Azr!X6?#94cJIh&Mqf`z` zwbAahQQ|-gNS^TMguIOJDN_O!SPKdPNlF-U&|Rv&4Y;z)0#2NohbdrQ!k94KWO$DtwA4V3&sR@QnY*d_-)v6Ial z(H=b#%_Ilop%t(Cv-T0n@Xt<;mjfY~MxIp6$@ypa$5O=YXKn#ym1t z3HtrR0h7^A^LO-+A0n+O;oggSqf->y=PI^Moh|v{w-cZTaDvR*d(TNyu)(Y9a-feyP*HDfl)Gcsn0jHio?@s^CYQpPK~X53L}WUQ$`X*1rJavVN^rL?f%Mf4W@IW<4qimsRDUKD(4IrnupKPyfK}vWH0WMXyOy;N!yyal zdje(ME6VC;DQo#}5b&|CnND9|W-3OeY>{c}X;A^^B9neQY^ZC#Ef{+Yja&d?Yq%@9 z7iI|t*$%RP4}RovkqRi6mc#UaRgx-$jdlcgpqpbI=LHTz;Xa4T zfwkaAJVe4B|&4Z{enf88ej@~;m zSx>(r$0~}JM0N7fjv|v@1A(YExf;!$J|u5QTKouX*=J)s@ZA~8b~f%yREj&be-j>V z3QgibH&WD8Iq)jgra0TFH13Pn9-{Eh3 zgUZk9P}CoMXJLxH|4M+EV)wqYvn4v7-ifdx*E+t2bB`3JQ1&` z?MkC|tzz4tY&+pg1;dvNhKa<`9G_3-SDUjE$)uVgia+Omy1SX=NrcHg07wg?7itQs zu%X+dfNhk$77Z#LS}W>L$?w$5kV3$4@n3gPgC9j~qaIhrI@(81sF<5UXKNMi9k}=p7K*GpS%&G!WSjQ{M~qo-BwLb(LzDAYNx7 zMsuzf#7hNn4oP)kgzbxhm?VfQ5i=vid4hOoC~M+PBGN2H2vjPFUkKudM?j<{0zp&+ zait(OQO@iL@e)B?B#1u{QHc=y2;zf+nEE@27e$D_umk8lNf3*v%(EiI&jc|~5GN9` zcZB%9APy2loyw#MnUMBbLF^@n1E@?4zXox(ApUd(E8$uqj*bu~3gR|Fyt^xLq#(X4 zh))tRTF<`-;!}dSiHK3%_7ubi1o3wwqTd(-9e@XdCEO{9^ACeaYd4}Qp9*5GAnKGe zFG5@(H+S-LlE`LSqXO&k>=x~%n5?{u^@(tNQ)nWc#R;w zEr^S|mU*5aJ|>7C5s{|NBBxytYXtG#-$0DUy8A?5883)$5E1^}$hk!jhYR95VoR$X zg6&(P+no!d=!XZ|Sf9N`>M~*_M^Zm1ShZ(x#oy^F;Uq!aA&B1-(G|&=Cy2`haUij! zB{?C)AVGXa5D!w$s8RJ|V$Likrkr!!$g~o{G^TUf>Q?p}cY@3npw&|SB2>cgo32}2 zH+$3*m>GJ*7k>UL7V$H7d&8G*!JSr5b*1Ujdf!BfD;fms8>#pk&R9tSmskA}W7(nC zO=--M~Gw*LT2DFYnN3bFViUeFjxU!UI|QYj zZE7^54UvPk?Pp}fV66)VzMKC?wahwot!<+xbW4I#ycI#If4xl!WpB|2|0I|`A(+Vp^he(R5oAo>c^_;-*m=SFWz1*~hmiDw7vy!uDYT$3M@f^02fbcL6 zrXs7Ty(z934h>TjIo-xI2UT3q_GkkQ+GIgXu+riU+5|ysKWNFf52X{&F@mdMoXIgLbW;&9KrY7&OREb)RUZU2D+#iF}Hcc7Z|b zC1~kZS`UMUIS27fwbEMAfvE0Ad6Jd(DQIfb3IrRS!R%6_>Yw*pjj+0dDJg> z4XAhrR+*9tPFiJ30D^S1+L@F~2K$4Y7H~?qJ*4~-?m`KTLO3eZEo{(&f;QhuyVszpf;P=c zyV;=47PMQev@C<>60~cqv~vvF&4Tt9E6rxmMhaRVEA0nO=p{qY4*z7)*=B<_P|&`y z(%v#?y+Lzr3??`v-lX~fs)w(B#7X9Wd1oTeJJp?X@F!}Nx$DSoBA%0G92pJ59?`of zPRS2-SHg>&WF?r}gi)l&aHZ&WaO!M7-tenVDIEo?TrdWcf1!$=@azO8E9y7eR3Omf z|Jw#Wu)gq{Y>V1`5Zg$z!HX5OzwN_9$K@o4f&GcFi+`ZZy^Amh^r$sgIX0@w!PG6fG{DY=*R3el@^`V(Wxc3UAcXi&EkgtAwGRJoC@Pz+E zDR*7h(SM6efS8&yT|F zU+#;->|e^FF#DHV0Iy)r;-x$GDI@5Py-6nBk>AoU!=3gFx^dK>V7=Ofcm!+J9`(1I zZ&JdSo<%cPmAuIc#>hKq#T1d_?ip9#dUYANO`}z3hgcbR zJ12=%X|+krt3!!S*NR-^KqTbGQh@&lTH@}M1M$#kxZoZCv5V!0K7lrs;&D$(ifw=A zUa~K^yImKNyBqd#D?DHunOLyFqi&P~GoflkG|Pc+J>T@dNcaj6u&^de(i@P}B`@!h zT`UKlMH$(?nlI3EiUsGHlmUyOog2I510y+5(D&bBor6~3KO&LBIj19y5#pVo_zqDV zmXw3ffpMtY*~q2(Q;|=fh2enY_J(IUtGuCZ1GtFZ`F1$m%Tas7SEDd31MN)9HA(EV zf!UDT7wenfaSi2w6P8JS+oP_N1N{gH537u~`0b+ag%6qr89*Dg-|#`y74r<*Zb7@u zN=q|nTcLR5JJU+*ZP0cJ+6mpl^A|`)W5HLfkzqetX`dT3QZ9IYVx_G#XnO?D;rs=goCbZ|K4|E<6uLwoiKr zO{j!t*tDlxuJ@r9ErV#)_tT$V!`I(C!knN-J%WL7OOO zw_0hV3>w)zn&Vn4?P7!WprBo3rS&mrvjk1H(hfqMRKK909oc88-xmgro{mL%d#too z25p?E`$jA61%ozG(B8Jv<{314vkG`VWu=uFv`bK)Fb4|5(4*I5kjAbLyvFnk(2C^C zF!XHv8m+yO0KEtNKl_#NO?IT3jZ|Rn19PPN8R>*UHQI?@-NjzvC{e*v?~RzpOtn3wWT`D7PQVEEOppx(C!hmeOB5AgH|kPpIT{44BCx? z_P&+2z@S|#XfIl6)duZSL3_wbyTzalhdwv@6C5I{B0~tL+>QW3Z$$^^_S7a|jv{P9 z2`zHIj%G!?HNaTs-y{d~i2dAkG_;xl7uNYB<1yA8J?Ft@;7(FG=+Lf){)Ew_@&?CO z`m0=6032X5p>Ah!`kcMk4Td=PAU0DQP0PG=x0!i2R{m)}C!Dek328X`kw>Ht0g;Q* z#v&<3B;TDFjq;A4ax@~h6zcXUa;W}fhZyqoBuEuquMYK|26Fhu&bh}r2cj!Hl#dRf zhIs61fC!=9V-viAda{*3Ptj3l@O}Us7Ji=GqS^!jt6S^@xr< zp?s8`^Q2%`24$M6+`G%5Vg>s8*JvO$)ZjV+h)r*Whk&(0&PN_t6!*dg{ zO3_ZH(F43&-xP=s36VgBy%)Lri0-Hz^pPY0PcpLTj!aS?LU&xD3vq`|d&dA)X$l2> zQI&oH-(slrN7w<<4HfAwrF3+dOsM`}NC#p+K`bER*a-2_D3h1KMB9cAS&tcu`a2HT zsJm8?Q^2Gym02l>kL{N8HaNh70eBj+AiPJAL1~eso0(CRe}ka=%8Ay!EA4WFmQS=E zU1?_;v<#fTSU%3#LtgH7c9)m?oZaN*UZ=h0w#JsE#=WVHKPK3k!uHE;n_B-8*-!4B zb~dYQ6akLBdl33slI`rF2D!8NI|CBgQKZIi9J^%HFs zxJW)xP*Bua&U9_(=Z2Q(B`cT;eRw*E+A?6_ zbXd)62!qv61glzql&8?ZaR*xN&i-7NpU^?0b;)ScK8J!RX3qb@7$=p`yG|+-bsNfq zqoQhZa3~7I;7HP021kmgFuQU)W4|IQ%~h1gqhc)giyF1>1a=qQVttafRQa3J-?Z!j66LqbqNOK}fY6z0&!t-kAgny+s<7vZX|b}q(64kn^*oOu&K%J>tR|=h_VDOVxBPZH6p|g> z>)@=W1x(EXw=8htbaeN!(%2I_B+E;+ba4)`#h zVG5hAJnaovIL9dA0pvQd{7{l)^E7@R*Xk4FeZ(`67p9{a@j?XOeH6-Kq&FM~k+ps3 z4sgT1+m%pWDtX9!B~*~ECibWM8*o2G3Dqt}N=A)yj!~0S75`ehH|sk&uonYO7j~qE zCk012Nb>UhE7W^i3fFVeKC3U%t|#Y)9RG%V8Ev``u@l#K9O}DW4g|pcf7MqfBj@u~ zf2vhqqgDY9-n)pX{RaK>z*7SGx{yfvFHPzwP)(h9Ejl6nOo{5Jo^%5h?Tn!!8pls6 zh3C%fHU9KM##W$B$UfhJ6EiI-Cr`%7Bi>!-y5Pb;STmU&RrC7}&(*Q=fqus=w%-!VcA0piZ7CYt> z)MVLF!~*NlWqAH&j&~mQ4+;&AARw5cz>JYFWzfS~BRX3vcyP;%fXFWNI2=G* z>w(Rt`cK&0;ZY~%+^U57DZ_8gl!Ko_z|fe~;bRKq;9A_f!#A8z!lSFM3lH5&!sn}- zylI~(;i2uV=a}PrR+1ci3N$RWWo9WYa`0gSvf68YaQRz~hwe{sVeE86kB+k%{4EI( zb+Er7HF(%}b7)Lra5H>LrtdlheeZ@YAqR${f(>rx4e*&iYxh&r@@nEM#5~mdi__Wk zzl63{oePv0l?o^sHefeFSsdB7UQ&<5Z-~TqQ{rnQi7zk`KW8SUP-J{06cM8m!jUOm z25NR|IDC{dj+v&keIIEr?WK>+V&Cmj6{^8|D1~bfyoR~}BCIi8(x9qi;VHVAI9M;DXI3;V2?)CLWTLdQZa~BXmQmJ2b}; zzO{2l3o4Ws#M%0bLA`6!A-OMN17A0ur zW~H$O2i~yJ09QR2BjjMX?gh)C1)BzJvQE*1F%N~~M8yW7R`9H~i<$6q!-)9oC8$a# zNKV|pj(a>G&=(pwB;Q8kxiO#Mj)NvYgd_jxa<^!SpQ3SS27#4woYYUk=xnAHIscU7 zE7QSjL)n}o@&AzHbu-6{$bs59FjS7gfrsH0&SWf)1L*-a)upzfR@-Tq7!gWb;?tKJI| zidJL)jkqVsG-7L?e{^bpPfuDPuIW0rpU(>@S>ZN;;^CaLdvQk!d_&8t?{DQ!nbDAk4acJOqG~<2;EKI`GHZ;-VlUsT zcF4hOtiNIUOdX)hsEjxYjxrZrUV(Kap=+hX?`OIie@xA@{o1%U39ATswtcoO@#CCB zu}DG72?t%ajdJif+^~PYZAB+oen`u%bC1!lJhC}2qfH%$W_S)#F$K@1kW0?h)F@^n zVHE9tU?2dT3ZfRQ8PH5}sDhvIm^WdM4CqYLFTo}=H;A5BXLo{<>%S@RM-XG8`J4>MH3 z&v@$sRP_(aV|UC7w@-f|jh8s^FLlg4Bk&%I$HO=A(oHE+X-1~-SRY+<*}2Aw2f&g@c0 zCt#v2zrBgtEVw;T!ft9y}a0Wi7R@^~o-hJV9$F1J7FTg?1C< zU^1kD?&Y8-0U-mPYubk^#%qTcV&uA@eXRCk5X;!Cs8}RB@}+;D4d=nOtD9U$e$6^q z-7PoJ>ATpiev}_7O!XAErLA>g3{`hRoOSu33F)?GtPj~~Ny&~AEB1f-8*Q$vPiofi zlAHbj3Zwav%ioDOj%LND?grcko@$Epf%R0CTrC*IaIa9b>A+a~00zLJ)DkCk12V!) z*3TXn?B9hGhG{0)oiwZUH^Dp!9Uu{qwFCSd=>QwJ1FY}b0TzqrQONT7u{b_oa0;Ww zGzdnGDQ+yIPKQ0d`+sZHt4*VR*BLSDbkZD{td1Hrz)2fUGU`wN{~5KZUGco+Q)F0% zaks(ST8-QA1`eo17`ZE)*XdG!if!b1r!sPKEM(-`?;l$INgE)ys_|2Q^4seXOrQ-1 zWA9Bngog9j)=~8wNa0n#Rni*sg78jTqHgKbREASi+I%XDvbb0otCLC%BH2Shp)SRox>Qh^Lm({D5!K>AaBif7y7syxB#IiRVN9F^fS#kwD-61Jn8kez$NyBYIx|R zfpfg*Fsx;Ioc#if2~O!{c|0~Jj2 z6mNB_+p*Kp_-&lmw$~d@?3Ew3_fg_$6ob9X%d6w?d|JFq9Xc2HCvdIB^*BI2U4}k2*#Aq15>=Ad5cLShzf8FdK8V9xn78% zC}<*zY6`re5~m}h0rN8qZ^?FSktCk(Rukvb%^BFCN zYDk5?pE7TiKMix?2&Bi z*(vE|n7;8owTPb3#B|hj8U~z|n37T2 zkov+#_;MK&D zJazC~=zlQupL_<=V2ykEVn{-GHF>@fe!NJf;~?3W{5BUe#x%85VrYqmH>zP5ZD9bT zb=9ug+WP;ft>z945m@(cJ8l>PMO%n<3v6Ugh=*W7=p>0UtV!5TQ%$Q*3(n?xOU`X4 z91tw!@@85r`_^Lei&wyWMjR4$KN7u!ddu)tbj5?#otgtEtVf>3`E!mFRV8Zgk$`j{S>2;*Frp3YjF(;sW~$bx4RnX` z2T@%9@8NVXd)kYQsteH+Z+}5aF;&AB*m6YR+gxgcTWxWL^RJ{}qwy%-(~we)GUer) zVS1Zw?ObT1mWs_st?&CNGn_IObexUAlkORtnG6{+8t@tj*q5XoSk8$q6^UGYWMSo% zp!_*$qevPT;kRNtankl#`*?U(ns>X$P$mVQ1) zB3C$hFys((b#jDg7||Y$`%~3qr_m7lmzdJ44J0SZeq3<>3`l6-wSt!ESJL1XmCtO0 zDI)0`{})MfMAA7TDe)yY@n@DPBHb+}OG;%lKb->DV;0@^F0B!dPIZlU-4-fH^&d-s z>q$gnNnSV!nQ%V(bmq}!&fj6gd8(eLYIkFd5l>sOL3!1^H2>0`14q}~u$g=^x`C}(3Eh~kJRQoO7rN1b0aFfnQlpE`SmnT`W3q}p z_-}S}(0!uX)VP13tr;r-J37;vZ5vl`eU%Pg1)1APYa#NO4i~*GA|HB0xhN1(POuWO zC{zP zEeFTqet3ZolWe+C3gjTY6lr)}9n~>76!$3n2qG8qWevpDc%4fdJQEoPoLV0gOe@-m zPK2eo)*ytF*tJbe)V_k7;gjtV|EB&lIy|`KnIlKhQGP{WxZk!vY`+gXUjwk*hfWUk zI&8;Z=~91jsTObV@(DVNeQK$nEzP<6MR9EgPVD%Mac9VGMvJ#WeVzSgPLl#3-?2PMu?Fo_ebF9GspWI)$NV-HMjWJHSMWW!ziLBlXQ)F!b z(y>Fk-8Dftv^i(P#HVgH`d3DSJ6zqN1&w5(f&$aw!S~HMSM zxV}N|EZPcMuo3+eO@wz4QS51Wy^VOLFI|57xa~{4wj-3hA~cHjk9vnjrAGJSY|U=! zTaB(AN6F(kc64wLMVDk>=dx{c%gQG9cdofd$>F)>F`K}63Nyq8A2GCS?y=v*ikjNs z5>C|lCzj1%*;;;->N1@53V2WKm!(Q_;4R!@5;cIGG%dDjHE%O! zFc$r4bUiE_ZS5g;v}bJ~eWpawEN}?z3ZfPWf!(DXl0oflbeEvVe|UWB795DpUx?V?sSURmFm99<6~ZI538b7l*`1 zG+G`Ril$mng<6xwFXx2_tmIWV2f68NDnbInUqN>`3Z><%$LR?(dj2;r_`Mw52Z3EU z3Y8bCariqDVvam;yPZ&$km>dD#O*kxY#0h!W3#1eVw z?yTQjviGM^>d+O?>rhwtR^G=U{bpu0%L|*q4J)&-Y?`hQ(j;Vc;gn83UVE^>kD6pO zwDvUOP(%&ePGHtb^qPbIhBz!{4WK77$iYQUvGAeOiO7jvGwPd`P|4tPD&=EyB8bGA zgSsL0(Sa1}v10Y19MI)TSQMb`TkVb=B=ZJ+fPp_n8||Y0NNhU5lv?JBcxa#fvf8v` zFWtbK+L}F~o73gxo3KXa)kdg^tMo6S5A8XT+jo~+UW1m^{|zMcsre23s8f_U*`Qqv zr`N?I5W}v85D|;`@UUJi_+ef?_a|<@(;KYqM`LOS^q>zH>BtdyeYYX`Sdsj%V7O`! zn2PwUjr}EQW(4KBn{%NbAj5eg!?F*p{I%zh4AzjWw<2j7ogYX-pOEywW9*}KByj3L zbvV-1`%xP1SG;!&n??;@I?l)da!HbjfB&$q0?+54+PGfxno#ZyNMZ_l9yKr6KLhr9 zBN8Llp3P}fPQZqvLjX>qt^Wto&_jYkj)jyOS?{8(^8skif0DSl{C-H|JoelJQ&1B= zoEEx2smri19t1=#s4R6R>RL{^1`o>%KBYWxCI$2a=oq|8gq%tyE%@OW29|(4@zby% zx=)LL10wi4;+63DKd^igC(ozlLs#uA`yZEK|3MD&Bk9I=?n7ULs~6cb74<7xqg@Yi zY5mpd3C}tQ<@LT15sb1COUrl#0MbG_Z5z^HyxE10Ls?#i3fOI~l>=v^C@;A`^4$<= z6#QSxnPB0c?XU?areYJeAkiI~m~hr+8on|b{NJ8%jdjBf`Wr7rK+HN8 zxZB*JWG8$hRKbpEPG9nmFCyG;2)iYo59Y~l?6wyn_5)?3Z)0!#G*peZ1dU|LuuLrx;Z&i(VSa)<7f@9^n6K8?OXc8#^ zq0sd-rE{SU*u?Lw*{b;MPP-DaI~AN?Nw0a94B_S_e5BWj-3=%tlQiqf8U+VW4^_Zz z;aPWKpRlpBS{>*Ph;pE_VQUO~)QbO(!oaB)II)o_q18^Z6F9SMK0z-B_fj3_t|PPR z;>p}VhiAlVKNAns7iUPm;?w)QTRBMk61LK%wTm|*N7vT=j_fHstQElzwf4Kjisynp zEM($vP7#>%%7gi+KEwSStZ7-lbD@V0ebv9wW9S zx!oxTzV1Vt;PeL7Mb35@t)e!qIYwH9ofY6pU2i;HAqYolS}##?Ik2oJ!XCV_6}bw0 z<5B4%-9eQ;o&1**S=d~(-LI42+0KmJS^?dvJ82XmSt6ql;wIQM8jeKn(r~$8_*WZV zn~J?~Ny~*IaM~SuO9+z~liczb9~9M83L@1URep{OI~F9TWlaDiD0VJo1_ihutG=2{oE)Ll03b z?Y{2Q)}wZLbyuNOH%2&`Gx)(ZoOgouJO9=Ig+Ex6u^r)YB|2_yaPyq|sXw`~$3ADO z|2Wjyf}=TTC^>KjEDp)#z-hRlT?mD?xB>@2#{tdTY^~#Y{6eqjyU&5?`L$&b8- zMLa6Kz(tGM58aN`>{ZxvxQ4%2x3N;$ZsJFc||g^@%lM%W7%sbuVi8_CTJ z{hg!wHE3ZeFZ3UZ*?GuGZXhF-7p+CCorJA2rEzcE+~YhOTlh#X*iCqxb7IEfmG#Ky zM$qkaBRz(#FSTqan#4}KlOPtT7Aj}mC ziWvtVWeMNVsm7}}*|F;MEf&!oHgzPnICJUwkPg6C15R{>UEHkm$D?Zl_?_B#{&e(M z)>YtJ%*b$uw)_&R!JSXe#W+`MQhUHWwQJ)sUWu!3ilGT1utK0o}s) zaH}!OM^6x8cMnv+xV?jZCpF=e4LvO|tIKBIB)q0cJY_Ud4#Z((!5L$E9*E{TbX`nU zi5_!utFJl(Oj<1trijO#+-iU)%5s2qsr;Ssl(m7=z01!MfyE|(^dT0n^K~`v-6QK# z1_QirF9&8(uR{Ls87m%PL;eE*=|lNH=Id%_Gp@-08G`{nt*7T8yNFL+>TifwG&1^!^q)fkKDdv%TS*aSbpmyn)*i!6adwh_>Fm;lb;{T=Jx?zboXBJr!{A6Kk}Ow$B+|7sP^+}Uhv>~5jt3xRD(Dgc2-HwssB;bG4eie z%rIhe!YUSXl7j{4CJ}BjKLpVFCdJDXkR?Slbs6+W+96wkBN~c#rsGj7RMn!MRM=qx z9O6kTqL?|`)A$3Q8^;#25pTi8B*0ydqMZlKZ!xud8JfWR@HpmUjnD&p!(K!;ra2n5 zG--w&^BjI%$n8jn*qQlRKd8xrYBu5Qid{jiQfvOf3b|`Bg)SYI`3KaV^)0J?%QC2a zR7CCnMpD7p>&(6`G|qv!9v(L&?ofTtP5D^|RQtug=MBIACkY>a!H|&lkSHRkkdzhSVDK7a$4^s~wFneC18SMK5ZjCc>_Uw{O{?608m>C}cO9||0YGf_e6@EGyO zOLE{HTHdpCTY3oD(p4`#3RjWQ<_$Y}u3@y35=wMhP3efXA3cywsT;ZjVP)QaJpo3Y}Iw^6R_ zL87UR6p=>X-V|7X0+8q`BwC430l7b+;}nA|Nffj=lJut}!~{t!RGKD$8gF4>p?+*< zYAgKrDe}Gx^FrRwh>8KcE9c<*5RKw!Ik1Hlcj7cT(15!x+DZe9XmH*KSr9@~knB3_ z&b2{ZXF>v@E_#mF8xA`n3u+oslm0|~Pf*V$D#SP`?-4<@osx5K8K{W6Z?>WPILT+|J8%#r>QBs$ z)FJy{hbzz*{ffFEyn=7KM))RLUgCL>|0zoFS0uo?6a{AB#`fyX!l9#L^eu|#g6X*7 z!QsZIurZ3_r4Om$^>ctXjGX#D9eNC|f$P$3V6G($H8}pP1~7<=Ycg;cQ*Of!`xM;jU;m8v ztJB;M!YkCA`i(#vwQ-BuI0Xi^>5scEwV`tu(b|kMYSXt%P0m4@|51}4VGO8=8+}sW z0cm)`EoQzS2~sZAT^QF3FdAbRNp{vA6T?WeJZ~=W=oZKHCo#}lOAl^_8MD1Y3bt1| z06hujA7$!6W~0VlQRB-61~sPlF?Xpk{T1qHjkf}#_Ul^X7B zc$Xl#qr$z3#ywSy7Xr^Ursq6Qm0+5gU@J{nmyE+3;>E&?b|Zw#q0=^KC&gWNg}iVe#K36@J&XoBmAX5D z=l0kE2Whe49-^AwXp4T;waI^k^i)bT!Ad0P>SC9{EJQ0k4;uRG_~@AN;sM6o62*jp zIhBZam?B;YlL3=kqgif87VQs6Vv#&w2nNZq3?@n+$daYR|C0tftheRppE*posO2m) zh3r6cg8#TE|6{FSjh2w~&7fHd(H`a6ql-rhS=BYg29W|?B9h{1r1(>xUI0Z4DQ6N{ zoPE8PEa(326u(#FY}g5XFItC|z!r`{qPze$Ku6&wW4qn}4OrwV5T&A3BBh>>gkCIB zg;OqBf{L7g6930}O+~>0Y6a^Mc=8Od&i-?<8TByO(C8#II4$)%2i0auJ}mav zQjeoqBjB1N^77mh{+2!2qvb$7l!nP+a-1Bv5Z+Z@un(hlC~o)&9QXVfycA3p25FB$ z^;l(3(9{LE0rON|1Hv=9Wbc$8D@Np%yqI%hV+5-s*jITBV;T<2owV3~ANM9sF>L1B z=w5lm(>Qu{7K)_9=6HN}bgI|Z9-6}2D52a`ECV}GaDw(1N=_RR+}=29$!92V@SQeQ za`V&{c0A~*JN7DSBeq`l+i+GOr5A+Jjy(d)1?SsuW8MyLXhu3-cGDNj{E>*~M~I`DNR9S&7|E#7K0~eHb(5)oaO3IphhEC+c|&O|rllv>E7SuD z>;Er`@HW~_b=q*G^kcZS2JAB|3yFGuuAhPI(fKC~QB?0<7>s_VVZrFf=drB4`@aqe z!YR{najCmpD|#eEq8{xo@KpTk6ke*eC?y)N(jEyWlR2L?lU7ouz7old*iSo`@?-sf z18RFpKJ~*#;Dq2M=%Aqy_TeLNLU17NhmXJs!7~YYT|w3^IoOME&(=XzackG3|Va}I|lh3pPh$l7hw8j+dBh@Yj zPjppuT9`31B>S~Eye2~qYy}6{u0y+?RX~SKTVT2{NbDiu_0QY_*gX{6X6Ipm)iNF? z$q=963Hj8}2%LffQ*WVbyc~3*3!$|gC=D}N@{@z4&h@p}X;HI^QND@|u9N5hc!&HU3YsX&KhnZj%+3baG zc=4`_dRQmnVS`A)TxIgru;mJRKZj%=&}4Cuc?VD^YmVmj_gnN$hb z!+S7j_6&G*2Ya#fn1b1L=408o-KBnmO}|!`p(k<)v}9mMU6`XB#JUhYW^gV3_@Esm z?v2{_5SyG{D!&8h8zc!0r&j{ud`H5ZRcK`g>KekBz_qk>Kn>BZcu`%1IUN*6>TFj$ z_21jg3`kD>IGW|xhwujS$5Aa_HjUbdDODNzY@H8V;iZ{k+K>oktiN7J>S4GByhfHb-S6u$bsijBc1*Xmx$BIjsm^09+NYuD4X7vt15 zd`3Bm7PfB%UQ*IFdBfT3H$e${3VaOa(X_vdCoIfY*!>23ho8Vx7~@mJBaiSN=q}`3 zk%S+#7C#k}wli%l8YdM`_c%Tv0*bi;?v!-8NOVPh%d!JLg+{uK2ruvnDR{sP?kgQf z5ND*arwWhh+_6{13I5QSB>&Mk5EErO%PAQTd-MSZ+8%r@Nc!$w_>lu;)8NMZo5d<`c^xe5uGhG8N^S@9a3lU=&eKf)tB{4Gc1Kr-gvU~qg3m5_4HEARu6 zzssPA(!XU|&P3FdgD6q@1eDIasSt}D8T_%2<+}t`!(ne|T?x&|RI>2Sjf()_>}ys5 z4w{{f`^frZr~rQu^e}pAVjSX*HFS(03czVA`H2m1TR3kI&1a)tBhlLQgr7)&8GDGtpXiAh-e6oF2g)L@fnwKm_+q1lK)++Y-T@8Nn?F zj@qeD0Cl9N2I0)KcNoCyWUz0Av$t{d6gfuEY@CJj6dzX74pL{$#h=&EFF{+H`a-ya z=M8e~)Epeg(Ge<@{yqVpF&&JaLM0{pDWK8h`E7=YJPriZmXJ`h8biUHrmU}LuVFRH zf!DFj=Ecq`PVwM`9{#=!dRRI=pqQW57{vB-lg~w`U${TgL0<$-v;!E*?&HQG->ha= zU3TAG`NfS{t@z#GwKd@>U3+feNX>Ts!y{etWi{o>i;$8T4DI8p8%kNNnLgJqK!Zo) zl^k^w+g#jBsB&~8ddEDoH@||O8nF+4!azq%U_N2+HSYNdgU=Y5I=lc68EhgXAC{Jb zs~MjFYa+usiZNmzn-y7ym&&9S*cCbwjivf zl-McW$7Th@G9Um(%?h{|tT-|&;2t(`7^kH*WLCi42b{3gcvqepxp_r zm!^Vi+{m`5#?vTBo5?ZquN)xu(FEsSbygGMJ?87zLU3Ig1#wqHjFt?sw z+cr#*@T+UCt_kQdNPbOFS<>pTMS5fEGxcioMct({JN&$b6k4PN}^Nyx!v(#v{DetE$n z+;JVK@?IR9r^hnAp}$cr@iE0?-9g6weHcG4pwC^(J8h8sLb%Iyf8YFU_8iJN2wsHUI2ucKZ9QLNb9@x)M2vew4@ABTUkSSq!%@#t+RyI)>tXcC%}jKlV`%k~pls?CO=^Hc2Q^mNtv zdg3v0HrQo4ExV%)@N$!y@m_>4=z3^s`g>&bFuA(LoAznF>7TQjP!1xM`_f@Z38A5V z+;#4L*m+yj054rPw4ZRgTgX$p0_`=M^nY;-CB^}hFTKrL@NV*^iSyzHe{bj(RN}rV zd7%NPfq9t@HJ>Q3>w40sW{5j0vv5!I~yrK`H1l@!WmrO^>;C z_r~ix;exR*{8+quoIc66)$^uU!9K<}_d5h^l0(vQpQ6BVCFNL!Da_E|!gB|J43&IWxX68f>)O$R2LX2+!>t=)UE)(X$UD#FE z*M)wK=Tz$Mh3#y0)y;$-@x-fmWCehyTTLG~?YOz{qGf`6@X1E>br0Gy-}Z|~ZTH#^ zlL>IpEid>GqIz*86IH`zBqF~tsaz009vHe8jkR(y@FURSN5CXTz&hlh0~W~jQ$i~B z{!t-&U(5jE1VvTh0l2nufcCD@AGpTfMQe=ia0uOj5TeH4xYXYb1iUzOvL}x_3{v3P znLOK0{TSR56k+f^07!pFpt#w7L>nr_v*=s}9H+NP^v$x#-ds};JEA@KS)<+3%Y<+eidA#iiyQ60C*@GyE)}4g z!|B^&b^smt42QYAcp-50oaJGg+3ImZ)ek-GWdpLSXQ~t0G*(|Mu!YK#T|Ky3kbogN zASLh-J*niGsmaFb2m_d8sji+I;oBtpfBRPvABB%ou`aaxJvc^KtSK~PfNDg(Zq*s3JyUf+4gqYsQ#3sF47KS39EKl` z71DK|G^7&n)EtSDFLR`76gxcp%jKkdR$2bRzJb2t*NxDBN(CY$>Umk55%imz)f@(C zL%0yR^FtZMuHe|g_B5TI#H5{$ORi^x7miIA+{&9jJ=y2{NQi6Y+OUf{H1Xvh?n~Dc zH&WHRQtI^ur@)x9vwXqZ*MVtfQF)co;|Z=5ewao5?w*QFB^%&iA(I*0ota$HGd`1w zsYe8ad&4iYFJVk1yo*OnzSR2Qk*Gc>hpKX*RCn+p?GyWtwrjsnZar!DuWSfGlDp?7 zK$nd?SDXnrvJFw45Zx(`Ljs$`fyjP@IVFJNmqK1iP)!k=EMYnF2uIZ<9%FQ6Pou4{y7+ou!&@5EV{%;LW^H1Vxv7dUvjYQk>flBU@ z2G%~saV{<7C&l-&>2;T*{yl_?^fQxyfF(a1%PNeZVluxq%U~hXM0Kiwf2&JU+y}B)$ufI zCv8+lMA^4Kn}&1ZfRl1}>fNnBmE&~mllvIz#Zy~=O>N@ooIR~$xZ&#rZrC`ZfL-o= zeENv9^RlS3^Ik>sc&?J({lHHhxE#B?O`flFNX^=-f>4p=u!LIdKX(4r0gULau@G2Zu=pDYP+^CfKc$Z#Jvsa z84p+FR*)^LZIiqB{hPOomdxRR@wu>|G+D?&6%I~hlTqE1BwwU7P=FGy-;2RB&^yBq#eHCR6v@;f>3C-Qov6Zd3SvPMGibM+$Qwg%}Li7^!5tZM^*eQ`EA&)QEL}>t8#wo(GU|C&RuzQ`L zH~3qjgT9+>K8vrbGq71N7~l;)E;BY~Lp{!C+yh_3njg5_&q>~~>785CdQYT4xaoWi zjC~E{D=qew7Q9@)2QJ4U`q^T$D&DGWPr$4R{-ABA^0!c{(|Bkcl?@b+Tj_i!8xP%> z6b%?iKq>(#DgY01Bx0-XbcQ2v`TyM&9G@Oq9*1iDz}Od1jZcexrG=ZwBjZ|g6_6Fa zSr4`@S}SOWbz8Ocgy8&XQisnumLPv9HXs*8sk1R|(cU?Ep_qcNs+tv-su!fwP|gsX zL{L*5;tuRZ^nrc;PLS=(=jyFDL|SL*YdS`UDd--5T}SPG)5VWhT3PTe!9D%3Ff-Zf z+{rHS(!ja?vs}HogH!m)O6kr0CNCGJC}ke4Zxbv2xN8xC$pp?xiUk$pw|k6;^uXqVl?sH1*%yG)yR+@l@IH-N_?QrBQTQN= zsOEbL&;Q_4RBTvl@r%Z4u^`HRT5eWBXUhpqKQShfAATM=Yhd-_&ut(QrO|a41sD%q2dSk4!@!aa@2B*>ky64{8Uw?wK*j^cLsN;nE~)p8 zv|HbBu)j?O|B0X!qLNQezn(xMu1oEg-uHlnaRt!S0Vief{Yi=;=DM_m9L!Il#w1t3 zx1JplWl(4MJ@oSEd?Cg-rj)0^yDzw)PFn+Z`ton8%|!% zlsU%d+^MY$N3jPt9hIWNH%{f0kaPRZhpF+m{Aj!*^dd(sNXA*CNJ`=7h*5H$E%SxX zQ~~tYgzrCKiWGTAklu^ig&%F8lcI@V`-Ckm`3xos*W)XGUQh04z@=6&>7t1#7fpn5 zjm_n_-gx^mAXc5mM7k%kK74nAU~hEa2ft)FXT=TlbASWr6~gj%S;Lo6t6E_dD;bi< zs1(vwP15UJk}S&|yuux9P4R@rYZ(w?wi<=wDp^L9C?>mGCb~k+k>FL-do^4eM-pQX zWU}{ca>QE?(>2<+zcVOl#?!a~X+<_bSy8|tjr})#hS8+?IW+^Nxx?(}3 zb+*hL;)8T^yh5W(-Tod-$qn`>ce`suigW4vYH+5(m9{{hf)F>D?xYlP5rQY2E#ik! z0y2V=GQ?rP>fy{7%3;8A@S_eQT_h8WoNR({I3#f~*$zkhMLBM>9qKb_WO?#8COFm4 zk@F=92P$M8o_q4%2Rr|^hMv}ja4Mt+BG!2b=`vWmenf~{4#8i1N}40|j+`l1>8>N4 z>=C*+I17vR*j!m|p@tmU2F|%#qbr{Ta&Q|z0C}<(Tpc)R!`obnSlm)_Js7%Kma1i_ z)Se1YP*Vc8`H3FDir>os7?ve_Mfc!_mF$Zh#_A;EHG+;s5%jbyykl06UN*q2oz@>W zS>lW_h8y~g6o>(wAo19I>ty_VCgVZyvk`;^TM?rf(8d$M(0!O=9wQ3d=LLUuql|EA&%3I4m}1Qe3N3LC z;dUv~xu>(;bb5@^-3mc7*+w#xVIU{`KcwC6pakycN`mca?Dy$B zmWJFj6t0u!y83G4PNnt++fC(XyXywP7gxkx|4A!5fd>l_(8+oEG<{xv5xocF7k80P zkk~iEo(Dnx8@~s-(1aViL4J(Rw679tHfcqS@j&7k3d3%3n16}P5}ljp^|MiQ2ogGR zcXj7xc&IxD+|O*_x@DzDbNJxA!d-8Mrpl^74$NXGySrDH5(~T;a{kd2BY7d~d~u$^ z>ZDjF^4!M5IEV9v#wJVR?hPx)gk?VhbQkBZ5RJR%rrask-Pfru_8040unrkr9|H_U zTyb*x(qSLcvf5rNt;bEqYjno8dzIW2obdR6366%mc5`${WYjzC zAV-wKT!OBJKh|Po{I**~Im!#)ts>A)KNZOVFTSc33(zZeqDrw=&_;r2D+*}^!(^zU zkdt~<_E@Rr(# zflc#S;8z-lrpOy3_*8=Y80I2E(+5$gg(?fBL&T#}KdOv@uPBqPFhZLvFAx8U#wPH~ z)6(Z*7z-@Of0<36{^l>E&7+z&dv&I^``n_Js$G(`YZ&fBod7(Pg&HRL-$FvtPle$R zlu#^8!IXGY$N!1u^}U8ZcT&F5!Y0U96n=<&oySaQy7#xHW90=NxwLsgTPI9nG%eGU z(RTqQ{E4U+p&?^Wp?M4AdsvR*Sl2RIggWE+h~KU$J||>5j9P7ib?(0YBnz|{IpB&n zE>XA=YZ-FtaRNOdeUyiNe18!RtYC_o;mJJoW>DD7IDTe466v9G~m(j|Pb)blC-C_G&o+W9A;UXfVFl z`VBB*)-PFZiEY99senu;dDv;>A1v0>a=D<&GiIl?3KN<{rCBZD#uNN;t~3)ao2}`NI3Zs{`Z8S-h16=3VrjUVnELLG!kMeOI9vZPFMTP@`bDT!C$L$;vWUYd8L<>G;cb0JJJ3Cus|)h-tO^9SBWy_B55j zDistxMKV*!|76^HhJ3-_52B63Ufw$2&I+029=sx~+mcPnKS*8r{{)gmciy!tt3( z&1-5G^nw&@ecZprFR1FI04Y}5ULlLCg>39Muxqj|6*q>0WQ);2h@+lr4$S&;4;zhMY zlnB!AUd}uq!0~C73JCz9SosBec;;c>}@`8;^F?fD8ULq~P%&4|j0A z);HJ5LK5jr=CV2*?5~nEt88;UzRP6|s2aH2`MU|*hqpjyfG|18QBp8`5xxw?P;9 z@WkT@Ap-5g6Hg?BB!K+~b%Ooma-;A8Yg$4+LBPWkKTQbHWhd4q;3wABuN^-P?}mpk zY6oq-MFuiA^34lh$}DE>UMK^S!JsZ(i!su$lPxof{VRkT-52m3zK|cQ3zi`BfYL|) z8sT5eOPOZqF~vkvDSMjPIV(2IJely)SQC9rxzT`W%Qkoh5*ygnAsd|Zmgt?j1`*Mn zy1AqgmBUnt^EdE1RE^YpG0%*3^8@WMu`re1fYf76yc*awSBJ*FOE%_$jmUa>F7PmJ z_DPxiqpTu%T7QI9s65*LhS7DiWP^viB?ywjbSCkoC8X^yV3P3uGCE0&mQegN6!Gt~n$lHstObOI(J-|=!qs^c zR?i-N+ZF*9fIfyC!lgBZ@?=et*Rk?y-1f!^dZ_bg3QlO`EmWen2|vk)=s8Sd6Q28b zQ)K-&Z;Z+C)&=v`DHqj2p5UtJ4cuBIf?aT=dwe>8o^l0uOnzl<$#EL1r$ZphRix@C zfjHicra(xL9ItmsUxvp5m93`{u4=b;n1d7SPd2@31ge9`mY?1RprK;a>N)~TQ+_d% zn6Ol%CsMXrt-VIQIMoj4TBEc}(O@mzx}C~JE(G4BTfD;Y^VE?O?WNz7BHc0JkG}v# z3SFTg2Uo=Lba<|yQNt4+0`w=fzuR?&(a5NMmbkHVw#hmy@ zdJ__6!Gdi@SPt2G67e`A)*q=vCKP);tXVv_KMFKrvJ`)R<&vRD_UJKyf1TSQfX1w4 z?31Wv{~kN6aVd7owamq|hCn$I{RfqDY_bHD_nC2d&lO~E-Ue9w)|8&+6Fucz5cZn? z!r_;lT!;$R%z4ZnA}<)-tR5nR*zf^y zv-Lj-9UeuoWzLCHflT));q>ECeajab3b5266IEd!#|OJ;0?ozTTD;fa5oCr7Yank) za$4fZlU+XI##7+ExM#A{|GXyIijKZWto89VtJ+Nus86z^&`f*sI(=h6~gZ8WQ*nMSI8;8JW2y^i7MDG z?YfBrh$509(xr4WFyP(Nfgq;PgY@H(+;}DHAV&O}j_*D!`+a@6xyD19=S#0~pBVmR zLnOgwo-EPr66~?h`|5s7l74hMpB(n7>d8ZXGuo3Lr}N!mpCbA7WTDRow)ede)eqSJ z9UY3oY}{6WZV^Gj?ZQ;+Mh~P%(LIz@d6V$iI_vG(@Yn*z?V4ymc@#u_EEepR{<+s3 zJUiAwbDZofcFTrY9C5kWspx!m*iivxfd5(GCY^vSD@lNECzD;Z!;VTXtyf##??*O? zZh8OzcvoBAf35=cmiN^XXm5EJS6o3)n((G%WJ;kNtY*CZTF@8tfc8~t(+KZ%@-70Z zC)l%29(=Cl34({hP=v+scwRq*^>8MYJ`CO~43HRMORmS+pFja?WsZXfWCeRR@bmfU&pG-iTnb*G3U*`} z^Q@q{x4;!`muuHsK$~OS|CmCtQ@EJbCoPf@p`C9ByJDjHI*N%p@DeQF%eOL;j8%ie zcvw#=9){w2qU5=OXHQq|-*_M$fEMY%;#Ilpco?A(GF$1oS#Ri7a(S2PJReCnkVbGI z(E9+RN4^7Fz0O__Us8EryUZ?QAUa0}c07F6KlN@YmgTl|sHb&PLUFiV7W*%|J39+XLeS@@eo z2>TZ27Rkyh=d>z%ZJIy&0{+|0_Mlo$p@wV}&W<=M4Y8kfZ_&wvci=782IahML=s|p2M;7aaX#j*?iV)1&XtWq&ZqYGA zsm3JsKvTci#l#X*NM1SFyR(1nM4fjmF~$8$&C@YV??b-TKPHnHnpQ$gYC=pjdOixRi`|F8Rcl0jQ_>_wTu%|);@;~DY#{#wn~uucK;W@!(OGQ@Wne^vT2BMGjzQ|-ej>wAqY<{ zz;w5|BUe*I6c?8S$!JBC~#=8b7(fbL*zX6fXeaC4b+_9|#nmUL>gx#I*Y|e6MV?*YJ2Q zrrE3%ZgT~fj~%mD&g#m_JBI>FWPLyIq^I}YB+rqTxm-z3(cacgX$Xj2&a(vOVKQ*^ zEqZjm;dQcS*Z-~HiWD|e`nKWO=&yj|Xd4tlA<5WJJRJ*3uXgZ6(?Xt?=xe-5%wNJW=NwAl{*PpC4`g)hYLOcgYHg>*wyw+%a znXR`?PjcTLN7YHaouto^lxGuJ`Zh{pNtPnX`X}h)`y$c=^Jws1A*k;6Z}DS}6+>ufWCxkB zqvAXDA7z2}knzzEJi$lAO>N*MdyQAN-#g#&c5coN&V?4|rpyd}lSdXLIh`%O@48{| z9dsRAXRRz?QMDnc`J7hqTB&j6ADH4f5x{<1s9`9iN!J@)pE7_uKV^ILeweFxw(5F= z0f%GxoF`H#&K;VBliw&og{CHV9!oVQK8>@8+bf4@!n*ie#z&8sNuS`);Zm2e8TWg* zN!su{O(iTztY4>MgtmZpMSEvPP@E9cIfsiuTaY4=btR^J9c>`osraj<&{Wz{QQ&U z{ew=C_Lg@>q)WhzjlXg!kDq_Cyu0l37Nb=3D{rxs$Im}io_~tK)=WVQ+Py%R&(1N-x+uViA;1h+)J81JXSo~nbvRqJIe8Tb3v=OC1= z;l222qwMLxGq%1Mn(Acu-T6N%`HtX&YUmmF`+IVVk8ske?3sj=Ns==7by6l5zqGQ( zQ}q?)rI6~%Q&JgaM>;pA7Qc+_F5s>_U)blWHFh)B!cKjG&kh-b zS-)`wrxb|cSadJ>R~q>6kTGIm?qYA?RZ`rePGyjJ1DW*^4PFKddtw!E%()l@vGwP!oEzMpNr_ixYtn=4pmx}1Bc z7ZVN!V&nejoV%SLf!Yq*VG{&gu|y{R&)``iu}d?N41{Nb-jv7HlicOpzEcuRd4%}{ z!J_AnBnMz|U=FMpmOzC+x4~Yol_{!G5ofMV*OKNhAgn0;w-#ThB? z{5L7(N$VoA+gNPKZ4g|(QLk|Mltwk!4;y(e7Zx{^@w~%QkNiO>p z$&J~s(4uFJym!HV80e94iZX0QQz6xekB{U8?aDyT|suaT>|Z)j ztxYv>P^h@3=%6u=1!_v?+qjdxhY{%7kF=s%+kF-RioU#o_W`;&ini_@D5aw3iG321 zDTQQil1mFVJA)}ja-1l19f~BoKXRNRw_KqwU&osXp|0S~oL4AiO-B#b&@5z5jzyx( z%Sd2L`JE;jE7wOcrlu59$YQ7GR#qBC)~1@ph_-h={;_O0J6aYv;tg!24-SK-1|`3L zVB9eVVVPZI{JMg3JYvYcZLqMc2#UiJw+M9F7Q|A+q;8XeGUP~=jdx_hHCK}2*3BYn z2lhnwMYtAi((R?|IA)z3>&;#E_~ZC>tREjtlYX@O$K!lW_2eAs$s436A?2CDIrQWJ zY93K**Zk%E_}TY#KT?Jp1ASppT23w4-MmnBGvE04v%5K* zO)rZ6NO5;BvB3aK!Bsh;FoO#5_+HY5o7~S2>Xb6nNxdu~wRAd~maPj>XNM@=Fozx~ zM1gkDxVG0SR^Ztx=Y8PV6`aidyr@pD;?2gYNz@R2%&vwi(i5tn(5@UQRX6m*2_#)Y zQs$!Hg9e$4uA;Z}T;ya^31B8@lQ$;$&mn17rA{hFSDkb>VLb%axv!Ge;SJsFWK$kfsZvCql6Bz1zB8CVbUo0hW-h_U6opO<`Gz}`tBEZ+ z=p|ILROk~WQL8B8i|gm~10)7@qP;k0!DPx6li}XN7?Zhnye7^lF0H5NAxdKbTJ9kz zgv-Ff73E_>WOIKcxdC@sU{E;CuA9Fl+@k~-neB?i!pT;0Q-CiqLN7z3$OA>Nfjr?Q zd1!H~enB7sY&iqBI77g9%>tdSAS}0U(%Wa*y&V@)EQSQ=d|%@dJicn&QLgYfmERcb zgMqy?xTr{0!~Tf=1ThGtzQE_v?q(HHX6Gn*2w#x?mcyU0fD*dXEG{%wm8x&y3sqYa z`kl%4R$037NIqd1U)cYz>Hgp0t$Godu};|i|Aujg95TlDAHV(kzl{E87q0IA&t;iN z_rI>^WcQWgd!P)WdSLfkG z*x}C1t#}dYbNLQHh?Gt=gIzAc^AABIC{$LcDz?$3gq3+OCEM6e`P7bAf z3kMm-{ZAVAKkX91ce?3zz9y&f+mR~^mH9!W-xtLg;XKAR6s0|2j1cixTe$ieB+g=r z7TboCXHY3oxP}L?`@vx`dCpHsa?HRlB@Hm*ds(){kryuZE)u=upiu(4>?iX zTrT}N`Y$m^>|v}+fo#b?`Y*9a+-?_GNP+(nlZ5R35eQ2t@Lyt+c#E!)0+B0^{!5G! zKeh{8Oo9I@tHj)YnN{NH&bJe-5>JP+GymU>5+X@s735cp5*Q;8F4Ukx2USvb%qSsW zVwCusu_|hmz!+iNuPqaaMhTs=pHbpVQ^t%EUz+MGjS^Drml!1^n)&`m3xt0s8YPYv zsri0Cd{tb87^7Y>?wE*Gl+9H9##ryL%Vfn)8yna&X{>&T#Y8n{9EGWgjAv2sZJHi#Kj~j(*#&ZokOX?>~oVVoH6~q zitG~2e6cXMj$izgFcF}=U;C1g_ctT&A2PQLBBRV7qQAeZCJ&7KYVw%y=6s?~qrX3s zpudX%%=~GrR{Fa(Gb#OjYg~U%P~AUKs{1CTx^q)=b#7kZ<*%u~qoWt^QTltsSL*LK z7j;LJ{=VN^g`I%O7XeG@@5hZhu7a5v-6Fyz=qF@25`gjL&Oxa2S`KHFT%pI1 z(fzX0-cN{*j}jmL?g1HK4Y__>Z`N3h>dkV_75v%Az#Nun19@F(&Pp>`BsheK;+n~U zIWmePUyi>`961sD2mR|-g4m8(F+of_V71nfB)YO_oejQ8i{@hM&2hygsy8=>#X%t~ z=Q|W7EGMo|inrGApg!9B74m0P@5@338;KT>&}zL-Wb0!qrPU1cc&pQAOQq;zG3oPE zeeCH`CpG%{nXyLO(&z6<5@UfE6h>((Dt*R@s++~xNZ5zAJ!Xe^z`EdV)%MFNv47hG z-yz*^*t860&N(IadWl`Db@n+b_Sj$0x@<+fj9Av0Il(X_dqxaY3aP-d3%bc*-N1%yNd6_6tQ`977u&?dXM zW}8VY{J7stH#=1r*mQoQ-3%U-W_a8h1yaSv&PbM{4oq##a?1S76z9R;Cr1oKZzX;$ z@l0kvlXsbEy~#`y!K;uDg0`t*m9oYgtM@S{0>t~w7njK(Q`TvJY2Xve&Lbz)oM2{Y z5Zz?(eQLW(d_O4}H<0lj70k<^J5>qHMt&D+8Vb$`;;-FfR4^rNGV+**!peltTAoZ^ zV!A(u@%Xa=GF?q0vyr#0zX^YW1jbDGF0^!I!!Kno=2$n{49;McAs>B4)EVqN&exc> zn?;*Zij4D^96r=~jOZ}N>gN#hsULfyy$y$^(sk1I5wZiHeVbxd7j3_tMn9I@L0n8u z(CB0bsIr|(JG|6d0;Q$?0ZIIY|P$8LNrWSJ?Yb{C!##c>WMLDBgr?=iOe&o^q?E! zvGPAG&c47{bqDPW-ltSUw8|3k+cKXZ4IJd`{Fkj6T&RrpvURmrHOWOA7G8W<7bH!}$s-R0W>-Hp=($3Cjj5A+F2d(vk z5sLX#$b@vW*y|}%l^mb%8%{UhzbA_fQMASE^L$c17z}p1*8cE!b{)bP={WHk#FwNc~!W3eCc6( zgUQ$)^0O#_Oi4okE!;uIF^8FIT_36vgipvnN+>+2>hFd1%lr_ZK{BNNS6`M6=#aFX zE3=YrS&-nx;MVsPC+BcbXOYv7axlRw)!({VGx$N1KyG}k1F(KXfa{SzF&q^3Xngy{ z@&4U5B^%!7U`<5#cd)#OYoydp6dAwRYTEAUY;Sh9-QC%q;%r;f**@Occ1LHs-`UpX zsp1%0Rb85g`$gD3nu8zlcjd4WbkPhi>{v&^@}0w-oqyn6@lO-GrZs@Ez>^gp>ofXI zy>77%@XF3XxjW#;8_Sqzf4m`WqtX2zXUK-a{YKYXUOenWUhd-F05xTo1r7ypi@#Gm ziXKBmWp~`zT=o>hr*Rv$Pq=7KS>UCK!Hl~VN5%K--Q~i?3te;NJ__Nwg_1}th`63z zV`W?-UCT-%hsyADyD4SCeA!RyD}JHvPx>Cw_CjkL;M*Up_ca$<55)o=kw*Ihb#>OS z>@Z(oorG)!fmSFYPJwk)zKs{DBi66-1hGe?wOQ6r;vYFyk9@$s@fs=; z0vmb+BW2j^e%vdr%Rzgu(LD=km=jn=*Hm7D9LC7b?c9gbu$#qL4_i(1L??z=#Ja1F zi^Y1y)A{y^03L6Uz1cb{2Q!YzXfnZq>|f00Kn_bR?ohj|Q5JRY^^fM1_pGwObJ7dJ z+3XYrY)xlRm+hC;+56{B;Q#S<6QgLs`klr3`GpoG93m zCJt`UJ(8^NP=+@&EhRYncv)zwoCryq;SF7tGJ|}_MM^kM?WUDMGT63BRpi~2<`ECg zEo(ify(KpkeMxn4fPq^jsaC4AHiP497exUUFB>Lv48I;&b)M0kgfK2V+!G_J7INqh zHGpY$NxGzsm*K~abH&X*!%3Lh;SSa);q}cAk z6TA?uByE=AE=4h*>^<6aTeCMbHpv?rIsl&&+;B|~5pV|5qHs<5&f%zkt!tKRu8^_K zP@rRux8Sf@w*CvZfpo3kgCE!I2(qXUhj{xg49+?(R86)#p+TV^ocQJj%N*9tq!!{S zBr~Ip-_0gRL)Gx(+9y>xM5RWLYpzr*ge~JpN}$3tN@4B%Xp}fr{|Ma^s0IRqV7fq; zHX~YpDeXNTEIV#FRORuppupxbBP8lr6YaFYSx2qshRX;mOHs|)k~TvzS5L^3!W*sB z#oBH3g}f_%DK_& z+~#%S$&?UDHqW?ys<2D-%?N8(1c1UM9Y4>*{*yZ6Hkpbg1&frLLbCc!?ma=I-3>CT z<4D|+WWAj$O`Q}&V!4;Qlmv<8QRGFDX+28PM24bVPqp0TW3Nh)ar@n>L2^Ac(@L`> zRd-dxQwh-=U_nAC+#=2aTnQ27;bX{eC()nuxo!dUB`x@dHIh7<`l5hp3beZ=c(!$> zDpenl5iFOVg5`46KN{2fkSN1H1l=;@tiMPx1?yh*eCHI_6TXuOVGCJSxBZr5{hR$( z*oP|?7K*Lw>;R9o*nTVTdyv!ceHTm$X8-#f29;21&X^slpoOHFw}9aTcU316IZrp0 zT~PEd9V~3fxz*$B^})Z3e4&h_<$uxLPGXM?d+tLTpmIV>s1SS)9T47dDlTnG5FCat zj6|++EeyM9_8O7Q;`b+YzLytVo`)++(>i+?ZN;Y1C7UNa;@@P;m)cH$b0K&^IbE!B~iQ--}+h0l1cN8?hhav zmxzYO>VNPWNXdQlT#lDoqo~x)z=!Sr`CLbeX0g4bz~JKxyewCPedr4e&9#PW2yn@5 zz09jGI5gKM{x~IA*z&(cD=4elY^+{N)fl>RSVX;|yu|1}LhKdg?HZ0?dBzpxZln86 z6?l`;{Sq%_Xohli*z{2KG6(idBx#ZRGHI?Y_a*a+um@(0u1;KtDO}yiiwJ&Qzvo42 zyec&I;xRjY++Qx^!KW7t<(4yip2H%Ndpw^9Grrm5k!fGKSjP!!k0;XhI$N<(4e&9F zO5%0CXQhC8DKK7`NAHIA1h`WWma`!le}GxWL!J|XjBoOY1TxgE72e{_ZLbM+?*w4! zyeHN3b?YpiebWT52Ynb@z}~v^7+jChdW=_5XEHKbt|g_EutstQ@%M7OD&j+HrFy<@ zZTprOmiGJ8T!`b6pAnXqFl8ezN(i;b1H%{6qS`gA+*ohMR) zJfVq2YK?Wx6-8~sg7Z>}7o@bE<1TK_X*)YO&n#YG;sr$xspniT4Bwi4I0ST z6M%f55|o`pNOYhh*gM{X!ckW3{L2^;97*ZgknLUQj8X;zd#3 zW?rzQaXMfneuwwV?6a2r?^^^05qNvwPPWznI*C=GM%Mxc1^Y>|ya8?r4FVfVQyUhQ zrjjB#R%#6HxR<>0?ePS9_DEX>cRXST&EtK$6pggXwLxVfy>Jv2aMQ?<#UBS;0zK`g;MZW+H2gk(c^r|TO2m- z5;dypF`~SkN3)IF9^kFt0TrWbq{#Tt!>8;?{CUC14uCKJOQ zdn=M$kJ55tTu#mnxG<%DKZD?8mpaKuFajc*LYs!a;S$unfbr~yKIfC(zTHtCFJtP4f=a8uhZT|5*Z9q^f6^Lz8Ep9m_{0-rwu7 z8aBPeA%e}kzf2ezBz*7RYmKG7#^8wuyv2WCeizKZ)A{BBPw~5+P{vOH-oX@cuKz-D zKzih5mgjzm*D7EBOCIO$VD@c2*)lNX!lRate1WIgWzG<1eER|!xn<5ztUrHKvl1VD zcM3a!H>vi01y9-1_L}AtF*8GyVc2@VFYt`Dm=P{~W1dVK!Z)U?7c?KMl(%p%)7113 zPOue$JK2%?j&&c>lC4hv2e0Ri8@hw|j9n>tR=j=g6MUeULEc zHH&u}KllzzMS*=jFF|IGqY!?5N?GWdB;~BH))koTfbwTR`A5lCpGH)QI+P_*Nl^X_ zD8D{~-~sAzmISAiaqu~majQ4vFLikHd-0*Qp)Bxss6IJrUx8jLToC?7CvPb(er$q2 znbs>e8iP}~PjW++xA^(x+qwP-58)&?e@rN@q* z9(}@;Z_bX6ofHI)gFZQnFM_U~i^ptOV?2!O=#4me&$!iic2N!d z50opBc7PHKmgc_!3$xL~)IXp$Q2r_J5Ai(C^G~P<&a&c9_&m|JmxU^In<^5=N7hfy zw%ZwaGb+5q+8A$Q$LX4QpiQJSt13r9Ze7hYyo#L+cq`4m)nzj$5Z!hld@W-R4y9xe z#h{q&G+VK<0pJwgqGqn}e~?RRaN0E-12O8#8R0eW36_Z5FM$Ohwk*&$hLESi=I2t` z2iOlo>W!<2xYFh6a3%w7%nn$omba{*pGD5U9kv5CN-Wuc9!A%T^s{8j49K~;tZGk! z_am7iQJg!EC1abAexg^DKA+{ef(fwuR}!XtLMV%8aFOW_o=Ngdqf7Z*4NfSUYcfCv z6&I5*G~~u{aIr_;VVv9cPpf?}ZA5pMn((BTqCDvt-FszPymhkx6_;QzjCK$J6cgT< zql$gANEQ2gN_Ra{kx=X~itYPtJpG?^`UeuzFGxuLQ5HDygA-Ygz~Aa~(q(ccdb81W z4Z+spA$9;FvK#RZAs+2V3HG4-i5$mNB~;I+UYo`WR19(E~Mi(V0vG>-0OL0st zb+clkR!xGRM^p{vwK{h(udUQYo_UfdL#4-qO|#r{(u@~08E4{1Wnjk$vg2qF1LDwKv?dw{pp z-S~NC1?K}*2*{9A7uFl}1CiMDRAR8OFm(%^Pf>^@a|gY_J4GE+u~`&#REi4fqF&dC z;g@Au>uy~Xz69~rq0)oMg{jMRX$U!U2i>JhdxLWJQR+r=R!hzEpq~GNnURZ<#GyHF zfJgq#{GkTRYNjX)K9)drw=bmmKF%)*)`bBgPt5a#x^f@jn{s7QlAv}85>ZnDxmbdl zdBrOc`UyzhsQ@kEH}#>*NHxhAk$pLhugC=zte~Y?e}&?u9rvrA$Rfyt;B2aVg4<^$ z?~RgIR>um-rF{pg!Y5K3K@_*xF0R=wZgIcj@>FqI(c&(N7Dty-+*;s2skl13xM6m2 zgDFlaPw+v?QczaVdQ1k*x>SGz)0DQ3(yZSNVhBI{V}-3rfr`tx^GW+UoD|3&EAJ1H zYGNS!J7Nd)VSk#(d7={xRQtr3u-h$kxSSyCkOJ$VNtuhp9%8bVP-x9b2+8vW7S~zs zXh>k~I`Tvn$89A!S$u9QDOZmU>0fyZXTbD@&xnj@0dV*;*tY1ERPLd2hEUrjj2%Dg zChu5p3pip2ctJ@~uUjt=5ZHjo*=eTR3PZ2)ACyRAYhp z2s~j#l8FCM39?du#?yMRe*$P=;h=S@tFlttCBa=ff!ISq1zpB=|9LWE&aYR=pgZYN z){Xh)ED0B1N{}FN%AdcsvEAwQ<;A>j6H3JV(bH{R_2Sb z!q_8mMjiH?DX8iKjbip_Zu|QcYwqQ>ZL@Yr)b<$8h}s^$VvQ`Mw%so?oOWS>&y2wC z*|UIshxqsrAKmj%@3K;tU&`nUuGvF+BhT9Pwvl%r@KInlE_aN)qb$JhzzL6W|GW&h zk+)&j+jbPI_hBhY#VbcV5=9;&K8iau*HB^b56S!hXUjAh09T*h6S+yikgn(D&AhkMu_Pw|ryR#yB5 zk1eGG`&1a)Z6xeX9-B)C{(~^D+?8_ICRESFFs_ceYZL2eCC1%bT;%QAgBx)JQ zwWU0@-g?Moj5rHSr4zOPP^mE@O+tq8GymB`uy)WfUk)a|Y~;!JJF>@-o*DE~fvD{B zd7sZthypgFJWC#l(_w-1XsEI9`DmakK(7{XbK^jx>rxHXUb+sp{NYa7<1JuG^$XB_ zfyNjyGeto1q)1?;{LbG)SufZ?0gc;O_z#zn_llGvA0Rg`R$UZ=esE1qi3axrj5-u# zUOW#TLdO@7C{!@ES1arqI$&Z#R*fC8AWcE1W_tx8tphj(r9vA3y)00Hq51CsnLMA9 zc+P>Igfa;XOjYPnm{v%8QqqDhkA&}V1-w%ATl~Go-;1umYo$isc31vZmUfM;`?;%P z>s|*2m?U0ya)kI3o;&acH2zW}@BDklFy)6>ObHc?arM5>WwN`Cyy15fDvO9z)Wo&R zdAmxDtH*NhQr>4+9E_`XQ2*a(K~uqiQe*zdM83~6topghm+H_do;2n^Pb-hn!e=C_ zG5_zS#=_45?nC*cj2HMm!IMq4SMMbJ2+tj$h!W?20urx2Tx#TxJ;P-T&Q37~Q!q+I zmaF(F_?P2Xv7FMmn*9JBI?$Z9m!Xe4W-AZd*dn8T?+9RsNe)D3Jh?CTAjs*Br4!E zZksH^RVd|uY!G(}EwRF%q(B8T&(aqTFh3$YSHa2K&<7|YNq{ZG0izlj`=vleWzXmKu_2B(^7dmA$A_}pD2XsRO+O=ZM_!4OMeF3z|F=%D5d?B=N z3bb%q1+5;U0KkYi71~{20PU^>Xy1i>d>OR#{AqEU5`z|V*%w3m#lyBgEzkrmoH{LT zcP2nP{xs0yQ#kc2sli>mHwLh8LU8mF}tF&UncmIEpoM3!e_I&6KNkLMgim`CLLg`JeI%Oif9~U@=Tj%)*pR zE1M=_TP{KUnu#7(UU|;I$~2+_0~vxmH6v?>0u=Xm>_k%d{3nTG zCdm-XEw>pTV6Ph-HvE4Ov$eT8{4;%?Q0=EWS^k@1(yBoN;gHCG|20D7zX@na(fv|* zX6-Nk*>c}zk^BD2o)84R*|S(2lN$=%!Flt7YuA8p_S1C9&EDdvSrsMLE?3|n?admJ zatZ91mq8J#8}q&^J&mo_DUIa*5mql{-1fq?Pb9N(c3o!Q@$ZxwpV`kvmvlFe>dl3OAYr2uE195 zzAc1w?{x*9a&fn*^kVK{02{G~Y3^gDXN7d$`-qw!CT8JBbm7wk&to>6C;ib|+w)A6sN{%f%A2q!xZZ3z`wtv?TpUUZxihd4jIm)d#C?Q7sZb=xDM)HX==L-x!Hc4Q-h+Gn8{Rpa8Hk3c}^{51Ov^&T7zvtPOnoJt` z*MYllsqi6kGV(U(oaAP~jdaf?0nRYKMZ{#ww`2(pxs42=iO#m~Bl-kV+xar?+(>~6 zREFZu3GoC5EtLr6@iCY>mv=h1`%#jGCMNY^%aZZ}tj&ICz3ou2%7TAd+xSi}*8M)6 zNB$5c0o$fMP5yjeSgHLP5Vg` z?GH~V^%s1S^Ew{k2~jv6#fs?&uT_mINxUBgZPWH7-}#=$9UOTH+1P5Gt&WVlvC)io z7k_B1b|=x6Ds~}owd2sOO1B?FP{$RZN={5;+{mWk+}(B&S6F`7`GFIQTv7N8AsWGh z-06cSgY!wsD&>~6j$)|N;7eWja|IO|p?yN6LHCw4DJ97rnD9%Nv_x$$OtW@^C|PGQ zZhwcSxH`t?jx)NXJa_Sg-;mJg>L5S4e#XbP)F8j|Pwn#*OLm@o@ywNHSrruf&eY(- z_gTuzeqVxQK;*cMCvc7&IP4BwcCE{FSWlgxQpl$3Cd%$8VtC22W(;O(`>cejLozC4 z^)&|%Fl@^k#8rA&Kg6HD!q5PDVNV42LeT>Zw2Sc6rnd0mS3uz`*33Sxr&rCq?Hu|J z^Vay%z~?})`cq(3F77c|$kjP%;^EQN`(7%0bDZAZ{i$B(D}965vSs>;|6z3fO_~(s z{;9)OJB{GplKrm0w&0{RZx!w!R2lB4guQlU0UQg+zCbFA#DMtke7ib|=%0_}O>J&x z|CNhdJ_AECNa6{)vRKejc&R5zAgeESUz?{YbqGnIn_MyQbk9bpVmW^;cRY z3;iCh!HP0ezUTEgRZH89q^Wct!{{eO*~3Vuw*GPK zM5HsdfpBNvx&(gvS0Vhq)zR@GJctDruZ;UXFzX6DPnQ1yZTm$EN8cx^KaT!-6kgLI`BFVZM$j2d@ScnU2|bLX_t$SKxDR;IJ?MEiqnsdOuILrXP{f z^uFH|rzg6b>reElKl$A%g%#W+gNSyCp{+2pNBTlHYtx3yq@yU=}2;1T{?5- z^qJR~!&@C!&vnh5=AAZ0e|V=&p03_JrM_~rwyDLu?$YZQ`I{EiFRNTylRlDv>FEyB z9O+%Q)Lq|VraK0DCC03+Z>TW|sj2cewX86kEB$pul5l#Pe=^0W_j+@DRnxNOmYUYq znrfBhdn&xi9A8~?x){@(Svq63cV?+urE4+Ax71X(RZ(4~)T45nW@Sr_Dfz2wsz<4G z?WV48t~tJ`*UYg<(nVAr-aG^|K>G&e4DG%w|^d6{F$vSx?BzShxFx!mDjT1nhe2S{^V z*L*2|e%`BiRyigMhNiVGTOw6dn->mmy)fM|ymj>O)=_kWdU0s1IyBB41&*o-!>b*B z`59@}v^Rs?`o^V_TN=>RSkveSR+E1fEi1+WxH+;eJqmbzt68(G*$=d>*Vi{UOGfFW zQKP_7%M!=rNaIs3bVd8Mz7S| z2JK0@fu=dFMq{8A%+}Yg(5W>@=JI-f9hgxFX#@as{KT^I?+Ibq|D>KtZ7nTy0(DeE z9?kw%vwTWffmvQIKhxxA$~<|SQecw1z^w32E-+`h=9-m_)n>&Mm$ZoX(}`aIcV(mL zZB)IZMp<=ifJrZCuZMnWl%8uX08^LhS5^De@(TSm%B%pTs(1Y>nrr&C z4|LU6)4=*#YB85o%CM!Q>S<_eTWxK9yBcr*3Oopix@u|1#QMfcxJY%SztRMT8hjqzjvuwqM8)rl7j7G9MZ1VWt9yOAdPGCS2mal#j0tkskJ__WtGdC zV5WW{Sv}u0nB(JFzTZ~aQ14%1!s~=*fd)M{F$JlAQePC0%PQOJm$fZRsPKz&D~bSQ z=tWVd<`+QFYMz{>j{YZQoITjZ7nn3s#q`gS0N13J8o0Vm>h^44ju_>wZa4Erw(BWk zkx;M%a;2RJK$xo7LKbsI+_{6b!MpF%#3MdRT0AO>Jdc19NFB zlXSjD?66_x>_$-0w6wAQMryO?7alVIK}4pSxv$nUh#smVMj=5IfO&)n{irfYFW>%a z%wfZ1j-1_iePh#dhPutd)J$UPk;OE9wVL`yj6zhA5|CEZquKsymoG#YdBEP~fdHc` zL5jHssBOAXqM|wSdq4}C>yejYgFgXrRptbmELl!TpO7jxV@Yb8-=C5`UcMS)rax9R zrJtsJo$8dLm0)mMDrB!dOA7ev?53hurF&@)7NQNd*!m`h8it~)@wo( zGB!sx*&om#NQm`!ZCnBs=^L7rF#%7gMpjLCq^pGE%vuQ{*x%OD$SfbHj+%y=WymH> z7R($XhLM!{SlCN+Xv^dkt1nTLq1agMnmub6=_Q4SsDvw0vy2NFr=t=i+>@nX`gT@= zh7ipT1x$}g&Ncy@Qa;1&>y&>=J`|0wlg}o**rSKFkTq=m_@cjO&-miFFUoUrxJmit z8S!%R65dPF65QRJ13UQPWT9rmC zY@{ltU$nM0H#fB~^~L0|$uf0RH8uJx>l?{|p43o-lx&Vvw7CLFEuKeO8P`?X8e=i$ zl6nRZnoFIUg#>4@@e&^)N;|g4r-+DZe9msHTml5hH>hn&YA~Y>P|B02%ylOEhdn1% z)v39=g_*m)s&$kjT}rB1M4mbZcnvI71(>RS0Et(x!^a@B(LCW1YU)tkRbaN+(;&Dq}Mq%7NlZ!;v^e zX#!cgD%$t8@{jpn=D+ld^M3`M3Mr_6Z@z@m=HiuPDeRWTSngkaf$%^O*ArnApEsT)gzWO z#&knv3sq}gFy_1I1IN*%T9LmLZ!Nz({UTEU5i8S3Sj}9oyTT*<#8c{>;;E1~cWJo} zDs#=7Qi~a#t;e98WKJ5OpTZr&J4tt5e z6)RzZF1ARS1;%_=^PB|ErE(_Zi?i6o@gY@4i5Yw*q&H9TEQ&4iYSpQg^xLL(q*9IVWrV%hn!7PLAoJBPWXlIk&#rUsu43 zr$)G-yiH=}mnWU)mKnI9b#$AVH>-Xr_U6&Eu>;AAtwd5^X;i*O%Mk09($|o!)w`0j zC!3dzxwJt3zEelvyV6=9Z=<%;qZ?2$e8aH4vghAS(LT zG|CWE1;pkz=o2%k(3venD05J3Xek1W3M_LgTN;62lxbH?%hgy=Q*5-}QKJMFd(1;m zE0$Mcz*hfG&&+LNO^~Z*#`;T1993A3wa9^HlBnxP=|{RjnbK9X2r2!uz!ZfqM%7hE zSK?efMT|~hdXW~_w6YCmzC52}`4X+s6ev7biXB?j34@2mqEaPTw|S&sNrW4Rn(mqM z;{u@Z_|1Gv_GBA_f?fv!i^9Sq2+KNd{B$KYEm!Y#fSvIyCEaD8A{?Ow$qN zn2w1)*QBdl)7*1C-ilI(Fpyc3T)u?2MJ`{t$K`;_$e;Z+yvC;#s@RiPr*_=!< zpZc2|YBp$Gg1pMB3L34yhK~i;#r^&q1k^avr6B1EcWH&o>ysjf7u7iU12v=MH@(a? z^QzLBrq4U8BHbaD|AES`y@)=R`T%jMpVg${^9I^AB(C+u7mH#8MSQXqoJqGnzIJYJkC zrMb>-k9^TG27MG~W(;%sWy~0b$0%EH_-0NjPnS{?D#fNt)u?Oy%82J7RKlZwy>_*B zr2@TO?{}%=a{eykk9YkOd#F$1Rr;B}Q|s3?Ybd^c{klo2-BQ2QEilNt{6Rl9E>z7k z%P09xZnv)2ZmM0ehT@-Sx7}t{r__H^z2%c;o>FiB8WUUpPt+T2XSCfX)jO&D)O!2l z_MfWvD)zBl$u@zNsuTH1e2<3lEcqA9!GO%N1d=e)S%Ms_z8AHwsH&1x{FbFl(g#j* zO*5xWudtO@2EYCn-4ozdD~*Byy})d?vJT2Jd0piVTGDBi)zIZ4&nSVfP6;%!lr3_1 z`alMwWEKm!;*s`bILe&ShA1l%fK88f`h=QfAz#?4tWzMGhr z-B)HLU2^+3UV8h=Z;wg4Z|H*KS88n6m#Ak+jea`j+s^}be470Y{hail$_J6zPaYlQ zN&H(mN#>#G-+#|Px2WF#-%{?CFAVGej`iO==h^RGdD+f4udMxe<&}?LKHzfNXtFX| zvy{cJs02Hb={()xwT=FEXiN%Hc#NiPsrh~zE7Mq^u+X+FZBu61k-7lspJ=-3Cela; z+Zhtmv%qEdls%&)^yk)bIL$Grn0kvg7hv5SgZnWH$HNK2(YoLb()(}TO& zG!7H3EhHV!dnZRC5AtlE7KwD7LHP?KkrXzmd+H*Q3ZCjzm7jAZl%lMErwj&yGlBgFJUdB3T$odtSh9%ky5I)jW&# zL?Y{Xw!cET7*H*q9xWCiAXbTbYx~t&dix=oVh%$!*S)gSB&^h?uCS^{BE8b_MC{&)Yw0<=`Q5Y z!^W_4>`)17=C9(Uur9(D6L!9xE{CU_S8X6n-LLM>%t~ILk}2hT_&~kW`@qv5*t!_X42c4+t)d-%6xX6vq9cmlGfp) zxMwN5>w^=KzlwpKvhNh!tQOpaQYL2RtxBamw+(P*7ImI6BlCbW`RX&$GmBiRiiru$ znF?7t%K0;COV^7hBJV=q3FUcX<&oDe&zE^%N%FS`oVGldlqdi4`14cdx=&9;vg34G20mXga+g70am*`@%m?Eu1`w(_tREi zdZys!J<2L#_i7(w`Lt!laWf?o++R!Qod!2~JQJNy==WnAu#P+3w+!U{_{y za?a_2cb$1NKtN#7RAPs_&P=+M@@7kU-__+g>Hx!pM!WE?HZ+ER*ud)Klko4>^wg1* zG%vF!X;$VMdUS2lWE$U040?ZX!EYvr!xxdqRe6L&kAvypbbWR$5Qd_lGOlax5#! z(Dp^z4@ve)yVb62t9Vk=8sicY+@$q*h7>Yw#xx8qZVOKTXa|>q5;{&}I@FYsKim&Y zC@EtGY%&9Q`JHpm+4rG$`!VpR-^4oi{oc9fo_p@S=iYtq-V;I|h_5s(Ok@2`$lr+Q zw8`5Y^8NPOl|H*V`K8$A>Tf=W?49UCZ(>FHYIs~k?84)$k8ElZ>0=nH#}m6iyMZKs zJ68HobMjhj1HHF-J{Iq7PQD0{dmuUw+C!qxBe4rWfBIx%1U-2lY49xBrZ=YH%^}o> z=CwC5pRK~Y60p7RH~hXwVZ@DWIls@na^O)k2Y<`C`#RhYDcGo z!RF-4=`UlHoyEUb@b7%`{ouvi4cQkV`$(l;|KqoXbRUZGpBPEW)RlOu>uP@yjD%)>U%+oS=?4-GDF%-( z^cxAu8}~H%J$bl2F6#Wog-CBnx*SzpqCD*0iKf?b+v%OB!(RUdrI z^Ehz!Kh$TE`9`N1Y&aQAJ2KFR(p{-9td14NYs763@d?Nq`>T5W4)`#W9B(Y}BMve3 z8I1JM!WiD4mSTU4{H-t7>u*PzE~@Vvz_tPV2+53_U;Md$Fg=!974Jj_xW4W9ZFU&H z(KgHa{U_Lt=l&8k-pWQArl#-1zax-Wd9_|IARVh4`^h0%V~wV}7UDVr*ZUmgoP->z z;`Qsg1+H7*x&^LV;ODcz>4z+TMJT|y}t8$ zfaXqIn5OtTexIdq>3ng3C8YFS+Qz-_VEh;DV}qqOUv~&?mFIWLy*|HktzIUG!o$!- zKWXS1y3JBr4$w6u`ssVx-w^$1&Z29*B}V61xkaRFdmSrT{d6umF8TF+BYu|fwN9wX z*o5L2f63mf-Wf5Zh-s8BY>oOO;2GBs?3@*+LixT$81dbQ@1=U?vfO_|425VJq35dJ z{}=6)c8SVcmiE3N^peo4LYscY=D1zx2B9572ZT-tEehQ)^r+AiLQe@jBXn8l1)-OO zUKQH(PAOmL2B9572ZT-tEehQ)^r+AiLQe@jBXn8l1)-OOUKQGOzmzX@gU}A4141W+ z7KQE?dQ|8Mp{InN5xOk&g3wDsuL^D2B;^a;Ahbj1fY1q{MWOqJ9u;~*=qaIRgf0uc zAoP;Zt3sQyQohg)LOX;G2%QjG6uMvNQK2Vx{5*k$qBCO zEyb6RAbnb;Ty3>ujIV5$KM^^)ep5LVHYZ_Lw(oa=$Laq=k<&VECGa;YB!BGSzv94? zP&i@Mnf0Q-u48Uye0{_3XuZ}7-W9R)U4n0m;4b^$&-`o6f6&Xk$Q4)LcQM<_@iNMC zR`%x{x@aVXEp5?3@UoT=|nt?r|i8!7t;TAgpWG-9~XW@VPJ6S?}T~5 z4~yT!EnlC5eMtY)GVWyAWS(%yr}clF{-1Z?uQ~7^IdFXOij{vS;kiy#VwD!OeXZ=XbckUvkL#y6|VDpYwhX@c*5I|6d(Aedmj_ z+ntQ3P1kb}ii^M3g5E25rk7#EdohsQ0{m9YJ3|qF+vAYG2YAMc2>tz_ga1hf{#oF+ zVqVtu464c3OAh|OVLWZl9~-+dK02P4*IR$W->bksBlyLyS~>ikAIYlVr(dx+e^W>D3C1lJ z{QLV3{EH&z@?ThP{`QaLR~`J{68;vMmkUzJ_Z|E;Uz4&_@>hZEe&P4}K z-=^dAUxlBbWViF1tbG0k2l?w54;W06ZNgs}v;gmmLvq-`k0ZpfY&Eu*k8v}nv9Q=8Mt=V@qqhAr_l%GdUd1sv!;>*b#T3Fpa}% zg$1uR=jCv^yHGWrmoIzMC7dlSd3nTZta_7+2U!9_Rp6BA){cidk$U3| zj_mB|9`SY#4D9Y7_r|+>M*4|ye6+WbDPJvn_Am?{gp|&Q0Y2MgyuQbFbdL`A(g9Mh zTBvzArRY%zjA~aG4vuc_@LKs1s^d*}k9PYgq6`k~;2=#qi@R$JvlZkR8SWw2YtObC z%0XukJ=?}6H&-1j)W&*uvw2X|Vg-jx>9p?xBOI!$yyWE&u?vb9%jSSR%j@NEQfCTB z+vD3!Xp22o6}_h9zH>=u~3SoRq_uQWTAgNQ|LT2z<<0PLNsc)6K=4w6zOj<4H9(u^LK_q;UTMbpbw^Xhc!e$_t&9fWvLc)&_7)#FV zLeV0QZO+$kE(;%HIbU2ZTrgO3zPFzYHWyeR)+FZ7`$>WYzs)R zVc~o!w!`$&QM27RAz3h*FWCM?IvnfkYb(Q@z#43BayIhVp0NrXv4X2W5nk}r71tWE z9_Ta}oDOwT1mq~8!`kqojaHbRM8r7Xv}AGW_f{euclDo2Mx6>r|*2ju#TC;qdq<`lSmPYFc3P?t)Wm-@xVi5mlm?A?Q$)ZNv~aMc zcp$`!6xV}zS~$|~>ty>`PzGrU`$i9v`NDh`^~~E#%ZZq7R{6a?~HZDY&G7{%!Q&;3T;#1Xd#t5v;Et zbs{jB7s?0xV)a};PRDEes>>_FB zl)@85v=rRe%F!8xPNrfRfk4X*r!+D-)vjGTFvrmJ+AzDWYTz z0CQK>_2YbN$Ore?ke`K!GcJ{}Mvp>A+rL^SD;?RCYrfsSeuR3U6 zha;F+37NFYglKQEdBHYQ<*KBEzHP|y_r0O=$*}KfA!fMnnnqebF(?zL?n8ds ztEu<8FG=ZnTP*8Owp0BDHXlNQaLup#my~8A$o7D+4pL?plNuTrY|stCPT`l(2M z-G`<0VcO6VxU^h_K7&M1f8DR86tD9`7qwOJdJ#92U)xW=gDQRN?jW}@neeUo0`7zP zb^n*r5qcQ7qUHZNo(1#kJ~5>fhaq^W-4y$4B#4E^5M8>jW#e93aFk!~m3|v}Zoxmz zulr?Mf5!aZLtg58nqT*)bxQs*F|77aEmzy|B=VA`nqT*^9V=P=59$N((53m6{s>qw zztQ*Z6`MapnF5#QQ|K}hglRGQ9ylZUWm}7~n@l5R6SNPDN@|VZn*Y8CZnd&`=n>s( z-wU#iN%@b;#&w!!Xsd$iul|Gjx9T3u|Jft9q$_w29K5uA#VG!9T>eizV>z!WqtIyn F{{^p@y>|cr literal 0 HcmV?d00001 diff --git a/build/bin/opj_mj2_compress b/build/bin/opj_mj2_compress new file mode 100644 index 0000000000000000000000000000000000000000..13a71460b522ee5bfe2ef8ef458963650bb3ec6d GIT binary patch literal 44296 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 literal 0 HcmV?d00001 diff --git a/build/bin/opj_mj2_decompress b/build/bin/opj_mj2_decompress new file mode 100644 index 0000000000000000000000000000000000000000..a94405eca43ec7580dca7d1c6d98f21048f7280c GIT binary patch literal 31552 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 literal 0 HcmV?d00001 diff --git a/build/bin/opj_mj2_wrap b/build/bin/opj_mj2_wrap new file mode 100644 index 0000000000000000000000000000000000000000..c4ccb34bd6a4775ef3d9a7286eea01ac06ca27f0 GIT binary patch literal 35952 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 JsA#7B{{TyUC{6$X literal 0 HcmV?d00001 diff --git a/build/bin/test_tile_decoder b/build/bin/test_tile_decoder new file mode 100644 index 0000000000000000000000000000000000000000..01b5019f409344bf57311985441984f15d9bd430 GIT binary patch literal 18872 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 literal 0 HcmV?d00001 diff --git a/build/bin/test_tile_encoder b/build/bin/test_tile_encoder new file mode 100644 index 0000000000000000000000000000000000000000..9e660a7546043479adc5e4622635cbed533e8aa3 GIT binary patch literal 14040 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 literal 0 HcmV?d00001 diff --git a/build/bin/testempty2 b/build/bin/testempty2 new file mode 100644 index 0000000000000000000000000000000000000000..19c9b41377e246b99d9ef31e6da39ef834db3cf5 GIT binary patch literal 14176 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 literal 0 HcmV?d00001 diff --git a/build/description-pak b/build/description-pak new file mode 100644 index 000000000..97737e907 --- /dev/null +++ b/build/description-pak @@ -0,0 +1 @@ +Package created with checkinstall 1.6.2 diff --git a/build/doc/Doxyfile-html.dox b/build/doc/Doxyfile-html.dox new file mode 100644 index 000000000..b1278cf79 --- /dev/null +++ b/build/doc/Doxyfile-html.dox @@ -0,0 +1,279 @@ +# Doxyfile 1.7.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = OpenJPEG +PROJECT_NUMBER = 2.3.1 +OUTPUT_DIRECTORY = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = C:// +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/lib/openjp2 \ + /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/lib/openjpip \ + /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/doc +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.h \ + *.c \ + *.dox +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = */.svn/* +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/doc +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = ./html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +SEARCHENGINE = NO +SERVER_BASED_SEARCH = NO +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = USE_JPWL \ + USE_JPSEC +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/build/doc/doxygen_sqlite3.db b/build/doc/doxygen_sqlite3.db new file mode 100644 index 0000000000000000000000000000000000000000..8927b2ae8e17f75567953e25892b154d2c625540 GIT binary patch literal 3198976 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

    $Y~@}2aA(P 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%0AHNNeZK%-n+J-7_|hz{j|KS3JV1Qq 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 S8*x|6hYyXY?Y5RlrZ{V#*-oD+QwXd?z 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

    OEm4W>5;<_aA3l>D7ya^P1c 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 `K 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%0D6s-#7ih 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ℜ|G^{?2%N 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 =dVF=(37nL&49+2m$)odJ(T;GTuuei4t= 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

    =37%`uTnCYyU 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⪙%fZqSx9T(Z)|HuD+HxhXA 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 Uq|itQtw8c|w#_=$PKS5#Z|LgP + + + + + + +OpenJPEG: Doxyfile-html.dox File Reference + + + + + + +

    +
    +
    +
    Doxyfile-html.dox File Reference
    +
    +
    +
    + +
    + + diff --git a/build/doc/html/annotated.html b/build/doc/html/annotated.html new file mode 100644 index 000000000..ca6311577 --- /dev/null +++ b/build/doc/html/annotated.html @@ -0,0 +1,185 @@ + + + + + + + +OpenJPEG: Data Structures + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    Data Structures
    +
    +
    +
    Here are the data structures with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Caux_response_param
     Cauxtrans_paramAuxiliary transport setting parameters
     Cbox_paramBox parameters
     Cboxcontents_param
     Cboxheader_paramBox header parameters
     Cboxlist_paramBox list parameters
     Ccache_paramCache parameters
     Ccachelist_param
     Ccachemodel_paramCache model parameters
     Ccachemodellist_paramCache model list parameters
     Cchannel_paramChannel parameters
     Cchannellist_paramChannel list parameters
     Ccodestream_paramCodestream parameters
     CCODmarker_paramA.6.1 Coding style default (COD)
     Cdec_server_recordDecoding server static records
     Cdwt_local
     Cfaixbox_paramFragment array index box parameters
     Cfaixelem4_param4byte parameters of a faix element
     Cfaixelem8_param8byte parameters of a faix element
     Cihdrbox_paramI.5.3.1 Image Header box
     Cimgreg_paramImage region parameters
     Cindex_paramIndex parameters
     Cj2k_prog_order
     Cjpip_dec_paramJPIP decoding parameters
     Cmanfbox_paramManifest box parameters
     Cmarker_paramMarker parameters
     Cmarkeridx_paramMarker index parameters
     Cmessage_paramMessage parameters
     Cmetadata_paramMetadata-bin parameters
     Cmetadatalist_paramMetadata-bin list parameters
     Cmhixbox_paramHeader index table box parameters
     Cmsgqueue_paramMessage queue parameters
     Copj_bioIndividual bit input-output stream (BIO)
     Copj_codec_privateMain codec handler used for compression or decompression
     Copj_codestream_indexIndex structure of the codestream (FIXME should be expand and enhance)
     Copj_codestream_infoIndex structure of the codestream
     Copj_codestream_info_v2Information structure about the codestream (FIXME should be expand and enhance)
     Copj_cpCoding parameters
     Copj_cparametersCompression parameters
     Copj_dec_memory_marker_handler
     Copj_decoding_param
     Copj_dparametersDecompression parameters
     Copj_dwd_decode_h_job_t
     Copj_dwd_decode_v_job_t
     Copj_encoding_param
     Copj_event_mgrMessage handler object used for
     Copj_imageDefines image data and characteristics
     Copj_image_compDefines a single image component
     Copj_image_comptparmComponent parameters structure used by the opj_image_create function
     Copj_j2kJPEG-2000 codestream reader/writer
     Copj_j2k_dec
     Copj_j2k_enc
     Copj_job_list_t
     Copj_jp2JPEG-2000 file format reader/writer
     Copj_jp2_boxJP2 Box
     Copj_jp2_cdefChannel descriptions and number of descriptions
     Copj_jp2_cdef_infoChannel description: channel index, type, association
     Copj_jp2_cmap_compComponent mappings: channel index, mapping type, palette index
     Copj_jp2_colorCollector for ICC profile, palette, component mapping, channel description
     Copj_jp2_compsJP2 component
     Copj_jp2_header_handler
     Copj_jp2_img_header_writer_handler
     Copj_jp2_indexIndex structure of the JP2 file EXPERIMENTAL FOR THE MOMENT
     Copj_jp2_metadataInfo structure of the JP2 file EXPERIMENTAL FOR THE MOMENT
     Copj_jp2_pclrPalette data: table entries, palette columns
     Copj_marker_infoMarker structure
     Copj_mct_dataFIXME DOC
     Copj_mqcMQ coder
     Copj_mqc_stateThis struct defines the state of a context
     Copj_packet_infoIndex structure : Information concerning a packet inside tile
     Copj_pi_compFIXME DOC
     Copj_pi_iteratorPacket iterator
     Copj_pi_resolutionFIXME DOC
     Copj_pocProgression order changes
     Copj_ppx_struct
     Copj_procedure_listA list of procedures
     Copj_simple_mcc_decorrelation_dataFIXME DOC
     Copj_sparse_array_int32
     Copj_stepsizeQuantization stepsize
     Copj_stream_privateByte input-output stream
     Copj_t1Tier-1 coding (coding of code-block coefficients)
     Copj_t1_cblk_decode_processing_job_t
     Copj_t2Tier-2 coding
     Copj_tccpTile-component coding parameters
     Copj_tccp_infoTile-component coding parameters information
     Copj_tcdTile coder/decoder
     Copj_tcd_bandSub-band structure
     Copj_tcd_cblk_decCode-block for decoding
     Copj_tcd_cblk_encFIXME DOC
     Copj_tcd_imageFIXME DOC
     Copj_tcd_layerFIXME DOC
     Copj_tcd_marker_infoStructure to hold information needed to generate some markers
     Copj_tcd_passFIXME DOC
     Copj_tcd_precinctPrecinct structure
     Copj_tcd_resolutionTile-component resolution structure
     Copj_tcd_segSegment of a code-block
     Copj_tcd_seg_data_chunkChunk of codestream data that is part of a code block
     Copj_tcd_tileFIXME DOC
     Copj_tcd_tilecompTile-component structure
     Copj_tcpTile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)
     Copj_tgt_nodeTag node
     Copj_tgt_treeTag tree
     Copj_thread_pool_t
     Copj_tile_indexIndex structure about a tile
     Copj_tile_infoIndex structure : information regarding tiles
     Copj_tile_v2_infoTile coding parameters information
     Copj_tls_key_val_t
     Copj_tls_t
     Copj_tp_indexIndex structure about a tile part
     Copj_tp_infoIndex structure : Information concerning tile-parts
     Copj_v4_t
     Copj_worker_thread_job_t
     Copj_worker_thread_list_t
     Copj_worker_thread_t
     Cplaceholder_paramA.3.6.3 Placeholder box format
     Cplaceholderlist_paramPlaceholder box list parameters
     Cquery_paramQuery parameters
     Crange_param1-dimensional range parameters
     Csession_paramSession parameters
     Csessionlist_paramSession list parameters
     CSIZmarker_paramProgression order
     Csubfaixbox4_param4byte parameters of fragment array index box
     Csubfaixbox8_param8byte parameters of fragment array index box
     Csubfaixbox_paramVariable sized parameters in fragment array index box
     Ctarget_paramTarget parameters
     Ctargetlist_paramTarget list parameters
     Cv4dwt_local
    +
    +
    + + + + diff --git a/build/doc/html/auxtrans__manager_8c.html b/build/doc/html/auxtrans__manager_8c.html new file mode 100644 index 000000000..b1078b2c6 --- /dev/null +++ b/build/doc/html/auxtrans__manager_8c.html @@ -0,0 +1,508 @@ + + + + + + + +OpenJPEG: auxtrans_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    auxtrans_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include "auxtrans_manager.h"
    +#include <pthread.h>
    +
    + + + +

    +Data Structures

    struct  aux_response_param
     
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + +

    +Typedefs

    typedef struct aux_response_param aux_response_param_t
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    auxtrans_param_t init_aux_transport (int tcp_auxport, int udp_auxport)
     Initialize auxiliary transport server of JPIP server. More...
     
    void close_aux_transport (auxtrans_param_t auxtrans)
     Close auxiliary transport server of JPIP server. More...
     
    aux_response_param_tgene_auxresponse (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
     
    void delete_auxresponse (aux_response_param_t **auxresponse)
     
    void * aux_streaming (void *arg)
     
    void send_responsedata_on_aux (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
     Send response data on aux transport. More...
     
    OPJ_BOOL identify_cid (SOCKET connected_socket, char refcid[], FILE *fp)
     Identify cid sent from client. More...
     
    OPJ_BOOL recv_ack (SOCKET connected_socket, void *data)
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ aux_response_param_t

    + +
    +
    + + + + +
    typedef struct aux_response_param aux_response_param_t
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ aux_streaming()

    + + + +

    ◆ close_aux_transport()

    + +
    +
    + + + + + + + + +
    void close_aux_transport (auxtrans_param_t auxtrans)
    +
    + +

    Close auxiliary transport server of JPIP server.

    +

    auxiliary response parameters

    + +

    References close_socket(), auxtrans_param::tcplistensock, and auxtrans_param::udplistensock.

    + +
    +
    + +

    ◆ delete_auxresponse()

    + +
    +
    + + + + + + + + +
    void delete_auxresponse (aux_response_param_t ** auxresponse)
    +
    + +

    References opj_free().

    + +

    Referenced by aux_streaming().

    + +
    +
    + +

    ◆ gene_auxresponse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    aux_response_param_t * gene_auxresponse (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T datalen,
    OPJ_SIZE_T maxlenPerFrame 
    )
    +
    +
    + +

    ◆ identify_cid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL identify_cid (SOCKET connected_socket,
    char refcid[],
    FILE * fp 
    )
    +
    + +

    Identify cid sent from client.

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]refcidrefenrece channel ID
    [in]fpfile pointer for log of aux stream
    +
    +
    +
    Returns
    true if identified, false otherwise
    + +

    References OPJ_FALSE, opj_free(), OPJ_TRUE, and receive_string().

    + +

    Referenced by aux_streaming().

    + +
    +
    + +

    ◆ init_aux_transport()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    auxtrans_param_t init_aux_transport (int tcp_auxport,
    int udp_auxport 
    )
    +
    + +

    Initialize auxiliary transport server of JPIP server.

    +
    Parameters
    + + + +
    [in]tcp_auxportopening tcp auxiliary port ( 0 not to open, valid No. 49152-65535)
    [in]udp_auxportopening udp auxiliary port ( 0 not to open, valid No. 49152-65535)
    +
    +
    +
    Returns
    initialized transport parameters
    + +

    References open_listeningsocket(), auxtrans_param::tcpauxport, auxtrans_param::tcplistensock, auxtrans_param::udpauxport, and auxtrans_param::udplistensock.

    + +
    +
    + +

    ◆ recv_ack()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL recv_ack (SOCKET connected_socket,
    void * data 
    )
    +
    + +

    References OPJ_FALSE, opj_free(), OPJ_TRUE, and receive_stream().

    + +

    Referenced by aux_streaming().

    + +
    +
    + +

    ◆ send_responsedata_on_aux()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_responsedata_on_aux (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T length,
    OPJ_SIZE_T maxlenPerFrame 
    )
    +
    + +

    Send response data on aux transport.

    +
    Parameters
    + + + + + + + +
    [in]istcptrue if tcp, false if udp
    [in]auxtransavailable transport parameters
    [in]cidchannel ID
    [in]datasending data
    [in]lengthlength of data
    [in]maxlenPerFramemaximum data length to send per frame
    +
    +
    + +

    References aux_streaming(), FCGI_stderr, gene_auxresponse(), and auxtrans_param::tcplistensock.

    + +
    +
    +
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    #define MAX(a, b)
    Definition: tpix_manager.c:38
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    Message handler object used for.
    Definition: event.h:50
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    + +
    int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:86
    +
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    +
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    +
    int num_tps
    number of tile parts
    Definition: openjpeg.h:837
    +
    #define JPIP_TPIX
    Definition: indexbox_manager.h:48
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    +
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    +
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    +
    int tp_end_pos
    end position of tile part
    Definition: openjpeg.h:795
    +
    int get_num_max_tile_parts(opj_codestream_info_t cstr_info)
    Definition: tpix_manager.c:181
    + + + + diff --git a/build/doc/html/auxtrans__manager_8h.html b/build/doc/html/auxtrans__manager_8h.html new file mode 100644 index 000000000..111655d54 --- /dev/null +++ b/build/doc/html/auxtrans__manager_8h.html @@ -0,0 +1,245 @@ + + + + + + + +OpenJPEG: auxtrans_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    auxtrans_manager.h File Reference
    +
    +
    +
    #include "sock_manager.h"
    +#include "opj_includes.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  auxtrans_param
     auxiliary transport setting parameters More...
     
    + + + + +

    +Typedefs

    typedef struct auxtrans_param auxtrans_param_t
     auxiliary transport setting parameters More...
     
    + + + + + + + + + + +

    +Functions

    auxtrans_param_t init_aux_transport (int tcp_auxport, int udp_auxport)
     Initialize auxiliary transport server of JPIP server. More...
     
    void close_aux_transport (auxtrans_param_t auxtrans)
     Close auxiliary transport server of JPIP server. More...
     
    void send_responsedata_on_aux (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame)
     Send response data on aux transport. More...
     
    +

    Typedef Documentation

    + +

    ◆ auxtrans_param_t

    + +
    +
    + + + + +
    typedef struct auxtrans_param auxtrans_param_t
    +
    + +

    auxiliary transport setting parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ close_aux_transport()

    + +
    +
    + + + + + + + + +
    void close_aux_transport (auxtrans_param_t auxtrans)
    +
    + +

    Close auxiliary transport server of JPIP server.

    +
    Parameters
    + + +
    [in]auxtransclosing transport server
    +
    +
    +

    auxiliary response parameters

    + +

    References close_socket(), auxtrans_param::tcplistensock, and auxtrans_param::udplistensock.

    + +
    +
    + +

    ◆ init_aux_transport()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    auxtrans_param_t init_aux_transport (int tcp_auxport,
    int udp_auxport 
    )
    +
    + +

    Initialize auxiliary transport server of JPIP server.

    +
    Parameters
    + + + +
    [in]tcp_auxportopening tcp auxiliary port ( 0 not to open, valid No. 49152-65535)
    [in]udp_auxportopening udp auxiliary port ( 0 not to open, valid No. 49152-65535)
    +
    +
    +
    Returns
    initialized transport parameters
    + +

    References open_listeningsocket(), auxtrans_param::tcpauxport, auxtrans_param::tcplistensock, auxtrans_param::udpauxport, and auxtrans_param::udplistensock.

    + +
    +
    + +

    ◆ send_responsedata_on_aux()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_responsedata_on_aux (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T length,
    OPJ_SIZE_T maxlenPerFrame 
    )
    +
    + +

    Send response data on aux transport.

    +
    Parameters
    + + + + + + + +
    [in]istcptrue if tcp, false if udp
    [in]auxtransavailable transport parameters
    [in]cidchannel ID
    [in]datasending data
    [in]lengthlength of data
    [in]maxlenPerFramemaximum data length to send per frame
    +
    +
    + +

    References aux_streaming(), FCGI_stderr, gene_auxresponse(), and auxtrans_param::tcplistensock.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/auxtrans__manager_8h_source.html b/build/doc/html/auxtrans__manager_8h_source.html new file mode 100644 index 000000000..ebda6e99d --- /dev/null +++ b/build/doc/html/auxtrans__manager_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +OpenJPEG: auxtrans_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    auxtrans_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef AUXTRANS_MANAGER_H_
    +
    32 # define AUXTRANS_MANAGER_H_
    +
    33 
    +
    34 #include "sock_manager.h"
    +
    35 #include "opj_includes.h"
    +
    36 
    +
    38 typedef struct auxtrans_param {
    +
    39  int tcpauxport;
    +
    40  int udpauxport;
    + + + +
    44 
    +
    52 auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport);
    +
    53 
    + +
    60 
    + +
    72  const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame);
    +
    73 
    +
    74 #endif /* !AUXTRANS_MANAGER_H_ */
    +
    +
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    +
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    +
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    +
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    +
    unsigned char * data
    Definition: auxtrans_manager.c:87
    +
    struct aux_response_param aux_response_param_t
    +
    aux_response_param_t * gene_auxresponse(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Definition: auxtrans_manager.c:149
    +
    void delete_auxresponse(aux_response_param_t **auxresponse)
    Definition: auxtrans_manager.c:167
    +
    #define FCGI_stderr
    Definition: auxtrans_manager.c:47
    +
    Definition: auxtrans_manager.c:85
    +
    void * aux_streaming(void *arg)
    Definition: auxtrans_manager.c:189
    +
    OPJ_SIZE_T datalen
    Definition: auxtrans_manager.c:88
    +
    int SOCKET
    Definition: sock_manager.h:40
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    +
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    +
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    +
    OPJ_SIZE_T maxlenPerFrame
    Definition: auxtrans_manager.c:89
    +
    struct auxtrans_param auxtrans_param_t
    auxiliary transport setting parameters
    + +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    int udpauxport
    udp port
    Definition: auxtrans_manager.h:40
    +
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    +
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    +
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    +
    SOCKET listensock
    Definition: auxtrans_manager.c:90
    +
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    +
    OPJ_BOOL recv_ack(SOCKET connected_socket, void *data)
    Definition: auxtrans_manager.c:274
    +
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    +
    SOCKET tcplistensock
    listenning socket for aux tcp (-1 if not open)
    Definition: auxtrans_manager.h:41
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    +
    char * cid
    Definition: auxtrans_manager.c:86
    +
    OPJ_BOOL identify_cid(SOCKET connected_socket, char refcid[], FILE *fp)
    Identify cid sent from client.
    Definition: auxtrans_manager.c:253
    + +
    int tcpauxport
    tcp port
    Definition: auxtrans_manager.h:39
    +
    SOCKET udplistensock
    listenning socket for aux udp (-1 if not open)
    Definition: auxtrans_manager.h:42
    + + + + diff --git a/build/doc/html/bc_s.png b/build/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/build/doc/html/bdwn.png b/build/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +OpenJPEG: bench_dwt.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    bench_dwt.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include <sys/time.h>
    +#include <sys/resource.h>
    +#include <sys/times.h>
    +
    + + + + + + + + + + + + + + +

    +Functions

    OPJ_INT32 getValue (OPJ_UINT32 i)
     
    void init_tilec (opj_tcd_tilecomp_t *l_tilec, OPJ_INT32 x0, OPJ_INT32 y0, OPJ_INT32 x1, OPJ_INT32 y1, OPJ_UINT32 numresolutions)
     
    void free_tilec (opj_tcd_tilecomp_t *l_tilec)
     
    void usage (void)
     
    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    int main (int argc, char **argv)
     
    +

    Function Documentation

    + +

    ◆ free_tilec()

    + +
    +
    + + + + + + + + +
    void free_tilec (opj_tcd_tilecomp_tl_tilec)
    +
    + +

    References opj_tcd_tilecomp::data, opj_free(), and opj_tcd_tilecomp::resolutions.

    + +

    Referenced by main().

    + +
    +
    + +

    ◆ getValue()

    + +
    +
    + + + + + + + + +
    OPJ_INT32 getValue (OPJ_UINT32 i)
    +
    + +

    Referenced by init_tilec(), and main().

    + +
    +
    + +

    ◆ init_tilec()

    + + + +

    ◆ main()

    + + + +

    ◆ opj_clock()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_clock (void )
    +
    + +

    Difference in successive opj_clock() calls tells you the elapsed time.

    +
    Returns
    Returns time in seconds
    + +

    Referenced by main().

    + +
    +
    + +

    ◆ usage()

    + +
    +
    + + + + + + + + +
    void usage (void )
    +
    + +

    Referenced by main().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/bio_8c.html b/build/doc/html/bio_8c.html new file mode 100644 index 000000000..038c714a9 --- /dev/null +++ b/build/doc/html/bio_8c.html @@ -0,0 +1,604 @@ + + + + + + + +OpenJPEG: bio.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    bio.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Local static functions
    static void opj_bio_putbit (opj_bio_t *bio, OPJ_UINT32 b)
     Write a bit. More...
     
    static OPJ_UINT32 opj_bio_getbit (opj_bio_t *bio)
     Read a bit. More...
     
    static OPJ_BOOL opj_bio_byteout (opj_bio_t *bio)
     Write a byte. More...
     
    static OPJ_BOOL opj_bio_bytein (opj_bio_t *bio)
     Read a byte. More...
     
    opj_bio_topj_bio_create (void)
     Create a new BIO handle. More...
     
    void opj_bio_destroy (opj_bio_t *bio)
     Destroy a previously created BIO handle. More...
     
    ptrdiff_t opj_bio_numbytes (opj_bio_t *bio)
     Number of bytes written. More...
     
    void opj_bio_init_enc (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init encoder. More...
     
    void opj_bio_init_dec (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init decoder. More...
     
    void opj_bio_write (opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
     Write bits. More...
     
    OPJ_UINT32 opj_bio_read (opj_bio_t *bio, OPJ_UINT32 n)
     Read bits. More...
     
    OPJ_BOOL opj_bio_flush (opj_bio_t *bio)
     Flush bits. More...
     
    OPJ_BOOL opj_bio_inalign (opj_bio_t *bio)
     Passes the ending bits (coming from flushing) More...
     
    +

    Function Documentation

    + +

    ◆ opj_bio_bytein()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_bio_bytein (opj_bio_tbio)
    +
    +static
    +
    + +

    Read a byte.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_bio_getbit(), and opj_bio_inalign().

    + +
    +
    + +

    ◆ opj_bio_byteout()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_bio_byteout (opj_bio_tbio)
    +
    +static
    +
    + +

    Write a byte.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_bio_flush(), and opj_bio_putbit().

    + +
    +
    + +

    ◆ opj_bio_create()

    + +
    +
    + + + + + + + + +
    opj_bio_t* opj_bio_create (void )
    +
    + +

    Create a new BIO handle.

    +
    Returns
    Returns a new BIO handle if successful, returns NULL otherwise
    + +

    References opj_malloc().

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_destroy()

    + +
    +
    + + + + + + + + +
    void opj_bio_destroy (opj_bio_tbio)
    +
    + +

    Destroy a previously created BIO handle.

    +
    Parameters
    + + +
    bioBIO handle to destroy
    +
    +
    + +

    References opj_free().

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_flush()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_bio_flush (opj_bio_tbio)
    +
    + +

    Flush bits.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::ct, opj_bio_byteout(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_bio_getbit()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_bio_getbit (opj_bio_tbio)
    +
    +static
    +
    + +

    Read a bit.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns the read bit
    + +

    References opj_bio::buf, opj_bio::ct, and opj_bio_bytein().

    + +

    Referenced by opj_bio_read().

    + +
    +
    + +

    ◆ opj_bio_inalign()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_bio_inalign (opj_bio_tbio)
    +
    + +

    Passes the ending bits (coming from flushing)

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::buf, opj_bio::ct, opj_bio_bytein(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_init_dec (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    +
    + +

    Init decoder.

    +
    Parameters
    + + + + +
    bioBIO handle
    bpInput buffer
    lenInput buffer length
    +
    +
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_init_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_init_enc (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    +
    + +

    Init encoder.

    +
    Parameters
    + + + + +
    bioBIO handle
    bpOutput buffer
    lenOutput buffer length
    +
    +
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_bio_numbytes()

    + +
    +
    + + + + + + + + +
    ptrdiff_t opj_bio_numbytes (opj_bio_tbio)
    +
    + +

    Number of bytes written.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns the number of bytes written
    + +

    References opj_bio::bp, and opj_bio::start.

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_putbit()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_bio_putbit (opj_bio_tbio,
    OPJ_UINT32 b 
    )
    +
    +static
    +
    + +

    Write a bit.

    +
    Parameters
    + + + +
    bioBIO handle
    bBit to write (0 or 1)
    +
    +
    + +

    References opj_bio::buf, opj_bio::ct, and opj_bio_byteout().

    + +

    Referenced by opj_bio_write().

    + +
    +
    + +

    ◆ opj_bio_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_bio_read (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    +
    + +

    Read bits.

    +
    Parameters
    + + + +
    bioBIO handle
    nNumber of bits to read
    +
    +
    +
    Returns
    Returns the corresponding read number
    + +

    References opj_bio_getbit().

    + +

    Referenced by opj_t2_getcommacode(), opj_t2_getnumpasses(), opj_t2_read_packet_header(), and opj_tgt_decode().

    + +
    +
    + +

    ◆ opj_bio_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_write (opj_bio_tbio,
    OPJ_UINT32 v,
    OPJ_UINT32 n 
    )
    +
    + +

    Write bits.

    +
    Parameters
    + + + + +
    bioBIO handle
    vValue of bits
    nNumber of bits to write
    +
    +
    + +

    References opj_bio_putbit().

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_putcommacode(), opj_t2_putnumpasses(), and opj_tgt_encode().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/bio_8h.html b/build/doc/html/bio_8h.html new file mode 100644 index 000000000..5636fdd25 --- /dev/null +++ b/build/doc/html/bio_8h.html @@ -0,0 +1,466 @@ + + + + + + + +OpenJPEG: bio.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    bio.h File Reference
    +
    +
    + +

    Implementation of an individual bit input-output (BIO) +More...

    +
    #include <stddef.h>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_bio
     Individual bit input-output stream (BIO) More...
     
    + + + + +

    +Typedefs

    typedef struct opj_bio opj_bio_t
     Individual bit input-output stream (BIO) More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    opj_bio_topj_bio_create (void)
     Create a new BIO handle. More...
     
    void opj_bio_destroy (opj_bio_t *bio)
     Destroy a previously created BIO handle. More...
     
    ptrdiff_t opj_bio_numbytes (opj_bio_t *bio)
     Number of bytes written. More...
     
    void opj_bio_init_enc (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init encoder. More...
     
    void opj_bio_init_dec (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init decoder. More...
     
    void opj_bio_write (opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
     Write bits. More...
     
    OPJ_UINT32 opj_bio_read (opj_bio_t *bio, OPJ_UINT32 n)
     Read bits. More...
     
    OPJ_BOOL opj_bio_flush (opj_bio_t *bio)
     Flush bits. More...
     
    OPJ_BOOL opj_bio_inalign (opj_bio_t *bio)
     Passes the ending bits (coming from flushing) More...
     
    +

    Detailed Description

    +

    Implementation of an individual bit input-output (BIO)

    +

    The functions in BIO.C have for goal to realize an individual bit input - output.

    +

    Typedef Documentation

    + +

    ◆ opj_bio_t

    + +
    +
    + + + + +
    typedef struct opj_bio opj_bio_t
    +
    + +

    Individual bit input-output stream (BIO)

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_bio_create()

    + +
    +
    + + + + + + + + +
    opj_bio_t* opj_bio_create (void )
    +
    + +

    Create a new BIO handle.

    +
    Returns
    Returns a new BIO handle if successful, returns NULL otherwise
    + +

    References opj_malloc().

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_destroy()

    + +
    +
    + + + + + + + + +
    void opj_bio_destroy (opj_bio_tbio)
    +
    + +

    Destroy a previously created BIO handle.

    +
    Parameters
    + + +
    bioBIO handle to destroy
    +
    +
    + +

    References opj_free().

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_flush()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_bio_flush (opj_bio_tbio)
    +
    + +

    Flush bits.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::ct, opj_bio_byteout(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_bio_inalign()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_bio_inalign (opj_bio_tbio)
    +
    + +

    Passes the ending bits (coming from flushing)

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    + +

    References opj_bio::buf, opj_bio::ct, opj_bio_bytein(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_init_dec (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    +
    + +

    Init decoder.

    +
    Parameters
    + + + + +
    bioBIO handle
    bpInput buffer
    lenInput buffer length
    +
    +
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_init_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_init_enc (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    +
    + +

    Init encoder.

    +
    Parameters
    + + + + +
    bioBIO handle
    bpOutput buffer
    lenOutput buffer length
    +
    +
    + +

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_bio_numbytes()

    + +
    +
    + + + + + + + + +
    ptrdiff_t opj_bio_numbytes (opj_bio_tbio)
    +
    + +

    Number of bytes written.

    +
    Parameters
    + + +
    bioBIO handle
    +
    +
    +
    Returns
    Returns the number of bytes written
    + +

    References opj_bio::bp, and opj_bio::start.

    + +

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_bio_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_bio_read (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    +
    + +

    Read bits.

    +
    Parameters
    + + + +
    bioBIO handle
    nNumber of bits to read
    +
    +
    +
    Returns
    Returns the corresponding read number
    + +

    References opj_bio_getbit().

    + +

    Referenced by opj_t2_getcommacode(), opj_t2_getnumpasses(), opj_t2_read_packet_header(), and opj_tgt_decode().

    + +
    +
    + +

    ◆ opj_bio_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_bio_write (opj_bio_tbio,
    OPJ_UINT32 v,
    OPJ_UINT32 n 
    )
    +
    + +

    Write bits.

    +
    Parameters
    + + + + +
    bioBIO handle
    vValue of bits
    nNumber of bits to write
    +
    +
    + +

    References opj_bio_putbit().

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_putcommacode(), opj_t2_putnumpasses(), and opj_tgt_encode().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/bio_8h_source.html b/build/doc/html/bio_8h_source.html new file mode 100644 index 000000000..5ccc02e67 --- /dev/null +++ b/build/doc/html/bio_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +OpenJPEG: bio.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    bio.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * All rights reserved.
    +
    15  *
    +
    16  * Redistribution and use in source and binary forms, with or without
    +
    17  * modification, are permitted provided that the following conditions
    +
    18  * are met:
    +
    19  * 1. Redistributions of source code must retain the above copyright
    +
    20  * notice, this list of conditions and the following disclaimer.
    +
    21  * 2. Redistributions in binary form must reproduce the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer in the
    +
    23  * documentation and/or other materials provided with the distribution.
    +
    24  *
    +
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    35  * POSSIBILITY OF SUCH DAMAGE.
    +
    36  */
    +
    37 
    +
    38 #ifndef OPJ_BIO_H
    +
    39 #define OPJ_BIO_H
    +
    40 
    +
    41 #include <stddef.h> /* ptrdiff_t */
    +
    42 
    +
    52 
    +
    56 typedef struct opj_bio {
    + + + + + +
    67 } opj_bio_t;
    +
    68 
    +
    71 /* ----------------------------------------------------------------------- */
    + +
    81 void opj_bio_destroy(opj_bio_t *bio);
    +
    87 ptrdiff_t opj_bio_numbytes(opj_bio_t *bio);
    +
    94 void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
    +
    101 void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
    + + + + +
    128 /* ----------------------------------------------------------------------- */
    +
    132 
    +
    133 #endif /* OPJ_BIO_H */
    +
    134 
    +
    +
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: bio.h:60
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: bench_dwt.c:108
    +
    opj_image_t * image
    image header
    Definition: tcd.h:265
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    +
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    +
    void usage(void)
    Definition: bench_dwt.c:98
    +
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    +
    OPJ_INT32 x0
    Definition: tcd.h:173
    +
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    +
    int main(int argc, char **argv)
    Definition: bench_dwt.c:134
    +
    OPJ_INT32 y1
    Definition: tcd.h:173
    +
    OPJ_INT32 x1
    Definition: tcd.h:173
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    +
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    +
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    +
    OPJ_INT32 x1
    Definition: tcd.h:191
    +
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    +
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    static void opj_bio_putbit(opj_bio_t *bio, OPJ_UINT32 b)
    Write a bit.
    Definition: bio.c:103
    +
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    OPJ_INT32 x0
    Definition: tcd.h:191
    +
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: bio.h:58
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:278
    +
    OPJ_INT32 x1
    Definition: tcd.h:230
    +
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    +
    FIXME DOC.
    Definition: tcd.h:242
    +
    OPJ_UINT32 buf
    temporary place where each byte is read or written
    Definition: bio.h:64
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    +
    OPJ_INT32 getValue(OPJ_UINT32 i)
    Definition: bench_dwt.c:42
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:280
    +
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_BYTE * bp
    pointer to the present position in the buffer
    Definition: bio.h:62
    +
    static OPJ_UINT32 opj_bio_getbit(opj_bio_t *bio)
    Read a bit.
    Definition: bio.c:113
    +
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    +
    OPJ_INT32 y0
    Definition: tcd.h:173
    +
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    +
    OPJ_INT32 x0
    Definition: tcd.h:230
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_INT32 y1
    Definition: tcd.h:230
    +
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    +
    OPJ_INT32 y0
    Definition: tcd.h:191
    +
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:279
    +
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    +
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    +
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    +
    OPJ_INT32 * data
    Definition: tcd.h:204
    +
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    +
    static OPJ_BOOL opj_bio_byteout(opj_bio_t *bio)
    Write a byte.
    Definition: bio.c:81
    +
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    +
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    +
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    +
    FIXME DOC.
    Definition: tcd.h:228
    +
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    +
    void init_tilec(opj_tcd_tilecomp_t *l_tilec, OPJ_INT32 x0, OPJ_INT32 y0, OPJ_INT32 x1, OPJ_INT32 y1, OPJ_UINT32 numresolutions)
    Definition: bench_dwt.c:47
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    static OPJ_BOOL opj_bio_bytein(opj_bio_t *bio)
    Read a byte.
    Definition: bio.c:92
    +
    OPJ_INT32 y1
    Definition: tcd.h:191
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    +
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_INT32 y0
    Definition: tcd.h:230
    +
    struct opj_bio opj_bio_t
    Individual bit input-output stream (BIO)
    +
    OPJ_UINT32 win_x0
    Coordinates of the window of interest, in grid reference space.
    Definition: tcd.h:277
    +
    void free_tilec(opj_tcd_tilecomp_t *l_tilec)
    Definition: bench_dwt.c:92
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    +
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    +
    Definition: thread.c:605
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    OPJ_UINT32 ct
    coder : number of bits free to write.
    Definition: bio.h:66
    + + + + diff --git a/build/doc/html/box__manager_8c.html b/build/doc/html/box__manager_8c.html new file mode 100644 index 000000000..7ac2c1230 --- /dev/null +++ b/build/doc/html/box__manager_8c.html @@ -0,0 +1,1114 @@ + + + + + + + +OpenJPEG: box_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    box_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include <ctype.h>
    +#include <assert.h>
    +#include "box_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    boxlist_param_tgene_boxlist (void)
     generate a box list More...
     
    boxlist_param_tget_boxstructure (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     get box structure of JP2 file More...
     
    box_param_tgene_boxbyOffset (int fd, OPJ_OFF_T offset)
     generate box from JP2 file at the given offset More...
     
    box_param_tgene_boxbyOffinStream (Byte_t *stream, OPJ_OFF_T offset)
     generate box from code stream (JPP or JPT stream) at the given offset More...
     
    box_param_tgene_boxbyType (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from JP2 file More...
     
    box_param_tgene_boxbyTypeinStream (Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from code stream More...
     
    box_param_tgene_childboxbyOffset (box_param_t *superbox, OPJ_OFF_T offset)
     generate child box from JP2 file at the given offset More...
     
    box_param_tgene_childboxbyType (box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
     generate(search) box from JP2 file More...
     
    OPJ_OFF_T get_DBoxoff (box_param_t *box)
     get DBox offset More...
     
    OPJ_SIZE_T get_DBoxlen (box_param_t *box)
     get DBox length More...
     
    Byte_tfetch_headbytes (box_param_t *box)
     fetch header bytes in file stream More...
     
    Byte_tfetch_DBoxbytes (box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch DBox (Box Contents) bytes of data in file stream More...
     
    Byte_t fetch_DBox1byte (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_DBox2bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_DBox4bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_DBox8bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream More...
     
    box_param_tsearch_box (const char type[], boxlist_param_t *boxlist)
     search a box by box type More...
     
    void print_box (box_param_t *box)
     print box parameters More...
     
    void print_allbox (boxlist_param_t *boxlist)
     print all box parameters More...
     
    void delete_box_in_list (box_param_t **box, boxlist_param_t *boxlist)
     delete a box in list More...
     
    void delete_box_in_list_by_type (const char type[], boxlist_param_t *boxlist)
     delete a box in list by Type More...
     
    void delete_boxlist (boxlist_param_t **boxlist)
     delete box list More...
     
    void insert_box_into_list (box_param_t *box, boxlist_param_t *boxlist)
     insert a box into list More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_box_in_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_box_in_list (box_param_t ** box,
    boxlist_param_tboxlist 
    )
    +
    + +

    delete a box in list

    +
    Parameters
    + + + +
    [in,out]boxaddress of the deleting box pointer
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    + +

    Referenced by const_metadatalist(), and delete_box_in_list_by_type().

    + +
    +
    + +

    ◆ delete_box_in_list_by_type()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_box_in_list_by_type (const char type[],
    boxlist_param_tboxlist 
    )
    +
    + +

    delete a box in list by Type

    +
    Parameters
    + + + +
    [in,out]typebox type
    [in]boxlistbox list pointer
    +
    +
    + +

    References delete_box_in_list(), and search_box().

    + +
    +
    + +

    ◆ delete_boxlist()

    + +
    +
    + + + + + + + + +
    void delete_boxlist (boxlist_param_t ** boxlist)
    +
    + +

    delete box list

    +
    Parameters
    + + +
    [in,out]boxlistaddress of the box list pointer
    +
    +
    + +

    References box_param::next.

    + +

    Referenced by delete_metadata(), and parse_jp2file().

    + +
    +
    + +

    ◆ fetch_DBox1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_DBox1byte (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 1-byte Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_1byte(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), and gene_faixbox().

    + +
    +
    + +

    ◆ fetch_DBox2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_DBox2bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_2bytebigendian(), and get_DBoxoff().

    + +

    Referenced by gene_mhixbox(), and set_cptrdata().

    + +
    +
    + +

    ◆ fetch_DBox4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_DBox4bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_4bytebigendian(), and get_DBoxoff().

    + +

    Referenced by gene_faixbox().

    + +
    +
    + +

    ◆ fetch_DBox8bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t fetch_DBox8bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_8bytebigendian(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), gene_faixbox(), gene_mhixbox(), set_cptrdata(), and set_mainmhixdata().

    + +
    +
    + +

    ◆ fetch_DBoxbytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_DBoxbytes (box_param_tbox,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch DBox (Box Contents) bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References box_param::fd, fetch_bytes(), and get_DBoxoff().

    + +
    +
    + +

    ◆ fetch_headbytes()

    + +
    +
    + + + + + + + + +
    Byte_t* fetch_headbytes (box_param_tbox)
    +
    + +

    fetch header bytes in file stream

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    +
    Returns
    pointer to the fetched bytes
    + +

    References box_param::fd, fetch_bytes(), box_param::headlen, and box_param::offset.

    + +

    Referenced by gene_placeholder().

    + +
    +
    + +

    ◆ gene_boxbyOffinStream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyOffinStream (Byte_tstream,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate box from code stream (JPP or JPT stream) at the given offset

    +
    Parameters
    + + + +
    [in]streamcode stream of a box
    [in]offsetBox offset of the whole stream
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References big4(), big8(), box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by parse_metadata().

    + +
    +
    + +

    ◆ gene_boxbyOffset()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyOffset (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate box from JP2 file at the given offset

    +
    Parameters
    + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_childboxbyOffset(), get_boxstructure(), and set_ppixdata().

    + +
    +
    + +

    ◆ gene_boxbyType()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyType (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from JP2 file

    +
    Parameters
    + + + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), get_filesize(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_childboxbyType(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    + +
    +
    + +

    ◆ gene_boxbyTypeinStream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyTypeinStream (Byte_tstream,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from code stream

    +
    Parameters
    + + + + + +
    [in]streamcode stream ( from the first byte)
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_ihdrbox().

    + +
    +
    + +

    ◆ gene_boxlist()

    + +
    +
    + + + + + + + + +
    boxlist_param_t* gene_boxlist (void )
    +
    + +

    generate a box list

    +
    Returns
    pointer to the generated box list
    + +

    References boxlist_param::first, and boxlist_param::last.

    + +

    Referenced by get_boxstructure(), and parse_metadata().

    + +
    +
    + +

    ◆ gene_childboxbyOffset()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_childboxbyOffset (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate child box from JP2 file at the given offset

    +
    Parameters
    + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References box_param::fd, gene_boxbyOffset(), and get_DBoxoff().

    + +
    +
    + +

    ◆ gene_childboxbyType()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_childboxbyType (box_param_tsuperbox,
    OPJ_OFF_T offset,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from JP2 file

    +
    Parameters
    + + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References FCGI_stderr, box_param::fd, gene_boxbyType(), get_DBoxlen(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx().

    + +
    +
    + +

    ◆ get_boxstructure()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    boxlist_param_t* get_boxstructure (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    get box structure of JP2 file

    +
    Parameters
    + + + + +
    [in]fdfile descriptor
    [in]offsetoffset of the decomposing region
    [in]lengthlength of the decomposing region
    +
    +
    +
    Returns
    pointer to the generated boxlist
    + +

    References gene_boxbyOffset(), gene_boxlist(), insert_box_into_list(), and box_param::length.

    + +

    Referenced by const_metadatalist(), and parse_jp2file().

    + +
    +
    + +

    ◆ get_DBoxlen()

    + +
    +
    + + + + + + + + +
    OPJ_SIZE_T get_DBoxlen (box_param_tbox)
    +
    + +

    get DBox length

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    +
    Returns
    DBox length ( content length)
    + +

    References box_param::headlen, and box_param::length.

    + +

    Referenced by const_metadatalist(), gene_childboxbyType(), gene_ihdrbox(), gene_manfbox(), gene_mhixbox(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    + +
    +
    + +

    ◆ get_DBoxoff()

    + + + +

    ◆ insert_box_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_box_into_list (box_param_tbox,
    boxlist_param_tboxlist 
    )
    +
    + +

    insert a box into list

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    + +

    Referenced by get_boxstructure(), and parse_metadata().

    + +
    +
    + +

    ◆ print_allbox()

    + +
    +
    + + + + + + + + +
    void print_allbox (boxlist_param_tboxlist)
    +
    + +

    print all box parameters

    +
    Parameters
    + + +
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, logstream, box_param::next, and print_box().

    + +

    Referenced by print_metadata().

    + +
    +
    + +

    ◆ print_box()

    + +
    +
    + + + + + + + + +
    void print_box (box_param_tbox)
    +
    + +

    print box parameters

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    + +

    References box_param::headlen, box_param::length, logstream, box_param::offset, and box_param::type.

    + +

    Referenced by print_allbox().

    + +
    +
    + +

    ◆ search_box()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* search_box (const char type[],
    boxlist_param_tboxlist 
    )
    +
    + +

    search a box by box type

    +
    Parameters
    + + + +
    [in]typebox type
    [in]boxlistbox list pointer
    +
    +
    +
    Returns
    found box pointer
    + +

    References FCGI_stderr, boxlist_param::first, box_param::next, and box_param::type.

    + +

    Referenced by check_JP2boxidx(), delete_box_in_list_by_type(), gene_ihdrbox(), and parse_jp2file().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/box__manager_8h.html b/build/doc/html/box__manager_8h.html new file mode 100644 index 000000000..986706359 --- /dev/null +++ b/build/doc/html/box__manager_8h.html @@ -0,0 +1,1110 @@ + + + + + + + +OpenJPEG: box_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    box_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  box_param
     box parameters More...
     
    struct  boxlist_param
     Box list parameters. More...
     
    + + + + + + + +

    +Typedefs

    typedef struct box_param box_param_t
     box parameters More...
     
    typedef struct boxlist_param boxlist_param_t
     Box list parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    boxlist_param_tgene_boxlist (void)
     generate a box list More...
     
    boxlist_param_tget_boxstructure (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     get box structure of JP2 file More...
     
    box_param_tgene_boxbyOffset (int fd, OPJ_OFF_T offset)
     generate box from JP2 file at the given offset More...
     
    box_param_tgene_boxbyOffinStream (Byte_t *stream, OPJ_OFF_T offset)
     generate box from code stream (JPP or JPT stream) at the given offset More...
     
    box_param_tgene_boxbyType (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from JP2 file More...
     
    box_param_tgene_boxbyTypeinStream (Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from code stream More...
     
    box_param_tgene_childboxbyOffset (box_param_t *superbox, OPJ_OFF_T offset)
     generate child box from JP2 file at the given offset More...
     
    box_param_tgene_childboxbyType (box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
     generate(search) box from JP2 file More...
     
    OPJ_OFF_T get_DBoxoff (box_param_t *box)
     get DBox offset More...
     
    OPJ_SIZE_T get_DBoxlen (box_param_t *box)
     get DBox length More...
     
    Byte_tfetch_headbytes (box_param_t *box)
     fetch header bytes in file stream More...
     
    Byte_tfetch_DBoxbytes (box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch DBox (Box Contents) bytes of data in file stream More...
     
    Byte_t fetch_DBox1byte (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_DBox2bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_DBox4bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_DBox8bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream More...
     
    box_param_tsearch_box (const char type[], boxlist_param_t *boxlist)
     search a box by box type More...
     
    void print_box (box_param_t *box)
     print box parameters More...
     
    void print_allbox (boxlist_param_t *boxlist)
     print all box parameters More...
     
    void delete_box_in_list (box_param_t **box, boxlist_param_t *boxlist)
     delete a box in list More...
     
    void delete_box_in_list_by_type (const char type[], boxlist_param_t *boxlist)
     delete a box in list by Type More...
     
    void delete_boxlist (boxlist_param_t **boxlist)
     delete box list More...
     
    void insert_box_into_list (box_param_t *box, boxlist_param_t *boxlist)
     insert a box into list More...
     
    +

    Typedef Documentation

    + +

    ◆ box_param_t

    + +
    +
    + + + + +
    typedef struct box_param box_param_t
    +
    + +

    box parameters

    + +
    +
    + +

    ◆ boxlist_param_t

    + +
    +
    + + + + +
    typedef struct boxlist_param boxlist_param_t
    +
    + +

    Box list parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_box_in_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_box_in_list (box_param_t ** box,
    boxlist_param_tboxlist 
    )
    +
    + +

    delete a box in list

    +
    Parameters
    + + + +
    [in,out]boxaddress of the deleting box pointer
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    + +

    Referenced by const_metadatalist(), and delete_box_in_list_by_type().

    + +
    +
    + +

    ◆ delete_box_in_list_by_type()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_box_in_list_by_type (const char type[],
    boxlist_param_tboxlist 
    )
    +
    + +

    delete a box in list by Type

    +
    Parameters
    + + + +
    [in,out]typebox type
    [in]boxlistbox list pointer
    +
    +
    + +

    References delete_box_in_list(), and search_box().

    + +
    +
    + +

    ◆ delete_boxlist()

    + +
    +
    + + + + + + + + +
    void delete_boxlist (boxlist_param_t ** boxlist)
    +
    + +

    delete box list

    +
    Parameters
    + + +
    [in,out]boxlistaddress of the box list pointer
    +
    +
    + +

    References box_param::next.

    + +

    Referenced by delete_metadata(), and parse_jp2file().

    + +
    +
    + +

    ◆ fetch_DBox1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_DBox1byte (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 1-byte Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_1byte(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), and gene_faixbox().

    + +
    +
    + +

    ◆ fetch_DBox2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_DBox2bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_2bytebigendian(), and get_DBoxoff().

    + +

    Referenced by gene_mhixbox(), and set_cptrdata().

    + +
    +
    + +

    ◆ fetch_DBox4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_DBox4bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_4bytebigendian(), and get_DBoxoff().

    + +

    Referenced by gene_faixbox().

    + +
    +
    + +

    ◆ fetch_DBox8bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t fetch_DBox8bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    +
    +
    +
    Returns
    fetched code
    + +

    References box_param::fd, fetch_8bytebigendian(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), gene_faixbox(), gene_mhixbox(), set_cptrdata(), and set_mainmhixdata().

    + +
    +
    + +

    ◆ fetch_DBoxbytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_DBoxbytes (box_param_tbox,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch DBox (Box Contents) bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References box_param::fd, fetch_bytes(), and get_DBoxoff().

    + +
    +
    + +

    ◆ fetch_headbytes()

    + +
    +
    + + + + + + + + +
    Byte_t* fetch_headbytes (box_param_tbox)
    +
    + +

    fetch header bytes in file stream

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    +
    Returns
    pointer to the fetched bytes
    + +

    References box_param::fd, fetch_bytes(), box_param::headlen, and box_param::offset.

    + +

    Referenced by gene_placeholder().

    + +
    +
    + +

    ◆ gene_boxbyOffinStream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyOffinStream (Byte_tstream,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate box from code stream (JPP or JPT stream) at the given offset

    +
    Parameters
    + + + +
    [in]streamcode stream of a box
    [in]offsetBox offset of the whole stream
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References big4(), big8(), box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by parse_metadata().

    + +
    +
    + +

    ◆ gene_boxbyOffset()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyOffset (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate box from JP2 file at the given offset

    +
    Parameters
    + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_childboxbyOffset(), get_boxstructure(), and set_ppixdata().

    + +
    +
    + +

    ◆ gene_boxbyType()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyType (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from JP2 file

    +
    Parameters
    + + + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), get_filesize(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_childboxbyType(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    + +
    +
    + +

    ◆ gene_boxbyTypeinStream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_boxbyTypeinStream (Byte_tstream,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from code stream

    +
    Parameters
    + + + + + +
    [in]streamcode stream ( from the first byte)
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References big4(), big8(), FCGI_stderr, box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    + +

    Referenced by gene_ihdrbox().

    + +
    +
    + +

    ◆ gene_boxlist()

    + +
    +
    + + + + + + + + +
    boxlist_param_t* gene_boxlist (void )
    +
    + +

    generate a box list

    +
    Returns
    pointer to the generated box list
    + +

    References boxlist_param::first, and boxlist_param::last.

    + +

    Referenced by get_boxstructure(), and parse_metadata().

    + +
    +
    + +

    ◆ gene_childboxbyOffset()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_childboxbyOffset (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate child box from JP2 file at the given offset

    +
    Parameters
    + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    +
    +
    +
    Returns
    pointer to the structure of generate box parameters
    + +

    References box_param::fd, gene_boxbyOffset(), and get_DBoxoff().

    + +
    +
    + +

    ◆ gene_childboxbyType()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    box_param_t* gene_childboxbyType (box_param_tsuperbox,
    OPJ_OFF_T offset,
    const char TBox[] 
    )
    +
    + +

    generate(search) box from JP2 file

    +
    Parameters
    + + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    [in]TBoxBox Type
    +
    +
    +
    Returns
    pointer to the structure of generate/found box parameters
    + +

    References FCGI_stderr, box_param::fd, gene_boxbyType(), get_DBoxlen(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx().

    + +
    +
    + +

    ◆ get_boxstructure()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    boxlist_param_t* get_boxstructure (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    get box structure of JP2 file

    +
    Parameters
    + + + + +
    [in]fdfile descriptor
    [in]offsetoffset of the decomposing region
    [in]lengthlength of the decomposing region
    +
    +
    +
    Returns
    pointer to the generated boxlist
    + +

    References gene_boxbyOffset(), gene_boxlist(), insert_box_into_list(), and box_param::length.

    + +

    Referenced by const_metadatalist(), and parse_jp2file().

    + +
    +
    + +

    ◆ get_DBoxlen()

    + +
    +
    + + + + + + + + +
    OPJ_SIZE_T get_DBoxlen (box_param_tbox)
    +
    + +

    get DBox length

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    +
    Returns
    DBox length ( content length)
    + +

    References box_param::headlen, and box_param::length.

    + +

    Referenced by const_metadatalist(), gene_childboxbyType(), gene_ihdrbox(), gene_manfbox(), gene_mhixbox(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    + +
    +
    + +

    ◆ get_DBoxoff()

    + + + +

    ◆ insert_box_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_box_into_list (box_param_tbox,
    boxlist_param_tboxlist 
    )
    +
    + +

    insert a box into list

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    + +

    Referenced by get_boxstructure(), and parse_metadata().

    + +
    +
    + +

    ◆ print_allbox()

    + +
    +
    + + + + + + + + +
    void print_allbox (boxlist_param_tboxlist)
    +
    + +

    print all box parameters

    +
    Parameters
    + + +
    [in]boxlistbox list pointer
    +
    +
    + +

    References boxlist_param::first, logstream, box_param::next, and print_box().

    + +

    Referenced by print_metadata().

    + +
    +
    + +

    ◆ print_box()

    + +
    +
    + + + + + + + + +
    void print_box (box_param_tbox)
    +
    + +

    print box parameters

    +
    Parameters
    + + +
    [in]boxbox pointer
    +
    +
    + +

    References box_param::headlen, box_param::length, logstream, box_param::offset, and box_param::type.

    + +

    Referenced by print_allbox().

    + +
    +
    + +

    ◆ search_box()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    box_param_t* search_box (const char type[],
    boxlist_param_tboxlist 
    )
    +
    + +

    search a box by box type

    +
    Parameters
    + + + +
    [in]typebox type
    [in]boxlistbox list pointer
    +
    +
    +
    Returns
    found box pointer
    + +

    References FCGI_stderr, boxlist_param::first, box_param::next, and box_param::type.

    + +

    Referenced by check_JP2boxidx(), delete_box_in_list_by_type(), gene_ihdrbox(), and parse_jp2file().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/box__manager_8h_source.html b/build/doc/html/box__manager_8h_source.html new file mode 100644 index 000000000..5d8daa2df --- /dev/null +++ b/build/doc/html/box__manager_8h_source.html @@ -0,0 +1,246 @@ + + + + + + + +OpenJPEG: box_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    box_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef BOX_MANAGER_H_
    +
    32 # define BOX_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 
    +
    37 typedef struct box_param {
    +
    38  int fd;
    + + + +
    42  char type[4];
    +
    43  struct box_param *next;
    +
    44 } box_param_t;
    +
    45 
    +
    46 
    +
    48 typedef struct boxlist_param {
    + + + +
    52 
    +
    53 
    + +
    60 
    +
    69 boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length);
    +
    70 
    +
    71 
    +
    79 box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset);
    +
    80 
    +
    81 
    + +
    90 
    +
    100 box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length,
    +
    101  const char TBox[]);
    +
    102 
    + +
    113  OPJ_SIZE_T length, const char TBox[]);
    +
    114 
    + +
    123 
    + +
    133  const char TBox[]);
    +
    134 
    + +
    142 
    +
    143 
    + +
    151 
    +
    152 
    + +
    160 
    +
    161 
    + +
    171 
    + +
    180 
    + +
    189 
    + +
    198 
    + +
    207 
    +
    208 
    +
    216 box_param_t * search_box(const char type[], boxlist_param_t *boxlist);
    +
    217 
    +
    223 void print_box(box_param_t *box);
    +
    224 
    +
    225 
    +
    231 void print_allbox(boxlist_param_t *boxlist);
    +
    232 
    +
    239 void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist);
    +
    240 
    +
    241 
    +
    248 void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist);
    +
    249 
    +
    250 
    +
    256 void delete_boxlist(boxlist_param_t **boxlist);
    +
    257 
    +
    258 
    + +
    266 
    +
    267 #endif /* !BOX_MANAGER_H_ */
    +
    +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    +
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    +
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    +
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    +
    Byte_t * fetch_DBoxbytes(box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch DBox (Box Contents) bytes of data in file stream
    Definition: box_manager.c:321
    +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    Byte_t headlen
    header length 8 or 16
    Definition: box_manager.h:40
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    Byte_t * fetch_DBoxbytes(box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch DBox (Box Contents) bytes of data in file stream
    Definition: box_manager.c:321
    +
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    +
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    +
    box parameters
    Definition: box_manager.h:37
    +
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    +
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    +
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    +
    #define FCGI_stderr
    Definition: box_manager.c:44
    +
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    +
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    +
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    +
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    +
    box_param_t * gene_childboxbyOffset(box_param_t *superbox, OPJ_OFF_T offset)
    generate child box from JP2 file at the given offset
    Definition: box_manager.c:288
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void print_box(box_param_t *box)
    print box parameters
    Definition: box_manager.c:365
    +
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    +
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    +
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    +
    struct box_param box_param_t
    box parameters
    +
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    +
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    +
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    +
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    +
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    struct boxlist_param boxlist_param_t
    Box list parameters.
    +
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    +
    char type[4]
    type of information in the DBox
    Definition: box_manager.h:42
    +
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    +
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    +
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    +
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    +
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    +
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    +
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    +
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    +
    void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist)
    delete a box in list by Type
    Definition: box_manager.c:415
    + +
    void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist)
    delete a box in list by Type
    Definition: box_manager.c:415
    +
    box_param_t * last
    last box pointer of the list
    Definition: box_manager.h:50
    +
    void print_box(box_param_t *box)
    print box parameters
    Definition: box_manager.c:365
    +
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    Box list parameters.
    Definition: box_manager.h:48
    +
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    + +
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    +
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    +
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    +
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    + +
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    +
    int fd
    file descriptor
    Definition: box_manager.h:38
    +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    +
    #define logstream
    Definition: box_manager.c:45
    +
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    +
    box_param_t * gene_childboxbyOffset(box_param_t *superbox, OPJ_OFF_T offset)
    generate child box from JP2 file at the given offset
    Definition: box_manager.c:288
    +
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    + + + + diff --git a/build/doc/html/boxheader__manager_8c.html b/build/doc/html/boxheader__manager_8c.html new file mode 100644 index 000000000..50027776b --- /dev/null +++ b/build/doc/html/boxheader__manager_8c.html @@ -0,0 +1,246 @@ + + + + + + + +OpenJPEG: boxheader_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    boxheader_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include "boxheader_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + +

    +Functions

    boxheader_param_tgene_boxheader (int fd, OPJ_OFF_T offset)
     generate a box header at the given offset More...
     
    boxheader_param_tgene_childboxheader (box_param_t *superbox, OPJ_OFF_T offset)
     generate a child box header at the given offset More...
     
    void print_boxheader (boxheader_param_t *boxheader)
     print box header parameters More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ gene_boxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* gene_boxheader (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate a box header at the given offset

    +
    Parameters
    + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    +
    +
    +
    Returns
    pointer to the structure of generate box header parameters
    + +

    References fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_bytes(), boxheader_param::headlen, boxheader_param::length, boxheader_param::next, and boxheader_param::type.

    + +

    Referenced by gene_childboxheader().

    + +
    +
    + +

    ◆ gene_childboxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* gene_childboxheader (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate a child box header at the given offset

    +
    Parameters
    + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    +
    +
    +
    Returns
    pointer to the structure of generate box header parameters
    + +

    References box_param::fd, gene_boxheader(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), and gene_manfbox().

    + +
    +
    + +

    ◆ print_boxheader()

    + +
    +
    + + + + + + + + +
    void print_boxheader (boxheader_param_tboxheader)
    +
    + +

    print box header parameters

    +
    Parameters
    + + +
    [in]boxheaderboxheader pointer
    +
    +
    + +

    References boxheader_param::length, logstream, and boxheader_param::type.

    + +

    Referenced by print_manfbox().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/boxheader__manager_8h.html b/build/doc/html/boxheader__manager_8h.html new file mode 100644 index 000000000..9667928cb --- /dev/null +++ b/build/doc/html/boxheader__manager_8h.html @@ -0,0 +1,224 @@ + + + + + + + +OpenJPEG: boxheader_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    boxheader_manager.h File Reference
    +
    +
    +
    #include "openjpeg.h"
    +#include "byte_manager.h"
    +#include "box_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  boxheader_param
     box header parameters More...
     
    + + + + +

    +Typedefs

    typedef struct boxheader_param boxheader_param_t
     box header parameters More...
     
    + + + + + + + + + + +

    +Functions

    boxheader_param_tgene_boxheader (int fd, OPJ_OFF_T offset)
     generate a box header at the given offset More...
     
    boxheader_param_tgene_childboxheader (box_param_t *superbox, OPJ_OFF_T offset)
     generate a child box header at the given offset More...
     
    void print_boxheader (boxheader_param_t *boxheader)
     print box header parameters More...
     
    +

    Typedef Documentation

    + +

    ◆ boxheader_param_t

    + +
    +
    + + + + +
    typedef struct boxheader_param boxheader_param_t
    +
    + +

    box header parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ gene_boxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* gene_boxheader (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate a box header at the given offset

    +
    Parameters
    + + + +
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    +
    +
    +
    Returns
    pointer to the structure of generate box header parameters
    + +

    References fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_bytes(), boxheader_param::headlen, boxheader_param::length, boxheader_param::next, and boxheader_param::type.

    + +

    Referenced by gene_childboxheader().

    + +
    +
    + +

    ◆ gene_childboxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* gene_childboxheader (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    +
    + +

    generate a child box header at the given offset

    +
    Parameters
    + + + +
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    +
    +
    +
    Returns
    pointer to the structure of generate box header parameters
    + +

    References box_param::fd, gene_boxheader(), and get_DBoxoff().

    + +

    Referenced by check_JP2boxidx(), and gene_manfbox().

    + +
    +
    + +

    ◆ print_boxheader()

    + +
    +
    + + + + + + + + +
    void print_boxheader (boxheader_param_tboxheader)
    +
    + +

    print box header parameters

    +
    Parameters
    + + +
    [in]boxheaderboxheader pointer
    +
    +
    + +

    References boxheader_param::length, logstream, and boxheader_param::type.

    + +

    Referenced by print_manfbox().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/boxheader__manager_8h_source.html b/build/doc/html/boxheader__manager_8h_source.html new file mode 100644 index 000000000..260982f8d --- /dev/null +++ b/build/doc/html/boxheader__manager_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +OpenJPEG: boxheader_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    boxheader_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef BOXHEADER_MANAGER_H_
    +
    32 # define BOXHEADER_MANAGER_H_
    +
    33 
    +
    34 #include "openjpeg.h"
    +
    35 #include "byte_manager.h"
    +
    36 #include "box_manager.h"
    +
    37 
    +
    39 typedef struct boxheader_param {
    + + +
    42  char type[4];
    + + +
    45 
    +
    46 
    + +
    55 
    + +
    64  OPJ_OFF_T offset);
    +
    65 
    +
    71 void print_boxheader(boxheader_param_t *boxheader);
    +
    72 
    +
    73 #endif /* !BOXHEADER_MANAGER_H_ */
    +
    +
    boxheader_param_t * gene_boxheader(int fd, OPJ_OFF_T offset)
    generate a box header at the given offset
    Definition: boxheader_manager.c:48
    +
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    +
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    +
    box header parameters
    Definition: boxheader_manager.h:39
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    box parameters
    Definition: box_manager.h:37
    +
    #define logstream
    Definition: boxheader_manager.c:44
    +
    struct boxheader_param boxheader_param_t
    box header parameters
    +
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    + +
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    +
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    +
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    +
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    + + +
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    +
    boxheader_param_t * gene_boxheader(int fd, OPJ_OFF_T offset)
    generate a box header at the given offset
    Definition: boxheader_manager.c:48
    + +
    int fd
    file descriptor
    Definition: box_manager.h:38
    +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte8_t length
    length of the reference Box
    Definition: boxheader_manager.h:41
    + +
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    + + + + diff --git a/build/doc/html/byte__manager_8c.html b/build/doc/html/byte__manager_8c.html new file mode 100644 index 000000000..b5e7cbf45 --- /dev/null +++ b/build/doc/html/byte__manager_8c.html @@ -0,0 +1,530 @@ + + + + + + + +OpenJPEG: byte_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    byte_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <sys/types.h>
    +#include <unistd.h>
    +#include <stdlib.h>
    +#include <sys/stat.h>
    +#include "byte_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Byte_tfetch_bytes (int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch bytes of data in file stream More...
     
    Byte_t fetch_1byte (int fd, OPJ_OFF_T offset)
     fetch a 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_2bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_4bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_8bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 8-byte big endian Byte codes in file stream More...
     
    Byte2_t big2 (Byte_t *buf)
     convert 2-byte big endian Byte codes to number More...
     
    Byte4_t big4 (Byte_t *buf)
     convert 4-byte big endian Byte codes to number More...
     
    Byte8_t big8 (Byte_t *buf)
     convert 8-byte big endian Byte codes to number More...
     
    void modify_4Bytecode (Byte4_t code, Byte_t *stream)
     modify 4Byte code in a codestream More...
     
    OPJ_OFF_T get_filesize (int fd)
     Get file size. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ big2()

    + +
    +
    + + + + + + + + +
    Byte2_t big2 (Byte_tbuf)
    +
    + +

    convert 2-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    Referenced by fetch_2bytebigendian(), gene_ihdrbox(), get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), and modify_COCmkrstream().

    + +
    +
    + +

    ◆ big4()

    + +
    +
    + + + + + + + + +
    Byte4_t big4 (Byte_tbuf)
    +
    + +

    convert 4-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    Referenced by add_emptyboxstream(), big8(), fetch_4bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), gene_ihdrbox(), get_SIZmkrdata_from_j2kstream(), and parse_phld().

    + +
    +
    + +

    ◆ big8()

    + +
    +
    + + + + + + + + +
    Byte8_t big8 (Byte_tbuf)
    +
    + +

    convert 8-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    References big4().

    + +

    Referenced by add_emptyboxstream(), fetch_8bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), and parse_phld().

    + +
    +
    + +

    ◆ fetch_1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_1byte (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 1-byte Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by fetch_codestream1byte(), and fetch_DBox1byte().

    + +
    +
    + +

    ◆ fetch_2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_2bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big2(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_codestream2bytebigendian(), and fetch_DBox2bytebigendian().

    + +
    +
    + +

    ◆ fetch_4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_4bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big4(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_codestream4bytebigendian(), fetch_DBox4bytebigendian(), and gene_boxheader().

    + +
    +
    + +

    ◆ fetch_8bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t fetch_8bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 8-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big8(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_DBox8bytebigendian(), and gene_boxheader().

    + +
    +
    + +

    ◆ fetch_bytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_bytes (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by add_body_stream(), fetch_2bytebigendian(), fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_codestreambytes(), fetch_DBoxbytes(), fetch_headbytes(), gene_boxbyOffset(), gene_boxbyType(), and gene_boxheader().

    + +
    +
    + +

    ◆ get_filesize()

    + +
    +
    + + + + + + + + +
    OPJ_OFF_T get_filesize (int fd)
    +
    + +

    Get file size.

    +
    Parameters
    + + +
    [in]fdfile discriptor
    +
    +
    +
    Returns
    file size
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by const_metadatalist(), fread_jpip(), gene_boxbyType(), and parse_jp2file().

    + +
    +
    + +

    ◆ modify_4Bytecode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void modify_4Bytecode (Byte4_t code,
    Byte_tstream 
    )
    +
    + +

    modify 4Byte code in a codestream

    +
    Parameters
    + + + +
    [in]codecode value
    [out]streammodifying codestream
    +
    +
    + +

    Referenced by modify_SIZmkrstream(), and modify_tileheader().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/byte__manager_8h.html b/build/doc/html/byte__manager_8h.html new file mode 100644 index 000000000..6d5ccfed6 --- /dev/null +++ b/build/doc/html/byte__manager_8h.html @@ -0,0 +1,545 @@ + + + + + + + +OpenJPEG: byte_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    byte_manager.h File Reference
    +
    +
    +
    #include <stddef.h>
    +#include "openjpeg.h"
    +#include "opj_stdint.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Typedefs

    typedef uint8_t Byte_t
     
    typedef uint16_t Byte2_t
     
    typedef uint32_t Byte4_t
     
    typedef uint64_t Byte8_t
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Byte_tfetch_bytes (int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch bytes of data in file stream More...
     
    Byte_t fetch_1byte (int fd, OPJ_OFF_T offset)
     fetch a 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_2bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_4bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_8bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 8-byte big endian Byte codes in file stream More...
     
    Byte2_t big2 (Byte_t *buf)
     convert 2-byte big endian Byte codes to number More...
     
    Byte4_t big4 (Byte_t *buf)
     convert 4-byte big endian Byte codes to number More...
     
    Byte8_t big8 (Byte_t *buf)
     convert 8-byte big endian Byte codes to number More...
     
    void modify_4Bytecode (Byte4_t code, Byte_t *stream)
     modify 4Byte code in a codestream More...
     
    OPJ_OFF_T get_filesize (int fd)
     Get file size. More...
     
    +

    Typedef Documentation

    + +

    ◆ Byte2_t

    + +
    +
    + + + + +
    typedef uint16_t Byte2_t
    +
    + +
    +
    + +

    ◆ Byte4_t

    + +
    +
    + + + + +
    typedef uint32_t Byte4_t
    +
    + +
    +
    + +

    ◆ Byte8_t

    + +
    +
    + + + + +
    typedef uint64_t Byte8_t
    +
    + +
    +
    + +

    ◆ Byte_t

    + +
    +
    + + + + +
    typedef uint8_t Byte_t
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ big2()

    + +
    +
    + + + + + + + + +
    Byte2_t big2 (Byte_tbuf)
    +
    + +

    convert 2-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    Referenced by fetch_2bytebigendian(), gene_ihdrbox(), get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), and modify_COCmkrstream().

    + +
    +
    + +

    ◆ big4()

    + +
    +
    + + + + + + + + +
    Byte4_t big4 (Byte_tbuf)
    +
    + +

    convert 4-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    Referenced by add_emptyboxstream(), big8(), fetch_4bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), gene_ihdrbox(), get_SIZmkrdata_from_j2kstream(), and parse_phld().

    + +
    +
    + +

    ◆ big8()

    + +
    +
    + + + + + + + + +
    Byte8_t big8 (Byte_tbuf)
    +
    + +

    convert 8-byte big endian Byte codes to number

    +
    Parameters
    + + +
    [in]bufByte codes
    +
    +
    +
    Returns
    resolved number
    + +

    References big4().

    + +

    Referenced by add_emptyboxstream(), fetch_8bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), and parse_phld().

    + +
    +
    + +

    ◆ fetch_1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_1byte (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 1-byte Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by fetch_codestream1byte(), and fetch_DBox1byte().

    + +
    +
    + +

    ◆ fetch_2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_2bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big2(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_codestream2bytebigendian(), and fetch_DBox2bytebigendian().

    + +
    +
    + +

    ◆ fetch_4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_4bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big4(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_codestream4bytebigendian(), fetch_DBox4bytebigendian(), and gene_boxheader().

    + +
    +
    + +

    ◆ fetch_8bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t fetch_8bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch a 8-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    +
    +
    +
    Returns
    fetched codes
    + +

    References big8(), FCGI_stderr, and fetch_bytes().

    + +

    Referenced by fetch_DBox8bytebigendian(), and gene_boxheader().

    + +
    +
    + +

    ◆ fetch_bytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_bytes (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]fdfile discriptor
    [in]offsetstart Byte position
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by add_body_stream(), fetch_2bytebigendian(), fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_codestreambytes(), fetch_DBoxbytes(), fetch_headbytes(), gene_boxbyOffset(), gene_boxbyType(), and gene_boxheader().

    + +
    +
    + +

    ◆ get_filesize()

    + +
    +
    + + + + + + + + +
    OPJ_OFF_T get_filesize (int fd)
    +
    + +

    Get file size.

    +
    Parameters
    + + +
    [in]fdfile discriptor
    +
    +
    +
    Returns
    file size
    + +

    References FCGI_stderr, and FCGI_stdout.

    + +

    Referenced by const_metadatalist(), fread_jpip(), gene_boxbyType(), and parse_jp2file().

    + +
    +
    + +

    ◆ modify_4Bytecode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void modify_4Bytecode (Byte4_t code,
    Byte_tstream 
    )
    +
    + +

    modify 4Byte code in a codestream

    +
    Parameters
    + + + +
    [in]codecode value
    [out]streammodifying codestream
    +
    +
    + +

    Referenced by modify_SIZmkrstream(), and modify_tileheader().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/byte__manager_8h_source.html b/build/doc/html/byte__manager_8h_source.html new file mode 100644 index 000000000..960204d1e --- /dev/null +++ b/build/doc/html/byte__manager_8h_source.html @@ -0,0 +1,153 @@ + + + + + + + +OpenJPEG: byte_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    byte_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef BYTE_MANAGER_H_
    +
    32 #define BYTE_MANAGER_H_
    +
    33 
    +
    34 #include <stddef.h>
    +
    35 #include "openjpeg.h"
    +
    36 #include "opj_stdint.h"
    +
    37 typedef uint8_t Byte_t;
    +
    38 typedef uint16_t Byte2_t;
    +
    39 typedef uint32_t Byte4_t;
    +
    40 typedef uint64_t Byte8_t;
    +
    41 
    +
    50 Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size);
    +
    51 
    +
    52 
    +
    60 Byte_t fetch_1byte(int fd, OPJ_OFF_T offset);
    +
    61 
    +
    69 Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset);
    +
    70 
    +
    78 Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset);
    +
    79 
    +
    87 Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset);
    +
    88 
    +
    89 
    +
    96 Byte2_t big2(Byte_t *buf);
    +
    97 
    +
    104 Byte4_t big4(Byte_t *buf);
    +
    105 
    +
    112 Byte8_t big8(Byte_t *buf);
    +
    113 
    +
    120 void modify_4Bytecode(Byte4_t code, Byte_t *stream);
    +
    121 
    +
    128 OPJ_OFF_T get_filesize(int fd);
    +
    129 
    +
    130 #endif /* !BYTE_MANAGER_H_ */
    +
    +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    #define FCGI_stderr
    Definition: byte_manager.c:47
    + +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    +
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    +
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    +
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    +
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    +
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    + +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    +
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    +
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    +
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    + +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    #define FCGI_stdout
    Definition: byte_manager.c:46
    +
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    + + + + diff --git a/build/doc/html/cache__manager_8c.html b/build/doc/html/cache__manager_8c.html new file mode 100644 index 000000000..1606aaffb --- /dev/null +++ b/build/doc/html/cache__manager_8c.html @@ -0,0 +1,676 @@ + + + + + + + +OpenJPEG: cache_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cache_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include "cache_manager.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    cachelist_param_tgene_cachelist (void)
     generate a cache list More...
     
    void delete_cachelist (cachelist_param_t **cachelist)
     delete cache list More...
     
    cache_param_tgene_cache (const char *targetname, int csn, char *tid, char *cid)
     generate a cache More...
     
    void delete_cache (cache_param_t **cache)
     delete a cache More...
     
    void insert_cache_into_list (cache_param_t *cache, cachelist_param_t *cachelist)
     insert a cache into list More...
     
    cache_param_tsearch_cache (const char targetname[], cachelist_param_t *cachelist)
     search a cache by target name More...
     
    cache_param_tsearch_cacheBycsn (int csn, cachelist_param_t *cachelist)
     search a cache by csn More...
     
    cache_param_tsearch_cacheBycid (const char cid[], cachelist_param_t *cachelist)
     search a cache by cid More...
     
    cache_param_tsearch_cacheBytid (const char tid[], cachelist_param_t *cachelist)
     search a cache by tid More...
     
    void add_cachecid (const char *cid, cache_param_t *cache)
     add cid into a cache More...
     
    void update_cachetid (const char *tid, cache_param_t *cache)
     update tid of a cache More...
     
    void remove_cidInCache (const char *cid, cache_param_t *cache)
     
    void remove_cachecid (const char *cid, cachelist_param_t *cachelist)
     remove cid in cache More...
     
    void print_cache (cache_param_t *cache)
     print cache parameters More...
     
    void print_allcache (cachelist_param_t *cachelist)
     print all cache parameters More...
     
    +

    Function Documentation

    + +

    ◆ add_cachecid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void add_cachecid (const char * cid,
    cache_param_tcache 
    )
    +
    + +

    add cid into a cache

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::cid, and cache_param::numOfcid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ delete_cache()

    + +
    +
    + + + + + + + + +
    void delete_cache (cache_param_t ** cache)
    +
    + +

    delete a cache

    +
    Parameters
    + + +
    [in]cacheaddress of the cache pointer
    +
    +
    + +

    References delete_metadatalist().

    + +

    Referenced by delete_cachelist().

    + +
    +
    + +

    ◆ delete_cachelist()

    + +
    +
    + + + + + + + + +
    void delete_cachelist (cachelist_param_t ** cachelist)
    +
    + +

    delete cache list

    +
    Parameters
    + + +
    [in,out]cachelistaddress of the cache list pointer
    +
    +
    + +

    References delete_cache(), and cache_param::next.

    + +

    Referenced by terminate_dec_server().

    + +
    +
    + +

    ◆ gene_cache()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cache_param_t* gene_cache (const char * targetname,
    int csn,
    char * tid,
    char * cid 
    )
    +
    + +

    generate a cache

    +
    Parameters
    + + + + + +
    [in]targetnametarget file name
    [in]csncodestream number
    [in]tidtarget identifier
    [in]cidchannel identifier
    +
    +
    +
    Returns
    pointer to the generated cache
    + +

    References cache_param::cid, cache_param::csn, cache_param::filename, gene_metadatalist(), cache_param::ihdrbox, cache_param::metadatalist, cache_param::next, cache_param::numOfcid, and cache_param::tid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ gene_cachelist()

    + +
    +
    + + + + + + + + +
    cachelist_param_t* gene_cachelist (void )
    +
    + +

    generate a cache list

    +
    Returns
    pointer to the generated cache list
    + +

    References cachelist_param::first, and cachelist_param::last.

    + +

    Referenced by init_dec_server().

    + +
    +
    + +

    ◆ insert_cache_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_cache_into_list (cache_param_tcache,
    cachelist_param_tcachelist 
    )
    +
    + +

    insert a cache into list

    +
    Parameters
    + + + +
    [in]cachecache pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References cachelist_param::first, cachelist_param::last, and cache_param::next.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ print_allcache()

    + +
    +
    + + + + + + + + +
    void print_allcache (cachelist_param_tcachelist)
    +
    + +

    print all cache parameters

    +
    Parameters
    + + +
    [in]cachelistcache list pointer
    +
    +
    + +

    References cachelist_param::first, cache_param::next, and print_cache().

    + +
    +
    + +

    ◆ print_cache()

    + +
    +
    + + + + + + + + +
    void print_cache (cache_param_tcache)
    +
    + +

    print cache parameters

    +
    Parameters
    + + +
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::cid, cache_param::csn, cache_param::filename, cache_param::numOfcid, and cache_param::tid.

    + +

    Referenced by print_allcache().

    + +
    +
    + +

    ◆ remove_cachecid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void remove_cachecid (const char * cid,
    cachelist_param_tcachelist 
    )
    +
    + +

    remove cid in cache

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachelistcachelist pointer
    +
    +
    + +

    References remove_cidInCache(), and search_cacheBycid().

    + +

    Referenced by handle_dstCIDreqMSG().

    + +
    +
    + +

    ◆ remove_cidInCache()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void remove_cidInCache (const char * cid,
    cache_param_tcache 
    )
    +
    + +

    References cache_param::cid, and cache_param::numOfcid.

    + +

    Referenced by remove_cachecid().

    + +
    +
    + +

    ◆ search_cache()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cache (const char targetname[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by target name

    +
    Parameters
    + + + +
    [in]targetnametarget filename
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::filename, cachelist_param::first, and cache_param::next.

    + +

    Referenced by handle_CIDreqMSG(), handle_JPIPstreamMSG(), and handle_TIDreqMSG().

    + +
    +
    + +

    ◆ search_cacheBycid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBycid (const char cid[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by cid

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::cid, cachelist_param::first, cache_param::next, and cache_param::numOfcid.

    + +

    Referenced by handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_XMLreqMSG(), and remove_cachecid().

    + +
    +
    + +

    ◆ search_cacheBycsn()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBycsn (int csn,
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by csn

    +
    Parameters
    + + + +
    [in]csncodestream number
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::csn, cachelist_param::first, and cache_param::next.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ search_cacheBytid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBytid (const char tid[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by tid

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cachelist_param::first, cache_param::next, and cache_param::tid.

    + +

    Referenced by handle_PNMreqMSG(), and handle_SIZreqMSG().

    + +
    +
    + +

    ◆ update_cachetid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void update_cachetid (const char * tid,
    cache_param_tcache 
    )
    +
    + +

    update tid of a cache

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::filename, and cache_param::tid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/cache__manager_8h.html b/build/doc/html/cache__manager_8h.html new file mode 100644 index 000000000..db1f61aac --- /dev/null +++ b/build/doc/html/cache__manager_8h.html @@ -0,0 +1,692 @@ + + + + + + + +OpenJPEG: cache_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cache_manager.h File Reference
    +
    +
    +
    #include "metadata_manager.h"
    +#include "ihdrbox_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Data Structures

    struct  cache_param
     cache parameters More...
     
    struct  cachelist_param
     
    + + + + + + +

    +Typedefs

    typedef struct cache_param cache_param_t
     cache parameters More...
     
    typedef struct cachelist_param cachelist_param_t
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    cachelist_param_tgene_cachelist (void)
     generate a cache list More...
     
    void delete_cachelist (cachelist_param_t **cachelist)
     delete cache list More...
     
    cache_param_tgene_cache (const char *targetname, int csn, char *tid, char *cid)
     generate a cache More...
     
    void delete_cache (cache_param_t **cache)
     delete a cache More...
     
    void insert_cache_into_list (cache_param_t *cache, cachelist_param_t *cachelist)
     insert a cache into list More...
     
    cache_param_tsearch_cache (const char targetname[], cachelist_param_t *cachelist)
     search a cache by target name More...
     
    cache_param_tsearch_cacheBycsn (int csn, cachelist_param_t *cachelist)
     search a cache by csn More...
     
    cache_param_tsearch_cacheBycid (const char cid[], cachelist_param_t *cachelist)
     search a cache by cid More...
     
    cache_param_tsearch_cacheBytid (const char tid[], cachelist_param_t *cachelist)
     search a cache by tid More...
     
    void add_cachecid (const char *cid, cache_param_t *cache)
     add cid into a cache More...
     
    void update_cachetid (const char *tid, cache_param_t *cache)
     update tid of a cache More...
     
    void remove_cachecid (const char *cid, cachelist_param_t *cachelist)
     remove cid in cache More...
     
    void print_cache (cache_param_t *cache)
     print cache parameters More...
     
    void print_allcache (cachelist_param_t *cachelist)
     print all cache parameters More...
     
    +

    Typedef Documentation

    + +

    ◆ cache_param_t

    + +
    +
    + + + + +
    typedef struct cache_param cache_param_t
    +
    + +

    cache parameters

    +

    cache list parameters

    + +
    +
    + +

    ◆ cachelist_param_t

    + +
    +
    + + + + +
    typedef struct cachelist_param cachelist_param_t
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ add_cachecid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void add_cachecid (const char * cid,
    cache_param_tcache 
    )
    +
    + +

    add cid into a cache

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::cid, and cache_param::numOfcid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ delete_cache()

    + +
    +
    + + + + + + + + +
    void delete_cache (cache_param_t ** cache)
    +
    + +

    delete a cache

    +
    Parameters
    + + +
    [in]cacheaddress of the cache pointer
    +
    +
    + +

    References delete_metadatalist().

    + +

    Referenced by delete_cachelist().

    + +
    +
    + +

    ◆ delete_cachelist()

    + +
    +
    + + + + + + + + +
    void delete_cachelist (cachelist_param_t ** cachelist)
    +
    + +

    delete cache list

    +
    Parameters
    + + +
    [in,out]cachelistaddress of the cache list pointer
    +
    +
    + +

    References delete_cache(), and cache_param::next.

    + +

    Referenced by terminate_dec_server().

    + +
    +
    + +

    ◆ gene_cache()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cache_param_t* gene_cache (const char * targetname,
    int csn,
    char * tid,
    char * cid 
    )
    +
    + +

    generate a cache

    +
    Parameters
    + + + + + +
    [in]targetnametarget file name
    [in]csncodestream number
    [in]tidtarget identifier
    [in]cidchannel identifier
    +
    +
    +
    Returns
    pointer to the generated cache
    + +

    References cache_param::cid, cache_param::csn, cache_param::filename, gene_metadatalist(), cache_param::ihdrbox, cache_param::metadatalist, cache_param::next, cache_param::numOfcid, and cache_param::tid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ gene_cachelist()

    + +
    +
    + + + + + + + + +
    cachelist_param_t* gene_cachelist (void )
    +
    + +

    generate a cache list

    +
    Returns
    pointer to the generated cache list
    + +

    References cachelist_param::first, and cachelist_param::last.

    + +

    Referenced by init_dec_server().

    + +
    +
    + +

    ◆ insert_cache_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_cache_into_list (cache_param_tcache,
    cachelist_param_tcachelist 
    )
    +
    + +

    insert a cache into list

    +
    Parameters
    + + + +
    [in]cachecache pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References cachelist_param::first, cachelist_param::last, and cache_param::next.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ print_allcache()

    + +
    +
    + + + + + + + + +
    void print_allcache (cachelist_param_tcachelist)
    +
    + +

    print all cache parameters

    +
    Parameters
    + + +
    [in]cachelistcache list pointer
    +
    +
    + +

    References cachelist_param::first, cache_param::next, and print_cache().

    + +
    +
    + +

    ◆ print_cache()

    + +
    +
    + + + + + + + + +
    void print_cache (cache_param_tcache)
    +
    + +

    print cache parameters

    +
    Parameters
    + + +
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::cid, cache_param::csn, cache_param::filename, cache_param::numOfcid, and cache_param::tid.

    + +

    Referenced by print_allcache().

    + +
    +
    + +

    ◆ remove_cachecid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void remove_cachecid (const char * cid,
    cachelist_param_tcachelist 
    )
    +
    + +

    remove cid in cache

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachelistcachelist pointer
    +
    +
    + +

    References remove_cidInCache(), and search_cacheBycid().

    + +

    Referenced by handle_dstCIDreqMSG().

    + +
    +
    + +

    ◆ search_cache()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cache (const char targetname[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by target name

    +
    Parameters
    + + + +
    [in]targetnametarget filename
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::filename, cachelist_param::first, and cache_param::next.

    + +

    Referenced by handle_CIDreqMSG(), handle_JPIPstreamMSG(), and handle_TIDreqMSG().

    + +
    +
    + +

    ◆ search_cacheBycid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBycid (const char cid[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by cid

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::cid, cachelist_param::first, cache_param::next, and cache_param::numOfcid.

    + +

    Referenced by handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_XMLreqMSG(), and remove_cachecid().

    + +
    +
    + +

    ◆ search_cacheBycsn()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBycsn (int csn,
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by csn

    +
    Parameters
    + + + +
    [in]csncodestream number
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cache_param::csn, cachelist_param::first, and cache_param::next.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ search_cacheBytid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cache_param_t* search_cacheBytid (const char tid[],
    cachelist_param_tcachelist 
    )
    +
    + +

    search a cache by tid

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]cachelistcache list pointer
    +
    +
    +
    Returns
    found cache pointer
    + +

    References cachelist_param::first, cache_param::next, and cache_param::tid.

    + +

    Referenced by handle_PNMreqMSG(), and handle_SIZreqMSG().

    + +
    +
    + +

    ◆ update_cachetid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void update_cachetid (const char * tid,
    cache_param_tcache 
    )
    +
    + +

    update tid of a cache

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]cachecache pointer
    +
    +
    + +

    References cache_param::filename, and cache_param::tid.

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/cache__manager_8h_source.html b/build/doc/html/cache__manager_8h_source.html new file mode 100644 index 000000000..ef0fb5beb --- /dev/null +++ b/build/doc/html/cache__manager_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +OpenJPEG: cache_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    cache_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef CACHE_MANAGER_H_
    +
    32 # define CACHE_MANAGER_H_
    +
    33 
    +
    34 #include "metadata_manager.h"
    +
    35 #include "ihdrbox_manager.h"
    +
    36 
    +
    38 typedef struct cache_param {
    +
    39  char *filename;
    +
    40  char *tid;
    +
    41  int csn;
    +
    42  char **cid;
    +
    43  int numOfcid;
    + + +
    46  struct cache_param *next;
    + +
    48 
    +
    50 typedef struct cachelist_param {
    + + + +
    54 
    +
    55 
    + +
    62 
    +
    68 void delete_cachelist(cachelist_param_t **cachelist);
    +
    69 
    +
    79 cache_param_t * gene_cache(const char *targetname, int csn, char *tid,
    +
    80  char *cid);
    +
    81 
    +
    87 void delete_cache(cache_param_t **cache);
    +
    88 
    + +
    96 
    +
    97 
    +
    105 cache_param_t * search_cache(const char targetname[],
    +
    106  cachelist_param_t *cachelist);
    +
    107 
    +
    108 
    +
    116 cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist);
    +
    117 
    +
    118 
    +
    126 cache_param_t * search_cacheBycid(const char cid[],
    +
    127  cachelist_param_t *cachelist);
    +
    128 
    +
    129 
    +
    137 cache_param_t * search_cacheBytid(const char tid[],
    +
    138  cachelist_param_t *cachelist);
    +
    139 
    +
    146 void add_cachecid(const char *cid, cache_param_t *cache);
    +
    147 
    +
    148 
    +
    155 void update_cachetid(const char *tid, cache_param_t *cache);
    +
    156 
    +
    157 
    +
    164 void remove_cachecid(const char *cid, cachelist_param_t *cachelist);
    +
    165 
    +
    166 
    +
    172 void print_cache(cache_param_t *cache);
    +
    173 
    +
    179 void print_allcache(cachelist_param_t *cachelist);
    +
    180 
    +
    181 #endif /* !CACHE_MANAGER_H_ */
    +
    +
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    +
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    +
    void print_cache(cache_param_t *cache)
    print cache parameters
    Definition: cache_manager.c:267
    +
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    +
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    +
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    + + +
    void delete_cache(cache_param_t **cache)
    delete a cache
    Definition: cache_manager.c:84
    +
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    +
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    +
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    +
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    +
    char * tid
    taregt identifier
    Definition: cache_manager.h:40
    +
    int numOfcid
    number of cids
    Definition: cache_manager.h:43
    +
    char ** cid
    dynamic array of channel identifiers
    Definition: cache_manager.h:42
    +
    void print_allcache(cachelist_param_t *cachelist)
    print all cache parameters
    Definition: cache_manager.c:283
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    cache parameters
    Definition: cache_manager.h:38
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    +
    cache_param_t * last
    last cache pointer of the list
    Definition: cache_manager.h:52
    +
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    +
    struct cachelist_param cachelist_param_t
    +
    cache_param_t * first
    first cache pointer of the list
    Definition: cache_manager.h:51
    +
    struct cache_param cache_param_t
    cache parameters
    +
    struct cache_param * next
    pointer to the next cache
    Definition: cache_manager.h:46
    +
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    +
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    +
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    + +
    void remove_cidInCache(const char *cid, cache_param_t *cache)
    Definition: cache_manager.c:233
    +
    char * filename
    file name
    Definition: cache_manager.h:39
    +
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    +
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    +
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    +
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    +
    void delete_cache(cache_param_t **cache)
    delete a cache
    Definition: cache_manager.c:84
    +
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    +
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    +
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    +
    void print_allcache(cachelist_param_t *cachelist)
    print all cache parameters
    Definition: cache_manager.c:283
    +
    Definition: cache_manager.h:50
    +
    ihdrbox_param_t * ihdrbox
    ihdrbox
    Definition: cache_manager.h:45
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    +
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    +
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    +
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: cache_manager.h:44
    +
    int csn
    codestream number
    Definition: cache_manager.h:41
    +
    void print_cache(cache_param_t *cache)
    print cache parameters
    Definition: cache_manager.c:267
    + + + + diff --git a/build/doc/html/cachemodel__manager_8c.html b/build/doc/html/cachemodel__manager_8c.html new file mode 100644 index 000000000..94890a3e4 --- /dev/null +++ b/build/doc/html/cachemodel__manager_8c.html @@ -0,0 +1,377 @@ + + + + + + + +OpenJPEG: cachemodel_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cachemodel_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include "cachemodel_manager.h"
    +#include "faixbox_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    cachemodellist_param_tgene_cachemodellist (void)
     generate a cache model list More...
     
    cachemodel_param_tgene_cachemodel (cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
     generate a cache model under a list More...
     
    void print_cachemodel (cachemodel_param_t cachemodel)
     print cache model More...
     
    cachemodel_param_tsearch_cachemodel (target_param_t *target, cachemodellist_param_t *cachemodellist)
     search a cache model of a target More...
     
    void delete_cachemodellist (cachemodellist_param_t **cachemodellist)
     delete cachemodel list More...
     
    void delete_cachemodel (cachemodel_param_t **cachemodel)
     delete a cache model More...
     
    OPJ_BOOL is_allsent (cachemodel_param_t cachemodel)
     check if all data has been sent More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_cachemodel()

    + +
    +
    + + + + + + + + +
    void delete_cachemodel (cachemodel_param_t ** cachemodel)
    +
    + +

    delete a cache model

    +
    Parameters
    + + +
    [in]cachemodeladdress of the cachemodel pointer
    +
    +
    + +

    References logstream, opj_free(), and unrefer_target().

    + +

    Referenced by delete_cachemodellist(), and delete_msgqueue().

    + +
    +
    + +

    ◆ delete_cachemodellist()

    + +
    +
    + + + + + + + + +
    void delete_cachemodellist (cachemodellist_param_t ** cachemodellist)
    +
    + +

    delete cachemodel list

    +
    Parameters
    + + +
    [in,out]cachemodellistaddress of the cachemodel list pointer
    +
    +
    + +

    References delete_cachemodel(), cachemodel_param::next, and opj_free().

    + +

    Referenced by delete_session(), and delete_sessionlist().

    + +
    +
    + +

    ◆ gene_cachemodel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cachemodel_param_t* gene_cachemodel (cachemodellist_param_tcachemodellist,
    target_param_ttarget,
    OPJ_BOOL reqJPP 
    )
    +
    + +

    generate a cache model under a list

    +
    Parameters
    + + + + +
    [in]cachemodellistcachemodel list to insert the generated cache model, NULL for stateless
    [in]targetpointer the reference target
    [in]reqJPPif JPP-stream is desired true, JPT-stream false
    +
    +
    +
    Returns
    pointer to the generated cache model
    + +

    References target_param::codeidx, SIZmarker_param::Csiz, cachemodellist_param::first, get_m(), get_nmax(), cachemodel_param::jppstream, target_param::jppstream, target_param::jptstream, cachemodellist_param::last, logstream, cachemodel_param::mhead_model, cachemodel_param::next, opj_calloc(), OPJ_FALSE, opj_malloc(), OPJ_TRUE, cachemodel_param::pp_model, index_param::precpacket, refer_target(), index_param::SIZ, cachemodel_param::target, cachemodel_param::th_model, index_param::tilepart, and cachemodel_param::tp_model.

    + +

    Referenced by gene_JPIPstream(), and open_channel().

    + +
    +
    + +

    ◆ gene_cachemodellist()

    + +
    +
    + + + + + + + + +
    cachemodellist_param_t* gene_cachemodellist (void )
    +
    + +

    generate a cache model list

    +
    Returns
    pointer to the generated cache model list
    + +

    References cachemodellist_param::first, cachemodellist_param::last, and opj_malloc().

    + +

    Referenced by gene_session().

    + +
    +
    + +

    ◆ is_allsent()

    + + + +

    ◆ print_cachemodel()

    + + + +

    ◆ search_cachemodel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cachemodel_param_t* search_cachemodel (target_param_ttarget,
    cachemodellist_param_tcachemodellist 
    )
    +
    + +

    search a cache model of a target

    +
    Parameters
    + + + +
    [in]targetreferring target
    [in]cachemodellistcache model list
    +
    +
    +
    Returns
    found cache model pointer
    + +

    References cachemodellist_param::first, cachemodel_param::next, and cachemodel_param::target.

    + +

    Referenced by open_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/cachemodel__manager_8h.html b/build/doc/html/cachemodel__manager_8h.html new file mode 100644 index 000000000..b2a246f22 --- /dev/null +++ b/build/doc/html/cachemodel__manager_8h.html @@ -0,0 +1,375 @@ + + + + + + + +OpenJPEG: cachemodel_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cachemodel_manager.h File Reference
    +
    +
    +
    #include "target_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  cachemodel_param
     Cache model parameters. More...
     
    struct  cachemodellist_param
     Cache model list parameters. More...
     
    + + + + + + + +

    +Typedefs

    typedef struct cachemodel_param cachemodel_param_t
     Cache model parameters. More...
     
    typedef struct cachemodellist_param cachemodellist_param_t
     Cache model list parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    cachemodellist_param_tgene_cachemodellist (void)
     generate a cache model list More...
     
    cachemodel_param_tgene_cachemodel (cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
     generate a cache model under a list More...
     
    void print_cachemodel (cachemodel_param_t cachemodel)
     print cache model More...
     
    cachemodel_param_tsearch_cachemodel (target_param_t *target, cachemodellist_param_t *cachemodellist)
     search a cache model of a target More...
     
    OPJ_BOOL is_allsent (cachemodel_param_t cachemodel)
     check if all data has been sent More...
     
    void delete_cachemodel (cachemodel_param_t **cachemodel)
     delete a cache model More...
     
    void delete_cachemodellist (cachemodellist_param_t **cachemodellist)
     delete cachemodel list More...
     
    +

    Typedef Documentation

    + +

    ◆ cachemodel_param_t

    + +
    +
    + + + + +
    typedef struct cachemodel_param cachemodel_param_t
    +
    + +

    Cache model parameters.

    + +
    +
    + +

    ◆ cachemodellist_param_t

    + +
    +
    + + + + +
    typedef struct cachemodellist_param cachemodellist_param_t
    +
    + +

    Cache model list parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_cachemodel()

    + +
    +
    + + + + + + + + +
    void delete_cachemodel (cachemodel_param_t ** cachemodel)
    +
    + +

    delete a cache model

    +
    Parameters
    + + +
    [in]cachemodeladdress of the cachemodel pointer
    +
    +
    + +

    References logstream, opj_free(), and unrefer_target().

    + +

    Referenced by delete_cachemodellist(), and delete_msgqueue().

    + +
    +
    + +

    ◆ delete_cachemodellist()

    + +
    +
    + + + + + + + + +
    void delete_cachemodellist (cachemodellist_param_t ** cachemodellist)
    +
    + +

    delete cachemodel list

    +
    Parameters
    + + +
    [in,out]cachemodellistaddress of the cachemodel list pointer
    +
    +
    + +

    References delete_cachemodel(), cachemodel_param::next, and opj_free().

    + +

    Referenced by delete_session(), and delete_sessionlist().

    + +
    +
    + +

    ◆ gene_cachemodel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cachemodel_param_t* gene_cachemodel (cachemodellist_param_tcachemodellist,
    target_param_ttarget,
    OPJ_BOOL reqJPP 
    )
    +
    + +

    generate a cache model under a list

    +
    Parameters
    + + + + +
    [in]cachemodellistcachemodel list to insert the generated cache model, NULL for stateless
    [in]targetpointer the reference target
    [in]reqJPPif JPP-stream is desired true, JPT-stream false
    +
    +
    +
    Returns
    pointer to the generated cache model
    + +

    References target_param::codeidx, SIZmarker_param::Csiz, cachemodellist_param::first, get_m(), get_nmax(), cachemodel_param::jppstream, target_param::jppstream, target_param::jptstream, cachemodellist_param::last, logstream, cachemodel_param::mhead_model, cachemodel_param::next, opj_calloc(), OPJ_FALSE, opj_malloc(), OPJ_TRUE, cachemodel_param::pp_model, index_param::precpacket, refer_target(), index_param::SIZ, cachemodel_param::target, cachemodel_param::th_model, index_param::tilepart, and cachemodel_param::tp_model.

    + +

    Referenced by gene_JPIPstream(), and open_channel().

    + +
    +
    + +

    ◆ gene_cachemodellist()

    + +
    +
    + + + + + + + + +
    cachemodellist_param_t* gene_cachemodellist (void )
    +
    + +

    generate a cache model list

    +
    Returns
    pointer to the generated cache model list
    + +

    References cachemodellist_param::first, cachemodellist_param::last, and opj_malloc().

    + +

    Referenced by gene_session().

    + +
    +
    + +

    ◆ is_allsent()

    + + + +

    ◆ print_cachemodel()

    + + + +

    ◆ search_cachemodel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cachemodel_param_t* search_cachemodel (target_param_ttarget,
    cachemodellist_param_tcachemodellist 
    )
    +
    + +

    search a cache model of a target

    +
    Parameters
    + + + +
    [in]targetreferring target
    [in]cachemodellistcache model list
    +
    +
    +
    Returns
    found cache model pointer
    + +

    References cachemodellist_param::first, cachemodel_param::next, and cachemodel_param::target.

    + +

    Referenced by open_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/cachemodel__manager_8h_source.html b/build/doc/html/cachemodel__manager_8h_source.html new file mode 100644 index 000000000..67ec24ce6 --- /dev/null +++ b/build/doc/html/cachemodel__manager_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +OpenJPEG: cachemodel_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    cachemodel_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef CACHEMODEL_MANAGER_H_
    +
    32 # define CACHEMODEL_MANAGER_H_
    +
    33 
    +
    34 #include "target_manager.h"
    +
    35 
    +
    37 typedef struct cachemodel_param {
    + + + + + + + + +
    46 
    +
    48 typedef struct cachemodellist_param {
    + + + +
    52 
    +
    53 
    + +
    60 
    + +
    70  target_param_t *target, OPJ_BOOL reqJPP);
    +
    71 
    +
    72 
    +
    78 void print_cachemodel(cachemodel_param_t cachemodel);
    +
    79 
    +
    80 
    + +
    89  cachemodellist_param_t *cachemodellist);
    +
    90 
    +
    91 
    + +
    99 
    +
    100 
    +
    106 void delete_cachemodel(cachemodel_param_t **cachemodel);
    +
    107 
    +
    113 void delete_cachemodellist(cachemodellist_param_t **cachemodellist);
    +
    114 
    +
    115 
    +
    116 #endif /* !CACHEMODEL_MANAGER_H_ */
    +
    +
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    +
    OPJ_BOOL ** pp_model
    dynamic array pointer of precint packet model
    Definition: cachemodel_manager.h:43
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    +
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    +
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    +
    OPJ_BOOL jppstream
    if this target can return JPP-stream
    Definition: target_manager.h:51
    +
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    +
    OPJ_BOOL jppstream
    return type, true: JPP-stream, false: JPT-stream
    Definition: cachemodel_manager.h:39
    +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    +
    OPJ_BOOL jptstream
    if this target can return JPP-stream
    Definition: target_manager.h:52
    + +
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    +
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    +
    struct cachemodel_param cachemodel_param_t
    Cache model parameters.
    +
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    +
    OPJ_BOOL * tp_model
    dynamic array pointer of tile part model, if sent, 1, else 0
    Definition: cachemodel_manager.h:41
    +
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    +
    OPJ_BOOL * th_model
    dynamic array pointer of tile header model
    Definition: cachemodel_manager.h:42
    +
    #define logstream
    Definition: cachemodel_manager.c:43
    +
    Cache model list parameters.
    Definition: cachemodel_manager.h:48
    +
    struct cachemodellist_param cachemodellist_param_t
    Cache model list parameters.
    +
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    +
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    +
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    +
    struct cachemodel_param * next
    pointer to the next cache model
    Definition: cachemodel_manager.h:44
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    +
    target parameters
    Definition: target_manager.h:40
    +
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    +
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    +
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    + +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    cachemodel_param_t * first
    first cache model pointer of the list
    Definition: cachemodel_manager.h:49
    + +
    cachemodel_param_t * last
    last cache model pointer of the list
    Definition: cachemodel_manager.h:50
    +
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    +
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    + +
    void print_cachemodel(cachemodel_param_t cachemodel)
    print cache model
    Definition: cachemodel_manager.c:120
    +
    void print_cachemodel(cachemodel_param_t cachemodel)
    print cache model
    Definition: cachemodel_manager.c:120
    +
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    + + + + diff --git a/build/doc/html/channel__manager_8c.html b/build/doc/html/channel__manager_8c.html new file mode 100644 index 000000000..645e9f122 --- /dev/null +++ b/build/doc/html/channel__manager_8c.html @@ -0,0 +1,406 @@ + + + + + + + +OpenJPEG: channel_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    channel_manager.c File Reference
    +
    +
    +
    #include <stdlib.h>
    +#include <string.h>
    +#include <stdio.h>
    +#include "channel_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    channellist_param_tgene_channellist (void)
     generate a channel list More...
     
    channel_param_tgene_channel (query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
     generate a channel under the channel list More...
     
    void set_channel_variable_param (query_param_t query_param, channel_param_t *channel)
     set channel variable parameters More...
     
    void delete_channel (channel_param_t **channel, channellist_param_t *channellist)
     delete a channel More...
     
    void delete_channellist (channellist_param_t **channellist)
     delete channel list More...
     
    void print_allchannel (channellist_param_t *channellist)
     print all channel parameters More...
     
    channel_param_tsearch_channel (const char cid[], channellist_param_t *channellist)
     search a channel by channel ID More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_channel (channel_param_t ** channel,
    channellist_param_tchannellist 
    )
    +
    + +

    delete a channel

    +
    Parameters
    + + + +
    [in]channeladdress of the deleting channel pointer
    [in,out]channellistchannel list pointer
    +
    +
    + +

    References channellist_param::first, channellist_param::last, logstream, channel_param::next, and opj_free().

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ delete_channellist()

    + +
    +
    + + + + + + + + +
    void delete_channellist (channellist_param_t ** channellist)
    +
    + +

    delete channel list

    +
    Parameters
    + + +
    [in,out]channellistaddress of the channel list pointer
    +
    +
    + +

    References channel_param::cid, logstream, channel_param::next, and opj_free().

    + +

    Referenced by delete_session(), and delete_sessionlist().

    + +
    +
    + +

    ◆ gene_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    channel_param_t* gene_channel (query_param_t query_param,
    auxtrans_param_t auxtrans,
    cachemodel_param_tcachemodel,
    channellist_param_tchannellist 
    )
    +
    + +

    generate a channel under the channel list

    +
    Parameters
    + + + + + +
    [in]query_paramquery parameters
    [in]auxtransauxiliary transport
    [in]cachemodelreference cachemodel
    [in]channellistchannel list pointer
    +
    +
    +
    Returns
    pointer to the generated channel
    + +

    References channel_param::aux, channel_param::cachemodel, channel_param::cid, query_param::cnew, FCGI_stdout, channellist_param::first, channellist_param::last, MAX_LENOFCID, channel_param::next, opj_malloc(), set_channel_variable_param(), channel_param::start_tm, tcp, auxtrans_param::tcpauxport, udp, and auxtrans_param::udpauxport.

    + +

    Referenced by open_channel().

    + +
    +
    + +

    ◆ gene_channellist()

    + +
    +
    + + + + + + + + +
    channellist_param_t* gene_channellist (void )
    +
    + +

    generate a channel list

    +
    Returns
    pointer to the generated channel list
    + +

    References channellist_param::first, channellist_param::last, and opj_malloc().

    + +

    Referenced by gene_session().

    + +
    +
    + +

    ◆ print_allchannel()

    + +
    +
    + + + + + + + + +
    void print_allchannel (channellist_param_tchannellist)
    +
    + +

    print all channel parameters

    +
    Parameters
    + + +
    [in]channellistchannel list pointer
    +
    +
    + +

    References channel_param::cachemodel, channel_param::cid, channellist_param::first, logstream, channel_param::next, cachemodel_param::target, and target_param::targetname.

    + +

    Referenced by print_allsession().

    + +
    +
    + +

    ◆ search_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    channel_param_t* search_channel (const char cid[],
    channellist_param_tchannellist 
    )
    +
    + +

    search a channel by channel ID

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]channellistchannel list pointer
    +
    +
    +
    Returns
    found channel pointer
    + +

    References channel_param::cid, FCGI_stdout, channellist_param::first, and channel_param::next.

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ set_channel_variable_param()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void set_channel_variable_param (query_param_t query_param,
    channel_param_tchannel 
    )
    +
    + +

    set channel variable parameters

    +
    Parameters
    + + + +
    [in]query_paramquery parameters
    [in,out]channelpointer to the modifying channel
    +
    +
    + +

    Referenced by associate_channel(), and gene_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/channel__manager_8h.html b/build/doc/html/channel__manager_8h.html new file mode 100644 index 000000000..7ead1ca9e --- /dev/null +++ b/build/doc/html/channel__manager_8h.html @@ -0,0 +1,432 @@ + + + + + + + +OpenJPEG: channel_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    channel_manager.h File Reference
    +
    +
    +
    #include <time.h>
    +#include "query_parser.h"
    +#include "cachemodel_manager.h"
    +#include "auxtrans_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  channel_param
     Channel parameters. More...
     
    struct  channellist_param
     Channel list parameters. More...
     
    + + + + +

    +Macros

    #define MAX_LENOFCID   30
     maximum length of channel identifier More...
     
    + + + + + + + +

    +Typedefs

    typedef struct channel_param channel_param_t
     Channel parameters. More...
     
    typedef struct channellist_param channellist_param_t
     Channel list parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    channellist_param_tgene_channellist (void)
     generate a channel list More...
     
    channel_param_tgene_channel (query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
     generate a channel under the channel list More...
     
    void set_channel_variable_param (query_param_t query_param, channel_param_t *channel)
     set channel variable parameters More...
     
    void delete_channel (channel_param_t **channel, channellist_param_t *channellist)
     delete a channel More...
     
    void delete_channellist (channellist_param_t **channellist)
     delete channel list More...
     
    void print_allchannel (channellist_param_t *channellist)
     print all channel parameters More...
     
    channel_param_tsearch_channel (const char cid[], channellist_param_t *channellist)
     search a channel by channel ID More...
     
    +

    Macro Definition Documentation

    + +

    ◆ MAX_LENOFCID

    + +
    +
    + + + + +
    #define MAX_LENOFCID   30
    +
    + +

    maximum length of channel identifier

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ channel_param_t

    + +
    +
    + + + + +
    typedef struct channel_param channel_param_t
    +
    + +

    Channel parameters.

    + +
    +
    + +

    ◆ channellist_param_t

    + +
    +
    + + + + +
    typedef struct channellist_param channellist_param_t
    +
    + +

    Channel list parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_channel (channel_param_t ** channel,
    channellist_param_tchannellist 
    )
    +
    + +

    delete a channel

    +
    Parameters
    + + + +
    [in]channeladdress of the deleting channel pointer
    [in,out]channellistchannel list pointer
    +
    +
    + +

    References channellist_param::first, channellist_param::last, logstream, channel_param::next, and opj_free().

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ delete_channellist()

    + +
    +
    + + + + + + + + +
    void delete_channellist (channellist_param_t ** channellist)
    +
    + +

    delete channel list

    +
    Parameters
    + + +
    [in,out]channellistaddress of the channel list pointer
    +
    +
    + +

    References channel_param::cid, logstream, channel_param::next, and opj_free().

    + +

    Referenced by delete_session(), and delete_sessionlist().

    + +
    +
    + +

    ◆ gene_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    channel_param_t* gene_channel (query_param_t query_param,
    auxtrans_param_t auxtrans,
    cachemodel_param_tcachemodel,
    channellist_param_tchannellist 
    )
    +
    + +

    generate a channel under the channel list

    +
    Parameters
    + + + + + +
    [in]query_paramquery parameters
    [in]auxtransauxiliary transport
    [in]cachemodelreference cachemodel
    [in]channellistchannel list pointer
    +
    +
    +
    Returns
    pointer to the generated channel
    + +

    References channel_param::aux, channel_param::cachemodel, channel_param::cid, query_param::cnew, FCGI_stdout, channellist_param::first, channellist_param::last, MAX_LENOFCID, channel_param::next, opj_malloc(), set_channel_variable_param(), channel_param::start_tm, tcp, auxtrans_param::tcpauxport, udp, and auxtrans_param::udpauxport.

    + +

    Referenced by open_channel().

    + +
    +
    + +

    ◆ gene_channellist()

    + +
    +
    + + + + + + + + +
    channellist_param_t* gene_channellist (void )
    +
    + +

    generate a channel list

    +
    Returns
    pointer to the generated channel list
    + +

    References channellist_param::first, channellist_param::last, and opj_malloc().

    + +

    Referenced by gene_session().

    + +
    +
    + +

    ◆ print_allchannel()

    + +
    +
    + + + + + + + + +
    void print_allchannel (channellist_param_tchannellist)
    +
    + +

    print all channel parameters

    +
    Parameters
    + + +
    [in]channellistchannel list pointer
    +
    +
    + +

    References channel_param::cachemodel, channel_param::cid, channellist_param::first, logstream, channel_param::next, cachemodel_param::target, and target_param::targetname.

    + +

    Referenced by print_allsession().

    + +
    +
    + +

    ◆ search_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    channel_param_t* search_channel (const char cid[],
    channellist_param_tchannellist 
    )
    +
    + +

    search a channel by channel ID

    +
    Parameters
    + + + +
    [in]cidchannel identifier
    [in]channellistchannel list pointer
    +
    +
    +
    Returns
    found channel pointer
    + +

    References channel_param::cid, FCGI_stdout, channellist_param::first, and channel_param::next.

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ set_channel_variable_param()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void set_channel_variable_param (query_param_t query_param,
    channel_param_tchannel 
    )
    +
    + +

    set channel variable parameters

    +
    Parameters
    + + + +
    [in]query_paramquery parameters
    [in,out]channelpointer to the modifying channel
    +
    +
    + +

    Referenced by associate_channel(), and gene_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/channel__manager_8h_source.html b/build/doc/html/channel__manager_8h_source.html new file mode 100644 index 000000000..b6875d229 --- /dev/null +++ b/build/doc/html/channel__manager_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + +OpenJPEG: channel_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    channel_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef CHANNEL_MANAGER_H_
    +
    32 # define CHANNEL_MANAGER_H_
    +
    33 
    +
    34 #include <time.h>
    +
    35 #include "query_parser.h"
    +
    36 #include "cachemodel_manager.h"
    +
    37 #include "auxtrans_manager.h"
    +
    38 
    +
    40 #define MAX_LENOFCID 30
    +
    41 
    +
    43 typedef struct channel_param {
    + +
    45  char cid[MAX_LENOFCID];
    + +
    47  /* - a record of the client's capabilities and preferences to the extent that the server queues requests*/
    +
    48  time_t start_tm;
    +
    49  struct channel_param *next;
    + +
    51 
    +
    52 
    +
    54 typedef struct channellist_param {
    + + + +
    58 
    +
    59 
    + +
    66 
    +
    67 
    + +
    78  auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel,
    +
    79  channellist_param_t *channellist);
    +
    80 
    + +
    88  channel_param_t *channel);
    +
    89 
    +
    96 void delete_channel(channel_param_t **channel,
    +
    97  channellist_param_t *channellist);
    +
    98 
    +
    99 
    +
    105 void delete_channellist(channellist_param_t **channellist);
    +
    106 
    +
    107 
    +
    113 void print_allchannel(channellist_param_t *channellist);
    +
    114 
    +
    115 
    +
    123 channel_param_t * search_channel(const char cid[],
    +
    124  channellist_param_t *channellist);
    +
    125 #endif /* !CHANNEL_MANAGER_H_ */
    +
    +
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    +
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    +
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    +
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    +
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    + +
    cnew_transport_t aux
    auxiliary transport
    Definition: channel_manager.h:46
    +
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    +
    @ tcp
    Definition: query_parser.h:41
    +
    channel_param_t * first
    first channel pointer of the list
    Definition: channel_manager.h:55
    +
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    +
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    +
    #define MAX_LENOFCID
    maximum length of channel identifier
    Definition: channel_manager.h:40
    +
    channel_param_t * last
    last channel pointer of the list
    Definition: channel_manager.h:56
    +
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    +
    time_t start_tm
    starting time
    Definition: channel_manager.h:48
    +
    struct channellist_param channellist_param_t
    Channel list parameters.
    +
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    +
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    + +
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    @ udp
    Definition: query_parser.h:41
    +
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    +
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    +
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    int udpauxport
    udp port
    Definition: auxtrans_manager.h:40
    +
    struct channel_param * next
    pointer to the next channel
    Definition: channel_manager.h:49
    +
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    +
    cachemodel_param_t * cachemodel
    reference pointer to the cache model
    Definition: channel_manager.h:44
    +
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    +
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    +
    Channel list parameters.
    Definition: channel_manager.h:54
    +
    Query parameters.
    Definition: query_parser.h:47
    +
    char cid[MAX_LENOFCID]
    channel identifier
    Definition: channel_manager.h:45
    +
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    + +
    #define logstream
    Definition: channel_manager.c:45
    +
    Channel parameters.
    Definition: channel_manager.h:43
    +
    int tcpauxport
    tcp port
    Definition: auxtrans_manager.h:39
    +
    struct channel_param channel_param_t
    Channel parameters.
    +
    #define FCGI_stdout
    Definition: channel_manager.c:43
    + +
    enum cnew_transport cnew_transport_t
    cnew aux transport name
    + + + + diff --git a/build/doc/html/cidx__manager_8c.html b/build/doc/html/cidx__manager_8c.html new file mode 100644 index 000000000..a2a741074 --- /dev/null +++ b/build/doc/html/cidx__manager_8c.html @@ -0,0 +1,312 @@ + + + + + + + +OpenJPEG: cidx_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cidx_manager.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + +

    +Functions

    void opj_write_cptr (int coff, int clen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_cidx (int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
     
    void opj_write_manf (int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_mainmhix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_check_EPHuse (int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Function Documentation

    + +

    ◆ opj_check_EPHuse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_check_EPHuse (int coff,
    opj_marker_info_tmarkers,
    int marknum,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_cidx()

    + + + +

    ◆ opj_write_cptr()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_cptr (int coff,
    int clen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_mainmhix()

    + + + +

    ◆ opj_write_manf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_manf (int second,
    int v,
    opj_jp2_box_tbox,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/cidx__manager_8h.html b/build/doc/html/cidx__manager_8h.html new file mode 100644 index 000000000..d59f79349 --- /dev/null +++ b/build/doc/html/cidx__manager_8h.html @@ -0,0 +1,175 @@ + + + + + + + +OpenJPEG: cidx_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cidx_manager.h File Reference
    +
    +
    + +

    Modification of jpip.h from 2KAN indexer. +More...

    +
    #include "openjpeg.h"
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Functions

    int opj_write_cidx (int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_check_EPHuse (int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.h from 2KAN indexer.

    +

    Function Documentation

    + +

    ◆ opj_check_EPHuse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_check_EPHuse (int coff,
    opj_marker_info_tmarkers,
    int marknum,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_cidx()

    + + +
    + + + + diff --git a/build/doc/html/cidx__manager_8h_source.html b/build/doc/html/cidx__manager_8h_source.html new file mode 100644 index 000000000..6164318c5 --- /dev/null +++ b/build/doc/html/cidx__manager_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +OpenJPEG: cidx_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    cidx_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id: cidx_manager.h 897 2011-08-28 21:43:57Z Kaori.Hagihara@gmail.com $
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2003-2004, Yannick Verschueren
    +
    7  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    37 #ifndef CIDX_MANAGER_H_
    +
    38 # define CIDX_MANAGER_H_
    +
    39 
    +
    40 #include "openjpeg.h"
    +
    41 
    +
    42 
    +
    43 /*
    +
    44  * Write Codestream index box (superbox)
    +
    45  *
    +
    46  * @param[in] offset offset of j2k codestream
    +
    47  * @param[in] cio file output handle
    +
    48  * @param[in] image image data
    +
    49  * @param[in] cstr_info codestream information
    +
    50  * @param[in] j2klen length of j2k codestream
    +
    51  * @return length of cidx box
    +
    52  */
    +
    53 int opj_write_cidx(int offset, opj_stream_private_t *cio,
    +
    54  opj_codestream_info_t cstr_info, int j2klen,
    +
    55  opj_event_mgr_t * p_manager);
    +
    56 
    +
    57 /*
    +
    58  * Check if EPH option is used
    +
    59  *
    +
    60  * @param[in] coff offset of j2k codestream
    +
    61  * @param[in] markers marker information
    +
    62  * @param[in] marknum number of markers
    +
    63  * @param[in] cio file output handle
    +
    64  * @return true if EPH is used
    +
    65  */
    +
    66 OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum,
    + +
    68  opj_event_mgr_t * p_manager);
    +
    69 
    +
    70 #endif /* !CIDX_MANAGER_H_ */
    +
    +
    OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:233
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    void opj_write_cptr(int coff, int clen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:128
    +
    #define JPIP_THIX
    Definition: indexbox_manager.h:49
    +
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    +
    #define JPIP_MHIX
    Definition: indexbox_manager.h:47
    +
    #define JPIP_PHIX
    Definition: indexbox_manager.h:51
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    int main_head_start
    main header position
    Definition: openjpeg.h:885
    +
    Message handler object used for.
    Definition: event.h:50
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_UINT32 type
    Definition: jp2.h:200
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    + +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:880
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    int opj_write_cidx(int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:50
    +
    int len
    length, marker val included
    Definition: openjpeg.h:782
    +
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    +
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    +
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    +
    #define JPIP_CPTR
    Definition: indexbox_manager.h:44
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    + +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    #define JPIP_PPIX
    Definition: indexbox_manager.h:50
    +
    #define JPIP_MANF
    Definition: indexbox_manager.h:45
    +
    int main_head_end
    main header position
    Definition: openjpeg.h:887
    +
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    +
    #define JPIP_TPIX
    Definition: indexbox_manager.h:48
    +
    OPJ_UINT32 length
    Definition: jp2.h:199
    +
    OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:233
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    #define opj_read_bytes
    Definition: cio.h:65
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:192
    +
    #define JPIP_CIDX
    Definition: indexbox_manager.h:43
    +
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    int opj_write_cidx(int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:50
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    #define J2K_MS_COD
    COD marker value.
    Definition: j2k.h:75
    +
    Marker structure.
    Definition: openjpeg.h:776
    +
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    +
    int marknum
    number of markers
    Definition: openjpeg.h:878
    +
    int codestream_size
    codestream's size
    Definition: openjpeg.h:889
    + + + + diff --git a/build/doc/html/cio_8c.html b/build/doc/html/cio_8c.html new file mode 100644 index 000000000..ffaec74cf --- /dev/null +++ b/build/doc/html/cio_8c.html @@ -0,0 +1,1671 @@ + + + + + + + +OpenJPEG: cio.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cio.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void opj_write_bytes_BE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_bytes_LE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_bytes_BE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_bytes_LE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     
    void opj_write_double_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_double_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_double_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_float_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     
    void opj_write_float_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_float_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_float_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
     Creates an abstract stream. More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL l_is_input)
     Creates an abstract stream. More...
     
    void OPJ_CALLCONV opj_stream_destroy (opj_stream_t *p_stream)
     Destroys a stream created by opj_create_stream. More...
     
    void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_t *p_stream, opj_stream_read_fn p_function)
     Sets the given function to be used as a read function. More...
     
    void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_t *p_stream, opj_stream_seek_fn p_function)
     Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior. More...
     
    void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_t *p_stream, opj_stream_write_fn p_function)
     Sets the given function to be used as a write function. More...
     
    void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_t *p_stream, opj_stream_skip_fn p_function)
     Sets the given function to be used as a skip function. More...
     
    void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
     Sets the given data to be used as a user data for the stream. More...
     
    void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_t *p_stream, OPJ_UINT64 data_length)
     Sets the length of the user data for the stream. More...
     
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
     Reads some bytes from the stream. More...
     
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
     Writes some bytes to the stream. More...
     
    OPJ_BOOL opj_stream_flush (opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
     Writes the content of the stream buffer to the stream. More...
     
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_tell (const opj_stream_private_t *p_stream)
     Tells the byte offset on the stream (similar to ftell). More...
     
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t *p_stream)
     Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). More...
     
    OPJ_OFF_T opj_stream_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Seeks a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t *p_stream)
     Tells if the given stream is seekable. More...
     
    OPJ_SIZE_T opj_stream_default_read (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_SIZE_T opj_stream_default_write (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    +

    Function Documentation

    + +

    ◆ opj_read_bytes_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_read_bytes_BE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    +
    +
    +
    Returns
    the number of bytes read or -1 if an error occurred.
    + +
    +
    + +

    ◆ opj_read_bytes_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_read_bytes_LE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    +
    +
    +
    Returns
    the number of bytes read or -1 if an error occurred.
    + +
    +
    + +

    ◆ opj_read_double_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_double_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_double_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_double_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_float_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_float_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_float_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_float_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_stream_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_stream_t* OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_input 
    )
    +
    +
    + +

    ◆ opj_stream_default_create()

    + +
    +
    + + + + + + + + +
    opj_stream_t* OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
    +
    + +

    Creates an abstract stream.

    +

    This function does nothing except allocating memory and initializing the abstract stream.

    +
    Parameters
    + + +
    p_is_inputif set to true then the stream will be an input stream, an output stream else.
    +
    +
    +
    Returns
    a stream object.
    + +

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_default_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_default_read (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_default_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED, and OPJ_FALSE.

    + +

    Referenced by opj_stream_create(), and opj_stream_has_seek().

    + +
    +
    + +

    ◆ opj_stream_default_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_default_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_default_write (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_destroy()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_stream_destroy (opj_stream_tp_stream)
    +
    + +

    Destroys a stream created by opj_create_stream.

    +

    This function does NOT close the abstract stream. If needed the user must close its own implementation of the stream.

    +
    Parameters
    + + +
    p_streamthe stream to destroy.
    +
    +
    + +

    References opj_stream_private::m_free_user_data_fn, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, and opj_free().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_stream_flush()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_flush (opj_stream_private_tp_stream,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Writes the content of the stream buffer to the stream.

    +
    Parameters
    + + + +
    p_streamthe stream to write data to.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    true if the data could be flushed, false else.
    + +

    References EVT_INFO, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_write_fn, opj_event_msg(), OPJ_FALSE, OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    + +

    Referenced by opj_j2k_write_eoc(), opj_stream_write_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    + +
    +
    + +

    ◆ opj_stream_get_number_byte_left()

    + +
    +
    + + + + + + + + +
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_tp_stream)
    +
    + +

    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).

    +
    Parameters
    + + +
    p_streamthe stream to get the information from.
    +
    +
    +
    Returns
    Number of bytes left before the end of the stream.
    + +

    References opj_stream_private::m_byte_offset, and opj_stream_private::m_user_data_length.

    + +

    Referenced by opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_stream_has_seek()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_tp_stream)
    +
    + +

    Tells if the given stream is seekable.

    + +

    References opj_stream_private::m_seek_fn, and opj_stream_default_seek().

    + +

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_jp2_default_validation(), and opj_jp2_write_jp2c().

    + +
    +
    + +

    ◆ opj_stream_read_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_tp_stream,
    OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Reads some bytes from the stream.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    p_bufferpointer to the data buffer that will receive the data.
    p_sizenumber of bytes to read.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes read, or -1 if an error occurred or if the stream is at the end.
    + +

    References EVT_INFO, opj_stream_private::m_buffer_size, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_read_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_event_msg(), and OPJ_STREAM_STATUS_END.

    + +

    Referenced by opj_check_EPHuse(), opj_j2k_decode_tile(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_header_procedure(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_stream_read_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    OPJ_TRUE if success, or OPJ_FALSE if an error occurred.
    + +

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_ARG_NOT_USED, OPJ_FALSE, OPJ_STREAM_STATUS_END, and OPJ_TRUE.

    + +

    Referenced by opj_j2k_decode_one_tile(), opj_stream_create(), and opj_stream_read_skip().

    + +
    +
    + +

    ◆ opj_stream_read_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_user_data_length, opj_event_msg(), opj_stream_read_seek(), and OPJ_STREAM_STATUS_END.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Seeks a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    true if the stream is seekable.
    + +

    References opj_stream_private::m_opj_seek.

    + +

    Referenced by opj_check_EPHuse(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_write_updated_tlm(), opj_jp2_write_jp2c(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ opj_stream_set_read_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_tp_stream,
    opj_stream_read_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a read function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a read function.
    +
    +
    + +

    References opj_stream_private::m_read_fn, opj_stream_private::m_status, and OPJ_STREAM_STATUS_INPUT.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_seek_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_tp_stream,
    opj_stream_seek_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    +
    +
    + +

    References opj_stream_private::m_seek_fn.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_skip_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_tp_stream,
    opj_stream_skip_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a skip function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    +
    +
    + +

    References opj_stream_private::m_skip_fn.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_user_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_tp_stream,
    void * p_data,
    opj_stream_free_user_data_fn p_function 
    )
    +
    + +

    Sets the given data to be used as a user data for the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to modify
    p_datathe data to set.
    p_functionthe function to free p_data when opj_stream_destroy() is called.
    +
    +
    + +

    References opj_stream_private::m_free_user_data_fn, and opj_stream_private::m_user_data.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_user_data_length()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_tp_stream,
    OPJ_UINT64 data_length 
    )
    +
    + +

    Sets the length of the user data for the stream.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    data_lengthlength of the user_data.
    +
    +
    + +

    References opj_stream_private::m_user_data_length.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_write_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_tp_stream,
    opj_stream_write_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a write function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a write function.
    +
    +
    + +

    References opj_stream_private::m_status, opj_stream_private::m_write_fn, and OPJ_STREAM_STATUS_OUTPUT.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References opj_stream_private::m_opj_skip.

    + +

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_tile_header(), opj_jp2_read_header_procedure(), opj_jp2_skip_jp2c(), opj_jpip_skip_iptr(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ opj_stream_tell()

    + + + +

    ◆ opj_stream_write_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_tp_stream,
    const OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    +
    + +

    ◆ opj_stream_write_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_FALSE, opj_stream_flush(), OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_write_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_user_data, opj_event_msg(), opj_stream_flush(), and OPJ_STREAM_STATUS_ERROR.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_write_bytes_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_bytes_BE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    +
    +
    + +
    +
    + +

    ◆ opj_write_bytes_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_bytes_LE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    +
    +
    +
    Returns
    the number of bytes written or -1 if an error occurred
    + +
    +
    + +

    ◆ opj_write_double_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_double_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    +
    + +
    +
    + +

    ◆ opj_write_double_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_double_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    +
    +
    + +
    +
    + +

    ◆ opj_write_float_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_float_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    +
    + +
    +
    + +

    ◆ opj_write_float_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_float_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    +
    +
    + +
    +
    +
    + + + + diff --git a/build/doc/html/cio_8h.html b/build/doc/html/cio_8h.html new file mode 100644 index 000000000..103c5b69d --- /dev/null +++ b/build/doc/html/cio_8h.html @@ -0,0 +1,1491 @@ + + + + + + + +OpenJPEG: cio.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    cio.h File Reference
    +
    +
    + +

    Implementation of a byte input-output process (CIO) +More...

    +
    #include "opj_config_private.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_stream_private
     Byte input-output stream. More...
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define opj_write_bytes   opj_write_bytes_LE
     
    #define opj_read_bytes   opj_read_bytes_LE
     
    #define opj_write_double   opj_write_double_LE
     
    #define opj_read_double   opj_read_double_LE
     
    #define opj_write_float   opj_write_float_LE
     
    #define opj_read_float   opj_read_float_LE
     
    #define OPJ_STREAM_STATUS_OUTPUT   0x1U
     
    #define OPJ_STREAM_STATUS_INPUT   0x2U
     
    #define OPJ_STREAM_STATUS_END   0x4U
     
    #define OPJ_STREAM_STATUS_ERROR   0x8U
     
    + + + + +

    +Typedefs

    typedef struct opj_stream_private opj_stream_private_t
     Byte input-output stream. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions (see also openjpeg.h)
    void opj_write_bytes_BE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_bytes_BE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_bytes_LE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_bytes_LE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     
    void opj_read_double_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_double_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_float_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_float_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_float_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_float_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
     Reads some bytes from the stream. More...
     
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
     Writes some bytes to the stream. More...
     
    OPJ_BOOL opj_stream_flush (opj_stream_private_t *p_stream, struct opj_event_mgr *p_event_mgr)
     Writes the content of the stream buffer to the stream. More...
     
    OPJ_OFF_T opj_stream_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_tell (const opj_stream_private_t *p_stream)
     Tells the byte offset on the stream (similar to ftell). More...
     
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t *p_stream)
     Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). More...
     
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Seeks a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t *p_stream)
     Tells if the given stream is seekable. More...
     
    OPJ_SIZE_T opj_stream_default_read (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_SIZE_T opj_stream_default_write (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    +

    Detailed Description

    +

    Implementation of a byte input-output process (CIO)

    +

    The functions in CIO.C have for goal to realize a byte input / output process.

    +

    Macro Definition Documentation

    + +

    ◆ opj_read_bytes

    + +
    +
    + + + + +
    #define opj_read_bytes   opj_read_bytes_LE
    +
    + +
    +
    + +

    ◆ opj_read_double

    + +
    +
    + + + + +
    #define opj_read_double   opj_read_double_LE
    +
    + +
    +
    + +

    ◆ opj_read_float

    + +
    +
    + + + + +
    #define opj_read_float   opj_read_float_LE
    +
    + +
    +
    + +

    ◆ OPJ_STREAM_STATUS_END

    + +
    +
    + + + + +
    #define OPJ_STREAM_STATUS_END   0x4U
    +
    + +
    +
    + +

    ◆ OPJ_STREAM_STATUS_ERROR

    + +
    +
    + + + + +
    #define OPJ_STREAM_STATUS_ERROR   0x8U
    +
    + +
    +
    + +

    ◆ OPJ_STREAM_STATUS_INPUT

    + +
    +
    + + + + +
    #define OPJ_STREAM_STATUS_INPUT   0x2U
    +
    + +
    +
    + +

    ◆ OPJ_STREAM_STATUS_OUTPUT

    + +
    +
    + + + + +
    #define OPJ_STREAM_STATUS_OUTPUT   0x1U
    +
    + +
    +
    + +

    ◆ opj_write_bytes

    + +
    +
    + + + + +
    #define opj_write_bytes   opj_write_bytes_LE
    +
    + +
    +
    + +

    ◆ opj_write_double

    + +
    +
    + + + + +
    #define opj_write_double   opj_write_double_LE
    +
    + +
    +
    + +

    ◆ opj_write_float

    + +
    +
    + + + + +
    #define opj_write_float   opj_write_float_LE
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ opj_stream_private_t

    + +
    +
    + + + + +
    typedef struct opj_stream_private opj_stream_private_t
    +
    + +

    Byte input-output stream.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_read_bytes_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_read_bytes_BE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    +
    +
    +
    Returns
    the number of bytes read or -1 if an error occurred.
    + +
    +
    + +

    ◆ opj_read_bytes_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_read_bytes_LE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    +
    +
    +
    Returns
    the number of bytes read or -1 if an error occurred.
    + +
    +
    + +

    ◆ opj_read_double_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_double_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_double_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_double_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_float_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_float_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_read_float_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_read_float_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    +
    + +

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    +
    +
    + +
    +
    + +

    ◆ opj_stream_default_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_default_read (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_default_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED, and OPJ_FALSE.

    + +

    Referenced by opj_stream_create(), and opj_stream_has_seek().

    + +
    +
    + +

    ◆ opj_stream_default_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_default_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_default_write (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    +
    + +

    FIXME DOC.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_flush()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_flush (opj_stream_private_tp_stream,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Writes the content of the stream buffer to the stream.

    +
    Parameters
    + + + +
    p_streamthe stream to write data to.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    true if the data could be flushed, false else.
    + +

    References EVT_INFO, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_write_fn, opj_event_msg(), OPJ_FALSE, OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    + +

    Referenced by opj_j2k_write_eoc(), opj_stream_write_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    + +
    +
    + +

    ◆ opj_stream_get_number_byte_left()

    + +
    +
    + + + + + + + + +
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_tp_stream)
    +
    + +

    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).

    +
    Parameters
    + + +
    p_streamthe stream to get the information from.
    +
    +
    +
    Returns
    Number of bytes left before the end of the stream.
    + +

    References opj_stream_private::m_byte_offset, and opj_stream_private::m_user_data_length.

    + +

    Referenced by opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_stream_has_seek()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_tp_stream)
    +
    + +

    Tells if the given stream is seekable.

    + +

    References opj_stream_private::m_seek_fn, and opj_stream_default_seek().

    + +

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_jp2_default_validation(), and opj_jp2_write_jp2c().

    + +
    +
    + +

    ◆ opj_stream_read_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_tp_stream,
    OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Reads some bytes from the stream.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    p_bufferpointer to the data buffer that will receive the data.
    p_sizenumber of bytes to read.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes read, or -1 if an error occurred or if the stream is at the end.
    + +

    References EVT_INFO, opj_stream_private::m_buffer_size, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_read_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_event_msg(), and OPJ_STREAM_STATUS_END.

    + +

    Referenced by opj_check_EPHuse(), opj_j2k_decode_tile(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_header_procedure(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_stream_read_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    OPJ_TRUE if success, or OPJ_FALSE if an error occurred.
    + +

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_ARG_NOT_USED, OPJ_FALSE, OPJ_STREAM_STATUS_END, and OPJ_TRUE.

    + +

    Referenced by opj_j2k_decode_one_tile(), opj_stream_create(), and opj_stream_read_skip().

    + +
    +
    + +

    ◆ opj_stream_read_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_user_data_length, opj_event_msg(), opj_stream_read_seek(), and OPJ_STREAM_STATUS_END.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Seeks a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    true if the stream is seekable.
    + +

    References opj_stream_private::m_opj_seek.

    + +

    Referenced by opj_check_EPHuse(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_write_updated_tlm(), opj_jp2_write_jp2c(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ opj_stream_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References opj_stream_private::m_opj_skip.

    + +

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_tile_header(), opj_jp2_read_header_procedure(), opj_jp2_skip_jp2c(), opj_jpip_skip_iptr(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ opj_stream_tell()

    + + + +

    ◆ opj_stream_write_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_tp_stream,
    const OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    +
    + +

    ◆ opj_stream_write_seek()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_FALSE, opj_stream_flush(), OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_write_skip()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    +
    + +

    Skips a number of bytes from the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    +
    +
    +
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    + +

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_user_data, opj_event_msg(), opj_stream_flush(), and OPJ_STREAM_STATUS_ERROR.

    + +

    Referenced by opj_stream_create().

    + +
    +
    + +

    ◆ opj_write_bytes_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_bytes_BE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Big Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    +
    +
    + +
    +
    + +

    ◆ opj_write_bytes_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_bytes_LE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    +
    +
    +
    Returns
    the number of bytes written or -1 if an error occurred
    + +
    +
    + +

    ◆ opj_write_double_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_double_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    +
    + +
    +
    + +

    ◆ opj_write_double_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_double_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    +
    +
    + +
    +
    + +

    ◆ opj_write_float_BE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_float_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    +
    + +
    +
    + +

    ◆ opj_write_float_LE()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_write_float_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    +
    + +

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    +
    Parameters
    + + + +
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    +
    +
    + +
    +
    +
    + + + + diff --git a/build/doc/html/cio_8h_source.html b/build/doc/html/cio_8h_source.html new file mode 100644 index 000000000..b18b960bb --- /dev/null +++ b/build/doc/html/cio_8h_source.html @@ -0,0 +1,366 @@ + + + + + + + +OpenJPEG: cio.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    cio.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    16  * All rights reserved.
    +
    17  *
    +
    18  * Redistribution and use in source and binary forms, with or without
    +
    19  * modification, are permitted provided that the following conditions
    +
    20  * are met:
    +
    21  * 1. Redistributions of source code must retain the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer.
    +
    23  * 2. Redistributions in binary form must reproduce the above copyright
    +
    24  * notice, this list of conditions and the following disclaimer in the
    +
    25  * documentation and/or other materials provided with the distribution.
    +
    26  *
    +
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    37  * POSSIBILITY OF SUCH DAMAGE.
    +
    38  */
    +
    39 
    +
    40 #ifndef OPJ_CIO_H
    +
    41 #define OPJ_CIO_H
    +
    42 
    +
    51 
    +
    52 #include "opj_config_private.h"
    +
    53 
    +
    54 /* ----------------------------------------------------------------------- */
    +
    55 
    +
    56 #if defined(OPJ_BIG_ENDIAN)
    +
    57 #define opj_write_bytes opj_write_bytes_BE
    +
    58 #define opj_read_bytes opj_read_bytes_BE
    +
    59 #define opj_write_double opj_write_double_BE
    +
    60 #define opj_read_double opj_read_double_BE
    +
    61 #define opj_write_float opj_write_float_BE
    +
    62 #define opj_read_float opj_read_float_BE
    +
    63 #else
    +
    64 #define opj_write_bytes opj_write_bytes_LE
    +
    65 #define opj_read_bytes opj_read_bytes_LE
    +
    66 #define opj_write_double opj_write_double_LE
    +
    67 #define opj_read_double opj_read_double_LE
    +
    68 #define opj_write_float opj_write_float_LE
    +
    69 #define opj_read_float opj_read_float_LE
    +
    70 #endif
    +
    71 
    +
    72 
    +
    73 #define OPJ_STREAM_STATUS_OUTPUT 0x1U
    +
    74 #define OPJ_STREAM_STATUS_INPUT 0x2U
    +
    75 #define OPJ_STREAM_STATUS_END 0x4U
    +
    76 #define OPJ_STREAM_STATUS_ERROR 0x8U
    +
    77 
    +
    81 typedef struct opj_stream_private {
    +
    85  void * m_user_data;
    +
    86 
    + +
    93 
    + +
    98 
    + +
    103 
    + +
    108 
    + +
    114 
    + +
    119 
    + +
    125 
    + +
    130 
    + +
    135  struct opj_event_mgr *);
    +
    136 
    + +
    141  struct opj_event_mgr *);
    +
    142 
    + +
    147 
    + +
    152 
    + +
    157 
    + +
    163 
    +
    164 }
    + +
    166 
    +
    169 /* ----------------------------------------------------------------------- */
    +
    176 void opj_write_bytes_BE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
    +
    177  OPJ_UINT32 p_nb_bytes);
    +
    178 
    +
    186 void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
    +
    187  OPJ_UINT32 p_nb_bytes);
    +
    188 
    +
    196 void opj_write_bytes_LE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
    +
    197  OPJ_UINT32 p_nb_bytes);
    +
    198 
    +
    206 void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
    +
    207  OPJ_UINT32 p_nb_bytes);
    +
    208 
    +
    209 
    +
    215 void opj_write_double_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
    +
    216 
    +
    217 /***
    +
    218  * Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    +
    219  * @param p_buffer pointer the data buffer to write data to.
    +
    220  * @param p_value the value to write
    +
    221  */
    +
    222 void opj_write_double_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
    +
    223 
    +
    229 void opj_read_double_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
    +
    230 
    +
    236 void opj_read_double_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
    +
    237 
    +
    243 void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
    +
    244 
    +
    250 void opj_read_float_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
    +
    251 
    +
    257 void opj_write_float_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
    +
    258 
    +
    259 /***
    +
    260  * Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    +
    261  * @param p_buffer pointer the data buffer to write data to.
    +
    262  * @param p_value the value to write
    +
    263  */
    +
    264 void opj_write_float_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
    +
    265 
    + +
    275  OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr);
    +
    276 
    + +
    286  const OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size,
    +
    287  struct opj_event_mgr * p_event_mgr);
    +
    288 
    + +
    296  struct opj_event_mgr * p_event_mgr);
    +
    297 
    + +
    306  struct opj_event_mgr * p_event_mgr);
    +
    307 
    + +
    316 
    +
    317 
    + +
    326  p_stream);
    +
    327 
    + +
    336  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    +
    337 
    + +
    346  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    +
    347 
    + +
    356  struct opj_event_mgr * p_event_mgr);
    +
    357 
    + +
    366  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    +
    367 
    + +
    376  struct opj_event_mgr * p_event_mgr);
    +
    377 
    + +
    382 
    +
    386 OPJ_SIZE_T opj_stream_default_read(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    +
    387  void * p_user_data);
    +
    388 
    +
    392 OPJ_SIZE_T opj_stream_default_write(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    +
    393  void * p_user_data);
    +
    394 
    +
    398 OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void * p_user_data);
    +
    399 
    +
    403 OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void * p_user_data);
    +
    404 
    +
    405 /* ----------------------------------------------------------------------- */
    +
    409 
    +
    410 
    +
    411 #endif /* OPJ_CIO_H */
    +
    412 
    +
    +
    OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:538
    +
    opj_stream_skip_fn m_skip_fn
    Pointer to actual skip function (NULL at the initialization of the cio.
    Definition: cio.h:113
    +
    OPJ_SIZE_T(* opj_stream_read_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:631
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:671
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:678
    +
    void opj_write_float_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Definition: cio.c:127
    +
    struct opj_stream_private opj_stream_private_t
    Byte input-output stream.
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:649
    +
    OPJ_OFF_T(* m_opj_skip)(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    FIXME DOC.
    Definition: cio.h:134
    +
    void * m_user_data
    User data, be it files, ...
    Definition: cio.h:85
    +
    void opj_write_bytes_LE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:58
    +
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    +
    OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:678
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    OPJ_OFF_T m_byte_offset
    The number of bytes read/written from the beginning of the stream.
    Definition: cio.h:151
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void(* opj_stream_free_user_data_fn)(void *p_user_data)
    Definition: openjpeg.h:655
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    OPJ_BOOL(* m_opj_seek)(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    FIXME DOC.
    Definition: cio.h:140
    +
    Message handler object used for.
    Definition: event.h:50
    +
    void * opj_stream_t
    Definition: openjpeg.h:660
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    void opj_read_double_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:112
    +
    void opj_write_bytes_BE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:47
    +
    OPJ_UINT64 m_user_data_length
    User data length.
    Definition: cio.h:97
    +
    OPJ_BYTE * m_stored_data
    Actual data stored into the stream if readed from.
    Definition: cio.h:124
    +
    #define OPJ_STREAM_STATUS_INPUT
    Definition: cio.h:74
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    OPJ_SIZE_T opj_stream_default_write(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:662
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    OPJ_SIZE_T opj_stream_default_write(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:662
    +
    void opj_read_double_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:118
    +
    OPJ_BYTE * m_current_data
    Pointer to the current read data.
    Definition: cio.h:129
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void opj_write_bytes_BE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:47
    +
    void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    +
    void opj_read_bytes_LE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:82
    + +
    void opj_write_double_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Definition: cio.c:96
    +
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    +
    #define OPJ_STREAM_STATUS_OUTPUT
    Definition: cio.h:73
    +
    opj_stream_read_fn m_read_fn
    Pointer to actual read function (NULL at the initialization of the cio.
    Definition: cio.h:102
    +
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    +
    OPJ_BOOL opj_stream_write_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:620
    +
    OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:463
    +
    void opj_read_double_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:118
    +
    opj_stream_seek_fn m_seek_fn
    Pointer to actual seek function (if available).
    Definition: cio.h:118
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void opj_write_double_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Definition: cio.c:96
    +
    void opj_read_float_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:149
    +
    void opj_read_float_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:143
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    #define OPJ_STREAM_STATUS_ERROR
    Definition: cio.h:76
    +
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    +
    void opj_read_bytes_BE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:71
    +
    void opj_read_double_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:112
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:671
    +
    void opj_read_float_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:143
    +
    OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:538
    +
    OPJ_BOOL opj_stream_write_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:620
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    void opj_read_bytes_BE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:71
    +
    void opj_write_float_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:133
    +
    OPJ_UINT32 m_status
    Flags to tell the status of the stream.
    Definition: cio.h:162
    +
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    +
    void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    +
    void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    +
    void opj_read_float_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:149
    +
    void opj_write_bytes_LE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:58
    +
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    +
    OPJ_SIZE_T m_bytes_in_buffer
    number of bytes containing in the buffer.
    Definition: cio.h:146
    +
    OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:643
    +
    #define OPJ_STREAM_STATUS_END
    Definition: cio.h:75
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    +
    void opj_write_double_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:102
    +
    void opj_write_float_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:133
    +
    void opj_read_bytes_LE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:82
    +
    #define OPJ_J2K_STREAM_CHUNK_SIZE
    Definition: openjpeg.h:150
    +
    OPJ_SIZE_T opj_stream_default_read(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:653
    +
    opj_stream_free_user_data_fn m_free_user_data_fn
    Pointer to function to free m_user_data (NULL at initialization) when destroying the stream.
    Definition: cio.h:92
    +
    OPJ_SIZE_T(* opj_stream_write_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:637
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    +
    void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    +
    OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:463
    +
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, struct opj_event_mgr *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    +
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    +
    void opj_write_double_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:102
    +
    OPJ_SIZE_T m_buffer_size
    The size of the buffer.
    Definition: cio.h:156
    +
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    +
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    +
    OPJ_SIZE_T opj_stream_default_read(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:653
    +
    void opj_write_float_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Definition: cio.c:127
    +
    opj_stream_write_fn m_write_fn
    Pointer to actual write function (NULL at the initialization of the cio.
    Definition: cio.h:107
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:194
    +
    void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    + + + + diff --git a/build/doc/html/classes.html b/build/doc/html/classes.html new file mode 100644 index 000000000..f48034431 --- /dev/null +++ b/build/doc/html/classes.html @@ -0,0 +1,248 @@ + + + + + + + +OpenJPEG: Data Structure Index + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    Data Structure Index
    +
    +
    +
    a | b | c | d | f | i | j | m | o | p | q | r | s | t | v
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      a  
    +
    imgreg_param   opj_image   opj_stepsize   opj_v4_t   
    index_param   opj_image_comp   opj_stream_private   opj_worker_thread_job_t   
    aux_response_param   
      j  
    +
    opj_image_comptparm   opj_t1   opj_worker_thread_list_t   
    auxtrans_param   opj_j2k   opj_t1_cblk_decode_processing_job_t   opj_worker_thread_t   
      b  
    +
    j2k_prog_order   opj_j2k_dec   opj_t2   
      p  
    +
    jpip_dec_param   opj_j2k_enc   opj_tccp   
    box_param   
      m  
    +
    opj_job_list_t   opj_tccp_info   placeholder_param   
    boxcontents_param   opj_jp2   opj_tcd   placeholderlist_param   
    boxheader_param   manfbox_param   opj_jp2_box   opj_tcd_band   
      q  
    +
    boxlist_param   marker_param   opj_jp2_cdef   opj_tcd_cblk_dec   
      c  
    +
    markeridx_param   opj_jp2_cdef_info   opj_tcd_cblk_enc   query_param   
    message_param   opj_jp2_cmap_comp   opj_tcd_image   
      r  
    +
    cache_param   metadata_param   opj_jp2_color   opj_tcd_layer   
    cachelist_param   metadatalist_param   opj_jp2_comps   opj_tcd_marker_info   range_param   
    cachemodel_param   mhixbox_param   opj_jp2_header_handler   opj_tcd_pass   
      s  
    +
    cachemodellist_param   msgqueue_param   opj_jp2_img_header_writer_handler   opj_tcd_precinct   
    channel_param   
      o  
    +
    opj_jp2_index   opj_tcd_resolution   session_param   
    channellist_param   opj_jp2_metadata   opj_tcd_seg   sessionlist_param   
    codestream_param   opj_bio   opj_jp2_pclr   opj_tcd_seg_data_chunk   SIZmarker_param   
    CODmarker_param   opj_codec_private   opj_marker_info   opj_tcd_tile   subfaixbox4_param   
      d  
    +
    opj_codestream_index   opj_mct_data   opj_tcd_tilecomp   subfaixbox8_param   
    opj_codestream_info   opj_mqc   opj_tcp   subfaixbox_param   
    dec_server_record   opj_codestream_info_v2   opj_mqc_state   opj_tgt_node   
      t  
    +
    dwt_local   opj_cp   opj_packet_info   opj_tgt_tree   
      f  
    +
    opj_cparameters   opj_pi_comp   opj_thread_pool_t   target_param   
    opj_dec_memory_marker_handler   opj_pi_iterator   opj_tile_index   targetlist_param   
    faixbox_param   opj_decoding_param   opj_pi_resolution   opj_tile_info   
      v  
    +
    faixelem4_param   opj_dparameters   opj_poc   opj_tile_v2_info   
    faixelem8_param   opj_dwd_decode_h_job_t   opj_ppx_struct   opj_tls_key_val_t   v4dwt_local   
      i  
    +
    opj_dwd_decode_v_job_t   opj_procedure_list   opj_tls_t   
    opj_encoding_param   opj_simple_mcc_decorrelation_data   opj_tp_index   
    ihdrbox_param   opj_event_mgr   opj_sparse_array_int32   opj_tp_info   
    +
    a | b | c | d | f | i | j | m | o | p | q | r | s | t | v
    +
    + + + + diff --git a/build/doc/html/closed.png b/build/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/build/doc/html/codestream__manager_8c.html b/build/doc/html/codestream__manager_8c.html new file mode 100644 index 000000000..e9517309c --- /dev/null +++ b/build/doc/html/codestream__manager_8c.html @@ -0,0 +1,389 @@ + + + + + + + +OpenJPEG: codestream_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    codestream_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include "codestream_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    codestream_param_t set_codestream (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     set codestream parameters from inputs More...
     
    Byte_tfetch_codestreambytes (codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch Codestream bytes of data in file stream More...
     
    Byte_t fetch_codestream1byte (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 1-byte Byte code in file stream More...
     
    Byte2_t fetch_codestream2bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_codestream4bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 4-byte big endian Byte codes in file stream More...
     
    void print_codestream (codestream_param_t cs)
     print codestream parameters More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ fetch_codestream1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_codestream1byte (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 1-byte Byte code in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_1byte(), and codestream_param::offset.

    + +

    Referenced by fetch_marker1byte().

    + +
    +
    + +

    ◆ fetch_codestream2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_codestream2bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_2bytebigendian(), and codestream_param::offset.

    + +

    Referenced by fetch_marker2bytebigendian().

    + +
    +
    + +

    ◆ fetch_codestream4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_codestream4bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_4bytebigendian(), and codestream_param::offset.

    + +

    Referenced by fetch_marker4bytebigendian().

    + +
    +
    + +

    ◆ fetch_codestreambytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_codestreambytes (codestream_param_tcs,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch Codestream bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References codestream_param::fd, fetch_bytes(), and codestream_param::offset.

    + +
    +
    + +

    ◆ print_codestream()

    + +
    +
    + + + + + + + + +
    void print_codestream (codestream_param_t cs)
    +
    + +

    print codestream parameters

    +
    Parameters
    + + +
    [in]cscodestream
    +
    +
    + +

    References codestream_param::fd, codestream_param::length, logstream, and codestream_param::offset.

    + +
    +
    + +

    ◆ set_codestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    codestream_param_t set_codestream (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    set codestream parameters from inputs

    +
    Parameters
    + + + + +
    [in]fdfile descriptor
    [in]offsetoffset in the file
    [in]lengthcodestream length
    +
    +
    +
    Returns
    structure of generated codestream parameters
    + +

    References codestream_param::fd, codestream_param::length, and codestream_param::offset.

    + +

    Referenced by set_cidxdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/codestream__manager_8h.html b/build/doc/html/codestream__manager_8h.html new file mode 100644 index 000000000..1a0885070 --- /dev/null +++ b/build/doc/html/codestream__manager_8h.html @@ -0,0 +1,367 @@ + + + + + + + +OpenJPEG: codestream_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    codestream_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  codestream_param
     codestream parameters More...
     
    + + + + +

    +Typedefs

    typedef struct codestream_param codestream_param_t
     codestream parameters More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    codestream_param_t set_codestream (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     set codestream parameters from inputs More...
     
    Byte_tfetch_codestreambytes (codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch Codestream bytes of data in file stream More...
     
    Byte_t fetch_codestream1byte (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 1-byte Byte code in file stream More...
     
    Byte2_t fetch_codestream2bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_codestream4bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 4-byte big endian Byte codes in file stream More...
     
    void print_codestream (codestream_param_t cs)
     print codestream parameters More...
     
    +

    Typedef Documentation

    + +

    ◆ codestream_param_t

    + +
    +
    + + + + +
    typedef struct codestream_param codestream_param_t
    +
    + +

    codestream parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ fetch_codestream1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_codestream1byte (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 1-byte Byte code in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_1byte(), and codestream_param::offset.

    + +

    Referenced by fetch_marker1byte().

    + +
    +
    + +

    ◆ fetch_codestream2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_codestream2bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_2bytebigendian(), and codestream_param::offset.

    + +

    Referenced by fetch_marker2bytebigendian().

    + +
    +
    + +

    ◆ fetch_codestream4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_codestream4bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch Codestream 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    +
    +
    +
    Returns
    fetched code
    + +

    References codestream_param::fd, fetch_4bytebigendian(), and codestream_param::offset.

    + +

    Referenced by fetch_marker4bytebigendian().

    + +
    +
    + +

    ◆ fetch_codestreambytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* fetch_codestreambytes (codestream_param_tcs,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    +
    + +

    fetch Codestream bytes of data in file stream

    +
    Parameters
    + + + + +
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    [in]sizeByte length
    +
    +
    +
    Returns
    pointer to the fetched data
    + +

    References codestream_param::fd, fetch_bytes(), and codestream_param::offset.

    + +
    +
    + +

    ◆ print_codestream()

    + +
    +
    + + + + + + + + +
    void print_codestream (codestream_param_t cs)
    +
    + +

    print codestream parameters

    +
    Parameters
    + + +
    [in]cscodestream
    +
    +
    + +

    References codestream_param::fd, codestream_param::length, logstream, and codestream_param::offset.

    + +
    +
    + +

    ◆ set_codestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    codestream_param_t set_codestream (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    set codestream parameters from inputs

    +
    Parameters
    + + + + +
    [in]fdfile descriptor
    [in]offsetoffset in the file
    [in]lengthcodestream length
    +
    +
    +
    Returns
    structure of generated codestream parameters
    + +

    References codestream_param::fd, codestream_param::length, and codestream_param::offset.

    + +

    Referenced by set_cidxdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/codestream__manager_8h_source.html b/build/doc/html/codestream__manager_8h_source.html new file mode 100644 index 000000000..b53df3663 --- /dev/null +++ b/build/doc/html/codestream__manager_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +OpenJPEG: codestream_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    codestream_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef CODESTREAM_MANAGER_H_
    +
    32 # define CODESTREAM_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 
    +
    37 typedef struct codestream_param {
    +
    38  int fd;
    + + + +
    42 
    +
    43 
    + +
    53 
    +
    54 
    + +
    64  OPJ_SIZE_T size);
    +
    65 
    + +
    74 
    + +
    83  OPJ_OFF_T offset);
    +
    84 
    + +
    93  OPJ_OFF_T offset);
    +
    94 
    +
    95 
    + +
    102 
    +
    103 
    +
    104 #endif /* !CODESTREAM_MANAGER_H_ */
    +
    +
    Byte_t * fetch_codestreambytes(codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch Codestream bytes of data in file stream
    Definition: codestream_manager.c:55
    +
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    +
    void print_codestream(codestream_param_t cs)
    print codestream parameters
    Definition: codestream_manager.c:76
    +
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    #define logstream
    Definition: codestream_manager.c:41
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    +
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    codestream parameters
    Definition: codestream_manager.h:37
    +
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    +
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    + +
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    int fd
    file descriptor
    Definition: codestream_manager.h:38
    +
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    +
    Byte8_t length
    content length
    Definition: codestream_manager.h:40
    +
    OPJ_OFF_T offset
    byte position of DBox (Box Contents) in the file
    Definition: codestream_manager.h:39
    +
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    + +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    + +
    void print_codestream(codestream_param_t cs)
    print codestream parameters
    Definition: codestream_manager.c:76
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    struct codestream_param codestream_param_t
    codestream parameters
    +
    Byte_t * fetch_codestreambytes(codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch Codestream bytes of data in file stream
    Definition: codestream_manager.c:55
    +
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    + + + + diff --git a/build/doc/html/dec__clientmsg__handler_8c.html b/build/doc/html/dec__clientmsg__handler_8c.html new file mode 100644 index 000000000..f19179087 --- /dev/null +++ b/build/doc/html/dec__clientmsg__handler_8c.html @@ -0,0 +1,497 @@ + + + + + + + +OpenJPEG: dec_clientmsg_handler.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    dec_clientmsg_handler.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <assert.h>
    +#include <limits.h>
    +#include "dec_clientmsg_handler.h"
    +#include "ihdrbox_manager.h"
    +#include "jpipstream_manager.h"
    +#include "jp2k_encoder.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void handle_JPIPstreamMSG (SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
     handle JPT- JPP- stream message More...
     
    void handle_PNMreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle PNM request message More...
     
    void handle_XMLreqMSG (SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
     handle XML request message More...
     
    void handle_TIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle TargetID request message More...
     
    void handle_CIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle ChannelID request message More...
     
    void handle_dstCIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle distroy ChannelID message More...
     
    void handle_SIZreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle SIZ request message More...
     
    void handle_JP2saveMSG (SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
     handle saving JP2 file request message More...
     
    +

    Function Documentation

    + +

    ◆ handle_CIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_CIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle ChannelID request message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    +
    +
    + +

    References cache_param::cid, cache_param::numOfcid, opj_free(), receive_string(), search_cache(), and send_CIDstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_dstCIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_dstCIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle distroy ChannelID message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in,out]cachelistcache list pointer
    +
    +
    + +

    References opj_free(), OPJ_TRUE, receive_string(), remove_cachecid(), and response_signal().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_JP2saveMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_JP2saveMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    msgqueue_param_tmsgqueue,
    Byte_tjpipstream 
    )
    +
    + +

    handle saving JP2 file request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in]msgqueuemessage queue pointer
    [in]jpipstreamaddress of caching jpipstream pointer
    +
    +
    + +

    References cache_param::csn, opj_free(), receive_string(), recons_jp2(), save_codestream(), and search_cacheBycid().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_JPIPstreamMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_JPIPstreamMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    Byte_t ** jpipstream,
    OPJ_SIZE_Tstreamlen,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    handle JPT- JPP- stream message

    +
    Parameters
    + + + + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in,out]jpipstreamaddress of JPT- JPP- stream pointer
    [in,out]streamlenaddress of stream length
    [in,out]msgqueuemessage queue pointer
    +
    +
    + +

    References add_cachecid(), message_param::csn, delete_metadatalist(), gene_cache(), gene_metadatalist(), insert_cache_into_list(), msgqueue_param::last, cache_param::metadatalist, opj_free(), OPJ_TRUE, parse_JPIPstream(), parse_metamsg(), receive_JPIPstream(), response_signal(), search_cache(), search_cacheBycsn(), update_cachetid(), and update_JPIPstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_PNMreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_PNMreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle PNM request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamjpipstream pointer
    [in]msgqueuemessage queue pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References ihdrbox_param::bpc, cache_param::csn, ihdrbox_param::height, jpipstream_to_pnm(), ihdrbox_param::nc, opj_free(), receive_line(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_PNMstream(), and ihdrbox_param::width.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_SIZreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_SIZreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle SIZ request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]msgqueuemessage queue pointer
    [in,out]cachelistcache list pointer
    +
    +
    + +

    References cache_param::csn, get_SIZ_from_jpipstream(), ihdrbox_param::height, cache_param::ihdrbox, opj_free(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_SIZstream(), and ihdrbox_param::width.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_TIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_TIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle TargetID request message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    +
    +
    + +

    References opj_free(), receive_string(), search_cache(), send_TIDstream(), and cache_param::tid.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_XMLreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_XMLreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle XML request message

    +
    Parameters
    + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References metadata_param::boxcontents, metadatalist_param::last, boxcontents_param::length, cache_param::metadatalist, boxcontents_param::offset, opj_free(), opj_malloc(), receive_string(), search_cacheBycid(), and send_XMLstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/dec__clientmsg__handler_8h.html b/build/doc/html/dec__clientmsg__handler_8h.html new file mode 100644 index 000000000..53b0963c4 --- /dev/null +++ b/build/doc/html/dec__clientmsg__handler_8h.html @@ -0,0 +1,493 @@ + + + + + + + +OpenJPEG: dec_clientmsg_handler.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    dec_clientmsg_handler.h File Reference
    +
    +
    +
    #include "imgsock_manager.h"
    +#include "cache_manager.h"
    +#include "byte_manager.h"
    +#include "msgqueue_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void handle_JPIPstreamMSG (SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
     handle JPT- JPP- stream message More...
     
    void handle_PNMreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle PNM request message More...
     
    void handle_XMLreqMSG (SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
     handle XML request message More...
     
    void handle_TIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle TargetID request message More...
     
    void handle_CIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle ChannelID request message More...
     
    void handle_dstCIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle distroy ChannelID message More...
     
    void handle_SIZreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle SIZ request message More...
     
    void handle_JP2saveMSG (SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
     handle saving JP2 file request message More...
     
    +

    Function Documentation

    + +

    ◆ handle_CIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_CIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle ChannelID request message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    +
    +
    + +

    References cache_param::cid, cache_param::numOfcid, opj_free(), receive_string(), search_cache(), and send_CIDstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_dstCIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_dstCIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle distroy ChannelID message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in,out]cachelistcache list pointer
    +
    +
    + +

    References opj_free(), OPJ_TRUE, receive_string(), remove_cachecid(), and response_signal().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_JP2saveMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_JP2saveMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    msgqueue_param_tmsgqueue,
    Byte_tjpipstream 
    )
    +
    + +

    handle saving JP2 file request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in]msgqueuemessage queue pointer
    [in]jpipstreamaddress of caching jpipstream pointer
    +
    +
    + +

    References cache_param::csn, opj_free(), receive_string(), recons_jp2(), save_codestream(), and search_cacheBycid().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_JPIPstreamMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_JPIPstreamMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    Byte_t ** jpipstream,
    OPJ_SIZE_Tstreamlen,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    handle JPT- JPP- stream message

    +
    Parameters
    + + + + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in,out]jpipstreamaddress of JPT- JPP- stream pointer
    [in,out]streamlenaddress of stream length
    [in,out]msgqueuemessage queue pointer
    +
    +
    + +

    References add_cachecid(), message_param::csn, delete_metadatalist(), gene_cache(), gene_metadatalist(), insert_cache_into_list(), msgqueue_param::last, cache_param::metadatalist, opj_free(), OPJ_TRUE, parse_JPIPstream(), parse_metamsg(), receive_JPIPstream(), response_signal(), search_cache(), search_cacheBycsn(), update_cachetid(), and update_JPIPstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_PNMreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_PNMreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle PNM request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamjpipstream pointer
    [in]msgqueuemessage queue pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References ihdrbox_param::bpc, cache_param::csn, ihdrbox_param::height, jpipstream_to_pnm(), ihdrbox_param::nc, opj_free(), receive_line(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_PNMstream(), and ihdrbox_param::width.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_SIZreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_SIZreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle SIZ request message

    +
    Parameters
    + + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]msgqueuemessage queue pointer
    [in,out]cachelistcache list pointer
    +
    +
    + +

    References cache_param::csn, get_SIZ_from_jpipstream(), ihdrbox_param::height, cache_param::ihdrbox, opj_free(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_SIZstream(), and ihdrbox_param::width.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_TIDreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void handle_TIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle TargetID request message

    +
    Parameters
    + + + +
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    +
    +
    + +

    References opj_free(), receive_string(), search_cache(), send_TIDstream(), and cache_param::tid.

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ handle_XMLreqMSG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void handle_XMLreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    cachelist_param_tcachelist 
    )
    +
    + +

    handle XML request message

    +
    Parameters
    + + + + +
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]cachelistcache list pointer
    +
    +
    + +

    References metadata_param::boxcontents, metadatalist_param::last, boxcontents_param::length, cache_param::metadatalist, boxcontents_param::offset, opj_free(), opj_malloc(), receive_string(), search_cacheBycid(), and send_XMLstream().

    + +

    Referenced by handle_clientreq().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/dec__clientmsg__handler_8h_source.html b/build/doc/html/dec__clientmsg__handler_8h_source.html new file mode 100644 index 000000000..814f200bb --- /dev/null +++ b/build/doc/html/dec__clientmsg__handler_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + +OpenJPEG: dec_clientmsg_handler.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    dec_clientmsg_handler.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef DEC_CLIENTMSG_HANDLER_H_
    +
    33 # define DEC_CLIENTMSG_HANDLER_H_
    +
    34 
    +
    35 #include "imgsock_manager.h"
    +
    36 #include "cache_manager.h"
    +
    37 #include "byte_manager.h"
    +
    38 #include "msgqueue_manager.h"
    +
    39 
    +
    49 void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist,
    +
    50  Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue);
    +
    51 
    +
    60 void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    +
    61  msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
    +
    62 
    +
    70 void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    +
    71  cachelist_param_t *cachelist);
    +
    72 
    +
    79 void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    +
    80 
    +
    87 void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    +
    88 
    +
    95 void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    +
    96 
    +
    105 void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    +
    106  msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
    +
    107 
    +
    116 void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist,
    +
    117  msgqueue_param_t *msgqueue, Byte_t *jpipstream);
    +
    118 
    +
    119 
    +
    120 #endif /* !DEC_CLIENTMSG_HANDLER_H_ */
    +
    +
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    +
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    + +
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    +
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    + +
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    +
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    +
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    +
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    +
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    +
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    +
    char * tid
    taregt identifier
    Definition: cache_manager.h:40
    +
    int numOfcid
    number of cids
    Definition: cache_manager.h:43
    +
    char ** cid
    dynamic array of channel identifiers
    Definition: cache_manager.h:42
    +
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    +
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    +
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    +
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    cache parameters
    Definition: cache_manager.h:38
    +
    int SOCKET
    Definition: sock_manager.h:40
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    +
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    +
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    +
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    +
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    +
    Definition: metadata_manager.h:37
    + +
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    +
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    +
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    +
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    + +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    + +
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    +
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    + +
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    +
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    +
    message_param_t * last
    last message pointer of the list
    Definition: msgqueue_manager.h:65
    +
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    +
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    +
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    +
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    +
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    +
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    +
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    +
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    +
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    +
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    + +
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    +
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    +
    metadata_param_t * last
    last metadata-bin pointer of the list
    Definition: metadata_manager.h:56
    +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    +
    Definition: cache_manager.h:50
    +
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    + +
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    +
    ihdrbox_param_t * ihdrbox
    ihdrbox
    Definition: cache_manager.h:45
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    +
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    +
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    +
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    + +
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    +
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: cache_manager.h:44
    +
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    +
    int csn
    codestream number
    Definition: cache_manager.h:41
    + + + + diff --git a/build/doc/html/dir_0890392e63c951145007159392cffa14.html b/build/doc/html/dir_0890392e63c951145007159392cffa14.html new file mode 100644 index 000000000..b6c61d9a8 --- /dev/null +++ b/build/doc/html/dir_0890392e63c951145007159392cffa14.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: ImageProcessing Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    ImageProcessing Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  codecs
     
    +
    + + + + diff --git a/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html b/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html new file mode 100644 index 000000000..ca19388fd --- /dev/null +++ b/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: Seagate Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    Seagate Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  OpenSource
     
    +
    + + + + diff --git a/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html b/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html new file mode 100644 index 000000000..8c80c8548 --- /dev/null +++ b/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html @@ -0,0 +1,58 @@ + + + + + + + +OpenJPEG: doc Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    doc Directory Reference
    +
    +
    +
    + + + + diff --git a/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html b/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html new file mode 100644 index 000000000..d2b7cb474 --- /dev/null +++ b/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: media Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    media Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  longervision
     
    +
    + + + + diff --git a/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html b/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html new file mode 100644 index 000000000..eb1cebab5 --- /dev/null +++ b/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: src Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    src Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  lib
     
    +
    + + + + diff --git a/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html b/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html new file mode 100644 index 000000000..6dc2f4ade --- /dev/null +++ b/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: build Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    build Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  doc
     
    +
    + + + + diff --git a/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html b/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html new file mode 100644 index 000000000..9134c9be9 --- /dev/null +++ b/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: longervision Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    longervision Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  Seagate
     
    +
    + + + + diff --git a/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html b/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html new file mode 100644 index 000000000..5ea37d93e --- /dev/null +++ b/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html @@ -0,0 +1,66 @@ + + + + + + + +OpenJPEG: lib Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    lib Directory Reference
    +
    +
    + + + + + + +

    +Directories

    directory  openjp2
     
    directory  openjpip
     
    +
    + + + + diff --git a/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html b/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html new file mode 100644 index 000000000..3a0d8b34a --- /dev/null +++ b/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: OpenSource Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    OpenSource Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  ImageProcessing
     
    +
    + + + + diff --git a/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html b/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html new file mode 100644 index 000000000..0f7c1dcff --- /dev/null +++ b/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html @@ -0,0 +1,66 @@ + + + + + + + +OpenJPEG: openjpeg Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    openjpeg Directory Reference
    +
    +
    + + + + + + +

    +Directories

    directory  build
     
    directory  src
     
    +
    + + + + diff --git a/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html b/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html new file mode 100644 index 000000000..d0a41e959 --- /dev/null +++ b/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: codecs Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    codecs Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  openjpeg
     
    +
    + + + + diff --git a/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html b/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html new file mode 100644 index 000000000..d6b537b4d --- /dev/null +++ b/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html @@ -0,0 +1,182 @@ + + + + + + + +OpenJPEG: openjpip Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    openjpip Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  auxtrans_manager.c
     
    file  auxtrans_manager.h [code]
     
    file  box_manager.c
     
    file  box_manager.h [code]
     
    file  boxheader_manager.c
     
    file  boxheader_manager.h [code]
     
    file  byte_manager.c
     
    file  byte_manager.h [code]
     
    file  cache_manager.c
     
    file  cache_manager.h [code]
     
    file  cachemodel_manager.c
     
    file  cachemodel_manager.h [code]
     
    file  channel_manager.c
     
    file  channel_manager.h [code]
     
    file  codestream_manager.c
     
    file  codestream_manager.h [code]
     
    file  dec_clientmsg_handler.c
     
    file  dec_clientmsg_handler.h [code]
     
    file  faixbox_manager.c
     
    file  faixbox_manager.h [code]
     
    file  ihdrbox_manager.c
     
    file  ihdrbox_manager.h [code]
     
    file  imgreg_manager.c
     
    file  imgreg_manager.h [code]
     
    file  imgsock_manager.c
     
    file  imgsock_manager.h [code]
     
    file  index_manager.c
     
    file  index_manager.h [code]
     
    file  j2kheader_manager.c
     
    file  j2kheader_manager.h [code]
     
    file  jp2k_decoder.c
     
    file  jp2k_decoder.h [code]
     
    file  jp2k_encoder.c
     
    file  jp2k_encoder.h [code]
     
    file  jpip_parser.c
     
    file  jpip_parser.h [code]
     
    file  jpipstream_manager.c
     
    file  jpipstream_manager.h [code]
     
    file  manfbox_manager.c
     
    file  manfbox_manager.h [code]
     
    file  marker_manager.c
     
    file  marker_manager.h [code]
     
     
     
    file  mhixbox_manager.c
     
    file  mhixbox_manager.h [code]
     
    file  msgqueue_manager.c
     
    file  msgqueue_manager.h [code]
     
    file  openjpip.c
     
    file  openjpip.h [code]
     
    file  placeholder_manager.c
     
    file  placeholder_manager.h [code]
     
    file  query_parser.c
     
    file  query_parser.h [code]
     
    file  session_manager.c
     
    file  session_manager.h [code]
     
    file  sock_manager.c
     
    file  sock_manager.h [code]
     
    file  target_manager.c
     
    file  target_manager.h [code]
     
    +
    + + + + diff --git a/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html b/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html new file mode 100644 index 000000000..8971a007b --- /dev/null +++ b/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html @@ -0,0 +1,211 @@ + + + + + + + +OpenJPEG: openjp2 Directory Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    openjp2 Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  bench_dwt.c
     
    file  bio.c
     
    file  bio.h [code]
     Implementation of an individual bit input-output (BIO)
     
    file  cidx_manager.c
     
    file  cidx_manager.h [code]
     Modification of jpip.h from 2KAN indexer.
     
    file  cio.c
     
    file  cio.h [code]
     Implementation of a byte input-output process (CIO)
     
    file  dwt.c
     
    file  dwt.h [code]
     Implementation of a discrete wavelet transform (DWT)
     
    file  event.c
     
    file  event.h [code]
     Implementation of a event callback system.
     
    file  function_list.c
     
    file  function_list.h [code]
     Implementation of a list of procedures.
     
    file  image.c
     
    file  image.h [code]
     Implementation of operations on images (IMAGE)
     
    file  indexbox_manager.h [code]
     Modification of jpip.c from 2KAN indexer.
     
    file  invert.c
     
    file  invert.h [code]
     Implementation of the matrix inversion.
     
    file  j2k.c
     
    file  j2k.h [code]
     The JPEG-2000 Codestream Reader/Writer (J2K)
     
    file  jp2.c
     
    file  jp2.h [code]
     The JPEG-2000 file format Reader/Writer (JP2)
     
    file  mct.c
     
    file  mct.h [code]
     Implementation of a multi-component transforms (MCT)
     
    file  mqc.c
     
    file  mqc.h [code]
     Implementation of an MQ-Coder (MQC)
     
    file  mqc_inl.h [code]
     
    file  openjpeg.c
     
    file  openjpeg.h [code]
     
    file  opj_clock.c
     
    file  opj_clock.h [code]
     Internal function for timing.
     
    file  opj_codec.h [code]
     
    file  opj_common.h [code]
     
    file  opj_includes.h [code]
     
    file  opj_intmath.h [code]
     Implementation of operations on integers (INT)
     
    file  opj_inttypes.h [code]
     
    file  opj_malloc.c
     
    file  opj_malloc.h [code]
     Internal functions.
     
    file  opj_stdint.h [code]
     
    file  phix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  pi.c
     
    file  pi.h [code]
     Implementation of a packet iterator (PI)
     
    file  ppix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  sparse_array.c
     
    file  sparse_array.h [code]
     Sparse array management.
     
    file  t1.c
     
    file  t1.h [code]
     Implementation of the tier-1 coding (coding of code-block coefficients) (T1)
     
    file  t1_generate_luts.c
     
    file  t1_luts.h [code]
     
    file  t2.c
     
    file  t2.h [code]
     Implementation of a tier-2 coding (packetization of code-block data) (T2)
     
    file  tcd.c
     
    file  tcd.h [code]
     Implementation of a tile coder/decoder (TCD)
     
    file  test_sparse_array.c
     
    file  tgt.c
     
    file  tgt.h [code]
     Implementation of a tag-tree coder (TGT)
     
    file  thix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  thread.c
     
    file  thread.h [code]
     Thread API.
     
    file  tls_keys.h [code]
     
    file  tpix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    +
    + + + + diff --git a/build/doc/html/doc.png b/build/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/build/doc/html/doxygen.css b/build/doc/html/doxygen.css new file mode 100644 index 000000000..5e35db3f4 --- /dev/null +++ b/build/doc/html/doxygen.css @@ -0,0 +1,1730 @@ +/* The standard CSS for doxygen 1.8.18 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/build/doc/html/doxygen.png b/build/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/build/doc/html/dwt_8c.html b/build/doc/html/dwt_8c.html new file mode 100644 index 000000000..be8eb77af --- /dev/null +++ b/build/doc/html/dwt_8c.html @@ -0,0 +1,2975 @@ + + + + + + + +OpenJPEG: dwt.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    dwt.c File Reference
    +
    +
    +
    #include <assert.h>
    +#include "opj_includes.h"
    +
    + + + + + + + + + + + +

    +Data Structures

    struct  dwt_local
     
    union  opj_v4_t
     
    struct  v4dwt_local
     
    struct  opj_dwd_decode_h_job_t
     
    struct  opj_dwd_decode_v_job_t
     
    + + + + + + + + + + + + + +

    +Macros

    #define OPJ_SKIP_POISON
     
    #define OPJ_WS(i)   v->mem[(i)*2]
     
    #define OPJ_WD(i)   v->mem[(1+(i)*2)]
     
    #define VREG_INT_COUNT   4
     Number of int32 values in a SSE2 register. More...
     
    #define PARALLEL_COLS_53   (2*VREG_INT_COUNT)
     Number of columns that we can process in parallel in the vertical pass. More...
     
    + + + + + + + + + + + + + + + + + + + + +

    +Local data structures

    typedef struct dwt_local opj_dwt_t
     
    typedef struct v4dwt_local opj_v4dwt_t
     
    typedef void(* DWT1DFN) (const opj_dwt_t *v)
     Virtual function type for wavelet transform in 1-D. More...
     
    static const OPJ_FLOAT32 opj_dwt_alpha = 1.586134342f
     
    static const OPJ_FLOAT32 opj_dwt_beta = 0.052980118f
     
    static const OPJ_FLOAT32 opj_dwt_gamma = -0.882911075f
     
    static const OPJ_FLOAT32 opj_dwt_delta = -0.443506852f
     
    static const OPJ_FLOAT32 opj_K = 1.230174105f
     
    static const OPJ_FLOAT32 opj_c13318 = 1.625732422f
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    #define OPJ_S(i)   a[(i)*2]
     
    #define OPJ_D(i)   a[(1+(i)*2)]
     
    #define OPJ_S_(i)   ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))
     
    #define OPJ_D_(i)   ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))
     
    #define OPJ_SS_(i)   ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))
     
    #define OPJ_DD_(i)   ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))
     
    #define OPJ_S_off(i, off)   a[(OPJ_UINT32)(i)*2*4+off]
     
    #define OPJ_D_off(i, off)   a[(1+(OPJ_UINT32)(i)*2)*4+off]
     
    #define OPJ_S__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))
     
    #define OPJ_D__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))
     
    #define OPJ_SS__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))
     
    #define OPJ_DD__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))
     
    static const OPJ_FLOAT64 opj_dwt_norms [4][10]
     
    static const OPJ_FLOAT64 opj_dwt_norms_real [4][10]
     
    static void opj_dwt_deinterleave_h (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward lazy transform (horizontal) More...
     
    static void opj_dwt_deinterleave_v (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 x, OPJ_INT32 cas)
     Forward lazy transform (vertical) More...
     
    static void opj_dwt_encode_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward 5-3 wavelet transform in 1-D. More...
     
    static void opj_dwt_encode_1_real (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward 9-7 wavelet transform in 1-D. More...
     
    static void opj_dwt_encode_stepsize (OPJ_INT32 stepsize, OPJ_INT32 numbps, opj_stepsize_t *bandno_stepsize)
     Explicit calculation of the Quantization Stepsizes. More...
     
    static OPJ_BOOL opj_dwt_decode_tile (opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 i)
     Inverse wavelet transform in 2-D. More...
     
    static OPJ_BOOL opj_dwt_decode_partial_tile (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     
    static OPJ_BOOL opj_dwt_encode_procedure (opj_tcd_tilecomp_t *tilec, void(*p_function)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32))
     
    static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
     
    static void opj_v4dwt_decode (opj_v4dwt_t *OPJ_RESTRICT dwt)
     
    static void opj_v4dwt_interleave_h (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
     
    static void opj_v4dwt_interleave_v (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
     
    static void opj_v4dwt_decode_step1 (opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
     
    static void opj_v4dwt_decode_step2 (opj_v4_t *l, opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
     
    static void opj_idwt53_h_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
     
    static void opj_idwt53_h_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
     
    static void opj_idwt53_h (const opj_dwt_t *dwt, OPJ_INT32 *tiledp)
     
    static void opj_idwt3_v_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
     Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate. More...
     
    static void opj_idwt3_v_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
     Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate. More...
     
    static void opj_idwt53_v (const opj_dwt_t *dwt, OPJ_INT32 *tiledp_col, OPJ_SIZE_T stride, OPJ_INT32 nb_cols)
     
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_t *tilec)
     Forward 5-3 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     Inverse 5-3 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
     Get the gain of a subband for the reversible 5-3 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. More...
     
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_t *tilec)
     Forward 9-7 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
     Get the gain of a subband for the irreversible 9-7 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT. More...
     
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_t *tccp, OPJ_UINT32 prec)
     Explicit calculation of the Quantization Stepsizes. More...
     
    static void opj_dwt_decode_h_func (void *user_data, opj_tls_t *tls)
     
    static void opj_dwt_decode_v_func (void *user_data, opj_tls_t *tls)
     
    static void opj_dwt_interleave_partial_h (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 sn, OPJ_UINT32 win_l_x0, OPJ_UINT32 win_l_x1, OPJ_UINT32 win_h_x0, OPJ_UINT32 win_h_x1)
     
    static void opj_dwt_interleave_partial_v (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_cols, OPJ_UINT32 sn, OPJ_UINT32 win_l_y0, OPJ_UINT32 win_l_y1, OPJ_UINT32 win_h_y0, OPJ_UINT32 win_h_y1)
     
    static void opj_dwt_decode_partial_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
     
    static void opj_dwt_decode_partial_1_parallel (OPJ_INT32 *a, OPJ_UINT32 nb_cols, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
     
    static void opj_dwt_get_band_coordinates (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 tcx0, OPJ_UINT32 tcy0, OPJ_UINT32 tcx1, OPJ_UINT32 tcy1, OPJ_UINT32 *tbx0, OPJ_UINT32 *tby0, OPJ_UINT32 *tbx1, OPJ_UINT32 *tby1)
     
    static void opj_dwt_segment_grow (OPJ_UINT32 filter_width, OPJ_UINT32 max_size, OPJ_UINT32 *start, OPJ_UINT32 *end)
     
    static opj_sparse_array_int32_topj_dwt_init_sparse_array (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     
    static void opj_v4dwt_interleave_partial_h (opj_v4dwt_t *dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 remaining_height)
     
    static void opj_v4dwt_interleave_partial_v (opj_v4dwt_t *OPJ_RESTRICT dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_elts_read)
     
    static OPJ_BOOL opj_dwt_decode_tile_97 (opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     
    static OPJ_BOOL opj_dwt_decode_partial_97 (opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     Inverse 9-7 wavelet transform in 2-D. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_D

    + +
    +
    + + + + + + + + +
    #define OPJ_D( i)   a[(1+(i)*2)]
    +
    + +
    +
    + +

    ◆ OPJ_D_

    + +
    +
    + + + + + + + + +
    #define OPJ_D_( i)   ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))
    +
    + +
    +
    + +

    ◆ OPJ_D__off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_D__off( i,
     off 
    )   ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))
    +
    + +
    +
    + +

    ◆ OPJ_D_off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_D_off( i,
     off 
    )   a[(1+(OPJ_UINT32)(i)*2)*4+off]
    +
    + +
    +
    + +

    ◆ OPJ_DD_

    + +
    +
    + + + + + + + + +
    #define OPJ_DD_( i)   ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))
    +
    + +
    +
    + +

    ◆ OPJ_DD__off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_DD__off( i,
     off 
    )   ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))
    +
    + +
    +
    + +

    ◆ OPJ_S

    + +
    +
    + + + + + + + + +
    #define OPJ_S( i)   a[(i)*2]
    +
    + +
    +
    + +

    ◆ OPJ_S_

    + +
    +
    + + + + + + + + +
    #define OPJ_S_( i)   ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))
    +
    + +
    +
    + +

    ◆ OPJ_S__off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_S__off( i,
     off 
    )   ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))
    +
    + +
    +
    + +

    ◆ OPJ_S_off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_S_off( i,
     off 
    )   a[(OPJ_UINT32)(i)*2*4+off]
    +
    + +
    +
    + +

    ◆ OPJ_SKIP_POISON

    + +
    +
    + + + + +
    #define OPJ_SKIP_POISON
    +
    + +
    +
    + +

    ◆ OPJ_SS_

    + +
    +
    + + + + + + + + +
    #define OPJ_SS_( i)   ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))
    +
    + +
    +
    + +

    ◆ OPJ_SS__off

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_SS__off( i,
     off 
    )   ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))
    +
    + +
    +
    + +

    ◆ OPJ_WD

    + +
    +
    + + + + + + + + +
    #define OPJ_WD( i)   v->mem[(1+(i)*2)]
    +
    + +
    +
    + +

    ◆ OPJ_WS

    + +
    +
    + + + + + + + + +
    #define OPJ_WS( i)   v->mem[(i)*2]
    +
    + +
    +
    + +

    ◆ PARALLEL_COLS_53

    + +
    +
    + + + + +
    #define PARALLEL_COLS_53   (2*VREG_INT_COUNT)
    +
    + +

    Number of columns that we can process in parallel in the vertical pass.

    + +
    +
    + +

    ◆ VREG_INT_COUNT

    + +
    +
    + + + + +
    #define VREG_INT_COUNT   4
    +
    + +

    Number of int32 values in a SSE2 register.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ DWT1DFN

    + +
    +
    + + + + +
    typedef void(* DWT1DFN) (const opj_dwt_t *v)
    +
    + +

    Virtual function type for wavelet transform in 1-D.

    + +
    +
    + +

    ◆ opj_dwt_t

    + +
    +
    + + + + +
    typedef struct dwt_local opj_dwt_t
    +
    + +
    +
    + +

    ◆ opj_v4dwt_t

    + +
    +
    + + + + +
    typedef struct v4dwt_local opj_v4dwt_t
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_dwt_calc_explicit_stepsizes()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_ttccp,
    OPJ_UINT32 prec 
    )
    +
    + +

    Explicit calculation of the Quantization Stepsizes.

    +
    Parameters
    + + + +
    tccpTile-component coding parameters
    precPrecint analyzed
    +
    +
    + +

    References J2K_CCP_QNTSTY_NOQNT, opj_tccp::numresolutions, opj_dwt_encode_stepsize(), opj_dwt_norms_real, opj_tccp::qmfbid, opj_tccp::qntsty, and opj_tccp::stepsizes.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_dwt_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_dwt_decode (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 numres 
    )
    +
    + +

    Inverse 5-3 wavelet transform in 2-D.

    +

    Apply a reversible inverse DWT transform to a component of an image.

    Parameters
    + + + + +
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    +
    +
    + +

    References opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

    + +

    Referenced by main(), and opj_tcd_dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_decode_h_func()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_decode_h_func (void * user_data,
    opj_tls_ttls 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_decode_partial_1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_decode_partial_1 (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas,
    OPJ_INT32 win_l_x0,
    OPJ_INT32 win_l_x1,
    OPJ_INT32 win_h_x0,
    OPJ_INT32 win_h_x1 
    )
    +
    +static
    +
    + +

    References OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, and OPJ_SS_.

    + +

    Referenced by opj_dwt_decode_partial_tile().

    + +
    +
    + +

    ◆ opj_dwt_decode_partial_1_parallel()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_decode_partial_1_parallel (OPJ_INT32a,
    OPJ_UINT32 nb_cols,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas,
    OPJ_INT32 win_l_x0,
    OPJ_INT32 win_l_x1,
    OPJ_INT32 win_h_x0,
    OPJ_INT32 win_h_x1 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_decode_partial_97()

    + + + +

    ◆ opj_dwt_decode_partial_tile()

    + + + +

    ◆ opj_dwt_decode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_t *OPJ_RESTRICT tilec,
    OPJ_UINT32 numres 
    )
    +
    + +

    Inverse 9-7 wavelet transform in 2-D.

    +

    Apply an irreversible inverse DWT transform to a component of an image.

    Parameters
    + + + + +
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    +
    +
    + +

    References opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), and opj_tcd::whole_tile_decoding.

    + +

    Referenced by opj_tcd_dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_decode_tile()

    + + + +

    ◆ opj_dwt_decode_tile_97()

    + + + +

    ◆ opj_dwt_decode_v_func()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_decode_v_func (void * user_data,
    opj_tls_ttls 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_deinterleave_h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_deinterleave_h (OPJ_INT32a,
    OPJ_INT32b,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    +
    +static
    +
    + +

    Forward lazy transform (horizontal)

    + +

    Referenced by opj_dwt_encode_procedure().

    + +
    +
    + +

    ◆ opj_dwt_deinterleave_v()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_deinterleave_v (OPJ_INT32a,
    OPJ_INT32b,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 x,
    OPJ_INT32 cas 
    )
    +
    +static
    +
    + +

    Forward lazy transform (vertical)

    + +

    Referenced by opj_dwt_encode_procedure().

    + +
    +
    + +

    ◆ opj_dwt_encode()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_ttilec)
    +
    + +

    Forward 5-3 wavelet transform in 2-D.

    +

    Apply a reversible DWT transform to a component of an image.

    Parameters
    + + +
    tilecTile component information (current tile)
    +
    +
    + +

    References opj_dwt_encode_1(), and opj_dwt_encode_procedure().

    + +

    Referenced by main(), and opj_tcd_dwt_encode().

    + +
    +
    + +

    ◆ opj_dwt_encode_1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_encode_1 (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    +
    +static
    +
    + +

    Forward 5-3 wavelet transform in 1-D.

    + +

    References OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, and OPJ_SS_.

    + +

    Referenced by opj_dwt_encode().

    + +
    +
    + +

    ◆ opj_dwt_encode_1_real()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_encode_1_real (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    +
    +static
    +
    + +

    Forward 9-7 wavelet transform in 1-D.

    + +

    References OPJ_D, OPJ_D_, OPJ_DD_, opj_int_fix_mul(), OPJ_S, OPJ_S_, and OPJ_SS_.

    + +

    Referenced by opj_dwt_encode_real().

    + +
    +
    + +

    ◆ opj_dwt_encode_procedure()

    + + + +

    ◆ opj_dwt_encode_real()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_ttilec)
    +
    + +

    Forward 9-7 wavelet transform in 2-D.

    +

    Apply an irreversible DWT transform to a component of an image.

    Parameters
    + + +
    tilecTile component information (current tile)
    +
    +
    + +

    References opj_dwt_encode_1_real(), and opj_dwt_encode_procedure().

    + +

    Referenced by opj_tcd_dwt_encode().

    + +
    +
    + +

    ◆ opj_dwt_encode_stepsize()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_encode_stepsize (OPJ_INT32 stepsize,
    OPJ_INT32 numbps,
    opj_stepsize_tbandno_stepsize 
    )
    +
    +static
    +
    + +

    Explicit calculation of the Quantization Stepsizes.

    + +

    References opj_stepsize::expn, opj_stepsize::mant, and opj_int_floorlog2().

    + +

    Referenced by opj_dwt_calc_explicit_stepsizes().

    + +
    +
    + +

    ◆ opj_dwt_get_band_coordinates()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_get_band_coordinates (opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 tcx0,
    OPJ_UINT32 tcy0,
    OPJ_UINT32 tcx1,
    OPJ_UINT32 tcy1,
    OPJ_UINT32tbx0,
    OPJ_UINT32tby0,
    OPJ_UINT32tbx1,
    OPJ_UINT32tby1 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_getgain()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
    +
    + +

    Get the gain of a subband for the reversible 5-3 DWT.

    +
    Parameters
    + + +
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    +
    +
    +
    Returns
    Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_dwt_getgain_real()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
    +
    + +

    Get the gain of a subband for the irreversible 9-7 DWT.

    +
    Parameters
    + + +
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    +
    +
    +
    Returns
    Returns the gain of the 9-7 wavelet transform
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_dwt_getnorm()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    +
    + +

    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.

    +
    Parameters
    + + + +
    levelLevel of the wavelet function
    orientBand of the wavelet function
    +
    +
    +
    Returns
    Returns the norm of the wavelet function
    + +

    References opj_dwt_norms.

    + +

    Referenced by opj_t1_getwmsedec().

    + +
    +
    + +

    ◆ opj_dwt_getnorm_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    +
    + +

    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.

    +
    Parameters
    + + + +
    levelLevel of the wavelet function
    orientBand of the wavelet function
    +
    +
    +
    Returns
    Returns the norm of the 9-7 wavelet
    + +

    References opj_dwt_norms_real.

    + +

    Referenced by opj_t1_getwmsedec().

    + +
    +
    + +

    ◆ opj_dwt_init_sparse_array()

    + + + +

    ◆ opj_dwt_interleave_partial_h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_interleave_partial_h (OPJ_INT32dest,
    OPJ_INT32 cas,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_line,
    OPJ_UINT32 sn,
    OPJ_UINT32 win_l_x0,
    OPJ_UINT32 win_l_x1,
    OPJ_UINT32 win_h_x0,
    OPJ_UINT32 win_h_x1 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_interleave_partial_v()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_interleave_partial_v (OPJ_INT32dest,
    OPJ_INT32 cas,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_col,
    OPJ_UINT32 nb_cols,
    OPJ_UINT32 sn,
    OPJ_UINT32 win_l_y0,
    OPJ_UINT32 win_l_y1,
    OPJ_UINT32 win_h_y0,
    OPJ_UINT32 win_h_y1 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_max_resolution()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r,
    OPJ_UINT32 i 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_dwt_segment_grow()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_dwt_segment_grow (OPJ_UINT32 filter_width,
    OPJ_UINT32 max_size,
    OPJ_UINT32start,
    OPJ_UINT32end 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_idwt3_v_cas0()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_idwt3_v_cas0 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp_col,
    const OPJ_SIZE_T stride 
    )
    +
    +static
    +
    + +

    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate.

    + +

    Referenced by opj_idwt53_v().

    + +
    +
    + +

    ◆ opj_idwt3_v_cas1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_idwt3_v_cas1 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp_col,
    const OPJ_SIZE_T stride 
    )
    +
    +static
    +
    + +

    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate.

    + +

    Referenced by opj_idwt53_v().

    + +
    +
    + +

    ◆ opj_idwt53_h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_idwt53_h (const opj_dwt_tdwt,
    OPJ_INT32tiledp 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_idwt53_h_cas0()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_idwt53_h_cas0 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp 
    )
    +
    +static
    +
    + +

    Referenced by opj_idwt53_h().

    + +
    +
    + +

    ◆ opj_idwt53_h_cas1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_idwt53_h_cas1 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp 
    )
    +
    +static
    +
    + +

    Referenced by opj_idwt53_h().

    + +
    +
    + +

    ◆ opj_idwt53_v()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_idwt53_v (const opj_dwt_tdwt,
    OPJ_INT32tiledp_col,
    OPJ_SIZE_T stride,
    OPJ_INT32 nb_cols 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_v4dwt_decode()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_v4dwt_decode (opj_v4dwt_t *OPJ_RESTRICT dwt)
    +
    +static
    +
    +
    + +

    ◆ opj_v4dwt_decode_step1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_decode_step1 (opj_v4_tw,
    OPJ_UINT32 start,
    OPJ_UINT32 end,
    const OPJ_FLOAT32 c 
    )
    +
    +static
    +
    + +

    References OPJ_RESTRICT.

    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_v4dwt_decode_step2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_decode_step2 (opj_v4_tl,
    opj_v4_tw,
    OPJ_UINT32 start,
    OPJ_UINT32 end,
    OPJ_UINT32 m,
    OPJ_FLOAT32 c 
    )
    +
    +static
    +
    + +

    References opj_uint_min().

    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_v4dwt_interleave_h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_interleave_h (opj_v4dwt_t *OPJ_RESTRICT dwt,
    OPJ_FLOAT32 *OPJ_RESTRICT a,
    OPJ_UINT32 width,
    OPJ_UINT32 remaining_height 
    )
    +
    +static
    +
    + +

    References OPJ_RESTRICT.

    + +

    Referenced by opj_dwt_decode_tile_97().

    + +
    +
    + +

    ◆ opj_v4dwt_interleave_partial_h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_interleave_partial_h (opj_v4dwt_tdwt,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_line,
    OPJ_UINT32 remaining_height 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_v4dwt_interleave_partial_v()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_interleave_partial_v (opj_v4dwt_t *OPJ_RESTRICT dwt,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_col,
    OPJ_UINT32 nb_elts_read 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_v4dwt_interleave_v()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_v4dwt_interleave_v (opj_v4dwt_t *OPJ_RESTRICT dwt,
    OPJ_FLOAT32 *OPJ_RESTRICT a,
    OPJ_UINT32 width,
    OPJ_UINT32 nb_elts_read 
    )
    +
    +static
    +
    + +

    References OPJ_RESTRICT.

    + +

    Referenced by opj_dwt_decode_tile_97().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ opj_c13318

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_c13318 = 1.625732422f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_alpha

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_dwt_alpha = 1.586134342f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_beta

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_dwt_beta = 0.052980118f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_delta

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_dwt_delta = -0.443506852f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_gamma

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_dwt_gamma = -0.882911075f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_norms

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT64 opj_dwt_norms[4][10]
    +
    +static
    +
    +Initial value:
    = {
    +
    {1.000, 1.500, 2.750, 5.375, 10.68, 21.34, 42.67, 85.33, 170.7, 341.3},
    +
    {1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
    +
    {1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
    +
    {.7186, .9218, 1.586, 3.043, 6.019, 12.01, 24.00, 47.97, 95.93}
    +
    }
    +
    +

    Referenced by opj_dwt_getnorm().

    + +
    +
    + +

    ◆ opj_dwt_norms_real

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT64 opj_dwt_norms_real[4][10]
    +
    +static
    +
    +Initial value:
    = {
    +
    {1.000, 1.965, 4.177, 8.403, 16.90, 33.84, 67.69, 135.3, 270.6, 540.9},
    +
    {2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
    +
    {2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
    +
    {2.080, 3.865, 8.307, 17.18, 34.71, 69.59, 139.3, 278.6, 557.2}
    +
    }
    +
    +

    Referenced by opj_dwt_calc_explicit_stepsizes(), and opj_dwt_getnorm_real().

    + +
    +
    + +

    ◆ opj_K

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT32 opj_K = 1.230174105f
    +
    +static
    +
    + +

    Referenced by opj_v4dwt_decode().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/dwt_8h.html b/build/doc/html/dwt_8h.html new file mode 100644 index 000000000..63d46d8ab --- /dev/null +++ b/build/doc/html/dwt_8h.html @@ -0,0 +1,438 @@ + + + + + + + +OpenJPEG: dwt.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    dwt.h File Reference
    +
    +
    + +

    Implementation of a discrete wavelet transform (DWT) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_t *tilec)
     Forward 5-3 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     Inverse 5-3 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
     Get the gain of a subband for the reversible 5-3 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. More...
     
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_t *tilec)
     Forward 9-7 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     Inverse 9-7 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
     Get the gain of a subband for the irreversible 9-7 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT. More...
     
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_t *tccp, OPJ_UINT32 prec)
     Explicit calculation of the Quantization Stepsizes. More...
     
    +

    Detailed Description

    +

    Implementation of a discrete wavelet transform (DWT)

    +

    The functions in DWT.C have for goal to realize forward and inverse discret wavelet transform with filter 5-3 (reversible) and filter 9-7 (irreversible). The functions in DWT.C are used by some function in TCD.C.

    +

    Function Documentation

    + +

    ◆ opj_dwt_calc_explicit_stepsizes()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_ttccp,
    OPJ_UINT32 prec 
    )
    +
    + +

    Explicit calculation of the Quantization Stepsizes.

    +
    Parameters
    + + + +
    tccpTile-component coding parameters
    precPrecint analyzed
    +
    +
    + +

    References J2K_CCP_QNTSTY_NOQNT, opj_tccp::numresolutions, opj_dwt_encode_stepsize(), opj_dwt_norms_real, opj_tccp::qmfbid, opj_tccp::qntsty, and opj_tccp::stepsizes.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_dwt_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_dwt_decode (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 numres 
    )
    +
    + +

    Inverse 5-3 wavelet transform in 2-D.

    +

    Apply a reversible inverse DWT transform to a component of an image.

    Parameters
    + + + + +
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    +
    +
    + +

    References opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

    + +

    Referenced by main(), and opj_tcd_dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_decode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_t *OPJ_RESTRICT tilec,
    OPJ_UINT32 numres 
    )
    +
    + +

    Inverse 9-7 wavelet transform in 2-D.

    +

    Apply an irreversible inverse DWT transform to a component of an image.

    Parameters
    + + + + +
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    +
    +
    + +

    References opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), and opj_tcd::whole_tile_decoding.

    + +

    Referenced by opj_tcd_dwt_decode().

    + +
    +
    + +

    ◆ opj_dwt_encode()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_ttilec)
    +
    + +

    Forward 5-3 wavelet transform in 2-D.

    +

    Apply a reversible DWT transform to a component of an image.

    Parameters
    + + +
    tilecTile component information (current tile)
    +
    +
    + +

    References opj_dwt_encode_1(), and opj_dwt_encode_procedure().

    + +

    Referenced by main(), and opj_tcd_dwt_encode().

    + +
    +
    + +

    ◆ opj_dwt_encode_real()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_ttilec)
    +
    + +

    Forward 9-7 wavelet transform in 2-D.

    +

    Apply an irreversible DWT transform to a component of an image.

    Parameters
    + + +
    tilecTile component information (current tile)
    +
    +
    + +

    References opj_dwt_encode_1_real(), and opj_dwt_encode_procedure().

    + +

    Referenced by opj_tcd_dwt_encode().

    + +
    +
    + +

    ◆ opj_dwt_getgain()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
    +
    + +

    Get the gain of a subband for the reversible 5-3 DWT.

    +
    Parameters
    + + +
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    +
    +
    +
    Returns
    Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_dwt_getgain_real()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
    +
    + +

    Get the gain of a subband for the irreversible 9-7 DWT.

    +
    Parameters
    + + +
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    +
    +
    +
    Returns
    Returns the gain of the 9-7 wavelet transform
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_dwt_getnorm()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    +
    + +

    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.

    +
    Parameters
    + + + +
    levelLevel of the wavelet function
    orientBand of the wavelet function
    +
    +
    +
    Returns
    Returns the norm of the wavelet function
    + +

    References opj_dwt_norms.

    + +

    Referenced by opj_t1_getwmsedec().

    + +
    +
    + +

    ◆ opj_dwt_getnorm_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    +
    + +

    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.

    +
    Parameters
    + + + +
    levelLevel of the wavelet function
    orientBand of the wavelet function
    +
    +
    +
    Returns
    Returns the norm of the 9-7 wavelet
    + +

    References opj_dwt_norms_real.

    + +

    Referenced by opj_t1_getwmsedec().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/dwt_8h_source.html b/build/doc/html/dwt_8h_source.html new file mode 100644 index 000000000..1cee5c959 --- /dev/null +++ b/build/doc/html/dwt_8h_source.html @@ -0,0 +1,315 @@ + + + + + + + +OpenJPEG: dwt.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    dwt.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * All rights reserved.
    +
    15  *
    +
    16  * Redistribution and use in source and binary forms, with or without
    +
    17  * modification, are permitted provided that the following conditions
    +
    18  * are met:
    +
    19  * 1. Redistributions of source code must retain the above copyright
    +
    20  * notice, this list of conditions and the following disclaimer.
    +
    21  * 2. Redistributions in binary form must reproduce the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer in the
    +
    23  * documentation and/or other materials provided with the distribution.
    +
    24  *
    +
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    35  * POSSIBILITY OF SUCH DAMAGE.
    +
    36  */
    +
    37 
    +
    38 #ifndef OPJ_DWT_H
    +
    39 #define OPJ_DWT_H
    +
    40 
    +
    51 
    +
    52 
    +
    55 /* ----------------------------------------------------------------------- */
    + +
    62 
    + +
    71  opj_tcd_tilecomp_t* tilec,
    +
    72  OPJ_UINT32 numres);
    +
    73 
    + + + + + +
    102  OPJ_UINT32 numres);
    +
    103 
    + + + +
    123 /* ----------------------------------------------------------------------- */
    +
    127 
    +
    128 #endif /* OPJ_DWT_H */
    +
    +
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    +
    OPJ_UINT32 cw
    Definition: tcd.h:145
    +
    Definition: thread.c:504
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    +
    OPJ_UINT32 w
    Definition: dwt.c:1327
    +
    static void opj_dwt_segment_grow(OPJ_UINT32 filter_width, OPJ_UINT32 max_size, OPJ_UINT32 *start, OPJ_UINT32 *end)
    Definition: dwt.c:1858
    +
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    +
    OPJ_UINT32 win_x0
    Definition: tcd.h:215
    +
    static void opj_v4dwt_decode_step2(opj_v4_t *l, opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
    Definition: dwt.c:2395
    +
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    +
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    +
    opj_dwt_t v
    Definition: dwt.c:1349
    +
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    +
    OPJ_INT32 x0
    Definition: tcd.h:159
    +
    static OPJ_UINT32 opj_dwt_max_resolution(opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
    Definition: dwt.c:1307
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    +
    #define OPJ_D__off(i, off)
    Definition: dwt.c:1675
    +
    #define PARALLEL_COLS_53
    Number of columns that we can process in parallel in the vertical pass.
    Definition: dwt.c:78
    +
    static void opj_v4dwt_interleave_partial_h(opj_v4dwt_t *dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 remaining_height)
    Definition: dwt.c:2225
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:216
    +
    static const OPJ_FLOAT32 opj_dwt_delta
    Definition: dwt.c:108
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    OPJ_INT32 x0
    Definition: tcd.h:173
    +
    OPJ_INT32 y1
    Definition: tcd.h:173
    +
    OPJ_INT32 x1
    Definition: tcd.h:173
    +
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    +
    OPJ_UINT32 win_l_x0
    Definition: dwt.c:99
    +
    OPJ_INT32 x1
    Definition: tcd.h:124
    +
    static OPJ_BOOL opj_dwt_decode_partial_97(opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Definition: dwt.c:2642
    +
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    +
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    +
    static void opj_dwt_interleave_partial_v(OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_cols, OPJ_UINT32 sn, OPJ_UINT32 win_l_y0, OPJ_UINT32 win_l_y1, OPJ_UINT32 win_h_y0, OPJ_UINT32 win_h_y1)
    Definition: dwt.c:1570
    +
    Definition: dwt.c:1324
    +
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    +
    static void opj_idwt53_h_cas1(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
    Definition: dwt.c:483
    +
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    +
    #define OPJ_S_(i)
    Definition: dwt.c:210
    +
    OPJ_UINT32 max_j
    Definition: dwt.c:1330
    +
    static OPJ_BOOL opj_dwt_decode_partial_tile(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Definition: dwt.c:1925
    +
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    +
    Definition: dwt.c:1348
    +
    Definition: dwt.c:90
    +
    static void opj_idwt53_v(const opj_dwt_t *dwt, OPJ_INT32 *tiledp_col, OPJ_SIZE_T stride, OPJ_INT32 nb_cols)
    Definition: dwt.c:953
    +
    static const OPJ_FLOAT32 opj_K
    Definition: dwt.c:110
    +
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    +
    static OPJ_BOOL opj_dwt_decode_tile_97(opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Definition: dwt.c:2510
    +
    OPJ_INT32 *OPJ_RESTRICT tiledp
    Definition: dwt.c:1328
    +
    Definition: dwt.c:83
    +
    OPJ_UINT32 min_j
    Definition: dwt.c:1353
    +
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    +
    OPJ_INT32 x1
    Definition: tcd.h:191
    +
    OPJ_UINT32 win_h_x1
    Definition: dwt.c:102
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    static void opj_dwt_encode_1(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward 5-3 wavelet transform in 1-D.
    Definition: dwt.c:347
    +
    OPJ_UINT32 ph
    Definition: tcd.h:175
    +
    static void opj_dwt_encode_1_real(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward 9-7 wavelet transform in 1-D.
    Definition: dwt.c:1040
    +
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    +
    OPJ_INT32 y1
    Definition: tcd.h:124
    +
    OPJ_UINT32 rh
    Definition: dwt.c:1350
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    +
    static void opj_idwt3_v_cas0(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate.
    Definition: dwt.c:854
    +
    #define OPJ_D_off(i, off)
    Definition: dwt.c:1673
    +
    OPJ_INT32 x0
    Definition: tcd.h:191
    +
    OPJ_UINT32 pw
    Definition: tcd.h:175
    +
    OPJ_INT32 x0
    Definition: tcd.h:124
    +
    void(* DWT1DFN)(const opj_dwt_t *v)
    Virtual function type for wavelet transform in 1-D.
    Definition: dwt.c:118
    +
    Quantization stepsize.
    Definition: j2k.h:165
    +
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    +
    static void opj_dwt_encode_stepsize(OPJ_INT32 stepsize, OPJ_INT32 numbps, opj_stepsize_t *bandno_stepsize)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1089
    +
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    +
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    +
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    +
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    +
    OPJ_UINT32 rw
    Definition: dwt.c:1326
    +
    static const OPJ_FLOAT32 opj_c13318
    Definition: dwt.c:111
    +
    static const OPJ_FLOAT32 opj_dwt_beta
    Definition: dwt.c:106
    +
    opj_dwt_t h
    Definition: dwt.c:1325
    +
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    +
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    static void opj_v4dwt_interleave_v(opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
    Definition: dwt.c:2251
    +
    Precinct structure.
    Definition: tcd.h:142
    + +
    static const OPJ_FLOAT32 opj_dwt_gamma
    Definition: dwt.c:107
    +
    static void opj_v4dwt_decode(opj_v4dwt_t *OPJ_RESTRICT dwt)
    Definition: dwt.c:2444
    +
    struct v4dwt_local opj_v4dwt_t
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    Sub-band structure.
    Definition: tcd.h:157
    +
    static void opj_v4dwt_interleave_h(opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
    Definition: dwt.c:2171
    +
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    +
    static void opj_dwt_interleave_partial_h(OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 sn, OPJ_UINT32 win_l_x0, OPJ_UINT32 win_l_x1, OPJ_UINT32 win_h_x0, OPJ_UINT32 win_h_x1)
    Definition: dwt.c:1543
    +
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    #define VREG_INT_COUNT
    Number of int32 values in a SSE2 register.
    Definition: dwt.c:74
    +
    static OPJ_BOOL opj_dwt_encode_procedure(opj_tcd_tilecomp_t *tilec, void(*p_function)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32))
    Definition: dwt.c:1109
    +
    OPJ_INT32 cas
    Definition: dwt.c:87
    +
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    +
    OPJ_INT32 y0
    Definition: tcd.h:173
    +
    static const OPJ_FLOAT64 opj_dwt_norms_real[4][10]
    Definition: dwt.c:233
    +
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:218
    +
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    +
    static void opj_idwt3_v_cas1(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate.
    Definition: dwt.c:904
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    OPJ_UINT32 min_j
    Definition: dwt.c:1329
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    +
    static void opj_dwt_deinterleave_v(OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 x, OPJ_INT32 cas)
    Forward lazy transform (vertical)
    Definition: dwt.c:273
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_FLOAT32 f[4]
    Definition: dwt.c:91
    +
    #define OPJ_SS__off(i, off)
    Definition: dwt.c:1676
    +
    union opj_tcd_precinct::@3 cblks
    +
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    +
    Definition: sparse_array.c:35
    +
    OPJ_UINT32 qntsty
    quantisation style
    Definition: j2k.h:189
    +
    #define OPJ_D(i)
    Definition: dwt.c:209
    +
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    +
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    +
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    +
    static INLINE OPJ_UINT32 opj_uint_subs(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated difference of two unsigned integers.
    Definition: opj_intmath.h:102
    +
    static void opj_dwt_decode_partial_1(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
    Definition: dwt.c:1597
    +
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    +
    OPJ_INT32 *OPJ_RESTRICT tiledp
    Definition: dwt.c:1352
    +
    #define OPJ_DD__off(i, off)
    Definition: dwt.c:1677
    +
    OPJ_INT32 y0
    Definition: tcd.h:159
    +
    #define OPJ_DD_(i)
    Definition: dwt.c:214
    +
    Code-block for decoding.
    Definition: tcd.h:120
    +
    OPJ_UINT32 w
    Definition: dwt.c:1351
    +
    static opj_sparse_array_int32_t * opj_dwt_init_sparse_array(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Definition: dwt.c:1869
    +
    Tile-component coding parameters.
    Definition: j2k.h:175
    +
    OPJ_INT32 * data
    Definition: tcd.h:204
    +
    OPJ_INT32 * mem
    Definition: dwt.c:84
    +
    opj_v4_t * wavelet
    Definition: dwt.c:95
    +
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    +
    static const OPJ_FLOAT32 opj_dwt_alpha
    Definition: dwt.c:105
    +
    struct dwt_local opj_dwt_t
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    +
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    OPJ_UINT32 win_l_x1
    Definition: dwt.c:100
    +
    static void opj_idwt53_h_cas0(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
    Definition: dwt.c:415
    +
    OPJ_INT32 y0
    Definition: tcd.h:124
    +
    static void opj_dwt_decode_partial_1_parallel(OPJ_INT32 *a, OPJ_UINT32 nb_cols, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
    Definition: dwt.c:1679
    +
    OPJ_UINT32 win_h_x0
    Definition: dwt.c:101
    +
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    +
    static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 i)
    Inverse wavelet transform in 2-D.
    Definition: dwt.c:1381
    +
    static void opj_v4dwt_decode_step1(opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
    Definition: dwt.c:2376
    +
    static void opj_v4dwt_interleave_partial_v(opj_v4dwt_t *OPJ_RESTRICT dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_elts_read)
    Definition: dwt.c:2273
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    +
    #define OPJ_S_off(i, off)
    Definition: dwt.c:1672
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:217
    +
    OPJ_INT32 sn
    Definition: dwt.c:86
    +
    #define OPJ_S(i)
    Definition: dwt.c:208
    +
    OPJ_INT32 cas
    Definition: dwt.c:98
    +
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    static void opj_dwt_get_band_coordinates(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 tcx0, OPJ_UINT32 tcy0, OPJ_UINT32 tcx1, OPJ_UINT32 tcy1, OPJ_UINT32 *tbx0, OPJ_UINT32 *tby0, OPJ_UINT32 *tbx1, OPJ_UINT32 *tby1)
    Definition: dwt.c:1816
    +
    static void opj_dwt_decode_v_func(void *user_data, opj_tls_t *tls)
    Definition: dwt.c:1357
    +
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    +
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    +
    #define OPJ_S__off(i, off)
    Definition: dwt.c:1674
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    +
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    +
    OPJ_UINT32 max_j
    Definition: dwt.c:1354
    +
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    +
    OPJ_INT32 sn
    Definition: dwt.c:97
    +
    Definition: dwt.c:94
    +
    static const OPJ_FLOAT64 opj_dwt_norms[4][10]
    Definition: dwt.c:221
    +
    #define OPJ_SS_(i)
    Definition: dwt.c:213
    +
    OPJ_INT32 dn
    Definition: dwt.c:85
    +
    #define J2K_CCP_QNTSTY_NOQNT
    Definition: j2k.h:64
    +
    static void opj_dwt_deinterleave_h(OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward lazy transform (horizontal)
    Definition: dwt.c:249
    +
    OPJ_UINT32 ch
    Definition: tcd.h:145
    +
    Definition: thread.c:605
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    #define OPJ_D_(i)
    Definition: dwt.c:211
    +
    static void opj_dwt_decode_h_func(void *user_data, opj_tls_t *tls)
    Definition: dwt.c:1333
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    +
    static void opj_idwt53_h(const opj_dwt_t *dwt, OPJ_INT32 *tiledp)
    Definition: dwt.c:559
    +
    OPJ_INT32 dn
    Definition: dwt.c:96
    + + + + diff --git a/build/doc/html/dynsections.js b/build/doc/html/dynsections.js new file mode 100644 index 000000000..ea0a7b39a --- /dev/null +++ b/build/doc/html/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +OpenJPEG: event.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    event.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + +

    +Macros

    #define OPJ_MSG_SIZE   512 /* 512 bytes should be more than enough for a short message */
     
    + + + + + + + + + + +

    +Functions

    static void opj_default_callback (const char *msg, void *client_data)
     Default callback function. More...
     
    OPJ_BOOL opj_event_msg (opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
     Write formatted data to a string and send the string to a user callback. More...
     
    void opj_set_default_event_handler (opj_event_mgr_t *p_manager)
     Set the event manager with the default callback function for the 3 levels. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_MSG_SIZE

    + +
    +
    + + + + +
    #define OPJ_MSG_SIZE   512 /* 512 bytes should be more than enough for a short message */
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_default_callback()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_default_callback (const char * msg,
    void * client_data 
    )
    +
    +static
    +
    + +

    Default callback function.

    +

    Do nothing.

    + +

    References OPJ_ARG_NOT_USED.

    + +

    Referenced by opj_set_default_event_handler().

    + +
    +
    + +

    ◆ opj_event_msg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_event_msg (opj_event_mgr_tevent_mgr,
    OPJ_INT32 event_type,
    const char * fmt,
     ... 
    )
    +
    + +

    Write formatted data to a string and send the string to a user callback.

    +
    Parameters
    + + + + +
    event_mgrEvent handler
    event_typeEvent type or callback to use to send the message
    fmtFormat-control string (plus optional arguments)
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_event_mgr::error_handler, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_event_mgr::info_handler, opj_event_mgr::m_error_data, opj_event_mgr::m_info_data, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_MSG_SIZE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    + +

    Referenced by opj_j2k_are_all_used_components_decoded(), opj_j2k_check_poc_val(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encode(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_get_sot_values(), opj_j2k_get_tile(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_pre_write_tile(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_plm(), opj_j2k_read_plt(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_qcd(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_tlm(), opj_j2k_read_unk(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_start_compress(), opj_j2k_update_image_dimensions(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_plt_in_memory(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_j2k_write_tile(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_decode(), opj_jp2_get_tile(), opj_jp2_read_boxhdr(), opj_jp2_read_boxhdr_char(), opj_jp2_read_bpcc(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_read_jp(), opj_jp2_read_jp2h(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_ftyp(), opj_jp2_write_jp2c(), opj_jp2_write_jp2h(), opj_procedure_list_add_procedure(), opj_read_header(), opj_set_decoded_components(), opj_setup_decoder(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_skip(), opj_stream_write_skip(), opj_t1_clbl_decode_processor(), opj_t1_decode_cblk(), opj_t2_encode_packet(), opj_t2_read_packet_data(), opj_t2_read_packet_header(), opj_t2_skip_packet_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_set_default_event_handler()

    + +
    +
    + + + + + + + + +
    void opj_set_default_event_handler (opj_event_mgr_tp_manager)
    +
    +
    +
    + + + + diff --git a/build/doc/html/event_8h.html b/build/doc/html/event_8h.html new file mode 100644 index 000000000..5f8ac9a75 --- /dev/null +++ b/build/doc/html/event_8h.html @@ -0,0 +1,259 @@ + + + + + + + +OpenJPEG: event.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    event.h File Reference
    +
    +
    + +

    Implementation of a event callback system. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_event_mgr
     Message handler object used for. More...
     
    + + + + + + + + + + +

    +Macros

    #define EVT_ERROR   1
     Error event type. More...
     
    #define EVT_WARNING   2
     Warning event type. More...
     
    #define EVT_INFO   4
     Debug event type. More...
     
    + + + + +

    +Typedefs

    typedef struct opj_event_mgr opj_event_mgr_t
     Message handler object used for. More...
     
    + + + + + + + + +

    +Functions

    Exported functions (see also openjpeg.h)
    OPJ_BOOL opj_event_msg (opj_event_mgr_t *event_mgr, OPJ_INT32 event_type, const char *fmt,...)
     Write formatted data to a string and send the string to a user callback. More...
     
    void opj_set_default_event_handler (opj_event_mgr_t *p_manager)
     Set the event manager with the default callback function for the 3 levels. More...
     
    +

    Detailed Description

    +

    Implementation of a event callback system.

    +

    The functions in EVENT.C have for goal to send output messages (errors, warnings, debug) to the user.

    +

    Macro Definition Documentation

    + +

    ◆ EVT_ERROR

    + +
    +
    + + + + +
    #define EVT_ERROR   1
    +
    + +

    Error event type.

    + +
    +
    + +

    ◆ EVT_INFO

    + +
    +
    + + + + +
    #define EVT_INFO   4
    +
    + +

    Debug event type.

    + +
    +
    + +

    ◆ EVT_WARNING

    + +
    +
    + + + + +
    #define EVT_WARNING   2
    +
    + +

    Warning event type.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ opj_event_mgr_t

    + +
    +
    + + + + +
    typedef struct opj_event_mgr opj_event_mgr_t
    +
    + +

    Message handler object used for.

    +
      +
    • +Error messages
    • +
    • +Warning messages
    • +
    • +Debugging messages
    • +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_event_msg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_event_msg (opj_event_mgr_tevent_mgr,
    OPJ_INT32 event_type,
    const char * fmt,
     ... 
    )
    +
    + +

    Write formatted data to a string and send the string to a user callback.

    +
    Parameters
    + + + + +
    event_mgrEvent handler
    event_typeEvent type or callback to use to send the message
    fmtFormat-control string (plus optional arguments)
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_event_mgr::error_handler, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_event_mgr::info_handler, opj_event_mgr::m_error_data, opj_event_mgr::m_info_data, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_MSG_SIZE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    + +

    Referenced by opj_j2k_are_all_used_components_decoded(), opj_j2k_check_poc_val(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encode(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_get_sot_values(), opj_j2k_get_tile(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_pre_write_tile(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_plm(), opj_j2k_read_plt(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_qcd(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_tlm(), opj_j2k_read_unk(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_start_compress(), opj_j2k_update_image_dimensions(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_plt_in_memory(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_j2k_write_tile(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_decode(), opj_jp2_get_tile(), opj_jp2_read_boxhdr(), opj_jp2_read_boxhdr_char(), opj_jp2_read_bpcc(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_read_jp(), opj_jp2_read_jp2h(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_ftyp(), opj_jp2_write_jp2c(), opj_jp2_write_jp2h(), opj_procedure_list_add_procedure(), opj_read_header(), opj_set_decoded_components(), opj_setup_decoder(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_skip(), opj_stream_write_skip(), opj_t1_clbl_decode_processor(), opj_t1_decode_cblk(), opj_t2_encode_packet(), opj_t2_read_packet_data(), opj_t2_read_packet_header(), opj_t2_skip_packet_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_set_default_event_handler()

    + +
    +
    + + + + + + + + +
    void opj_set_default_event_handler (opj_event_mgr_tp_manager)
    +
    +
    +
    + + + + diff --git a/build/doc/html/event_8h_source.html b/build/doc/html/event_8h_source.html new file mode 100644 index 000000000..cd299ed2e --- /dev/null +++ b/build/doc/html/event_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +OpenJPEG: event.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    event.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    8  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    9  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    10  * All rights reserved.
    +
    11  *
    +
    12  * Redistribution and use in source and binary forms, with or without
    +
    13  * modification, are permitted provided that the following conditions
    +
    14  * are met:
    +
    15  * 1. Redistributions of source code must retain the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer.
    +
    17  * 2. Redistributions in binary form must reproduce the above copyright
    +
    18  * notice, this list of conditions and the following disclaimer in the
    +
    19  * documentation and/or other materials provided with the distribution.
    +
    20  *
    +
    21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    31  * POSSIBILITY OF SUCH DAMAGE.
    +
    32  */
    +
    33 #ifndef OPJ_EVENT_H
    +
    34 #define OPJ_EVENT_H
    +
    35 
    +
    50 typedef struct opj_event_mgr {
    +
    52  void * m_error_data;
    + +
    56  void * m_info_data;
    + + + + +
    64 
    +
    65 
    +
    66 #define EVT_ERROR 1
    +
    67 #define EVT_WARNING 2
    +
    68 #define EVT_INFO 4
    +
    72 
    +
    73 
    +
    75 /* ----------------------------------------------------------------------- */
    +
    76 
    +
    77 
    +
    78 /* ----------------------------------------------------------------------- */
    +
    79 
    +
    89 OPJ_BOOL opj_event_msg(opj_event_mgr_t* event_mgr, OPJ_INT32 event_type,
    +
    90  const char *fmt, ...);
    +
    91 /* ----------------------------------------------------------------------- */
    +
    92 
    + +
    97 
    +
    98 /*
    +
    99 #ifdef __GNUC__
    +
    100 #pragma GCC poison printf fprintf
    +
    101 #endif
    +
    102 */
    +
    103 
    +
    107 
    +
    108 #endif /* OPJ_EVENT_H */
    +
    +
    opj_msg_callback warning_handler
    Warning message callback if available, NULL otherwise.
    Definition: event.h:60
    +
    static void opj_default_callback(const char *msg, void *client_data)
    Default callback function.
    Definition: event.c:81
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    Message handler object used for.
    Definition: event.h:50
    +
    void(* opj_msg_callback)(const char *msg, void *client_data)
    Callback function prototype for events.
    Definition: openjpeg.h:343
    +
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    +
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    + +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    #define OPJ_MSG_SIZE
    +
    opj_msg_callback info_handler
    Debug message callback if available, NULL otherwise.
    Definition: event.h:62
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    void * m_info_data
    Data to call the event manager upon.
    Definition: event.h:56
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * m_error_data
    Data to call the event manager upon.
    Definition: event.h:52
    +
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    void * m_warning_data
    Data to call the event manager upon.
    Definition: event.h:54
    +
    struct opj_event_mgr opj_event_mgr_t
    Message handler object used for.
    +
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    +
    opj_msg_callback error_handler
    Error message callback if available, NULL otherwise.
    Definition: event.h:58
    + + + + diff --git a/build/doc/html/faixbox__manager_8c.html b/build/doc/html/faixbox__manager_8c.html new file mode 100644 index 000000000..70a3cf2a4 --- /dev/null +++ b/build/doc/html/faixbox__manager_8c.html @@ -0,0 +1,439 @@ + + + + + + + +OpenJPEG: faixbox_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    faixbox_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include "faixbox_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    faixbox_param_tgene_faixbox (box_param_t *box)
     generate faix box More...
     
    void print_faixbox (faixbox_param_t *faix)
     print faix box parameters More...
     
    void delete_faixbox (faixbox_param_t **faix)
     delete faix box More...
     
    Byte8_t get_nmax (faixbox_param_t *faix)
     get nmax parameter value from faix box More...
     
    Byte8_t get_m (faixbox_param_t *faix)
     get m parameter value from faix box More...
     
    Byte8_t get_elemOff (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get offset of a element from faix box More...
     
    Byte8_t get_elemLen (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get length of a element from faix box More...
     
    Byte4_t get_elemAux (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get aux of a element from faix box More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_faixbox()

    + +
    +
    + + + + + + + + +
    void delete_faixbox (faixbox_param_t ** faix)
    +
    + +

    delete faix box

    +
    Parameters
    + + +
    [in,out]faixaddressof the faixbox pointer
    +
    +
    + +

    Referenced by delete_index().

    + +
    +
    + +

    ◆ gene_faixbox()

    + + + +

    ◆ get_elemAux()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_elemAux (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get aux of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox4_param::aux, subfaixbox8_param::aux, subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, get_nmax(), faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by print_faixbox().

    + +
    +
    + +

    ◆ get_elemLen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t get_elemLen (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get length of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::len, faixelem8_param::len, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_precinct(), enqueue_tile(), and print_faixbox().

    + +
    +
    + +

    ◆ get_elemOff()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t get_elemOff (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get offset of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::off, faixelem8_param::off, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), and print_faixbox().

    + +
    +
    + +

    ◆ get_m()

    + +
    +
    + + + + + + + + +
    Byte8_t get_m (faixbox_param_tfaix)
    +
    + +

    get m parameter value from faix box

    +
    Parameters
    + + +
    [in]faixfaix box pointer
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::m, subfaixbox8_param::m, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_tile(), gene_cachemodel(), and print_faixbox().

    + +
    +
    + +

    ◆ get_nmax()

    + + + +

    ◆ print_faixbox()

    + +
    +
    + + + + + + + + +
    void print_faixbox (faixbox_param_tfaix)
    +
    + +

    print faix box parameters

    +
    Parameters
    + + +
    [in]faixfaix box pointer
    +
    +
    + +

    References get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), logstream, and faixbox_param::version.

    + +

    Referenced by print_index().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/faixbox__manager_8h.html b/build/doc/html/faixbox__manager_8h.html new file mode 100644 index 000000000..9e5bd2e2a --- /dev/null +++ b/build/doc/html/faixbox__manager_8h.html @@ -0,0 +1,528 @@ + + + + + + + +OpenJPEG: faixbox_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    faixbox_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "box_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  faixelem4_param
     4byte parameters of a faix element More...
     
    struct  faixelem8_param
     8byte parameters of a faix element More...
     
    struct  subfaixbox4_param
     4byte parameters of fragment array index box More...
     
    struct  subfaixbox8_param
     8byte parameters of fragment array index box More...
     
    union  subfaixbox_param
     variable sized parameters in fragment array index box More...
     
    struct  faixbox_param
     fragment array index box parameters More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct faixelem4_param faixelem4_param_t
     4byte parameters of a faix element More...
     
    typedef struct faixelem8_param faixelem8_param_t
     8byte parameters of a faix element More...
     
    typedef struct subfaixbox4_param subfaixbox4_param_t
     4byte parameters of fragment array index box More...
     
    typedef struct subfaixbox8_param subfaixbox8_param_t
     8byte parameters of fragment array index box More...
     
    typedef union subfaixbox_param subfaixbox_param_t
     variable sized parameters in fragment array index box More...
     
    typedef struct faixbox_param faixbox_param_t
     fragment array index box parameters More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    faixbox_param_tgene_faixbox (box_param_t *box)
     generate faix box More...
     
    void print_faixbox (faixbox_param_t *faix)
     print faix box parameters More...
     
    void delete_faixbox (faixbox_param_t **faix)
     delete faix box More...
     
    Byte8_t get_nmax (faixbox_param_t *faix)
     get nmax parameter value from faix box More...
     
    Byte8_t get_m (faixbox_param_t *faix)
     get m parameter value from faix box More...
     
    Byte8_t get_elemOff (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get offset of a element from faix box More...
     
    Byte8_t get_elemLen (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get length of a element from faix box More...
     
    Byte4_t get_elemAux (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get aux of a element from faix box More...
     
    +

    Typedef Documentation

    + +

    ◆ faixbox_param_t

    + +
    +
    + + + + +
    typedef struct faixbox_param faixbox_param_t
    +
    + +

    fragment array index box parameters

    +

    I.3.2.4.2 Fragment Array Index box

    + +
    +
    + +

    ◆ faixelem4_param_t

    + +
    +
    + + + + +
    typedef struct faixelem4_param faixelem4_param_t
    +
    + +

    4byte parameters of a faix element

    + +
    +
    + +

    ◆ faixelem8_param_t

    + +
    +
    + + + + +
    typedef struct faixelem8_param faixelem8_param_t
    +
    + +

    8byte parameters of a faix element

    + +
    +
    + +

    ◆ subfaixbox4_param_t

    + +
    +
    + + + + +
    typedef struct subfaixbox4_param subfaixbox4_param_t
    +
    + +

    4byte parameters of fragment array index box

    + +
    +
    + +

    ◆ subfaixbox8_param_t

    + +
    +
    + + + + +
    typedef struct subfaixbox8_param subfaixbox8_param_t
    +
    + +

    8byte parameters of fragment array index box

    + +
    +
    + +

    ◆ subfaixbox_param_t

    + +
    +
    + + + + +
    typedef union subfaixbox_param subfaixbox_param_t
    +
    + +

    variable sized parameters in fragment array index box

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_faixbox()

    + +
    +
    + + + + + + + + +
    void delete_faixbox (faixbox_param_t ** faix)
    +
    + +

    delete faix box

    +
    Parameters
    + + +
    [in,out]faixaddressof the faixbox pointer
    +
    +
    + +

    Referenced by delete_index().

    + +
    +
    + +

    ◆ gene_faixbox()

    + + + +

    ◆ get_elemAux()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_elemAux (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get aux of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox4_param::aux, subfaixbox8_param::aux, subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, get_nmax(), faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by print_faixbox().

    + +
    +
    + +

    ◆ get_elemLen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t get_elemLen (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get length of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::len, faixelem8_param::len, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_precinct(), enqueue_tile(), and print_faixbox().

    + +
    +
    + +

    ◆ get_elemOff()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t get_elemOff (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    +
    + +

    get offset of a element from faix box

    +
    Parameters
    + + + + +
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::off, faixelem8_param::off, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), and print_faixbox().

    + +
    +
    + +

    ◆ get_m()

    + +
    +
    + + + + + + + + +
    Byte8_t get_m (faixbox_param_tfaix)
    +
    + +

    get m parameter value from faix box

    +
    Parameters
    + + +
    [in]faixfaix box pointer
    +
    +
    + +

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::m, subfaixbox8_param::m, faixbox_param::subfaixbox, and faixbox_param::version.

    + +

    Referenced by enqueue_tile(), gene_cachemodel(), and print_faixbox().

    + +
    +
    + +

    ◆ get_nmax()

    + + + +

    ◆ print_faixbox()

    + +
    +
    + + + + + + + + +
    void print_faixbox (faixbox_param_tfaix)
    +
    + +

    print faix box parameters

    +
    Parameters
    + + +
    [in]faixfaix box pointer
    +
    +
    + +

    References get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), logstream, and faixbox_param::version.

    + +

    Referenced by print_index().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/faixbox__manager_8h_source.html b/build/doc/html/faixbox__manager_8h_source.html new file mode 100644 index 000000000..225412f0f --- /dev/null +++ b/build/doc/html/faixbox__manager_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +OpenJPEG: faixbox_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    faixbox_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef FAIXBOX_MANAGER_H_
    +
    32 # define FAIXBOX_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "box_manager.h"
    +
    36 
    +
    38 typedef struct faixelem4_param {
    + + + +
    42 
    +
    44 typedef struct faixelem8_param {
    + + + +
    48 
    +
    50 typedef struct subfaixbox4_param {
    + + + + + +
    57 
    +
    59 typedef struct subfaixbox8_param {
    + + + + + +
    66 
    +
    68 typedef union subfaixbox_param {
    + + + + + +
    74 
    +
    77 typedef struct faixbox_param {
    + + + +
    81 
    +
    82 
    + +
    90 
    +
    91 
    +
    97 void print_faixbox(faixbox_param_t *faix);
    +
    98 
    +
    99 
    +
    105 void delete_faixbox(faixbox_param_t **faix);
    +
    106 
    + +
    113 
    + +
    120 
    +
    128 Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    +
    129 
    +
    137 Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    +
    138 
    +
    146 Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    +
    147 
    +
    148 #endif /* !FAIXBOX_MANAGER_H_ */
    +
    +
    union subfaixbox_param subfaixbox_param_t
    variable sized parameters in fragment array index box
    +
    4byte parameters of fragment array index box
    Definition: faixbox_manager.h:50
    +
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    +
    Byte4_t * aux
    dynamic array pointer of auxiliary
    Definition: faixbox_manager.h:63
    +
    Byte4_t len
    length
    Definition: faixbox_manager.h:40
    +
    Byte4_t off
    offset
    Definition: faixbox_manager.h:39
    +
    #define logstream
    Definition: faixbox_manager.c:42
    +
    Byte4_t nmax
    maximum number of valid elements in any row of the array
    Definition: faixbox_manager.h:51
    +
    Byte8_t nmax
    maximum number of valid elements in any row of the array
    Definition: faixbox_manager.h:60
    +
    Byte8_t m
    number of raws of the array
    Definition: faixbox_manager.h:61
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    struct subfaixbox4_param subfaixbox4_param_t
    4byte parameters of fragment array index box
    +
    8byte parameters of fragment array index box
    Definition: faixbox_manager.h:59
    +
    Byte4_t * aux
    dynamic array pointer of auxiliary
    Definition: faixbox_manager.h:54
    +
    box parameters
    Definition: box_manager.h:37
    +
    Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get aux of a element from faix box
    Definition: faixbox_manager.c:203
    +
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    faixelem8_param_t * elem
    dynamic array pointer of faix elements
    Definition: faixbox_manager.h:62
    +
    Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get aux of a element from faix box
    Definition: faixbox_manager.c:203
    +
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    +
    Byte_t version
    Refer to the Table I.3 - Version values.
    Definition: faixbox_manager.h:78
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    struct faixbox_param faixbox_param_t
    fragment array index box parameters
    +
    Byte8_t off
    offset
    Definition: faixbox_manager.h:45
    +
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    +
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    +
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    +
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    +
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    +
    8byte parameters of a faix element
    Definition: faixbox_manager.h:44
    +
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    +
    subfaixbox8_param_t * byte8_params
    parameters with 8byte codes for version 1 or 3
    Definition: faixbox_manager.h:72
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    +
    faixelem4_param_t * elem
    dynamic array pointer of faix elements
    Definition: faixbox_manager.h:53
    +
    Byte4_t m
    number of raws of the array
    Definition: faixbox_manager.h:52
    +
    #define FCGI_stderr
    Definition: faixbox_manager.c:41
    +
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    +
    4byte parameters of a faix element
    Definition: faixbox_manager.h:38
    +
    variable sized parameters in fragment array index box
    Definition: faixbox_manager.h:68
    +
    subfaixbox4_param_t * byte4_params
    parameters with 4byte codes for version 0 or 2
    Definition: faixbox_manager.h:70
    + +
    Byte8_t len
    length
    Definition: faixbox_manager.h:46
    +
    struct faixelem8_param faixelem8_param_t
    8byte parameters of a faix element
    +
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    +
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    +
    struct subfaixbox8_param subfaixbox8_param_t
    8byte parameters of fragment array index box
    +
    struct faixelem4_param faixelem4_param_t
    4byte parameters of a faix element
    + +
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    + +
    subfaixbox_param_t subfaixbox
    rest information in faixbox
    Definition: faixbox_manager.h:79
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    + +
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    + + + + diff --git a/build/doc/html/files.html b/build/doc/html/files.html new file mode 100644 index 000000000..c2b526c23 --- /dev/null +++ b/build/doc/html/files.html @@ -0,0 +1,179 @@ + + + + + + + +OpenJPEG: File List + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    File List
    +
    +
    +
    Here is a list of all files with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     auxtrans_manager.c
     auxtrans_manager.h
     bench_dwt.c
     bio.c
     bio.hImplementation of an individual bit input-output (BIO)
     box_manager.c
     box_manager.h
     boxheader_manager.c
     boxheader_manager.h
     byte_manager.c
     byte_manager.h
     cache_manager.c
     cache_manager.h
     cachemodel_manager.c
     cachemodel_manager.h
     channel_manager.c
     channel_manager.h
     cidx_manager.c
     cidx_manager.hModification of jpip.h from 2KAN indexer
     cio.c
     cio.hImplementation of a byte input-output process (CIO)
     codestream_manager.c
     codestream_manager.h
     dec_clientmsg_handler.c
     dec_clientmsg_handler.h
     dwt.c
     dwt.hImplementation of a discrete wavelet transform (DWT)
     event.c
     event.hImplementation of a event callback system
     faixbox_manager.c
     faixbox_manager.h
     function_list.c
     function_list.hImplementation of a list of procedures
     ihdrbox_manager.c
     ihdrbox_manager.h
     image.c
     image.hImplementation of operations on images (IMAGE)
     imgreg_manager.c
     imgreg_manager.h
     imgsock_manager.c
     imgsock_manager.h
     index_manager.c
     index_manager.h
     indexbox_manager.hModification of jpip.c from 2KAN indexer
     invert.c
     invert.hImplementation of the matrix inversion
     j2k.c
     j2k.hThe JPEG-2000 Codestream Reader/Writer (J2K)
     j2kheader_manager.c
     j2kheader_manager.h
     jp2.c
     jp2.hThe JPEG-2000 file format Reader/Writer (JP2)
     jp2k_decoder.c
     jp2k_decoder.h
     jp2k_encoder.c
     jp2k_encoder.h
     jpip_parser.c
     jpip_parser.h
     jpipstream_manager.c
     jpipstream_manager.h
     manfbox_manager.c
     manfbox_manager.h
     marker_manager.c
     marker_manager.h
     mct.c
     mct.hImplementation of a multi-component transforms (MCT)
     metadata_manager.c
     metadata_manager.h
     mhixbox_manager.c
     mhixbox_manager.h
     mqc.c
     mqc.hImplementation of an MQ-Coder (MQC)
     mqc_inl.h
     msgqueue_manager.c
     msgqueue_manager.h
     openjpeg.c
     openjpeg.h
     openjpip.c
     openjpip.h
     opj_clock.c
     opj_clock.hInternal function for timing
     opj_codec.h
     opj_common.h
     opj_includes.h
     opj_intmath.hImplementation of operations on integers (INT)
     opj_inttypes.h
     opj_malloc.c
     opj_malloc.hInternal functions
     opj_stdint.h
     phix_manager.cModification of jpip.c from 2KAN indexer
     pi.c
     pi.hImplementation of a packet iterator (PI)
     placeholder_manager.c
     placeholder_manager.h
     ppix_manager.cModification of jpip.c from 2KAN indexer
     query_parser.c
     query_parser.h
     session_manager.c
     session_manager.h
     sock_manager.c
     sock_manager.h
     sparse_array.c
     sparse_array.hSparse array management
     t1.c
     t1.hImplementation of the tier-1 coding (coding of code-block coefficients) (T1)
     t1_generate_luts.c
     t1_luts.h
     t2.c
     t2.hImplementation of a tier-2 coding (packetization of code-block data) (T2)
     target_manager.c
     target_manager.h
     tcd.c
     tcd.hImplementation of a tile coder/decoder (TCD)
     test_sparse_array.c
     tgt.c
     tgt.hImplementation of a tag-tree coder (TGT)
     thix_manager.cModification of jpip.c from 2KAN indexer
     thread.c
     thread.hThread API
     tls_keys.h
     tpix_manager.cModification of jpip.c from 2KAN indexer
    +
    +
    + + + + diff --git a/build/doc/html/folderclosed.png b/build/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/build/doc/html/function__list_8c.html b/build/doc/html/function__list_8c.html new file mode 100644 index 000000000..740efe596 --- /dev/null +++ b/build/doc/html/function__list_8c.html @@ -0,0 +1,305 @@ + + + + + + + +OpenJPEG: function_list.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    function_list.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + +

    +Macros

    #define OPJ_VALIDATION_SIZE   10
     Default size of the validation list, if not sufficient, data will be reallocated with a double size. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    opj_procedure_list_topj_procedure_list_create ()
     Creates a validation list. More...
     
    void opj_procedure_list_destroy (opj_procedure_list_t *p_list)
     Destroys a validation list. More...
     
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
     Adds a new validation procedure. More...
     
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_t *p_validation_list)
     Gets the number of validation procedures. More...
     
    opj_procedureopj_procedure_list_get_first_procedure (opj_procedure_list_t *p_validation_list)
     Gets the pointer on the first validation procedure. More...
     
    void opj_procedure_list_clear (opj_procedure_list_t *p_validation_list)
     Clears the list of validation procedures. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_VALIDATION_SIZE

    + +
    +
    + + + + +
    #define OPJ_VALIDATION_SIZE   10
    +
    + +

    Default size of the validation list, if not sufficient, data will be reallocated with a double size.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_procedure_list_add_procedure()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_tp_validation_list,
    opj_procedure p_procedure,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_procedure_list_clear()

    + +
    +
    + + + + + + + + +
    void opj_procedure_list_clear (opj_procedure_list_tp_validation_list)
    +
    + +

    Clears the list of validation procedures.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to clear.
    +
    +
    + +

    References opj_procedure_list::m_nb_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    + +

    ◆ opj_procedure_list_create()

    + +
    +
    + + + + + + + + +
    opj_procedure_list_t* opj_procedure_list_create (void )
    +
    + +

    Creates a validation list.

    +
    Returns
    the newly created validation list.
    + +

    References opj_procedure_list::m_nb_max_procedures, opj_procedure_list::m_procedures, opj_calloc(), opj_free(), and OPJ_VALIDATION_SIZE.

    + +

    Referenced by opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_jp2_create().

    + +
    +
    + +

    ◆ opj_procedure_list_destroy()

    + +
    +
    + + + + + + + + +
    void opj_procedure_list_destroy (opj_procedure_list_tp_list)
    +
    + +

    Destroys a validation list.

    +
    Parameters
    + + +
    p_listthe list to destroy.
    +
    +
    + +

    References opj_procedure_list::m_procedures, and opj_free().

    + +

    Referenced by opj_j2k_destroy(), and opj_jp2_destroy().

    + +
    +
    + +

    ◆ opj_procedure_list_get_first_procedure()

    + +
    +
    + + + + + + + + +
    opj_procedure* opj_procedure_list_get_first_procedure (opj_procedure_list_tp_validation_list)
    +
    + +

    Gets the pointer on the first validation procedure.

    +

    This function is similar to the C++ iterator class to iterate through all the procedures inside the validation list. the caller does not take ownership of the pointer.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to get the first procedure from.
    +
    +
    +
    Returns
    a pointer to the first procedure.
    + +

    References opj_procedure_list::m_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    + +

    ◆ opj_procedure_list_get_nb_procedures()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_tp_validation_list)
    +
    + +

    Gets the number of validation procedures.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to modify.
    +
    +
    +
    Returns
    the number of validation procedures.
    + +

    References opj_procedure_list::m_nb_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/function__list_8h.html b/build/doc/html/function__list_8h.html new file mode 100644 index 000000000..35679ef54 --- /dev/null +++ b/build/doc/html/function__list_8h.html @@ -0,0 +1,338 @@ + + + + + + + +OpenJPEG: function_list.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    function_list.h File Reference
    +
    +
    + +

    Implementation of a list of procedures. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_procedure_list
     A list of procedures. More...
     
    + + + + + + + +

    +Typedefs

    typedef void(* opj_procedure) (void)
     declare a function pointer More...
     
    typedef struct opj_procedure_list opj_procedure_list_t
     A list of procedures. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    opj_procedure_list_topj_procedure_list_create (void)
     Creates a validation list. More...
     
    void opj_procedure_list_destroy (opj_procedure_list_t *p_list)
     Destroys a validation list. More...
     
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
     Adds a new validation procedure. More...
     
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_t *p_validation_list)
     Gets the number of validation procedures. More...
     
    opj_procedureopj_procedure_list_get_first_procedure (opj_procedure_list_t *p_validation_list)
     Gets the pointer on the first validation procedure. More...
     
    void opj_procedure_list_clear (opj_procedure_list_t *p_validation_list)
     Clears the list of validation procedures. More...
     
    +

    Detailed Description

    +

    Implementation of a list of procedures.

    +

    The functions in validation.c aims to have access to a list of procedures.

    +

    Typedef Documentation

    + +

    ◆ opj_procedure

    + +
    +
    + + + + +
    typedef void(* opj_procedure) (void)
    +
    + +

    declare a function pointer

    + +
    +
    + +

    ◆ opj_procedure_list_t

    + +
    +
    + + + + +
    typedef struct opj_procedure_list opj_procedure_list_t
    +
    + +

    A list of procedures.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_procedure_list_add_procedure()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_tp_validation_list,
    opj_procedure p_procedure,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_procedure_list_clear()

    + +
    +
    + + + + + + + + +
    void opj_procedure_list_clear (opj_procedure_list_tp_validation_list)
    +
    + +

    Clears the list of validation procedures.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to clear.
    +
    +
    + +

    References opj_procedure_list::m_nb_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    + +

    ◆ opj_procedure_list_create()

    + +
    +
    + + + + + + + + +
    opj_procedure_list_t* opj_procedure_list_create (void )
    +
    + +

    Creates a validation list.

    +
    Returns
    the newly created validation list.
    + +

    References opj_procedure_list::m_nb_max_procedures, opj_procedure_list::m_procedures, opj_calloc(), opj_free(), and OPJ_VALIDATION_SIZE.

    + +

    Referenced by opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_jp2_create().

    + +
    +
    + +

    ◆ opj_procedure_list_destroy()

    + +
    +
    + + + + + + + + +
    void opj_procedure_list_destroy (opj_procedure_list_tp_list)
    +
    + +

    Destroys a validation list.

    +
    Parameters
    + + +
    p_listthe list to destroy.
    +
    +
    + +

    References opj_procedure_list::m_procedures, and opj_free().

    + +

    Referenced by opj_j2k_destroy(), and opj_jp2_destroy().

    + +
    +
    + +

    ◆ opj_procedure_list_get_first_procedure()

    + +
    +
    + + + + + + + + +
    opj_procedure* opj_procedure_list_get_first_procedure (opj_procedure_list_tp_validation_list)
    +
    + +

    Gets the pointer on the first validation procedure.

    +

    This function is similar to the C++ iterator class to iterate through all the procedures inside the validation list. the caller does not take ownership of the pointer.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to get the first procedure from.
    +
    +
    +
    Returns
    a pointer to the first procedure.
    + +

    References opj_procedure_list::m_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    + +

    ◆ opj_procedure_list_get_nb_procedures()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_tp_validation_list)
    +
    + +

    Gets the number of validation procedures.

    +
    Parameters
    + + +
    p_validation_listthe list of procedure to modify.
    +
    +
    +
    Returns
    the number of validation procedures.
    + +

    References opj_procedure_list::m_nb_procedures.

    + +

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/function__list_8h_source.html b/build/doc/html/function__list_8h_source.html new file mode 100644 index 000000000..e21e22648 --- /dev/null +++ b/build/doc/html/function__list_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: function_list.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    function_list.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef OPJ_FUNCTION_LIST_H
    +
    33 #define OPJ_FUNCTION_LIST_H
    +
    34 
    +
    44 
    +
    45 /**************************************************************************************************
    +
    46  ***************************************** FORWARD DECLARATION ************************************
    +
    47  **************************************************************************************************/
    +
    48 
    +
    52 typedef void (*opj_procedure)(void);
    +
    53 
    +
    57 typedef struct opj_procedure_list {
    + + + +
    70 
    + +
    72 
    +
    73 /* ----------------------------------------------------------------------- */
    +
    74 
    + +
    81 
    + +
    88 
    + +
    99  p_validation_list, opj_procedure p_procedure, opj_event_mgr_t* p_manager);
    +
    100 
    + +
    109  p_validation_list);
    +
    110 
    + +
    121  p_validation_list);
    +
    122 
    +
    123 
    +
    130 void opj_procedure_list_clear(opj_procedure_list_t * p_validation_list);
    +
    133 #endif /* OPJ_FUNCTION_LIST_H */
    +
    134 
    +
    +
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_UINT32 m_nb_max_procedures
    The number of the array of validation procedures.
    Definition: function_list.h:65
    +
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    struct opj_procedure_list opj_procedure_list_t
    A list of procedures.
    +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    +
    Message handler object used for.
    Definition: event.h:50
    +
    opj_procedure * m_procedures
    The array of procedures.
    Definition: function_list.h:69
    +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    +
    opj_procedure_list_t * opj_procedure_list_create(void)
    Creates a validation list.
    Definition: function_list.c:39
    +
    OPJ_UINT32 m_nb_procedures
    The number of validation procedures.
    Definition: function_list.h:61
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    + +
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    +
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    +
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    +
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    +
    #define OPJ_VALIDATION_SIZE
    Default size of the validation list, if not sufficient, data will be reallocated with a double size.
    Definition: function_list.c:37
    +
    A list of procedures.
    Definition: function_list.h:57
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    +
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    + + + + diff --git a/build/doc/html/functions.html b/build/doc/html/functions.html new file mode 100644 index 000000000..2f7a6a705 --- /dev/null +++ b/build/doc/html/functions.html @@ -0,0 +1,76 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - a -

    +
    + + + + diff --git a/build/doc/html/functions_b.html b/build/doc/html/functions_b.html new file mode 100644 index 000000000..8cc048151 --- /dev/null +++ b/build/doc/html/functions_b.html @@ -0,0 +1,123 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - b -

    +
    + + + + diff --git a/build/doc/html/functions_c.html b/build/doc/html/functions_c.html new file mode 100644 index 000000000..996100366 --- /dev/null +++ b/build/doc/html/functions_c.html @@ -0,0 +1,307 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - c -

    +
    + + + + diff --git a/build/doc/html/functions_d.html b/build/doc/html/functions_d.html new file mode 100644 index 000000000..5fd51f6d3 --- /dev/null +++ b/build/doc/html/functions_d.html @@ -0,0 +1,151 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - d -

    +
    + + + + diff --git a/build/doc/html/functions_e.html b/build/doc/html/functions_e.html new file mode 100644 index 000000000..c59f4bcd7 --- /dev/null +++ b/build/doc/html/functions_e.html @@ -0,0 +1,110 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - e -

    +
    + + + + diff --git a/build/doc/html/functions_f.html b/build/doc/html/functions_f.html new file mode 100644 index 000000000..3356420ca --- /dev/null +++ b/build/doc/html/functions_f.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - f -

    +
    + + + + diff --git a/build/doc/html/functions_g.html b/build/doc/html/functions_g.html new file mode 100644 index 000000000..41e7ab8e8 --- /dev/null +++ b/build/doc/html/functions_g.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - g -

    +
    + + + + diff --git a/build/doc/html/functions_h.html b/build/doc/html/functions_h.html new file mode 100644 index 000000000..85b3ec751 --- /dev/null +++ b/build/doc/html/functions_h.html @@ -0,0 +1,89 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - h -

    +
    + + + + diff --git a/build/doc/html/functions_i.html b/build/doc/html/functions_i.html new file mode 100644 index 000000000..2f57a9c38 --- /dev/null +++ b/build/doc/html/functions_i.html @@ -0,0 +1,147 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - i -

    +
    + + + + diff --git a/build/doc/html/functions_j.html b/build/doc/html/functions_j.html new file mode 100644 index 000000000..c2429a86e --- /dev/null +++ b/build/doc/html/functions_j.html @@ -0,0 +1,162 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - j -

    +
    + + + + diff --git a/build/doc/html/functions_k.html b/build/doc/html/functions_k.html new file mode 100644 index 000000000..cffa6595c --- /dev/null +++ b/build/doc/html/functions_k.html @@ -0,0 +1,66 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - k -

    +
    + + + + diff --git a/build/doc/html/functions_l.html b/build/doc/html/functions_l.html new file mode 100644 index 000000000..46cb668ac --- /dev/null +++ b/build/doc/html/functions_l.html @@ -0,0 +1,141 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - l -

    +
    + + + + diff --git a/build/doc/html/functions_m.html b/build/doc/html/functions_m.html new file mode 100644 index 000000000..eb6e5b48e --- /dev/null +++ b/build/doc/html/functions_m.html @@ -0,0 +1,506 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - m -

    +
    + + + + diff --git a/build/doc/html/functions_n.html b/build/doc/html/functions_n.html new file mode 100644 index 000000000..3d2923a2d --- /dev/null +++ b/build/doc/html/functions_n.html @@ -0,0 +1,228 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - n -

    +
    + + + + diff --git a/build/doc/html/functions_o.html b/build/doc/html/functions_o.html new file mode 100644 index 000000000..6d33b0d8f --- /dev/null +++ b/build/doc/html/functions_o.html @@ -0,0 +1,154 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - o -

    +
    + + + + diff --git a/build/doc/html/functions_p.html b/build/doc/html/functions_p.html new file mode 100644 index 000000000..c757fbc02 --- /dev/null +++ b/build/doc/html/functions_p.html @@ -0,0 +1,268 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - p -

    +
    + + + + diff --git a/build/doc/html/functions_q.html b/build/doc/html/functions_q.html new file mode 100644 index 000000000..dc0f31dbc --- /dev/null +++ b/build/doc/html/functions_q.html @@ -0,0 +1,65 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - q -

    +
    + + + + diff --git a/build/doc/html/functions_r.html b/build/doc/html/functions_r.html new file mode 100644 index 000000000..b213402f9 --- /dev/null +++ b/build/doc/html/functions_r.html @@ -0,0 +1,141 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - r -

    +
    + + + + diff --git a/build/doc/html/functions_s.html b/build/doc/html/functions_s.html new file mode 100644 index 000000000..32d18d638 --- /dev/null +++ b/build/doc/html/functions_s.html @@ -0,0 +1,162 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - s -

    +
    + + + + diff --git a/build/doc/html/functions_t.html b/build/doc/html/functions_t.html new file mode 100644 index 000000000..d36b1770b --- /dev/null +++ b/build/doc/html/functions_t.html @@ -0,0 +1,282 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - t -

    +
    + + + + diff --git a/build/doc/html/functions_u.html b/build/doc/html/functions_u.html new file mode 100644 index 000000000..8be9c6701 --- /dev/null +++ b/build/doc/html/functions_u.html @@ -0,0 +1,69 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - u -

    +
    + + + + diff --git a/build/doc/html/functions_v.html b/build/doc/html/functions_v.html new file mode 100644 index 000000000..b813bb115 --- /dev/null +++ b/build/doc/html/functions_v.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - v -

    +
    + + + + diff --git a/build/doc/html/functions_vars.html b/build/doc/html/functions_vars.html new file mode 100644 index 000000000..6b7f62436 --- /dev/null +++ b/build/doc/html/functions_vars.html @@ -0,0 +1,76 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - a -

    +
    + + + + diff --git a/build/doc/html/functions_vars_b.html b/build/doc/html/functions_vars_b.html new file mode 100644 index 000000000..4c935899b --- /dev/null +++ b/build/doc/html/functions_vars_b.html @@ -0,0 +1,123 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - b -

    +
    + + + + diff --git a/build/doc/html/functions_vars_c.html b/build/doc/html/functions_vars_c.html new file mode 100644 index 000000000..6a49f43ac --- /dev/null +++ b/build/doc/html/functions_vars_c.html @@ -0,0 +1,307 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - c -

    +
    + + + + diff --git a/build/doc/html/functions_vars_d.html b/build/doc/html/functions_vars_d.html new file mode 100644 index 000000000..51f02dfa4 --- /dev/null +++ b/build/doc/html/functions_vars_d.html @@ -0,0 +1,151 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - d -

    +
    + + + + diff --git a/build/doc/html/functions_vars_e.html b/build/doc/html/functions_vars_e.html new file mode 100644 index 000000000..05ffd5e71 --- /dev/null +++ b/build/doc/html/functions_vars_e.html @@ -0,0 +1,110 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - e -

    +
    + + + + diff --git a/build/doc/html/functions_vars_f.html b/build/doc/html/functions_vars_f.html new file mode 100644 index 000000000..b4b32f833 --- /dev/null +++ b/build/doc/html/functions_vars_f.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    + + + + + diff --git a/build/doc/html/functions_vars_g.html b/build/doc/html/functions_vars_g.html new file mode 100644 index 000000000..b0e3a1c6e --- /dev/null +++ b/build/doc/html/functions_vars_g.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - g -

    +
    + + + + diff --git a/build/doc/html/functions_vars_h.html b/build/doc/html/functions_vars_h.html new file mode 100644 index 000000000..ffada8bad --- /dev/null +++ b/build/doc/html/functions_vars_h.html @@ -0,0 +1,89 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - h -

    +
    + + + + diff --git a/build/doc/html/functions_vars_i.html b/build/doc/html/functions_vars_i.html new file mode 100644 index 000000000..ee4512365 --- /dev/null +++ b/build/doc/html/functions_vars_i.html @@ -0,0 +1,147 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - i -

    +
    + + + + diff --git a/build/doc/html/functions_vars_j.html b/build/doc/html/functions_vars_j.html new file mode 100644 index 000000000..b5e35c924 --- /dev/null +++ b/build/doc/html/functions_vars_j.html @@ -0,0 +1,162 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - j -

    +
    + + + + diff --git a/build/doc/html/functions_vars_k.html b/build/doc/html/functions_vars_k.html new file mode 100644 index 000000000..3422e8379 --- /dev/null +++ b/build/doc/html/functions_vars_k.html @@ -0,0 +1,66 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - k -

    +
    + + + + diff --git a/build/doc/html/functions_vars_l.html b/build/doc/html/functions_vars_l.html new file mode 100644 index 000000000..70892d2fe --- /dev/null +++ b/build/doc/html/functions_vars_l.html @@ -0,0 +1,141 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - l -

    +
    + + + + diff --git a/build/doc/html/functions_vars_m.html b/build/doc/html/functions_vars_m.html new file mode 100644 index 000000000..27848d169 --- /dev/null +++ b/build/doc/html/functions_vars_m.html @@ -0,0 +1,506 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - m -

    +
    + + + + diff --git a/build/doc/html/functions_vars_n.html b/build/doc/html/functions_vars_n.html new file mode 100644 index 000000000..28afbce36 --- /dev/null +++ b/build/doc/html/functions_vars_n.html @@ -0,0 +1,228 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - n -

    +
    + + + + diff --git a/build/doc/html/functions_vars_o.html b/build/doc/html/functions_vars_o.html new file mode 100644 index 000000000..7e19ba25e --- /dev/null +++ b/build/doc/html/functions_vars_o.html @@ -0,0 +1,154 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - o -

    +
    + + + + diff --git a/build/doc/html/functions_vars_p.html b/build/doc/html/functions_vars_p.html new file mode 100644 index 000000000..ebab245fd --- /dev/null +++ b/build/doc/html/functions_vars_p.html @@ -0,0 +1,268 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - p -

    +
    + + + + diff --git a/build/doc/html/functions_vars_q.html b/build/doc/html/functions_vars_q.html new file mode 100644 index 000000000..edaf61c90 --- /dev/null +++ b/build/doc/html/functions_vars_q.html @@ -0,0 +1,65 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - q -

    +
    + + + + diff --git a/build/doc/html/functions_vars_r.html b/build/doc/html/functions_vars_r.html new file mode 100644 index 000000000..680558ba4 --- /dev/null +++ b/build/doc/html/functions_vars_r.html @@ -0,0 +1,141 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - r -

    +
    + + + + diff --git a/build/doc/html/functions_vars_s.html b/build/doc/html/functions_vars_s.html new file mode 100644 index 000000000..8d640a634 --- /dev/null +++ b/build/doc/html/functions_vars_s.html @@ -0,0 +1,162 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - s -

    +
    + + + + diff --git a/build/doc/html/functions_vars_t.html b/build/doc/html/functions_vars_t.html new file mode 100644 index 000000000..2a1a252eb --- /dev/null +++ b/build/doc/html/functions_vars_t.html @@ -0,0 +1,282 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - t -

    +
    + + + + diff --git a/build/doc/html/functions_vars_u.html b/build/doc/html/functions_vars_u.html new file mode 100644 index 000000000..489a92b38 --- /dev/null +++ b/build/doc/html/functions_vars_u.html @@ -0,0 +1,69 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - u -

    +
    + + + + diff --git a/build/doc/html/functions_vars_v.html b/build/doc/html/functions_vars_v.html new file mode 100644 index 000000000..f834e6921 --- /dev/null +++ b/build/doc/html/functions_vars_v.html @@ -0,0 +1,64 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - v -

    +
    + + + + diff --git a/build/doc/html/functions_vars_w.html b/build/doc/html/functions_vars_w.html new file mode 100644 index 000000000..e12a5a5d0 --- /dev/null +++ b/build/doc/html/functions_vars_w.html @@ -0,0 +1,124 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - w -

    +
    + + + + diff --git a/build/doc/html/functions_vars_x.html b/build/doc/html/functions_vars_x.html new file mode 100644 index 000000000..762c99335 --- /dev/null +++ b/build/doc/html/functions_vars_x.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    + + + + + diff --git a/build/doc/html/functions_vars_y.html b/build/doc/html/functions_vars_y.html new file mode 100644 index 000000000..a09633589 --- /dev/null +++ b/build/doc/html/functions_vars_y.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: Data Fields - Variables + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    + + + + + diff --git a/build/doc/html/functions_w.html b/build/doc/html/functions_w.html new file mode 100644 index 000000000..4e879f11e --- /dev/null +++ b/build/doc/html/functions_w.html @@ -0,0 +1,124 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - w -

    +
    + + + + diff --git a/build/doc/html/functions_x.html b/build/doc/html/functions_x.html new file mode 100644 index 000000000..636c7c5e6 --- /dev/null +++ b/build/doc/html/functions_x.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - x -

    +
    + + + + diff --git a/build/doc/html/functions_y.html b/build/doc/html/functions_y.html new file mode 100644 index 000000000..8d4091ff4 --- /dev/null +++ b/build/doc/html/functions_y.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: Data Fields + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    + +

    - y -

    +
    + + + + diff --git a/build/doc/html/globals.html b/build/doc/html/globals.html new file mode 100644 index 000000000..411e1d2bf --- /dev/null +++ b/build/doc/html/globals.html @@ -0,0 +1,118 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - a -

    +
    + + + + diff --git a/build/doc/html/globals_b.html b/build/doc/html/globals_b.html new file mode 100644 index 000000000..6fe978b44 --- /dev/null +++ b/build/doc/html/globals_b.html @@ -0,0 +1,96 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - b -

    +
    + + + + diff --git a/build/doc/html/globals_c.html b/build/doc/html/globals_c.html new file mode 100644 index 000000000..2ef943d1d --- /dev/null +++ b/build/doc/html/globals_c.html @@ -0,0 +1,135 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - c -

    +
    + + + + diff --git a/build/doc/html/globals_d.html b/build/doc/html/globals_d.html new file mode 100644 index 000000000..1d01f463d --- /dev/null +++ b/build/doc/html/globals_d.html @@ -0,0 +1,185 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - d -

    +
    + + + + diff --git a/build/doc/html/globals_defs.html b/build/doc/html/globals_defs.html new file mode 100644 index 000000000..e741de527 --- /dev/null +++ b/build/doc/html/globals_defs.html @@ -0,0 +1,60 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - b -

    +
    + + + + diff --git a/build/doc/html/globals_defs_d.html b/build/doc/html/globals_defs_d.html new file mode 100644 index 000000000..71dcdfc11 --- /dev/null +++ b/build/doc/html/globals_defs_d.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - d -

    +
    + + + + diff --git a/build/doc/html/globals_defs_e.html b/build/doc/html/globals_defs_e.html new file mode 100644 index 000000000..ccffb9eae --- /dev/null +++ b/build/doc/html/globals_defs_e.html @@ -0,0 +1,69 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - e -

    +
    + + + + diff --git a/build/doc/html/globals_defs_f.html b/build/doc/html/globals_defs_f.html new file mode 100644 index 000000000..6dc19530f --- /dev/null +++ b/build/doc/html/globals_defs_f.html @@ -0,0 +1,106 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    + + + + + diff --git a/build/doc/html/globals_defs_i.html b/build/doc/html/globals_defs_i.html new file mode 100644 index 000000000..8e2a13b37 --- /dev/null +++ b/build/doc/html/globals_defs_i.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - i -

    +
    + + + + diff --git a/build/doc/html/globals_defs_j.html b/build/doc/html/globals_defs_j.html new file mode 100644 index 000000000..770f01817 --- /dev/null +++ b/build/doc/html/globals_defs_j.html @@ -0,0 +1,297 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - j -

    +
    + + + + diff --git a/build/doc/html/globals_defs_l.html b/build/doc/html/globals_defs_l.html new file mode 100644 index 000000000..d0ed705d2 --- /dev/null +++ b/build/doc/html/globals_defs_l.html @@ -0,0 +1,80 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    + + + + + diff --git a/build/doc/html/globals_defs_m.html b/build/doc/html/globals_defs_m.html new file mode 100644 index 000000000..d32e66e80 --- /dev/null +++ b/build/doc/html/globals_defs_m.html @@ -0,0 +1,81 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - m -

    +
    + + + + diff --git a/build/doc/html/globals_defs_n.html b/build/doc/html/globals_defs_n.html new file mode 100644 index 000000000..b50bef178 --- /dev/null +++ b/build/doc/html/globals_defs_n.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - n -

    +
    + + + + diff --git a/build/doc/html/globals_defs_o.html b/build/doc/html/globals_defs_o.html new file mode 100644 index 000000000..7bbc47401 --- /dev/null +++ b/build/doc/html/globals_defs_o.html @@ -0,0 +1,475 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - o -

    +
    + + + + diff --git a/build/doc/html/globals_defs_p.html b/build/doc/html/globals_defs_p.html new file mode 100644 index 000000000..46cc330d7 --- /dev/null +++ b/build/doc/html/globals_defs_p.html @@ -0,0 +1,60 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - p -

    +
    + + + + diff --git a/build/doc/html/globals_defs_s.html b/build/doc/html/globals_defs_s.html new file mode 100644 index 000000000..a27235ba8 --- /dev/null +++ b/build/doc/html/globals_defs_s.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - s -

    +
    + + + + diff --git a/build/doc/html/globals_defs_t.html b/build/doc/html/globals_defs_t.html new file mode 100644 index 000000000..4885a51d6 --- /dev/null +++ b/build/doc/html/globals_defs_t.html @@ -0,0 +1,285 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - t -

      +
    • T1_CHI_0 +: t1.h +
    • +
    • T1_CHI_0_I +: t1.h +
    • +
    • T1_CHI_1 +: t1.h +
    • +
    • T1_CHI_1_I +: t1.h +
    • +
    • T1_CHI_2 +: t1.h +
    • +
    • T1_CHI_2_I +: t1.h +
    • +
    • T1_CHI_3 +: t1.h +
    • +
    • T1_CHI_4 +: t1.h +
    • +
    • T1_CHI_5 +: t1.h +
    • +
    • T1_CHI_5_I +: t1.h +
    • +
    • T1_CHI_S +: t1.h +
    • +
    • T1_CHI_THIS +: t1.h +
    • +
    • T1_CHI_THIS_I +: t1.h +
    • +
    • T1_CTXNO_AGG +: t1.h +
    • +
    • T1_CTXNO_MAG +: t1.h +
    • +
    • T1_CTXNO_SC +: t1.h +
    • +
    • T1_CTXNO_UNI +: t1.h +
    • +
    • T1_CTXNO_ZC +: t1.h +
    • +
    • T1_FLAGS +: t1.c +
    • +
    • T1_LUT_SGN_E +: t1.h +
    • +
    • T1_LUT_SGN_N +: t1.h +
    • +
    • T1_LUT_SGN_S +: t1.h +
    • +
    • T1_LUT_SGN_W +: t1.h +
    • +
    • T1_LUT_SIG_E +: t1.h +
    • +
    • T1_LUT_SIG_N +: t1.h +
    • +
    • T1_LUT_SIG_S +: t1.h +
    • +
    • T1_LUT_SIG_W +: t1.h +
    • +
    • T1_MU_0 +: t1.h +
    • +
    • T1_MU_1 +: t1.h +
    • +
    • T1_MU_2 +: t1.h +
    • +
    • T1_MU_3 +: t1.h +
    • +
    • T1_MU_THIS +: t1.h +
    • +
    • T1_NMSEDEC_BITS +: t1.h +
    • +
    • T1_NMSEDEC_FRACBITS +: t1.h +
    • +
    • T1_NUMCTXS +: t1.h +
    • +
    • T1_NUMCTXS_AGG +: t1.h +
    • +
    • T1_NUMCTXS_MAG +: t1.h +
    • +
    • T1_NUMCTXS_SC +: t1.h +
    • +
    • T1_NUMCTXS_UNI +: t1.h +
    • +
    • T1_NUMCTXS_ZC +: t1.h +
    • +
    • T1_PI_0 +: t1.h +
    • +
    • T1_PI_1 +: t1.h +
    • +
    • T1_PI_2 +: t1.h +
    • +
    • T1_PI_3 +: t1.h +
    • +
    • T1_PI_THIS +: t1.h +
    • +
    • T1_SIGMA_0 +: t1.h +
    • +
    • T1_SIGMA_1 +: t1.h +
    • +
    • T1_SIGMA_10 +: t1.h +
    • +
    • T1_SIGMA_11 +: t1.h +
    • +
    • T1_SIGMA_12 +: t1.h +
    • +
    • T1_SIGMA_13 +: t1.h +
    • +
    • T1_SIGMA_14 +: t1.h +
    • +
    • T1_SIGMA_15 +: t1.h +
    • +
    • T1_SIGMA_16 +: t1.h +
    • +
    • T1_SIGMA_17 +: t1.h +
    • +
    • T1_SIGMA_2 +: t1.h +
    • +
    • T1_SIGMA_3 +: t1.h +
    • +
    • T1_SIGMA_4 +: t1.h +
    • +
    • T1_SIGMA_5 +: t1.h +
    • +
    • T1_SIGMA_6 +: t1.h +
    • +
    • T1_SIGMA_7 +: t1.h +
    • +
    • T1_SIGMA_8 +: t1.h +
    • +
    • T1_SIGMA_9 +: t1.h +
    • +
    • T1_SIGMA_E +: t1.h +
    • +
    • T1_SIGMA_N +: t1.h +
    • +
    • T1_SIGMA_NE +: t1.h +
    • +
    • T1_SIGMA_NEIGHBOURS +: t1.h +
    • +
    • T1_SIGMA_NW +: t1.h +
    • +
    • T1_SIGMA_S +: t1.h +
    • +
    • T1_SIGMA_SE +: t1.h +
    • +
    • T1_SIGMA_SW +: t1.h +
    • +
    • T1_SIGMA_THIS +: t1.h +
    • +
    • T1_SIGMA_W +: t1.h +
    • +
    • T1_TYPE_MQ +: t1.h +
    • +
    • T1_TYPE_RAW +: t1.h +
    • +
    • TILE_HEADER_MSG +: msgqueue_manager.h +
    • +
    • TILE_MSG +: msgqueue_manager.h +
    • +
    +
    + + + + diff --git a/build/doc/html/globals_defs_u.html b/build/doc/html/globals_defs_u.html new file mode 100644 index 000000000..d50d2d2fc --- /dev/null +++ b/build/doc/html/globals_defs_u.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - u -

    +
    + + + + diff --git a/build/doc/html/globals_defs_v.html b/build/doc/html/globals_defs_v.html new file mode 100644 index 000000000..6e07e897b --- /dev/null +++ b/build/doc/html/globals_defs_v.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - v -

      +
    • VREG_INT_COUNT +: dwt.c +
    • +
    +
    + + + + diff --git a/build/doc/html/globals_e.html b/build/doc/html/globals_e.html new file mode 100644 index 000000000..05cb54ac5 --- /dev/null +++ b/build/doc/html/globals_e.html @@ -0,0 +1,119 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - e -

    +
    + + + + diff --git a/build/doc/html/globals_enum.html b/build/doc/html/globals_enum.html new file mode 100644 index 000000000..1921c6378 --- /dev/null +++ b/build/doc/html/globals_enum.html @@ -0,0 +1,97 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    + + + + diff --git a/build/doc/html/globals_eval.html b/build/doc/html/globals_eval.html new file mode 100644 index 000000000..f577621a1 --- /dev/null +++ b/build/doc/html/globals_eval.html @@ -0,0 +1,330 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - c -

    + + +

    - f -

      +
    • FINAL_PASS +: j2k.h +
    • +
    + + +

    - h -

    + + +

    - j -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - x -

    +
    + + + + diff --git a/build/doc/html/globals_f.html b/build/doc/html/globals_f.html new file mode 100644 index 000000000..77a5ced6d --- /dev/null +++ b/build/doc/html/globals_f.html @@ -0,0 +1,205 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - f -

    +
    + + + + diff --git a/build/doc/html/globals_func.html b/build/doc/html/globals_func.html new file mode 100644 index 000000000..50cf030d5 --- /dev/null +++ b/build/doc/html/globals_func.html @@ -0,0 +1,112 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - a -

    +
    + + + + diff --git a/build/doc/html/globals_func_b.html b/build/doc/html/globals_func_b.html new file mode 100644 index 000000000..ec121fbb1 --- /dev/null +++ b/build/doc/html/globals_func_b.html @@ -0,0 +1,66 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - b -

    +
    + + + + diff --git a/build/doc/html/globals_func_c.html b/build/doc/html/globals_func_c.html new file mode 100644 index 000000000..1ab64f41f --- /dev/null +++ b/build/doc/html/globals_func_c.html @@ -0,0 +1,87 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - c -

    +
    + + + + diff --git a/build/doc/html/globals_func_d.html b/build/doc/html/globals_func_d.html new file mode 100644 index 000000000..b18a71ec4 --- /dev/null +++ b/build/doc/html/globals_func_d.html @@ -0,0 +1,176 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - d -

    +
    + + + + diff --git a/build/doc/html/globals_func_e.html b/build/doc/html/globals_func_e.html new file mode 100644 index 000000000..e3d402274 --- /dev/null +++ b/build/doc/html/globals_func_e.html @@ -0,0 +1,101 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - e -

    +
    + + + + diff --git a/build/doc/html/globals_func_f.html b/build/doc/html/globals_func_f.html new file mode 100644 index 000000000..84f512520 --- /dev/null +++ b/build/doc/html/globals_func_f.html @@ -0,0 +1,141 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - f -

    +
    + + + + diff --git a/build/doc/html/globals_func_g.html b/build/doc/html/globals_func_g.html new file mode 100644 index 000000000..03066b962 --- /dev/null +++ b/build/doc/html/globals_func_g.html @@ -0,0 +1,274 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - g -

    +
    + + + + diff --git a/build/doc/html/globals_func_h.html b/build/doc/html/globals_func_h.html new file mode 100644 index 000000000..652d0e22d --- /dev/null +++ b/build/doc/html/globals_func_h.html @@ -0,0 +1,90 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - h -

    +
    + + + + diff --git a/build/doc/html/globals_func_i.html b/build/doc/html/globals_func_i.html new file mode 100644 index 000000000..d43f5fa9c --- /dev/null +++ b/build/doc/html/globals_func_i.html @@ -0,0 +1,117 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - i -

    +
    + + + + diff --git a/build/doc/html/globals_func_j.html b/build/doc/html/globals_func_j.html new file mode 100644 index 000000000..fb2e973e1 --- /dev/null +++ b/build/doc/html/globals_func_j.html @@ -0,0 +1,98 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - j -

    +
    + + + + diff --git a/build/doc/html/globals_func_m.html b/build/doc/html/globals_func_m.html new file mode 100644 index 000000000..ead1301e2 --- /dev/null +++ b/build/doc/html/globals_func_m.html @@ -0,0 +1,90 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - m -

    +
    + + + + diff --git a/build/doc/html/globals_func_o.html b/build/doc/html/globals_func_o.html new file mode 100644 index 000000000..4d8a4d23a --- /dev/null +++ b/build/doc/html/globals_func_o.html @@ -0,0 +1,2180 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - o -

    +
    + + + + diff --git a/build/doc/html/globals_func_p.html b/build/doc/html/globals_func_p.html new file mode 100644 index 000000000..e8a0dccdd --- /dev/null +++ b/build/doc/html/globals_func_p.html @@ -0,0 +1,197 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - p -

    +
    + + + + diff --git a/build/doc/html/globals_func_r.html b/build/doc/html/globals_func_r.html new file mode 100644 index 000000000..fde0d34e8 --- /dev/null +++ b/build/doc/html/globals_func_r.html @@ -0,0 +1,137 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - r -

    +
    + + + + diff --git a/build/doc/html/globals_func_s.html b/build/doc/html/globals_func_s.html new file mode 100644 index 000000000..e25c04a94 --- /dev/null +++ b/build/doc/html/globals_func_s.html @@ -0,0 +1,184 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - s -

    +
    + + + + diff --git a/build/doc/html/globals_func_t.html b/build/doc/html/globals_func_t.html new file mode 100644 index 000000000..b25664e10 --- /dev/null +++ b/build/doc/html/globals_func_t.html @@ -0,0 +1,67 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - t -

    +
    + + + + diff --git a/build/doc/html/globals_func_u.html b/build/doc/html/globals_func_u.html new file mode 100644 index 000000000..447d21a81 --- /dev/null +++ b/build/doc/html/globals_func_u.html @@ -0,0 +1,69 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - u -

    +
    + + + + diff --git a/build/doc/html/globals_func_w.html b/build/doc/html/globals_func_w.html new file mode 100644 index 000000000..a7dbca2e3 --- /dev/null +++ b/build/doc/html/globals_func_w.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - w -

    +
    + + + + diff --git a/build/doc/html/globals_g.html b/build/doc/html/globals_g.html new file mode 100644 index 000000000..43d017166 --- /dev/null +++ b/build/doc/html/globals_g.html @@ -0,0 +1,274 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - g -

    +
    + + + + diff --git a/build/doc/html/globals_h.html b/build/doc/html/globals_h.html new file mode 100644 index 000000000..d71b9a68c --- /dev/null +++ b/build/doc/html/globals_h.html @@ -0,0 +1,93 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - h -

    +
    + + + + diff --git a/build/doc/html/globals_i.html b/build/doc/html/globals_i.html new file mode 100644 index 000000000..465d6c568 --- /dev/null +++ b/build/doc/html/globals_i.html @@ -0,0 +1,138 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - i -

    +
    + + + + diff --git a/build/doc/html/globals_j.html b/build/doc/html/globals_j.html new file mode 100644 index 000000000..0118dc830 --- /dev/null +++ b/build/doc/html/globals_j.html @@ -0,0 +1,458 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - j -

    +
    + + + + diff --git a/build/doc/html/globals_l.html b/build/doc/html/globals_l.html new file mode 100644 index 000000000..2fa69b8f9 --- /dev/null +++ b/build/doc/html/globals_l.html @@ -0,0 +1,101 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - l -

    +
    + + + + diff --git a/build/doc/html/globals_m.html b/build/doc/html/globals_m.html new file mode 100644 index 000000000..f480443fb --- /dev/null +++ b/build/doc/html/globals_m.html @@ -0,0 +1,180 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - m -

    +
    + + + + diff --git a/build/doc/html/globals_n.html b/build/doc/html/globals_n.html new file mode 100644 index 000000000..3f7cce15d --- /dev/null +++ b/build/doc/html/globals_n.html @@ -0,0 +1,60 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - n -

    +
    + + + + diff --git a/build/doc/html/globals_o.html b/build/doc/html/globals_o.html new file mode 100644 index 000000000..615d5822d --- /dev/null +++ b/build/doc/html/globals_o.html @@ -0,0 +1,3069 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - o -

    +
    + + + + diff --git a/build/doc/html/globals_p.html b/build/doc/html/globals_p.html new file mode 100644 index 000000000..cf7386774 --- /dev/null +++ b/build/doc/html/globals_p.html @@ -0,0 +1,215 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - p -

    +
    + + + + diff --git a/build/doc/html/globals_q.html b/build/doc/html/globals_q.html new file mode 100644 index 000000000..ab330cfb4 --- /dev/null +++ b/build/doc/html/globals_q.html @@ -0,0 +1,60 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - q -

    +
    + + + + diff --git a/build/doc/html/globals_r.html b/build/doc/html/globals_r.html new file mode 100644 index 000000000..589a54d7b --- /dev/null +++ b/build/doc/html/globals_r.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - r -

    +
    + + + + diff --git a/build/doc/html/globals_s.html b/build/doc/html/globals_s.html new file mode 100644 index 000000000..8f51d2f9f --- /dev/null +++ b/build/doc/html/globals_s.html @@ -0,0 +1,211 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - s -

    +
    + + + + diff --git a/build/doc/html/globals_t.html b/build/doc/html/globals_t.html new file mode 100644 index 000000000..56a055b9f --- /dev/null +++ b/build/doc/html/globals_t.html @@ -0,0 +1,319 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - t -

    +
    + + + + diff --git a/build/doc/html/globals_type.html b/build/doc/html/globals_type.html new file mode 100644 index 000000000..278474cbe --- /dev/null +++ b/build/doc/html/globals_type.html @@ -0,0 +1,625 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - i -

    + + +

    - j -

      +
    • J2K_MCT_ARRAY_TYPE +: j2k.h +
    • +
    • J2K_MCT_ELEMENT_TYPE +: j2k.h +
    • +
    • j2k_prog_order_t +: j2k.c +
    • +
    • J2K_STATUS +: j2k.h +
    • +
    • J2K_T2_MODE +: j2k.h +
    • +
    • jpip_dec_param_t +: openjpip.h +
    • +
    + + +

    - m -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    +
    + + + + diff --git a/build/doc/html/globals_u.html b/build/doc/html/globals_u.html new file mode 100644 index 000000000..1242bd99b --- /dev/null +++ b/build/doc/html/globals_u.html @@ -0,0 +1,78 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - u -

    +
    + + + + diff --git a/build/doc/html/globals_v.html b/build/doc/html/globals_v.html new file mode 100644 index 000000000..aff25ac49 --- /dev/null +++ b/build/doc/html/globals_v.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - v -

      +
    • VREG_INT_COUNT +: dwt.c +
    • +
    +
    + + + + diff --git a/build/doc/html/globals_vars.html b/build/doc/html/globals_vars.html new file mode 100644 index 000000000..5bf0079b5 --- /dev/null +++ b/build/doc/html/globals_vars.html @@ -0,0 +1,133 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
      +
    • j2k_mct_read_functions_to_float +: j2k.c +
    • +
    • j2k_mct_read_functions_to_int32 +: j2k.c +
    • +
    • j2k_mct_write_functions_from_float +: j2k.c +
    • +
    • j2k_memory_marker_handler_tab +: j2k.c +
    • +
    • j2k_prog_order_list +: j2k.c +
    • +
    • jp2_header +: jp2.c +
    • +
    • jp2_img_header +: jp2.c +
    • +
    • lut_ctxno_sc +: t1_luts.h +
    • +
    • lut_ctxno_zc +: t1_luts.h +
    • +
    • lut_nmsedec_ref +: t1_luts.h +
    • +
    • lut_nmsedec_ref0 +: t1_luts.h +
    • +
    • lut_nmsedec_sig +: t1_luts.h +
    • +
    • lut_nmsedec_sig0 +: t1_luts.h +
    • +
    • lut_spb +: t1_luts.h +
    • +
    • MCT_ELEMENT_SIZE +: j2k.c +
    • +
    • mqc_states +: mqc.c +
    • +
    • opj_c13318 +: dwt.c +
    • +
    • opj_dwt_alpha +: dwt.c +
    • +
    • opj_dwt_beta +: dwt.c +
    • +
    • opj_dwt_delta +: dwt.c +
    • +
    • opj_dwt_gamma +: dwt.c +
    • +
    • opj_dwt_norms +: dwt.c +
    • +
    • opj_dwt_norms_real +: dwt.c +
    • +
    • opj_K +: dwt.c +
    • +
    • opj_mct_norms +: mct.c +
    • +
    • opj_mct_norms_real +: mct.c +
    • +
    • tabMaxSubLevelFromMainLevel +: j2k.c +
    • +
    +
    + + + + diff --git a/build/doc/html/globals_w.html b/build/doc/html/globals_w.html new file mode 100644 index 000000000..62275316b --- /dev/null +++ b/build/doc/html/globals_w.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - w -

    +
    + + + + diff --git a/build/doc/html/globals_x.html b/build/doc/html/globals_x.html new file mode 100644 index 000000000..0b8c1c016 --- /dev/null +++ b/build/doc/html/globals_x.html @@ -0,0 +1,57 @@ + + + + + + + +OpenJPEG: Globals + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    + +

    - x -

    +
    + + + + diff --git a/build/doc/html/group___b_i_o.html b/build/doc/html/group___b_i_o.html new file mode 100644 index 000000000..44d2020ba --- /dev/null +++ b/build/doc/html/group___b_i_o.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: BIO - Individual bit input-output stream + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    BIO - Individual bit input-output stream
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___c_i_o.html b/build/doc/html/group___c_i_o.html new file mode 100644 index 000000000..d84988e18 --- /dev/null +++ b/build/doc/html/group___c_i_o.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: CIO - byte input-output stream + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    CIO - byte input-output stream
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___d_w_t.html b/build/doc/html/group___d_w_t.html new file mode 100644 index 000000000..233abef00 --- /dev/null +++ b/build/doc/html/group___d_w_t.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: DWT - Implementation of a discrete wavelet transform + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    DWT - Implementation of a discrete wavelet transform
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___e_v_e_n_t.html b/build/doc/html/group___e_v_e_n_t.html new file mode 100644 index 000000000..28741022a --- /dev/null +++ b/build/doc/html/group___e_v_e_n_t.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: EVENT - Implementation of a event callback system + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    EVENT - Implementation of a event callback system
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___i_m_a_g_e.html b/build/doc/html/group___i_m_a_g_e.html new file mode 100644 index 000000000..6cf846501 --- /dev/null +++ b/build/doc/html/group___i_m_a_g_e.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: IMAGE - Implementation of operations on images + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    IMAGE - Implementation of operations on images
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___i_n_v_e_r_t.html b/build/doc/html/group___i_n_v_e_r_t.html new file mode 100644 index 000000000..75ca0957c --- /dev/null +++ b/build/doc/html/group___i_n_v_e_r_t.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: INVERT - Implementation of a matrix inversion + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    INVERT - Implementation of a matrix inversion
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___j2_k.html b/build/doc/html/group___j2_k.html new file mode 100644 index 000000000..f83ce4128 --- /dev/null +++ b/build/doc/html/group___j2_k.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: J2K - JPEG-2000 codestream reader/writer + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    J2K - JPEG-2000 codestream reader/writer
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___j_p2.html b/build/doc/html/group___j_p2.html new file mode 100644 index 000000000..b9a72c1f3 --- /dev/null +++ b/build/doc/html/group___j_p2.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: JP2 - JPEG-2000 file format reader/writer + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    JP2 - JPEG-2000 file format reader/writer
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___m_c_t.html b/build/doc/html/group___m_c_t.html new file mode 100644 index 000000000..e5bc50400 --- /dev/null +++ b/build/doc/html/group___m_c_t.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: MCT - Implementation of a multi-component transform + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    MCT - Implementation of a multi-component transform
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___m_i_s_c.html b/build/doc/html/group___m_i_s_c.html new file mode 100644 index 000000000..6905bd79b --- /dev/null +++ b/build/doc/html/group___m_i_s_c.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: MISC - Miscellaneous internal functions + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    MISC - Miscellaneous internal functions
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___m_q_c.html b/build/doc/html/group___m_q_c.html new file mode 100644 index 000000000..b4b85a3b9 --- /dev/null +++ b/build/doc/html/group___m_q_c.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: MQC - Implementation of an MQ-Coder + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    MQC - Implementation of an MQ-Coder
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html b/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html new file mode 100644 index 000000000..270ef6da0 --- /dev/null +++ b/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: OPJ_INTMATH - Implementation of operations on integers + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    OPJ_INTMATH - Implementation of operations on integers
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___p_i.html b/build/doc/html/group___p_i.html new file mode 100644 index 000000000..87d97577d --- /dev/null +++ b/build/doc/html/group___p_i.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: PI - Implementation of a packet iterator + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    PI - Implementation of a packet iterator
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html b/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html new file mode 100644 index 000000000..6067169c8 --- /dev/null +++ b/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: SPARSE ARRAYS - Sparse arrays + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    SPARSE ARRAYS - Sparse arrays
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___t1.html b/build/doc/html/group___t1.html new file mode 100644 index 000000000..e48ed0946 --- /dev/null +++ b/build/doc/html/group___t1.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: T1 - Implementation of the tier-1 coding + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    T1 - Implementation of the tier-1 coding
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___t2.html b/build/doc/html/group___t2.html new file mode 100644 index 000000000..8af759db7 --- /dev/null +++ b/build/doc/html/group___t2.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: T2 - Implementation of a tier-2 coding + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    T2 - Implementation of a tier-2 coding
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___t_c_d.html b/build/doc/html/group___t_c_d.html new file mode 100644 index 000000000..e68b7fcaf --- /dev/null +++ b/build/doc/html/group___t_c_d.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: TCD - Implementation of a tile coder/decoder + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    TCD - Implementation of a tile coder/decoder
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___t_g_t.html b/build/doc/html/group___t_g_t.html new file mode 100644 index 000000000..821c15ace --- /dev/null +++ b/build/doc/html/group___t_g_t.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: TGT - Implementation of a tag-tree coder + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    TGT - Implementation of a tag-tree coder
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___t_h_r_e_a_d.html b/build/doc/html/group___t_h_r_e_a_d.html new file mode 100644 index 000000000..e40ebc15e --- /dev/null +++ b/build/doc/html/group___t_h_r_e_a_d.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: THREAD - Mutex, conditions, threads and thread pools + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    THREAD - Mutex, conditions, threads and thread pools
    +
    +
    +
    + + + + diff --git a/build/doc/html/group___v_a_l.html b/build/doc/html/group___v_a_l.html new file mode 100644 index 000000000..e82211109 --- /dev/null +++ b/build/doc/html/group___v_a_l.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: VAL - validation procedure + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    VAL - validation procedure
    +
    +
    +
    + + + + diff --git a/build/doc/html/ihdrbox__manager_8c.html b/build/doc/html/ihdrbox__manager_8c.html new file mode 100644 index 000000000..e25083d51 --- /dev/null +++ b/build/doc/html/ihdrbox__manager_8c.html @@ -0,0 +1,114 @@ + + + + + + + +OpenJPEG: ihdrbox_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    ihdrbox_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <assert.h>
    +#include "ihdrbox_manager.h"
    +
    + + + + +

    +Functions

    ihdrbox_param_tgene_ihdrbox (metadatalist_param_t *metadatalist, Byte_t *jpipstream)
     generate ihdr box More...
     
    +

    Function Documentation

    + +

    ◆ gene_ihdrbox()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    ihdrbox_param_t* gene_ihdrbox (metadatalist_param_tmetadatalist,
    Byte_tjpipstream 
    )
    +
    + +

    generate ihdr box

    +
    Parameters
    + + + +
    [in]metadatalistmetadata list pointer
    [in]jpipstreamJPT/JPP stream
    +
    +
    +
    Returns
    pointer to generated ihdr box
    + +

    References big2(), big4(), metadata_param::boxlist, ihdrbox_param::bpc, metadatalist_param::first, gene_boxbyTypeinStream(), get_DBoxlen(), get_DBoxoff(), ihdrbox_param::height, ihdrbox_param::nc, metadata_param::next, search_box(), and ihdrbox_param::width.

    + +

    Referenced by decode_jpip().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/ihdrbox__manager_8h.html b/build/doc/html/ihdrbox__manager_8h.html new file mode 100644 index 000000000..5fa99091f --- /dev/null +++ b/build/doc/html/ihdrbox__manager_8h.html @@ -0,0 +1,146 @@ + + + + + + + +OpenJPEG: ihdrbox_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    ihdrbox_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "box_manager.h"
    +#include "metadata_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  ihdrbox_param
     I.5.3.1 Image Header box. More...
     
    + + + + +

    +Typedefs

    typedef struct ihdrbox_param ihdrbox_param_t
     I.5.3.1 Image Header box. More...
     
    + + + + +

    +Functions

    ihdrbox_param_tgene_ihdrbox (metadatalist_param_t *metadatalist, Byte_t *jpipstream)
     generate ihdr box More...
     
    +

    Typedef Documentation

    + +

    ◆ ihdrbox_param_t

    + +
    +
    + + + + +
    typedef struct ihdrbox_param ihdrbox_param_t
    +
    + +

    I.5.3.1 Image Header box.

    + +
    +
    +

    Function Documentation

    + +

    ◆ gene_ihdrbox()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    ihdrbox_param_t* gene_ihdrbox (metadatalist_param_tmetadatalist,
    Byte_tjpipstream 
    )
    +
    + +

    generate ihdr box

    +
    Parameters
    + + + +
    [in]metadatalistmetadata list pointer
    [in]jpipstreamJPT/JPP stream
    +
    +
    +
    Returns
    pointer to generated ihdr box
    + +

    References big2(), big4(), metadata_param::boxlist, ihdrbox_param::bpc, metadatalist_param::first, gene_boxbyTypeinStream(), get_DBoxlen(), get_DBoxoff(), ihdrbox_param::height, ihdrbox_param::nc, metadata_param::next, search_box(), and ihdrbox_param::width.

    + +

    Referenced by decode_jpip().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/ihdrbox__manager_8h_source.html b/build/doc/html/ihdrbox__manager_8h_source.html new file mode 100644 index 000000000..0f705dd3f --- /dev/null +++ b/build/doc/html/ihdrbox__manager_8h_source.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: ihdrbox_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    ihdrbox_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef IHDRBOX_MANAGER_H_
    +
    32 # define IHDRBOX_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "box_manager.h"
    +
    36 #include "metadata_manager.h"
    +
    37 
    +
    39 typedef struct ihdrbox_param {
    + + + + + +
    45 
    + +
    54  Byte_t *jpipstream);
    +
    55 
    +
    56 
    +
    57 #endif /* !IHDRBOX_MANAGER_H_ */
    +
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    + +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    box parameters
    Definition: box_manager.h:37
    +
    metadata_param_t * first
    first metadata-bin pointer of the list
    Definition: metadata_manager.h:55
    +
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    +
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    +
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    +
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    +
    struct metadata_param * next
    pointer to the next metadata-bin
    Definition: metadata_manager.h:49
    +
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    +
    metadata-bin parameters
    Definition: metadata_manager.h:43
    +
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    + +
    struct ihdrbox_param ihdrbox_param_t
    I.5.3.1 Image Header box.
    + +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    +
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    + +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    + + + + diff --git a/build/doc/html/image_8c.html b/build/doc/html/image_8c.html new file mode 100644 index 000000000..4fd14daff --- /dev/null +++ b/build/doc/html/image_8c.html @@ -0,0 +1,315 @@ + + + + + + + +OpenJPEG: image.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    image.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    opj_image_topj_image_create0 (void)
     Create an empty image. More...
     
    opj_image_t *OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Create an image. More...
     
    void OPJ_CALLCONV opj_image_destroy (opj_image_t *image)
     Deallocate any resources associated with an image. More...
     
    void opj_image_comp_header_update (opj_image_t *p_image_header, const struct opj_cp *p_cp)
     Updates the components characteristics of the image from the coding parameters. More...
     
    void opj_copy_image_header (const opj_image_t *p_image_src, opj_image_t *p_image_dest)
     Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed. More...
     
    opj_image_t *OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Creates an image without allocating memory for the image (used in the new version of the library). More...
     
    +

    Function Documentation

    + +

    ◆ opj_copy_image_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_copy_image_header (const opj_image_tp_image_src,
    opj_image_tp_image_dest 
    )
    +
    + +

    Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.

    +
    Parameters
    + + + +
    p_image_srcthe src image
    p_image_destthe dest image
    +
    +
    + +

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image::icc_profile_buf, opj_image::icc_profile_len, opj_image::numcomps, opj_free(), opj_image_data_free(), opj_malloc(), opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    + +
    +
    + +

    ◆ opj_image_comp_header_update()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_image_comp_header_update (opj_image_tp_image_header,
    const struct opj_cpp_cp 
    )
    +
    + +

    Updates the components characteristics of the image from the coding parameters.

    +
    Parameters
    + + + +
    p_image_headerthe image header to update.
    p_cpthe coding parameters from which to update the image.
    +
    +
    + +

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::factor, opj_image_comp::h, opj_image::numcomps, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image_comp::x0, opj_image::x0, opj_image::x1, opj_image_comp::y0, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_j2k_read_siz().

    + +
    +
    + +

    ◆ opj_image_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_image_t* OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    +
    +
    + +

    ◆ opj_image_create0()

    + +
    +
    + + + + + + + + +
    opj_image_t* opj_image_create0 (void )
    +
    + +

    Create an empty image.

    +
    Returns
    returns an empty image if successful, returns NULL otherwise
    + +

    References opj_calloc().

    + +

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    + +
    +
    + +

    ◆ opj_image_destroy()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_image_destroy (opj_image_timage)
    +
    +
    + +

    ◆ opj_image_tile_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_image_t* OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    +
    + +

    Creates an image without allocating memory for the image (used in the new version of the library).

    +
    Parameters
    + + + + +
    numcmptsthe number of components
    cmptparmsthe components parameters
    clrspcthe image color space
    +
    +
    +
    Returns
    a new image structure if successful, NULL otherwise.
    + +

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image_comp::dx, opj_image_comptparm::dx, opj_image_comp::dy, opj_image_comptparm::dy, opj_image_comp::h, opj_image_comptparm::h, opj_image::numcomps, opj_calloc(), opj_image_destroy(), opj_image_comp::prec, opj_image_comptparm::prec, opj_image_comp::sgnd, opj_image_comptparm::sgnd, opj_image_comp::w, opj_image_comptparm::w, opj_image_comp::x0, opj_image_comptparm::x0, opj_image_comp::y0, and opj_image_comptparm::y0.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/image_8h.html b/build/doc/html/image_8h.html new file mode 100644 index 000000000..148d1cc24 --- /dev/null +++ b/build/doc/html/image_8h.html @@ -0,0 +1,189 @@ + + + + + + + +OpenJPEG: image.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    image.h File Reference
    +
    +
    + +

    Implementation of operations on images (IMAGE) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions

    opj_image_topj_image_create0 (void)
     Create an empty image. More...
     
    void opj_image_comp_header_update (opj_image_t *p_image, const struct opj_cp *p_cp)
     Updates the components characteristics of the image from the coding parameters. More...
     
    void opj_copy_image_header (const opj_image_t *p_image_src, opj_image_t *p_image_dest)
     Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed. More...
     
    +

    Detailed Description

    +

    Implementation of operations on images (IMAGE)

    +

    The functions in IMAGE.C have for goal to realize operations on images.

    +

    Function Documentation

    + +

    ◆ opj_copy_image_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_copy_image_header (const opj_image_tp_image_src,
    opj_image_tp_image_dest 
    )
    +
    + +

    Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.

    +
    Parameters
    + + + +
    p_image_srcthe src image
    p_image_destthe dest image
    +
    +
    + +

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image::icc_profile_buf, opj_image::icc_profile_len, opj_image::numcomps, opj_free(), opj_image_data_free(), opj_malloc(), opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    + +
    +
    + +

    ◆ opj_image_comp_header_update()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_image_comp_header_update (opj_image_tp_image_header,
    const struct opj_cpp_cp 
    )
    +
    + +

    Updates the components characteristics of the image from the coding parameters.

    +
    Parameters
    + + + +
    p_image_headerthe image header to update.
    p_cpthe coding parameters from which to update the image.
    +
    +
    + +

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::factor, opj_image_comp::h, opj_image::numcomps, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image_comp::x0, opj_image::x0, opj_image::x1, opj_image_comp::y0, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_j2k_read_siz().

    + +
    +
    + +

    ◆ opj_image_create0()

    + +
    +
    + + + + + + + + +
    opj_image_t* opj_image_create0 (void )
    +
    + +

    Create an empty image.

    +
    Returns
    returns an empty image if successful, returns NULL otherwise
    + +

    References opj_calloc().

    + +

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/image_8h_source.html b/build/doc/html/image_8h_source.html new file mode 100644 index 000000000..3fc763dd8 --- /dev/null +++ b/build/doc/html/image_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +OpenJPEG: image.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    image.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 #ifndef OPJ_IMAGE_H
    +
    32 #define OPJ_IMAGE_H
    +
    33 
    +
    40 struct opj_image;
    +
    41 struct opj_cp;
    +
    42 
    +
    45 
    + +
    52 
    +
    53 
    +
    54 
    + +
    62  const struct opj_cp* p_cp);
    +
    63 
    +
    64 void opj_copy_image_header(const opj_image_t* p_image_src,
    +
    65  opj_image_t* p_image_dest);
    +
    66 
    +
    69 #endif /* OPJ_IMAGE_H */
    +
    70 
    +
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    +
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    +
    void opj_image_comp_header_update(opj_image_t *p_image, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    +
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    Component parameters structure used by the opj_image_create function.
    Definition: openjpeg.h:728
    +
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:744
    +
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    +
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:740
    +
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    Coding parameters.
    Definition: j2k.h:347
    +
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    +
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    +
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    +
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    +
    opj_image_t *OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Create an image.
    Definition: image.c:40
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    +
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    +
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:738
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    +
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:746
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:734
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    +
    enum COLOR_SPACE OPJ_COLOR_SPACE
    Supported image color spaces.
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    +
    opj_image_t *OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Creates an image without allocating memory for the image (used in the new version of the library).
    Definition: image.c:228
    +
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    +
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:730
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:736
    +
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    +
    void opj_image_comp_header_update(opj_image_t *p_image_header, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:742
    +
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    +
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:732
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    + + + + diff --git a/build/doc/html/imgreg__manager_8c.html b/build/doc/html/imgreg__manager_8c.html new file mode 100644 index 000000000..506cc7332 --- /dev/null +++ b/build/doc/html/imgreg__manager_8c.html @@ -0,0 +1,402 @@ + + + + + + + +OpenJPEG: imgreg_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    imgreg_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <math.h>
    +#include <stdlib.h>
    +#include <assert.h>
    +#include "imgreg_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + +

    +Functions

    imgreg_param_t map_viewin2imgreg (const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
     map view-window requests to codestream image resolutions and regions More...
     
    void find_level (int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
     find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented More...
     
    int comp_decomplev (int fw, int fh, int Xsiz, int Ysiz)
     compute decomposition level (only to get the level use find_level for all parameters More...
     
    void print_imgreg (imgreg_param_t imgreg)
     print image region parameters More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ comp_decomplev()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int comp_decomplev (int fw,
    int fh,
    int Xsiz,
    int Ysiz 
    )
    +
    + +

    compute decomposition level (only to get the level use find_level for all parameters

    +
    Parameters
    + + + + + +
    [in]fwhorizontal frame size
    [in]fhvertical frame size
    [in]Xsizimage width
    [in]Ysizimage height
    +
    +
    +
    Returns
    decomposition level
    + +

    References find_level().

    + +

    Referenced by recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    + +
    +
    + +

    ◆ find_level()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void find_level (int maxlev,
    int * lev,
    int * fx,
    int * fy,
    int * xmin,
    int * ymin,
    int * xmax,
    int * ymax 
    )
    +
    + +

    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented

    +
    Parameters
    + + + + + + + + + +
    [in]maxlevmaximum decomposition level
    [in,out]levdecomposition level pointer
    [in,out]fxhorizontal frame size pointer
    [in,out]fyvertical frame size pointer
    [in,out]xminhorizontal image offset pointer
    [in,out]yminvertical image offset pointer
    [in,out]xmaxhorizontal image size pointer
    [in,out]ymaxvertical image size pointer
    +
    +
    + +

    References FCGI_stderr, and find_level().

    + +

    Referenced by comp_decomplev(), find_level(), and map_viewin2imgreg().

    + +
    +
    + +

    ◆ map_viewin2imgreg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    imgreg_param_t map_viewin2imgreg (const int fx,
    const int fy,
    const int rx,
    const int ry,
    const int rw,
    const int rh,
    const int XOsiz,
    const int YOsiz,
    const int Xsiz,
    const int Ysiz,
    const int numOfreslev 
    )
    +
    + +

    map view-window requests to codestream image resolutions and regions

    +
    Parameters
    + + + + + + + +
    [in]fx,fyframe size
    [in]rx,ryoffset of region
    [in]rw,rhsize of region
    [in]XOsiz,YOsizoffset from the origin of the reference grid to the left side of the image area
    [in]Xsiz,Ysizsize of the reference grid
    [in]numOfreslevnumber of resolution levels
    +
    +
    +
    Returns
    structure of image region parameters
    + +

    References FCGI_stdout, find_level(), imgreg_param::fx, imgreg_param::fy, imgreg_param::level, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, imgreg_param::sy, imgreg_param::xosiz, and imgreg_param::yosiz.

    + +

    Referenced by enqueue_imagedata().

    + +
    +
    + +

    ◆ print_imgreg()

    + +
    +
    + + + + + + + + +
    void print_imgreg (imgreg_param_t imgreg)
    +
    + +

    print image region parameters

    +
    Parameters
    + + +
    [in]imgregimage region structure of parameters
    +
    +
    + +

    References imgreg_param::fx, imgreg_param::fy, imgreg_param::level, logstream, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, and imgreg_param::sy.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/imgreg__manager_8h.html b/build/doc/html/imgreg__manager_8h.html new file mode 100644 index 000000000..2693fb639 --- /dev/null +++ b/build/doc/html/imgreg__manager_8h.html @@ -0,0 +1,377 @@ + + + + + + + +OpenJPEG: imgreg_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    imgreg_manager.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  imgreg_param
     image region parameters More...
     
    + + + + +

    +Typedefs

    typedef struct imgreg_param imgreg_param_t
     image region parameters More...
     
    + + + + + + + + + + + + + +

    +Functions

    imgreg_param_t map_viewin2imgreg (const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
     map view-window requests to codestream image resolutions and regions More...
     
    void find_level (int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
     find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented More...
     
    int comp_decomplev (int fw, int fh, int Xsiz, int Ysiz)
     compute decomposition level (only to get the level use find_level for all parameters More...
     
    void print_imgreg (imgreg_param_t imgreg)
     print image region parameters More...
     
    +

    Typedef Documentation

    + +

    ◆ imgreg_param_t

    + +
    +
    + + + + +
    typedef struct imgreg_param imgreg_param_t
    +
    + +

    image region parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ comp_decomplev()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int comp_decomplev (int fw,
    int fh,
    int Xsiz,
    int Ysiz 
    )
    +
    + +

    compute decomposition level (only to get the level use find_level for all parameters

    +
    Parameters
    + + + + + +
    [in]fwhorizontal frame size
    [in]fhvertical frame size
    [in]Xsizimage width
    [in]Ysizimage height
    +
    +
    +
    Returns
    decomposition level
    + +

    References find_level().

    + +

    Referenced by recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    + +
    +
    + +

    ◆ find_level()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void find_level (int maxlev,
    int * lev,
    int * fx,
    int * fy,
    int * xmin,
    int * ymin,
    int * xmax,
    int * ymax 
    )
    +
    + +

    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented

    +
    Parameters
    + + + + + + + + + +
    [in]maxlevmaximum decomposition level
    [in,out]levdecomposition level pointer
    [in,out]fxhorizontal frame size pointer
    [in,out]fyvertical frame size pointer
    [in,out]xminhorizontal image offset pointer
    [in,out]yminvertical image offset pointer
    [in,out]xmaxhorizontal image size pointer
    [in,out]ymaxvertical image size pointer
    +
    +
    + +

    References FCGI_stderr, and find_level().

    + +

    Referenced by comp_decomplev(), find_level(), and map_viewin2imgreg().

    + +
    +
    + +

    ◆ map_viewin2imgreg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    imgreg_param_t map_viewin2imgreg (const int fx,
    const int fy,
    const int rx,
    const int ry,
    const int rw,
    const int rh,
    const int XOsiz,
    const int YOsiz,
    const int Xsiz,
    const int Ysiz,
    const int numOfreslev 
    )
    +
    + +

    map view-window requests to codestream image resolutions and regions

    +
    Parameters
    + + + + + + + +
    [in]fx,fyframe size
    [in]rx,ryoffset of region
    [in]rw,rhsize of region
    [in]XOsiz,YOsizoffset from the origin of the reference grid to the left side of the image area
    [in]Xsiz,Ysizsize of the reference grid
    [in]numOfreslevnumber of resolution levels
    +
    +
    +
    Returns
    structure of image region parameters
    + +

    References FCGI_stdout, find_level(), imgreg_param::fx, imgreg_param::fy, imgreg_param::level, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, imgreg_param::sy, imgreg_param::xosiz, and imgreg_param::yosiz.

    + +

    Referenced by enqueue_imagedata().

    + +
    +
    + +

    ◆ print_imgreg()

    + +
    +
    + + + + + + + + +
    void print_imgreg (imgreg_param_t imgreg)
    +
    + +

    print image region parameters

    +
    Parameters
    + + +
    [in]imgregimage region structure of parameters
    +
    +
    + +

    References imgreg_param::fx, imgreg_param::fy, imgreg_param::level, logstream, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, and imgreg_param::sy.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/imgreg__manager_8h_source.html b/build/doc/html/imgreg__manager_8h_source.html new file mode 100644 index 000000000..aee5263d8 --- /dev/null +++ b/build/doc/html/imgreg__manager_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +OpenJPEG: imgreg_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    imgreg_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef IMGREG_MANAGER_H_
    +
    32 # define IMGREG_MANAGER_H_
    +
    33 
    +
    35 typedef struct imgreg_param {
    +
    36  int xosiz, yosiz;
    +
    38  int fx, fy;
    +
    39  int ox, oy;
    +
    40  int sx, sy;
    +
    41  int level;
    + +
    43 
    +
    44 
    +
    56 imgreg_param_t map_viewin2imgreg(const int fx, const int fy,
    +
    57  const int rx, const int ry,
    +
    58  const int rw, const int rh,
    +
    59  const int XOsiz, const int YOsiz,
    +
    60  const int Xsiz, const int Ysiz,
    +
    61  const int numOfreslev);
    +
    62 
    +
    63 
    +
    79 void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin,
    +
    80  int *xmax, int *ymax);
    +
    81 
    +
    92 int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz);
    +
    93 
    +
    99 void print_imgreg(imgreg_param_t imgreg);
    +
    100 
    +
    101 
    +
    102 #endif /* !IMGREG_MANAGER_H_ */
    +
    +
    #define FCGI_stderr
    Definition: imgreg_manager.c:42
    +
    int ox
    frame size (fsiz)
    Definition: imgreg_manager.h:39
    +
    #define logstream
    Definition: imgreg_manager.c:43
    +
    void print_imgreg(imgreg_param_t imgreg)
    print image region parameters
    Definition: imgreg_manager.c:150
    +
    struct imgreg_param imgreg_param_t
    image region parameters
    + +
    void print_imgreg(imgreg_param_t imgreg)
    print image region parameters
    Definition: imgreg_manager.c:150
    +
    int oy
    Definition: imgreg_manager.h:39
    +
    image region parameters
    Definition: imgreg_manager.h:35
    +
    int sx
    offset (roff)
    Definition: imgreg_manager.h:40
    +
    void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream ima...
    Definition: imgreg_manager.c:109
    +
    int sy
    Definition: imgreg_manager.h:40
    +
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    +
    int fx
    offset from the origin of the reference grid at the decomposition level
    Definition: imgreg_manager.h:38
    +
    void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream ima...
    Definition: imgreg_manager.c:109
    +
    int level
    region size (rsiz)
    Definition: imgreg_manager.h:41
    +
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    +
    #define FCGI_stdout
    Definition: imgreg_manager.c:41
    +
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    +
    int xosiz
    Definition: imgreg_manager.h:36
    +
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    +
    int yosiz
    Definition: imgreg_manager.h:36
    +
    int fy
    Definition: imgreg_manager.h:38
    + + + + diff --git a/build/doc/html/imgsock__manager_8c.html b/build/doc/html/imgsock__manager_8c.html new file mode 100644 index 000000000..65c2afaa7 --- /dev/null +++ b/build/doc/html/imgsock__manager_8c.html @@ -0,0 +1,535 @@ + + + + + + + +OpenJPEG: imgsock_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    imgsock_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include "imgsock_manager.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    msgtype_t identify_clientmsg (SOCKET connected_socket)
     indeitify client message type More...
     
    Byte_treceive_JPIPstream (SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
     receive a JPT- JPP- stream from client More...
     
    void send_XMLstream (SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
     send XML data stream to the client More...
     
    void send_IDstream (SOCKET connected_socket, const char *id, OPJ_SIZE_T idlen, const char *label)
     
    void send_CIDstream (SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
     send CID data stream to the client More...
     
    void send_TIDstream (SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
     send TID data stream to the client More...
     
    void send_PNMstream (SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
     send PGM/PPM image stream to the client More...
     
    void send_SIZstream (SOCKET connected_socket, unsigned int width, unsigned int height)
     send SIZ data stream to the client More...
     
    void response_signal (SOCKET connected_socket, OPJ_BOOL succeed)
     send response signal to the client More...
     
    +

    Function Documentation

    + +

    ◆ identify_clientmsg()

    + +
    +
    + + + + + + + + +
    msgtype_t identify_clientmsg (SOCKET connected_socket)
    +
    + +

    indeitify client message type

    +
    Parameters
    + + +
    [in]connected_socketfile descriptor of the connected socket
    +
    +
    +
    Returns
    message type
    + +

    References BUF_LEN, MSGERROR, NUM_OF_MSGTYPES, and receive_line().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ receive_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* receive_JPIPstream (SOCKET connected_socket,
    char ** target,
    char ** tid,
    char ** cid,
    OPJ_SIZE_Tstreamlen 
    )
    +
    + +

    receive a JPT- JPP- stream from client

    +
    Parameters
    + + + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [out]targetaddress of received target file name string pointer ( malloced, if not received, NULL)
    [out]tidaddress of received target identifier string pointer ( malloced, if not received, null string)
    [out]cidaddress of received channel identifier string pointer ( malloced, if not received, null string)
    [out]streamlenlength of the received codestream
    +
    +
    +
    Returns
    JPT- JPP- codestream
    + +

    References BUF_LEN, receive_line(), and receive_stream().

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ response_signal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void response_signal (SOCKET connected_socket,
    OPJ_BOOL succeed 
    )
    +
    + +

    send response signal to the client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]succeedwhether if the requested process succeeded
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_dstCIDreqMSG(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ send_CIDstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_CIDstream (SOCKET connected_socket,
    const char * cid,
    OPJ_SIZE_T cidlen 
    )
    +
    + +

    send CID data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]cidcid string
    [in]cidlenlegnth of the cid string
    +
    +
    + +

    References send_IDstream().

    + +

    Referenced by handle_CIDreqMSG().

    + +
    +
    + +

    ◆ send_IDstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_IDstream (SOCKET connected_socket,
    const char * id,
    OPJ_SIZE_T idlen,
    const char * label 
    )
    +
    + +

    References send_stream().

    + +

    Referenced by send_CIDstream(), and send_TIDstream().

    + +
    +
    + +

    ◆ send_PNMstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_PNMstream (SOCKET connected_socket,
    Byte_tpnmstream,
    unsigned int width,
    unsigned int height,
    unsigned int numofcomp,
    Byte_t maxval 
    )
    +
    + +

    send PGM/PPM image stream to the client

    +
    Parameters
    + + + + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]pnmstreamPGM/PPM image codestream
    [in]widthwidth of the PGM/PPM image (different from the original image)
    [in]heightheight of the PGM/PPM image
    [in]numofcompnumber of components of the image
    [in]maxvalmaximum value of the image (only 255 supported)
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_PNMreqMSG().

    + +
    +
    + +

    ◆ send_SIZstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_SIZstream (SOCKET connected_socket,
    unsigned int width,
    unsigned int height 
    )
    +
    + +

    send SIZ data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]widthoriginal width of the image
    [in]heightoriginal height of the image
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_SIZreqMSG().

    + +
    +
    + +

    ◆ send_TIDstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_TIDstream (SOCKET connected_socket,
    const char * tid,
    OPJ_SIZE_T tidlen 
    )
    +
    + +

    send TID data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]tidtid string
    [in]tidlenlegnth of the tid string
    +
    +
    + +

    References send_IDstream().

    + +

    Referenced by handle_TIDreqMSG().

    + +
    +
    + +

    ◆ send_XMLstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_XMLstream (SOCKET connected_socket,
    Byte_txmlstream,
    OPJ_SIZE_T length 
    )
    +
    + +

    send XML data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]xmlstreamxml data stream
    [in]lengthlegnth of the xml data stream
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_XMLreqMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/imgsock__manager_8h.html b/build/doc/html/imgsock__manager_8h.html new file mode 100644 index 000000000..542ecde4f --- /dev/null +++ b/build/doc/html/imgsock__manager_8h.html @@ -0,0 +1,625 @@ + + + + + + + +OpenJPEG: imgsock_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    imgsock_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "sock_manager.h"
    +#include "opj_includes.h"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Macros

    #define NUM_OF_MSGTYPES   9
     
    + + + +

    +Typedefs

    typedef enum eMSGTYPE msgtype_t
     
    + + + +

    +Enumerations

    enum  eMSGTYPE {
    +  JPIPSTREAM, +PNMREQ, +XMLREQ, +TIDREQ, +
    +  CIDREQ, +CIDDST, +SIZREQ, +JP2SAVE, +
    +  QUIT, +MSGERROR +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    msgtype_t identify_clientmsg (SOCKET connected_socket)
     indeitify client message type More...
     
    Byte_treceive_JPIPstream (SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
     receive a JPT- JPP- stream from client More...
     
    void send_PNMstream (SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
     send PGM/PPM image stream to the client More...
     
    void send_XMLstream (SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
     send XML data stream to the client More...
     
    void send_TIDstream (SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
     send TID data stream to the client More...
     
    void send_CIDstream (SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
     send CID data stream to the client More...
     
    void send_SIZstream (SOCKET connected_socket, unsigned int width, unsigned int height)
     send SIZ data stream to the client More...
     
    void response_signal (SOCKET connected_socket, OPJ_BOOL succeed)
     send response signal to the client More...
     
    +

    Detailed Description

    +

    PROTOCOL specification to communicate with opj_dec_server

    +

    +JPIP-stream

    +

    Cache JPT- JPP- stream in server

    +

    client -> server: JPIP-stream\n version 1.1\n (optional for cid registration: targetnamestring\n tidstring\n cidstring\n) bytelengthvalue\n data
    + server -> client: 1 or 0 (of 1Byte response signal)

    +

    +PNM request

    +

    Get decoded PGM/PPM image

    +

    client -> server: PNM request\n [cid/tid]string\n fw\n fh\n
    + server -> client: P6 or P5 (2Byte) width (2Byte Big endian) height (2Byte Big endian) maxval (1Byte) data

    +

    +XML request

    +

    Get XML data

    +

    client -> server: XML request\n
    + server -> client: XML (3Byte) length (2Byte Big endian) data

    +

    +TID request

    +

    Get target ID of target image

    +

    client -> server: TID request\n targetname\n
    + server -> client: TID (3Byte) length (1Byte) tiddata

    +

    +CID request

    +

    Get Channel ID of identical target image

    +

    client -> server: CID request\n targetname\n
    + server -> client: CID (3Byte) length (1Byte) ciddata

    +

    +CID destroy

    +

    Close Channel ID

    +

    client -> server: CID destroy\n ciddata
    + server -> client: 1 or 0 (of 1Byte response signal)

    +

    +SIZ request

    +

    Get original size of image

    +

    client -> server: SIZ request\n tidstring\n cidstring\n
    + server -> client: SIZ (3Byte) width (3Byte Big endian) height (3Byte Big endian)

    +

    +JP2 save

    +

    Save in JP2 file format

    +

    client -> server: JP2 save\n ciddata
    + server -> client: 1 or 0 (of 1Byte response signal)

    +

    +QUIT

    +

    Quit the opj_dec_server program

    +

    client -> server: quit or QUIT

    +

    Macro Definition Documentation

    + +

    ◆ NUM_OF_MSGTYPES

    + +
    +
    + + + + +
    #define NUM_OF_MSGTYPES   9
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ msgtype_t

    + +
    +
    + + + + +
    typedef enum eMSGTYPE msgtype_t
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ eMSGTYPE

    + +
    +
    + + + + +
    enum eMSGTYPE
    +
    + + + + + + + + + + + +
    Enumerator
    JPIPSTREAM 
    PNMREQ 
    XMLREQ 
    TIDREQ 
    CIDREQ 
    CIDDST 
    SIZREQ 
    JP2SAVE 
    QUIT 
    MSGERROR 
    + +
    +
    +

    Function Documentation

    + +

    ◆ identify_clientmsg()

    + +
    +
    + + + + + + + + +
    msgtype_t identify_clientmsg (SOCKET connected_socket)
    +
    + +

    indeitify client message type

    +
    Parameters
    + + +
    [in]connected_socketfile descriptor of the connected socket
    +
    +
    +
    Returns
    message type
    + +

    References BUF_LEN, MSGERROR, NUM_OF_MSGTYPES, and receive_line().

    + +

    Referenced by handle_clientreq().

    + +
    +
    + +

    ◆ receive_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* receive_JPIPstream (SOCKET connected_socket,
    char ** target,
    char ** tid,
    char ** cid,
    OPJ_SIZE_Tstreamlen 
    )
    +
    + +

    receive a JPT- JPP- stream from client

    +
    Parameters
    + + + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [out]targetaddress of received target file name string pointer ( malloced, if not received, NULL)
    [out]tidaddress of received target identifier string pointer ( malloced, if not received, null string)
    [out]cidaddress of received channel identifier string pointer ( malloced, if not received, null string)
    [out]streamlenlength of the received codestream
    +
    +
    +
    Returns
    JPT- JPP- codestream
    + +

    References BUF_LEN, receive_line(), and receive_stream().

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ response_signal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void response_signal (SOCKET connected_socket,
    OPJ_BOOL succeed 
    )
    +
    + +

    send response signal to the client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]succeedwhether if the requested process succeeded
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_dstCIDreqMSG(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ send_CIDstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_CIDstream (SOCKET connected_socket,
    const char * cid,
    OPJ_SIZE_T cidlen 
    )
    +
    + +

    send CID data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]cidcid string
    [in]cidlenlegnth of the cid string
    +
    +
    + +

    References send_IDstream().

    + +

    Referenced by handle_CIDreqMSG().

    + +
    +
    + +

    ◆ send_PNMstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_PNMstream (SOCKET connected_socket,
    Byte_tpnmstream,
    unsigned int width,
    unsigned int height,
    unsigned int numofcomp,
    Byte_t maxval 
    )
    +
    + +

    send PGM/PPM image stream to the client

    +
    Parameters
    + + + + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]pnmstreamPGM/PPM image codestream
    [in]widthwidth of the PGM/PPM image (different from the original image)
    [in]heightheight of the PGM/PPM image
    [in]numofcompnumber of components of the image
    [in]maxvalmaximum value of the image (only 255 supported)
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_PNMreqMSG().

    + +
    +
    + +

    ◆ send_SIZstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_SIZstream (SOCKET connected_socket,
    unsigned int width,
    unsigned int height 
    )
    +
    + +

    send SIZ data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]widthoriginal width of the image
    [in]heightoriginal height of the image
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_SIZreqMSG().

    + +
    +
    + +

    ◆ send_TIDstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_TIDstream (SOCKET connected_socket,
    const char * tid,
    OPJ_SIZE_T tidlen 
    )
    +
    + +

    send TID data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]tidtid string
    [in]tidlenlegnth of the tid string
    +
    +
    + +

    References send_IDstream().

    + +

    Referenced by handle_TIDreqMSG().

    + +
    +
    + +

    ◆ send_XMLstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_XMLstream (SOCKET connected_socket,
    Byte_txmlstream,
    OPJ_SIZE_T length 
    )
    +
    + +

    send XML data stream to the client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]xmlstreamxml data stream
    [in]lengthlegnth of the xml data stream
    +
    +
    + +

    References send_stream().

    + +

    Referenced by handle_XMLreqMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/imgsock__manager_8h_source.html b/build/doc/html/imgsock__manager_8h_source.html new file mode 100644 index 000000000..6e31e1478 --- /dev/null +++ b/build/doc/html/imgsock__manager_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +OpenJPEG: imgsock_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    imgsock_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef IMGSOCK_MANAGER_H_
    +
    32 # define IMGSOCK_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "sock_manager.h"
    +
    36 #include "opj_includes.h"
    +
    37 
    +
    38 #define NUM_OF_MSGTYPES 9
    + +
    40 
    +
    47 msgtype_t identify_clientmsg(SOCKET connected_socket);
    +
    48 
    +
    59 Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid,
    +
    60  char **cid, OPJ_SIZE_T *streamlen);
    +
    61 
    +
    72 void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream,
    +
    73  unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval);
    +
    74 
    +
    82 void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream,
    +
    83  OPJ_SIZE_T length);
    +
    84 
    +
    92 void send_TIDstream(SOCKET connected_socket, const char *tid,
    +
    93  OPJ_SIZE_T tidlen);
    +
    94 
    +
    102 void send_CIDstream(SOCKET connected_socket, const char *cid,
    +
    103  OPJ_SIZE_T cidlen);
    +
    104 
    +
    112 void send_SIZstream(SOCKET connected_socket, unsigned int width,
    +
    113  unsigned int height);
    +
    114 
    +
    121 void response_signal(SOCKET connected_socket, OPJ_BOOL succeed);
    +
    122 
    +
    123 #endif /* !IMGSOCK_MANAGER_H_ */
    +
    124 
    +
    +
    @ CIDDST
    Definition: imgsock_manager.h:39
    +
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    +
    @ CIDREQ
    Definition: imgsock_manager.h:39
    +
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    +
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    +
    @ SIZREQ
    Definition: imgsock_manager.h:39
    + +
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    +
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    +
    eMSGTYPE
    Definition: imgsock_manager.h:39
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    void send_IDstream(SOCKET connected_socket, const char *id, OPJ_SIZE_T idlen, const char *label)
    Definition: imgsock_manager.c:162
    +
    #define NUM_OF_MSGTYPES
    Definition: imgsock_manager.h:38
    +
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    +
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    +
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    +
    @ QUIT
    Definition: imgsock_manager.h:39
    +
    int SOCKET
    Definition: sock_manager.h:40
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    @ JP2SAVE
    Definition: imgsock_manager.h:39
    +
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    +
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    +
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    +
    #define BUF_LEN
    Definition: sock_manager.h:43
    +
    @ TIDREQ
    Definition: imgsock_manager.h:39
    +
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    +
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    +
    @ XMLREQ
    Definition: imgsock_manager.h:39
    +
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    + +
    @ PNMREQ
    Definition: imgsock_manager.h:39
    +
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    +
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    +
    enum eMSGTYPE msgtype_t
    + +
    @ MSGERROR
    Definition: imgsock_manager.h:39
    +
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    +
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    +
    @ JPIPSTREAM
    Definition: imgsock_manager.h:39
    +
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    + + + + diff --git a/build/doc/html/index.html b/build/doc/html/index.html new file mode 100644 index 000000000..3dbcafc48 --- /dev/null +++ b/build/doc/html/index.html @@ -0,0 +1,77 @@ + + + + + + + +OpenJPEG: OpenJPEG v2.3.1 Documentation + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    OpenJPEG v2.3.1 Documentation
    +
    +
    +

    +Introduction

    +

    This manual documents the low-level OpenJPEG C API.
    +The OpenJPEG library is an open-source JPEG 2000 library developed in order to promote the use of JPEG 2000.
    +This documents is focused on the main part of the library which try to implement Part 1 and Part 2 of the JPEG2000 norm.
    +

    +

    +Home page

    +

    The Home Page of the OpenJPEG project can be found at:

    +

    http://www.openjpeg.org/

    +

    The source code repository is available here:

    +

    http://github.com/uclouvain/openjpeg

    +

    The OpenJPEG mailing list is located here:

    +

    http://groups.google.com/group/openjpeg

    +

    The test files repository is available here:

    +

    http://github.com/uclouvain/openjpeg-data

    +

    +License

    +

    This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.
    +The only restriction is to retain the copyright in the sources or the binaries documentation.
    +Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage.

    +
    Author
    OpenJPEG Team
    +
    +
    + + + + diff --git a/build/doc/html/index__manager_8c.html b/build/doc/html/index__manager_8c.html new file mode 100644 index 000000000..a821da972 --- /dev/null +++ b/build/doc/html/index__manager_8c.html @@ -0,0 +1,1103 @@ + + + + + + + +OpenJPEG: index_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    index_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <math.h>
    +#include <string.h>
    +#include "opj_inttypes.h"
    +#include "index_manager.h"
    +#include "box_manager.h"
    +#include "manfbox_manager.h"
    +#include "mhixbox_manager.h"
    +#include "codestream_manager.h"
    +#include "marker_manager.h"
    +#include "faixbox_manager.h"
    +#include "boxheader_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_BOOL check_JP2boxidx (boxlist_param_t *toplev_boxlist)
     chekc JP2 box indexing More...
     
    OPJ_BOOL set_cidxdata (box_param_t *cidx_box, index_param_t *codeidx)
     set code index parameters (parse cidx box) Annex I More...
     
    index_param_tparse_jp2file (int fd)
     parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP More...
     
    void print_index (index_param_t index)
     print index parameters More...
     
    void print_SIZ (SIZmarker_param_t SIZ)
     print Image and Tile SIZ parameters More...
     
    void print_COD (CODmarker_param_t COD)
     print Coding style default COD parameters More...
     
    void delete_index (index_param_t **index)
     delete index More...
     
    void delete_COD (CODmarker_param_t COD)
     delete dynamic arrays in COD marker More...
     
    OPJ_BOOL set_cptrdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from cptr box I.3.2.2 Codestream Finder box More...
     
    OPJ_BOOL set_mainmhixdata (box_param_t *cidx_box, codestream_param_t codestream, index_param_t *jp2idx)
     set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box More...
     
    OPJ_BOOL set_tpixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box More...
     
    OPJ_BOOL set_thixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box More...
     
    OPJ_BOOL set_ppixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box More...
     
    OPJ_BOOL set_SIZmkrdata (markeridx_param_t *sizmkidx, codestream_param_t codestream, SIZmarker_param_t *SIZ)
     set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ) More...
     
    OPJ_BOOL set_CODmkrdata (markeridx_param_t *codmkidx, codestream_param_t codestream, CODmarker_param_t *COD)
     set code index parameters from COD marker in codestream A.6 Functional marker segments A.6.1 Coding style default (COD) More...
     
    Byte4_t max (Byte4_t n1, Byte4_t n2)
     
    Byte4_t min (Byte4_t n1, Byte4_t n2)
     
    range_param_t get_tile_range (Byte4_t Osiz, Byte4_t siz, Byte4_t TOsiz, Byte4_t Tsiz, Byte4_t tile_XYid, int level)
     
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get horizontal range of the tile in reference grid More...
     
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get vertical range of the tile in reference grid More...
     
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get tile wdith at the decomposition level More...
     
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     
    OPJ_BOOL isJPTfeasible (index_param_t index)
     answers if the target is feasible to JPT-stream More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ check_JP2boxidx()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL check_JP2boxidx (boxlist_param_ttoplev_boxlist)
    +
    + +

    chekc JP2 box indexing

    +
    Parameters
    + + +
    [in]toplev_boxlisttop level box list
    +
    +
    +
    Returns
    if correct (true) or wrong (false)
    + +

    References FCGI_stderr, fetch_DBox1byte(), fetch_DBox8bytebigendian(), gene_childboxbyType(), gene_childboxheader(), boxheader_param::headlen, boxheader_param::length, box_param::length, box_param::offset, OPJ_FALSE, opj_free(), OPJ_TRUE, search_box(), and boxheader_param::type.

    + +

    Referenced by parse_jp2file().

    + +
    +
    + +

    ◆ delete_COD()

    + +
    +
    + + + + + + + + +
    void delete_COD (CODmarker_param_t COD)
    +
    + +

    delete dynamic arrays in COD marker

    +
    Parameters
    + + +
    [in]CODCOD marker information
    +
    +
    + +

    References opj_free(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by delete_index(), and recons_codestream_from_JPPstream().

    + +
    +
    + +

    ◆ delete_index()

    + +
    +
    + + + + + + + + +
    void delete_index (index_param_t ** index)
    +
    + +

    delete index

    +
    Parameters
    + + +
    [in,out]indexaddressof the index pointer
    +
    +
    + +

    References delete_COD(), delete_faixbox(), delete_metadatalist(), delete_mhixbox(), and opj_free().

    + +

    Referenced by delete_target(), and destroy_index().

    + +
    +
    + +

    ◆ get_tile_range()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    range_param_t get_tile_range (Byte4_t Osiz,
    Byte4_t siz,
    Byte4_t TOsiz,
    Byte4_t Tsiz,
    Byte4_t tile_XYid,
    int level 
    )
    +
    +
    + +

    ◆ get_tile_Xrange()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get horizontal range of the tile in reference grid

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    structured range parameter
    + +

    References get_tile_range(), SIZmarker_param::XOsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, and SIZmarker_param::XTsiz.

    + +

    Referenced by enqueue_imagedata(), and get_tile_XSiz().

    + +
    +
    + +

    ◆ get_tile_XSiz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get tile wdith at the decomposition level

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    tile width
    + +

    References get_tile_Xrange(), range_param::maxvalue, and range_param::minvalue.

    + +

    Referenced by comp_numOfprcts(), enqueue_allprecincts(), and enqueue_precincts().

    + +
    +
    + +

    ◆ get_tile_Yrange()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get vertical range of the tile in reference grid

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    structured range parameter
    + +

    References get_tile_range(), SIZmarker_param::XTnum, SIZmarker_param::YOsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    + +

    Referenced by enqueue_imagedata(), and get_tile_YSiz().

    + +
    +
    + +

    ◆ get_tile_YSiz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    +
    + +

    ◆ isJPTfeasible()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL isJPTfeasible (index_param_t index)
    +
    + +

    answers if the target is feasible to JPT-stream

    +
    Parameters
    + + +
    [in]indexindex parameters
    +
    +
    +
    Returns
    true if JPT-stream is feasible
    + +

    References get_nmax(), OPJ_FALSE, OPJ_TRUE, and index_param::tilepart.

    + +

    Referenced by gene_target().

    + +
    +
    + +

    ◆ max()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t max (Byte4_t n1,
    Byte4_t n2 
    )
    +
    +
    + +

    ◆ min()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t min (Byte4_t n1,
    Byte4_t n2 
    )
    +
    +
    + +

    ◆ parse_jp2file()

    + +
    +
    + + + + + + + + +
    index_param_t* parse_jp2file (int fd)
    +
    + +

    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP

    +
    Parameters
    + + +
    [in]fdfile descriptor of the JP2 file
    +
    +
    +
    Returns
    pointer to the generated structure of index parameters
    + +

    References check_JP2boxidx(), const_metadatalist(), delete_boxlist(), FCGI_stderr, get_boxstructure(), get_filesize(), logstream, index_param::metadatalist, opj_free(), opj_malloc(), search_box(), and set_cidxdata().

    + +

    Referenced by gene_target(), and get_index_from_JP2file().

    + +
    +
    + +

    ◆ print_COD()

    + +
    +
    + + + + + + + + +
    void print_COD (CODmarker_param_t COD)
    +
    + +

    print Coding style default COD parameters

    +
    Parameters
    + + +
    [in]CODCOD marker information
    +
    +
    + +

    References logstream, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, CODmarker_param::prog_order, CODmarker_param::Scod, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by print_index().

    + +
    +
    + +

    ◆ print_index()

    + + + +

    ◆ print_SIZ()

    + + + +

    ◆ set_cidxdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_cidxdata (box_param_tcidx_box,
    index_param_tcodeidx 
    )
    +
    + +

    set code index parameters (parse cidx box) Annex I

    +
    Parameters
    + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [out]codeidxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References delete_manfbox(), FCGI_stderr, box_param::fd, gene_boxbyType(), gene_manfbox(), get_DBoxlen(), get_DBoxoff(), index_param::length, index_param::offset, OPJ_FALSE, opj_free(), OPJ_TRUE, search_boxheader(), set_codestream(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    + +

    Referenced by parse_jp2file().

    + +
    +
    + +

    ◆ set_CODmkrdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_CODmkrdata (markeridx_param_tcodmkidx,
    codestream_param_t codestream,
    CODmarker_param_tCOD 
    )
    +
    + +

    set code index parameters from COD marker in codestream A.6 Functional marker segments A.6.1 Coding style default (COD)

    +
    Parameters
    + + + + +
    [in]codmkidxpointer to COD marker index in mhix box
    [in]codestreamcodestream parameters
    [out]CODCOD marker parameters pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References markeridx_param::code, FCGI_stderr, fetch_marker1byte(), fetch_marker2bytebigendian(), CODmarker_param::Lcod, markeridx_param::length, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, markeridx_param::offset, OPJ_FALSE, opj_malloc(), OPJ_TRUE, CODmarker_param::prog_order, CODmarker_param::Scod, set_marker(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by set_mainmhixdata().

    + +
    +
    + +

    ◆ set_cptrdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_cptrdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    +
    + +

    set code index parameters from cptr box I.3.2.2 Codestream Finder box

    +
    Parameters
    + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    +

    < cptr box

    + +

    References FCGI_stderr, box_param::fd, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), gene_boxbyType(), get_DBoxlen(), get_DBoxoff(), index_param::length, index_param::offset, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    + +

    Referenced by set_cidxdata().

    + +
    +
    + +

    ◆ set_mainmhixdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_mainmhixdata (box_param_tcidx_box,
    codestream_param_t codestream,
    index_param_tjp2idx 
    )
    +
    + +

    set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box

    +
    Parameters
    + + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [in]codestreamcodestream parameters
    [out]jp2idxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References index_param::COD, delete_mhixbox(), box_param::fd, fetch_DBox8bytebigendian(), gene_boxbyType(), gene_mhixbox(), get_DBoxlen(), get_DBoxoff(), index_param::mhead_length, OPJ_FALSE, opj_free(), OPJ_TRUE, search_markeridx(), set_CODmkrdata(), set_SIZmkrdata(), and index_param::SIZ.

    + +

    Referenced by set_cidxdata().

    + +
    +
    + +

    ◆ set_ppixdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_ppixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    +
    + +

    set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box

    +
    Parameters
    + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    +

    < manf

    +

    < box headers

    +

    < faix

    + +

    References SIZmarker_param::Csiz, delete_manfbox(), FCGI_stderr, box_param::fd, gene_boxbyOffset(), gene_boxbyType(), gene_faixbox(), gene_manfbox(), get_DBoxlen(), get_DBoxoff(), box_param::length, boxheader_param::next, box_param::offset, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, index_param::precpacket, search_boxheader(), and index_param::SIZ.

    + +

    Referenced by set_cidxdata().

    + +
    +
    + +

    ◆ set_SIZmkrdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_SIZmkrdata (markeridx_param_tsizmkidx,
    codestream_param_t codestream,
    SIZmarker_param_tSIZ 
    )
    +
    + +

    set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ)

    +
    Parameters
    + + + + +
    [in]sizmkidxpointer to SIZ marker index in mhix box
    [in]codestreamcodestream parameters
    [out]SIZSIZ marker parameters pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References markeridx_param::code, SIZmarker_param::Csiz, FCGI_stderr, fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), markeridx_param::length, SIZmarker_param::Lsiz, markeridx_param::offset, OPJ_FALSE, OPJ_TRUE, SIZmarker_param::Rsiz, set_marker(), SIZmarker_param::Ssiz, SIZmarker_param::XOsiz, SIZmarker_param::XRsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, SIZmarker_param::XTsiz, SIZmarker_param::YOsiz, SIZmarker_param::YRsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTnum, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    + +

    Referenced by set_mainmhixdata().

    + +
    +
    + +

    ◆ set_thixdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_thixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    +
    + +

    set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box

    +
    Parameters
    + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References delete_manfbox(), FCGI_stderr, box_param::fd, manfbox_param::first, gene_boxbyType(), gene_manfbox(), gene_mhixbox(), get_DBoxlen(), get_DBoxoff(), box_param::length, boxheader_param::next, box_param::offset, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, index_param::SIZ, index_param::tileheader, SIZmarker_param::XTnum, and SIZmarker_param::YTnum.

    + +

    Referenced by set_cidxdata().

    + +
    +
    + +

    ◆ set_tpixdata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL set_tpixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    +
    + +

    set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box

    +
    Parameters
    + + + +
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    +

    < tpix box

    +

    < faix box

    + +

    References FCGI_stderr, box_param::fd, gene_boxbyType(), gene_faixbox(), get_DBoxlen(), get_DBoxoff(), OPJ_FALSE, opj_free(), OPJ_TRUE, and index_param::tilepart.

    + +

    Referenced by set_cidxdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/index__manager_8h.html b/build/doc/html/index__manager_8h.html new file mode 100644 index 000000000..f871bc0fd --- /dev/null +++ b/build/doc/html/index__manager_8h.html @@ -0,0 +1,600 @@ + + + + + + + +OpenJPEG: index_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    index_manager.h File Reference
    +
    +
    +
    #include "opj_config.h"
    +#include "opj_includes.h"
    +#include "byte_manager.h"
    +#include "faixbox_manager.h"
    +#include "metadata_manager.h"
    +#include "mhixbox_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + +

    +Data Structures

    struct  SIZmarker_param
     progression order More...
     
    struct  CODmarker_param
     A.6.1 Coding style default (COD) More...
     
    struct  index_param
     index parameters More...
     
    struct  range_param
     1-dimensional range parameters More...
     
    + + + + + + + + + + + + + +

    +Typedefs

    typedef struct SIZmarker_param SIZmarker_param_t
     progression order More...
     
    typedef struct CODmarker_param CODmarker_param_t
     A.6.1 Coding style default (COD) More...
     
    typedef struct index_param index_param_t
     index parameters More...
     
    typedef struct range_param range_param_t
     1-dimensional range parameters More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    index_param_tparse_jp2file (int fd)
     parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP More...
     
    void print_index (index_param_t index)
     print index parameters More...
     
    void print_SIZ (SIZmarker_param_t SIZ)
     print Image and Tile SIZ parameters More...
     
    void print_COD (CODmarker_param_t COD)
     print Coding style default COD parameters More...
     
    void delete_index (index_param_t **index)
     delete index More...
     
    void delete_COD (CODmarker_param_t COD)
     delete dynamic arrays in COD marker More...
     
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get horizontal range of the tile in reference grid More...
     
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get vertical range of the tile in reference grid More...
     
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get tile wdith at the decomposition level More...
     
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     
    OPJ_BOOL isJPTfeasible (index_param_t index)
     answers if the target is feasible to JPT-stream More...
     
    +

    Typedef Documentation

    + +

    ◆ CODmarker_param_t

    + +
    +
    + + + + +
    typedef struct CODmarker_param CODmarker_param_t
    +
    + +

    A.6.1 Coding style default (COD)

    + +
    +
    + +

    ◆ index_param_t

    + +
    +
    + + + + +
    typedef struct index_param index_param_t
    +
    + +

    index parameters

    + +
    +
    + +

    ◆ range_param_t

    + +
    +
    + + + + +
    typedef struct range_param range_param_t
    +
    + +

    1-dimensional range parameters

    + +
    +
    + +

    ◆ SIZmarker_param_t

    + +
    +
    + + + + +
    typedef struct SIZmarker_param SIZmarker_param_t
    +
    + +

    progression order

    +

    A.5.1 Image and tile size (SIZ)

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_COD()

    + +
    +
    + + + + + + + + +
    void delete_COD (CODmarker_param_t COD)
    +
    + +

    delete dynamic arrays in COD marker

    +
    Parameters
    + + +
    [in]CODCOD marker information
    +
    +
    + +

    References opj_free(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by delete_index(), and recons_codestream_from_JPPstream().

    + +
    +
    + +

    ◆ delete_index()

    + +
    +
    + + + + + + + + +
    void delete_index (index_param_t ** index)
    +
    + +

    delete index

    +
    Parameters
    + + +
    [in,out]indexaddressof the index pointer
    +
    +
    + +

    References delete_COD(), delete_faixbox(), delete_metadatalist(), delete_mhixbox(), and opj_free().

    + +

    Referenced by delete_target(), and destroy_index().

    + +
    +
    + +

    ◆ get_tile_Xrange()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get horizontal range of the tile in reference grid

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    structured range parameter
    + +

    References get_tile_range(), SIZmarker_param::XOsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, and SIZmarker_param::XTsiz.

    + +

    Referenced by enqueue_imagedata(), and get_tile_XSiz().

    + +
    +
    + +

    ◆ get_tile_XSiz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get tile wdith at the decomposition level

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    tile width
    + +

    References get_tile_Xrange(), range_param::maxvalue, and range_param::minvalue.

    + +

    Referenced by comp_numOfprcts(), enqueue_allprecincts(), and enqueue_precincts().

    + +
    +
    + +

    ◆ get_tile_Yrange()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    + +

    get vertical range of the tile in reference grid

    +
    Parameters
    + + + + +
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    +
    +
    +
    Returns
    structured range parameter
    + +

    References get_tile_range(), SIZmarker_param::XTnum, SIZmarker_param::YOsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    + +

    Referenced by enqueue_imagedata(), and get_tile_YSiz().

    + +
    +
    + +

    ◆ get_tile_YSiz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    +
    +
    + +

    ◆ isJPTfeasible()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL isJPTfeasible (index_param_t index)
    +
    + +

    answers if the target is feasible to JPT-stream

    +
    Parameters
    + + +
    [in]indexindex parameters
    +
    +
    +
    Returns
    true if JPT-stream is feasible
    + +

    References get_nmax(), OPJ_FALSE, OPJ_TRUE, and index_param::tilepart.

    + +

    Referenced by gene_target().

    + +
    +
    + +

    ◆ parse_jp2file()

    + +
    +
    + + + + + + + + +
    index_param_t* parse_jp2file (int fd)
    +
    + +

    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP

    +
    Parameters
    + + +
    [in]fdfile descriptor of the JP2 file
    +
    +
    +
    Returns
    pointer to the generated structure of index parameters
    + +

    References check_JP2boxidx(), const_metadatalist(), delete_boxlist(), FCGI_stderr, get_boxstructure(), get_filesize(), logstream, index_param::metadatalist, opj_free(), opj_malloc(), search_box(), and set_cidxdata().

    + +

    Referenced by gene_target(), and get_index_from_JP2file().

    + +
    +
    + +

    ◆ print_COD()

    + +
    +
    + + + + + + + + +
    void print_COD (CODmarker_param_t COD)
    +
    + +

    print Coding style default COD parameters

    +
    Parameters
    + + +
    [in]CODCOD marker information
    +
    +
    + +

    References logstream, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, CODmarker_param::prog_order, CODmarker_param::Scod, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by print_index().

    + +
    +
    + +

    ◆ print_index()

    + + + +

    ◆ print_SIZ()

    + + +
    + + + + diff --git a/build/doc/html/index__manager_8h_source.html b/build/doc/html/index__manager_8h_source.html new file mode 100644 index 000000000..cf6e08df2 --- /dev/null +++ b/build/doc/html/index__manager_8h_source.html @@ -0,0 +1,341 @@ + + + + + + + +OpenJPEG: index_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    index_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef INDEX_MANAGER_H_
    +
    32 # define INDEX_MANAGER_H_
    +
    33 
    +
    34 #include "opj_config.h"
    +
    35 #include "opj_includes.h"
    +
    36 
    +
    37 #include "byte_manager.h"
    +
    38 #include "faixbox_manager.h"
    +
    39 #include "metadata_manager.h"
    +
    40 #include "mhixbox_manager.h"
    +
    41 
    +
    43 #if 0
    +
    44 typedef enum porder {
    +
    45  PROG_UNKNOWN = -1,
    +
    46  LRCP = 0,
    +
    47  RLCP = 1,
    +
    48  RPCL = 2,
    +
    49  PCRL = 3,
    +
    50  CPRL = 4
    +
    51 } porder_t;
    +
    52 #endif
    +
    53 
    +
    55 typedef struct SIZmarker_param {
    + + + + + + + + + + + + + +
    69  Byte_t Ssiz[3];
    + + + +
    73 
    +
    75 typedef struct CODmarker_param {
    + + + + + + + + +
    84 
    +
    86 typedef struct index_param {
    + + + + + + + + + + + + +
    99 
    +
    100 
    +
    108 index_param_t * parse_jp2file(int fd);
    +
    109 
    +
    115 void print_index(index_param_t index);
    +
    116 
    +
    122 void print_SIZ(SIZmarker_param_t SIZ);
    +
    123 
    +
    129 void print_COD(CODmarker_param_t COD);
    +
    130 
    +
    136 void delete_index(index_param_t **index);
    +
    137 
    +
    143 void delete_COD(CODmarker_param_t COD);
    +
    144 
    +
    145 
    +
    147 typedef struct range_param {
    + + +
    150 } range_param_t;
    +
    151 
    + +
    161  int level);
    +
    162 
    + +
    172  int level);
    +
    173 
    +
    174 
    +
    183 Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level);
    +
    184 Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level);
    +
    185 
    +
    186 
    + +
    194 
    +
    195 #endif /* !INDEX_MANAGER_H_ */
    +
    +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    void print_COD(CODmarker_param_t COD)
    print Coding style default COD parameters
    Definition: index_manager.c:175
    +
    range_param_t get_tile_range(Byte4_t Osiz, Byte4_t siz, Byte4_t TOsiz, Byte4_t Tsiz, Byte4_t tile_XYid, int level)
    Definition: index_manager.c:741
    +
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    +
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    +
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    +
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    +
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    +
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    +
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    +
    box header parameters
    Definition: boxheader_manager.h:39
    +
    OPJ_BOOL set_tpixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box
    Definition: index_manager.c:491
    +
    Byte2_t Lsiz
    length of marker segment excluding the marker
    Definition: index_manager.h:56
    +
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    +
    Byte4_t minvalue
    minimal value
    Definition: index_manager.h:148
    +
    Byte2_t Lcod
    length of marker segment excluding the marker
    Definition: index_manager.h:76
    +
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    +
    Byte4_t XTsiz
    width of one reference tile with respect to the reference grid
    Definition: index_manager.h:62
    +
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    +
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    +
    OPJ_BOOL set_thixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box
    Definition: index_manager.c:517
    +
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    +
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    +
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    + + +
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    OPJ_BOOL set_mainmhixdata(box_param_t *cidx_box, codestream_param_t codestream, index_param_t *jp2idx)
    set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box
    Definition: index_manager.c:462
    + +
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    +
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    +
    OPJ_OFF_T offset
    codestream offset
    Definition: index_manager.h:88
    +
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    +
    box parameters
    Definition: box_manager.h:37
    +
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    +
    index parameters
    Definition: index_manager.h:86
    +
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    +
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    +
    OPJ_BOOL set_cptrdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from cptr box I.3.2.2 Codestream Finder box
    Definition: index_manager.c:400
    +
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    +
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    +
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    +
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    +
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    +
    Byte_t YRsiz[3]
    vertical separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:71
    +
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    +
    Byte2_t length
    codestream ( including the length
    Definition: mhixbox_manager.h:44
    +
    manifest box parameters
    Definition: manfbox_manager.h:41
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    +
    struct range_param range_param_t
    1-dimensional range parameters
    +
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    +
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    +
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    +
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    +
    Byte_t XRsiz[3]
    horizontal separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:70
    +
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    + +
    codestream parameters
    Definition: codestream_manager.h:37
    +
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    +
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    +
    struct SIZmarker_param SIZmarker_param_t
    progression order
    +
    void print_SIZ(SIZmarker_param_t SIZ)
    print Image and Tile SIZ parameters
    Definition: index_manager.c:151
    +
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    +
    Byte4_t YTsiz
    height of one reference tile with respect to the reference grid
    Definition: index_manager.h:63
    +
    OPJ_BOOL set_ppixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box
    Definition: index_manager.c:573
    + +
    #define logstream
    Definition: index_manager.c:52
    +
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    +
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    +
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    +
    #define FCGI_stderr
    Definition: index_manager.c:51
    +
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    +
    OPJ_BOOL set_cidxdata(box_param_t *cidx_box, index_param_t *codeidx)
    set code index parameters (parse cidx box) Annex I
    Definition: index_manager.c:348
    +
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    +
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_BOOL set_SIZmkrdata(markeridx_param_t *sizmkidx, codestream_param_t codestream, SIZmarker_param_t *SIZ)
    set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ)
    Definition: index_manager.c:633
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    Marker parameters.
    Definition: marker_manager.h:38
    +
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    mhixbox_param_t ** tileheader
    dynamic array of tile header information from thix box
    Definition: index_manager.h:95
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    void print_COD(CODmarker_param_t COD)
    print Coding style default COD parameters
    Definition: index_manager.c:175
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    +
    struct CODmarker_param CODmarker_param_t
    A.6.1 Coding style default (COD)
    + +
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    +
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    +
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    +
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    +
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    +
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    +
    OPJ_BOOL set_CODmkrdata(markeridx_param_t *codmkidx, codestream_param_t codestream, CODmarker_param_t *COD)
    set code index parameters from COD marker in codestream A.6 Functional marker segments A....
    Definition: index_manager.c:672
    +
    Byte4_t maxvalue
    maximal value
    Definition: index_manager.h:149
    +
    void print_SIZ(SIZmarker_param_t SIZ)
    print Image and Tile SIZ parameters
    Definition: index_manager.c:151
    +
    OPJ_OFF_T offset
    offset relative to the start of the
    Definition: mhixbox_manager.h:41
    +
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    +
    progression order
    Definition: index_manager.h:55
    +
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    + +
    Byte4_t XTOsiz
    horizontal offset from the origin of the reference grid to the left side of the first tile
    Definition: index_manager.h:64
    +
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    +
    1-dimensional range parameters
    Definition: index_manager.h:147
    +
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    +
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    +
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    +
    Byte2_t code
    marker code
    Definition: mhixbox_manager.h:39
    +
    OPJ_BOOL check_JP2boxidx(boxlist_param_t *toplev_boxlist)
    chekc JP2 box indexing
    Definition: index_manager.c:225
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    Box list parameters.
    Definition: box_manager.h:48
    +
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    +
    header index table box parameters
    Definition: mhixbox_manager.h:52
    +
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    +
    boxheader_param_t * first
    top of the box header list
    Definition: manfbox_manager.h:42
    + +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    +
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    +
    struct index_param index_param_t
    index parameters
    +
    Byte8_t length
    codestream length
    Definition: index_manager.h:89
    + +
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    + +
    int fd
    file descriptor
    Definition: box_manager.h:38
    +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    Byte8_t mhead_length
    main header length
    Definition: index_manager.h:90
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    +
    Byte8_t length
    length of the reference Box
    Definition: boxheader_manager.h:41
    + + +
    Marker index parameters.
    Definition: mhixbox_manager.h:38
    +
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    +
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    +
    Byte2_t Rsiz
    capabilities that a decoder needs
    Definition: index_manager.h:57
    +
    Byte4_t YTOsiz
    vertical offset from the origin of the reference grid to the top side of the first tile
    Definition: index_manager.h:65
    +
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    +
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    +
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    + + + + diff --git a/build/doc/html/indexbox__manager_8h.html b/build/doc/html/indexbox__manager_8h.html new file mode 100644 index 000000000..e839d1a4c --- /dev/null +++ b/build/doc/html/indexbox__manager_8h.html @@ -0,0 +1,854 @@ + + + + + + + +OpenJPEG: indexbox_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    indexbox_manager.h File Reference
    +
    +
    + +

    Modification of jpip.c from 2KAN indexer. +More...

    +
    #include "openjpeg.h"
    +#include "j2k.h"
    +#include "jp2.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define JPIP_CIDX   0x63696478 /* Codestream index */
     
    #define JPIP_CPTR   0x63707472 /* Codestream Finder Box */
     
    #define JPIP_MANF   0x6d616e66 /* Manifest Box */
     
    #define JPIP_FAIX   0x66616978 /* Fragment array Index box */
     
    #define JPIP_MHIX   0x6d686978 /* Main Header Index Table */
     
    #define JPIP_TPIX   0x74706978 /* Tile-part Index Table box */
     
    #define JPIP_THIX   0x74686978 /* Tile header Index Table box */
     
    #define JPIP_PPIX   0x70706978 /* Precinct Packet Index Table box */
     
    #define JPIP_PHIX   0x70686978 /* Packet Header index Table */
     
    #define JPIP_FIDX   0x66696478 /* File Index */
     
    #define JPIP_FPTR   0x66707472 /* File Finder */
     
    #define JPIP_PRXY   0x70727879 /* Proxy boxes */
     
    #define JPIP_IPTR   0x69707472 /* Index finder box */
     
    #define JPIP_PHLD   0x70686c64 /* Place holder */
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int opj_write_tpix (int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_thix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    void opj_write_manf (int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_mainmhix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tilemhix (int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tpixfaix (int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.c from 2KAN indexer.

    +

    Macro Definition Documentation

    + +

    ◆ JPIP_CIDX

    + +
    +
    + + + + +
    #define JPIP_CIDX   0x63696478 /* Codestream index */
    +
    + +
    +
    + +

    ◆ JPIP_CPTR

    + +
    +
    + + + + +
    #define JPIP_CPTR   0x63707472 /* Codestream Finder Box */
    +
    + +
    +
    + +

    ◆ JPIP_FAIX

    + +
    +
    + + + + +
    #define JPIP_FAIX   0x66616978 /* Fragment array Index box */
    +
    + +
    +
    + +

    ◆ JPIP_FIDX

    + +
    +
    + + + + +
    #define JPIP_FIDX   0x66696478 /* File Index */
    +
    + +
    +
    + +

    ◆ JPIP_FPTR

    + +
    +
    + + + + +
    #define JPIP_FPTR   0x66707472 /* File Finder */
    +
    + +
    +
    + +

    ◆ JPIP_IPTR

    + +
    +
    + + + + +
    #define JPIP_IPTR   0x69707472 /* Index finder box */
    +
    + +
    +
    + +

    ◆ JPIP_MANF

    + +
    +
    + + + + +
    #define JPIP_MANF   0x6d616e66 /* Manifest Box */
    +
    + +
    +
    + +

    ◆ JPIP_MHIX

    + +
    +
    + + + + +
    #define JPIP_MHIX   0x6d686978 /* Main Header Index Table */
    +
    + +
    +
    + +

    ◆ JPIP_PHIX

    + +
    +
    + + + + +
    #define JPIP_PHIX   0x70686978 /* Packet Header index Table */
    +
    + +
    +
    + +

    ◆ JPIP_PHLD

    + +
    +
    + + + + +
    #define JPIP_PHLD   0x70686c64 /* Place holder */
    +
    + +
    +
    + +

    ◆ JPIP_PPIX

    + +
    +
    + + + + +
    #define JPIP_PPIX   0x70706978 /* Precinct Packet Index Table box */
    +
    + +
    +
    + +

    ◆ JPIP_PRXY

    + +
    +
    + + + + +
    #define JPIP_PRXY   0x70727879 /* Proxy boxes */
    +
    + +
    +
    + +

    ◆ JPIP_THIX

    + +
    +
    + + + + +
    #define JPIP_THIX   0x74686978 /* Tile header Index Table box */
    +
    + +
    +
    + +

    ◆ JPIP_TPIX

    + +
    +
    + + + + +
    #define JPIP_TPIX   0x74706978 /* Tile-part Index Table box */
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_write_mainmhix()

    + + + +

    ◆ opj_write_manf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_write_manf (int second,
    int v,
    opj_jp2_box_tbox,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_phix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_phix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_phixfaix()

    + + + +

    ◆ opj_write_ppix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_ppix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_ppixfaix()

    + + + +

    ◆ opj_write_thix()

    + + + +

    ◆ opj_write_tilemhix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tilemhix (int coff,
    opj_codestream_info_t cstr_info,
    int tileno,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_tpix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tpix (int coff,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_tpixfaix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tpixfaix (int coff,
    int compno,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/indexbox__manager_8h_source.html b/build/doc/html/indexbox__manager_8h_source.html new file mode 100644 index 000000000..5ecb93d0f --- /dev/null +++ b/build/doc/html/indexbox__manager_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +OpenJPEG: indexbox_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    indexbox_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id: indexbox_manager.h 897 2011-08-28 21:43:57Z Kaori.Hagihara@gmail.com $
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2003-2004, Yannick Verschueren
    +
    7  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    36 #ifndef INDEXBOX_MANAGER_H_
    +
    37 # define INDEXBOX_MANAGER_H_
    +
    38 
    +
    39 #include "openjpeg.h"
    +
    40 #include "j2k.h" /* needed to use jp2.h */
    +
    41 #include "jp2.h"
    +
    42 
    +
    43 #define JPIP_CIDX 0x63696478 /* Codestream index */
    +
    44 #define JPIP_CPTR 0x63707472 /* Codestream Finder Box */
    +
    45 #define JPIP_MANF 0x6d616e66 /* Manifest Box */
    +
    46 #define JPIP_FAIX 0x66616978 /* Fragment array Index box */
    +
    47 #define JPIP_MHIX 0x6d686978 /* Main Header Index Table */
    +
    48 #define JPIP_TPIX 0x74706978 /* Tile-part Index Table box */
    +
    49 #define JPIP_THIX 0x74686978 /* Tile header Index Table box */
    +
    50 #define JPIP_PPIX 0x70706978 /* Precinct Packet Index Table box */
    +
    51 #define JPIP_PHIX 0x70686978 /* Packet Header index Table */
    +
    52 #define JPIP_FIDX 0x66696478 /* File Index */
    +
    53 #define JPIP_FPTR 0x66707472 /* File Finder */
    +
    54 #define JPIP_PRXY 0x70727879 /* Proxy boxes */
    +
    55 #define JPIP_IPTR 0x69707472 /* Index finder box */
    +
    56 #define JPIP_PHLD 0x70686c64 /* Place holder */
    +
    57 
    +
    58 
    +
    59 /*
    +
    60  * Write tile-part Index table box (superbox)
    +
    61  *
    +
    62  * @param[in] coff offset of j2k codestream
    +
    63  * @param[in] cstr_info codestream information
    +
    64  * @param[in] j2klen length of j2k codestream
    +
    65  * @param[in] cio file output handle
    +
    66  * @return length of tpix box
    +
    67  */
    +
    68 int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen,
    + +
    70  opj_event_mgr_t * p_manager);
    +
    71 
    +
    72 
    +
    73 /*
    +
    74  * Write tile header index table box (superbox)
    +
    75  *
    +
    76  * @param[in] coff offset of j2k codestream
    +
    77  * @param[in] cstr_info codestream information pointer
    +
    78  * @param[in] cio file output handle
    +
    79  * @return length of thix box
    +
    80  */
    +
    81 int opj_write_thix(int coff, opj_codestream_info_t cstr_info,
    +
    82  opj_stream_private_t *cio, opj_event_mgr_t * p_manager);
    +
    83 
    +
    84 
    +
    85 /*
    +
    86  * Write precinct packet index table box (superbox)
    +
    87  *
    +
    88  * @param[in] coff offset of j2k codestream
    +
    89  * @param[in] cstr_info codestream information
    +
    90  * @param[in] EPHused true if EPH option used
    +
    91  * @param[in] j2klen length of j2k codestream
    +
    92  * @param[in] cio file output handle
    +
    93  * @return length of ppix box
    +
    94  */
    +
    95 int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused,
    +
    96  int j2klen, opj_stream_private_t *cio,
    +
    97  opj_event_mgr_t * p_manager);
    +
    98 
    +
    99 
    +
    100 /*
    +
    101  * Write packet header index table box (superbox)
    +
    102  *
    +
    103  * @param[in] coff offset of j2k codestream
    +
    104  * @param[in] cstr_info codestream information
    +
    105  * @param[in] EPHused true if EPH option used
    +
    106  * @param[in] j2klen length of j2k codestream
    +
    107  * @param[in] cio file output handle
    +
    108  * @return length of ppix box
    +
    109  */
    +
    110 int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused,
    +
    111  int j2klen, opj_stream_private_t *cio,
    +
    112  opj_event_mgr_t * p_manager);
    +
    113 
    +
    114 /*
    +
    115  * Write manifest box (box)
    +
    116  *
    +
    117  * @param[in] second number to be visited
    +
    118  * @param[in] v number of boxes
    +
    119  * @param[in] box box to be manifested
    +
    120  * @param[in] cio file output handle
    +
    121  */
    +
    122 
    +
    123 void opj_write_manf(int second,
    +
    124  int v,
    +
    125  opj_jp2_box_t *box,
    + +
    127  opj_event_mgr_t * p_manager);
    +
    128 
    +
    129 /*
    +
    130  * Write main header index table (box)
    +
    131  *
    +
    132  * @param[in] coff offset of j2k codestream
    +
    133  * @param[in] cstr_info codestream information
    +
    134  * @param[in] cio file output handle
    +
    135  * @return length of mainmhix box
    +
    136  */
    +
    137 int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info,
    + +
    139  opj_event_mgr_t * p_manager);
    +
    140 
    +
    141 int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    +
    142  OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio,
    +
    143  opj_event_mgr_t * p_manager);
    +
    144 
    +
    145 int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    +
    146  OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio,
    +
    147  opj_event_mgr_t * p_manager);
    +
    148 
    +
    149 int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno,
    + +
    151  opj_event_mgr_t * p_manager);
    +
    152 
    +
    153 int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    +
    154  int j2klen, opj_stream_private_t *cio,
    +
    155  opj_event_mgr_t * p_manager);
    +
    156 
    +
    157 #endif /* !INDEXBOX_MANAGER_H_ */
    +
    +
    int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:97
    +
    The JPEG-2000 Codestream Reader/Writer (J2K)
    +
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    +
    Message handler object used for.
    Definition: event.h:50
    +
    The JPEG-2000 file format Reader/Writer (JP2)
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:86
    +
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:96
    +
    int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:192
    +
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    +
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    + +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    +
    int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:104
    + + + + diff --git a/build/doc/html/invert_8c.html b/build/doc/html/invert_8c.html new file mode 100644 index 000000000..3719e9108 --- /dev/null +++ b/build/doc/html/invert_8c.html @@ -0,0 +1,309 @@ + + + + + + + +OpenJPEG: invert.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    invert.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + +

    +Functions

    static OPJ_BOOL opj_lupDecompose (OPJ_FLOAT32 *matrix, OPJ_UINT32 *permutations, OPJ_FLOAT32 *p_swap_area, OPJ_UINT32 nb_compo)
     LUP decomposition. More...
     
    static void opj_lupSolve (OPJ_FLOAT32 *pResult, OPJ_FLOAT32 *pMatrix, OPJ_FLOAT32 *pVector, OPJ_UINT32 *pPermutations, OPJ_UINT32 nb_compo, OPJ_FLOAT32 *p_intermediate_data)
     LUP solving. More...
     
    static void opj_lupInvert (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo, OPJ_UINT32 *pPermutations, OPJ_FLOAT32 *p_src_temp, OPJ_FLOAT32 *p_dest_temp, OPJ_FLOAT32 *p_swap_area)
     LUP inversion (call with the result of lupDecompose) More...
     
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
     Matrix inversion. More...
     
    +

    Function Documentation

    + +

    ◆ opj_lupDecompose()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_lupDecompose (OPJ_FLOAT32matrix,
    OPJ_UINT32permutations,
    OPJ_FLOAT32p_swap_area,
    OPJ_UINT32 nb_compo 
    )
    +
    +static
    +
    + +

    LUP decomposition.

    + +

    References OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_matrix_inversion_f().

    + +
    +
    + +

    ◆ opj_lupInvert()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_lupInvert (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo,
    OPJ_UINT32pPermutations,
    OPJ_FLOAT32p_src_temp,
    OPJ_FLOAT32p_dest_temp,
    OPJ_FLOAT32p_swap_area 
    )
    +
    +static
    +
    + +

    LUP inversion (call with the result of lupDecompose)

    + +

    References opj_lupSolve().

    + +

    Referenced by opj_matrix_inversion_f().

    + +
    +
    + +

    ◆ opj_lupSolve()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_lupSolve (OPJ_FLOAT32pResult,
    OPJ_FLOAT32pMatrix,
    OPJ_FLOAT32pVector,
    OPJ_UINT32pPermutations,
    OPJ_UINT32 nb_compo,
    OPJ_FLOAT32p_intermediate_data 
    )
    +
    +static
    +
    + +

    LUP solving.

    + +

    Referenced by opj_lupInvert().

    + +
    +
    + +

    ◆ opj_matrix_inversion_f()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo 
    )
    +
    + +

    Matrix inversion.

    +

    Calculates a n x n double matrix inversion with a LUP method.

    + +

    References OPJ_FALSE, opj_free(), opj_lupDecompose(), opj_lupInvert(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/invert_8h.html b/build/doc/html/invert_8h.html new file mode 100644 index 000000000..d857939ed --- /dev/null +++ b/build/doc/html/invert_8h.html @@ -0,0 +1,126 @@ + + + + + + + +OpenJPEG: invert.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    invert.h File Reference
    +
    +
    + +

    Implementation of the matrix inversion. +More...

    + +

    Go to the source code of this file.

    + + + + + + +

    +Functions

    Exported functions
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
     Calculates a n x n double matrix inversion with a LUP method. More...
     
    +

    Detailed Description

    +

    Implementation of the matrix inversion.

    +

    The function in INVERT.H compute a matrix inversion with a LUP method

    +

    Function Documentation

    + +

    ◆ opj_matrix_inversion_f()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo 
    )
    +
    + +

    Calculates a n x n double matrix inversion with a LUP method.

    +

    Data is aligned, rows after rows (or columns after columns). The function does not take ownership of any memory block, data must be fred by the user.

    +
    Parameters
    + + + + +
    pSrcMatrixthe matrix to invert.
    pDestMatrixdata to store the inverted matrix.
    nb_composize of the matrix
    +
    +
    +
    Returns
    OPJ_TRUE if the inversion is successful, OPJ_FALSE if the matrix is singular.
    +

    Calculates a n x n double matrix inversion with a LUP method.

    + +

    References OPJ_FALSE, opj_free(), opj_lupDecompose(), opj_lupInvert(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/invert_8h_source.html b/build/doc/html/invert_8h_source.html new file mode 100644 index 000000000..70b441025 --- /dev/null +++ b/build/doc/html/invert_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +OpenJPEG: invert.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    invert.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef OPJ_INVERT_H
    +
    33 #define OPJ_INVERT_H
    +
    34 
    +
    45 /* ----------------------------------------------------------------------- */
    +
    46 
    + +
    57  OPJ_FLOAT32 * pDestMatrix,
    +
    58  OPJ_UINT32 nb_compo);
    +
    59 /* ----------------------------------------------------------------------- */
    +
    63 
    +
    64 #endif /* OPJ_INVERT_H */
    +
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    static void opj_lupInvert(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo, OPJ_UINT32 *pPermutations, OPJ_FLOAT32 *p_src_temp, OPJ_FLOAT32 *p_dest_temp, OPJ_FLOAT32 *p_swap_area)
    LUP inversion (call with the result of lupDecompose)
    Definition: invert.c:269
    +
    static OPJ_BOOL opj_lupDecompose(OPJ_FLOAT32 *matrix, OPJ_UINT32 *permutations, OPJ_FLOAT32 *p_swap_area, OPJ_UINT32 nb_compo)
    LUP decomposition.
    Definition: invert.c:107
    +
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Matrix inversion.
    Definition: invert.c:70
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    + +
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Calculates a n x n double matrix inversion with a LUP method.
    Definition: invert.c:70
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    static void opj_lupSolve(OPJ_FLOAT32 *pResult, OPJ_FLOAT32 *pMatrix, OPJ_FLOAT32 *pVector, OPJ_UINT32 *pPermutations, OPJ_UINT32 nb_compo, OPJ_FLOAT32 *p_intermediate_data)
    LUP solving.
    Definition: invert.c:208
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    + + + + diff --git a/build/doc/html/j2k_8c.html b/build/doc/html/j2k_8c.html new file mode 100644 index 000000000..0d99979e7 --- /dev/null +++ b/build/doc/html/j2k_8c.html @@ -0,0 +1,9596 @@ + + + + + + + +OpenJPEG: j2k.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    j2k.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Data Structures

    struct  j2k_prog_order
     
    struct  opj_dec_memory_marker_handler
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    typedef struct j2k_prog_order j2k_prog_order_t
     
    typedef void(* opj_j2k_mct_function) (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    typedef struct opj_dec_memory_marker_handler opj_dec_memory_marker_handler_t
     
    static const j2k_prog_order_t j2k_prog_order_list []
     
    static const OPJ_UINT32 MCT_ELEMENT_SIZE []
     FIXME DOC. More...
     
    static const opj_j2k_mct_function j2k_mct_read_functions_to_float []
     
    static const opj_j2k_mct_function j2k_mct_read_functions_to_int32 []
     
    static const opj_j2k_mct_function j2k_mct_write_functions_from_float []
     
    static const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab []
     
    static const OPJ_UINT16 tabMaxSubLevelFromMainLevel []
     
    static OPJ_BOOL opj_j2k_setup_header_reading (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header. More...
     
    static OPJ_BOOL opj_j2k_read_header_procedure (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The read header procedure. More...
     
    static OPJ_BOOL opj_j2k_encoding_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The default encoding validation procedure without any extension. More...
     
    static OPJ_BOOL opj_j2k_decoding_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The default decoding validation procedure without any extension. More...
     
    static OPJ_BOOL opj_j2k_setup_encoding_validation (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_setup_decoding_validation (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_setup_end_compress (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_mct_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The mct encoding validation procedure. More...
     
    static OPJ_BOOL opj_j2k_build_decoder (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Builds the tcd decoder to use to decode tile. More...
     
    static OPJ_BOOL opj_j2k_build_encoder (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Builds the tcd encoder to use to encode tile. More...
     
    static OPJ_BOOL opj_j2k_create_tcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Creates a tile-coder encoder. More...
     
    static OPJ_BOOL opj_j2k_exec (opj_j2k_t *p_j2k, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Excutes the given procedures on the given codec. More...
     
    static OPJ_BOOL opj_j2k_update_rates (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Updates the rates of the tcp. More...
     
    static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Copies the decoding tile parameters onto all the tile parameters. More...
     
    static OPJ_BOOL opj_j2k_destroy_header_memory (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Destroys the memory associated with the decoding of headers. More...
     
    static const struct opj_dec_memory_marker_handleropj_j2k_get_marker_handler (OPJ_UINT32 p_id)
     Reads the lookup table containing all the marker, status and action, and returns the handler associated with the marker value. More...
     
    static void opj_j2k_tcp_destroy (opj_tcp_t *p_tcp)
     Destroys a tile coding parameter structure. More...
     
    static void opj_j2k_tcp_data_destroy (opj_tcp_t *p_tcp)
     Destroys the data inside a tile coding parameter structure. More...
     
    static void opj_j2k_cp_destroy (opj_cp_t *p_cp)
     Destroys a coding parameter structure. More...
     
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compare 2 a SPCod/ SPCoc elements, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Writes a SPCod or SPCoc element, i.e. More...
     
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
     Gets the size taken by writing a SPCod or SPCoc for the given tile and component. More...
     
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Reads a SPCod or SPCoc element, i.e. More...
     
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
     Gets the size taken by writing SQcd or SQcc element, i.e. More...
     
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compares 2 SQcd or SQcc element, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Writes a SQcd or SQcc element, i.e. More...
     
    static void opj_j2k_update_tlm (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_part_size)
     Updates the Tile Length Marker. More...
     
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Reads a SQcd or SQcc element, i.e. More...
     
    static void opj_j2k_copy_tile_component_parameters (opj_j2k_t *p_j2k)
     Copies the tile component parameters of all the component from the first tile component. More...
     
    static void opj_j2k_copy_tile_quantization_parameters (opj_j2k_t *p_j2k)
     Copies the tile quantization parameters of all the component from the first tile component. More...
     
    static OPJ_BOOL opj_j2k_decode_tiles (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads the tiles. More...
     
    static OPJ_BOOL opj_j2k_pre_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t *p_tcd, opj_image_t *p_output_image)
     
    static void opj_get_tile_dimensions (opj_image_t *l_image, opj_tcd_tilecomp_t *l_tilec, opj_image_comp_t *l_img_comp, OPJ_UINT32 *l_size_comp, OPJ_UINT32 *l_width, OPJ_UINT32 *l_height, OPJ_UINT32 *l_offset_x, OPJ_UINT32 *l_offset_y, OPJ_UINT32 *l_image_width, OPJ_UINT32 *l_stride, OPJ_UINT32 *l_tile_offset)
     
    static void opj_j2k_get_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_data)
     
    static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_header_writing (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header. More...
     
    static OPJ_BOOL opj_j2k_write_first_tile_part (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
     
    static OPJ_BOOL opj_j2k_write_all_tile_parts (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
     
    static OPJ_BOOL opj_j2k_get_end_header (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Gets the offset of the header. More...
     
    static OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index (opj_j2k_t *p_j2k)
     
    static OPJ_BOOL opj_j2k_write_soc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOC marker (Start Of Codestream) More...
     
    static OPJ_BOOL opj_j2k_read_soc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a SOC marker (Start of Codestream) More...
     
    static OPJ_BOOL opj_j2k_write_siz (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SIZ marker (image and tile size) More...
     
    static OPJ_BOOL opj_j2k_read_siz (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a SIZ marker (image and tile size) More...
     
    static OPJ_BOOL opj_j2k_write_com (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COM marker (comment) More...
     
    static OPJ_BOOL opj_j2k_read_com (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COM marker (comments) More...
     
    static OPJ_BOOL opj_j2k_write_cod (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COD marker (Coding style default) More...
     
    static OPJ_BOOL opj_j2k_read_cod (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COD marker (Coding style defaults) More...
     
    static OPJ_BOOL opj_j2k_compare_coc (opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compares 2 COC markers (Coding style component) More...
     
    static OPJ_BOOL opj_j2k_write_coc (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COC marker (Coding style component) More...
     
    static void opj_j2k_write_coc_in_memory (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the COC marker (Coding style component) More...
     
    static OPJ_UINT32 opj_j2k_get_max_coc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by a coc. More...
     
    static OPJ_BOOL opj_j2k_read_coc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COC marker (Coding Style Component) More...
     
    static OPJ_BOOL opj_j2k_write_qcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the QCD marker (quantization default) More...
     
    static OPJ_BOOL opj_j2k_read_qcd (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a QCD marker (Quantization defaults) More...
     
    static OPJ_BOOL opj_j2k_compare_qcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compare QCC markers (quantization component) More...
     
    static OPJ_BOOL opj_j2k_write_qcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the QCC marker (quantization component) More...
     
    static void opj_j2k_write_qcc_in_memory (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the QCC marker (quantization component) More...
     
    static OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by a qcc. More...
     
    static OPJ_BOOL opj_j2k_read_qcc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a QCC marker (Quantization component) More...
     
    static OPJ_BOOL opj_j2k_write_poc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the POC marker (Progression Order Change) More...
     
    static void opj_j2k_write_poc_in_memory (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the POC marker (Progression Order Change) More...
     
    static OPJ_UINT32 opj_j2k_get_max_poc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the writing of a POC. More...
     
    static OPJ_BOOL opj_j2k_read_poc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a POC marker (Progression Order Change) More...
     
    static OPJ_UINT32 opj_j2k_get_max_toc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the toc headers of all the tile parts of any given tile. More...
     
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the headers of the SOT. More...
     
    static OPJ_BOOL opj_j2k_read_crg (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a CRG marker (Component registration) More...
     
    static OPJ_BOOL opj_j2k_read_tlm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a TLM marker (Tile Length Marker) More...
     
    static OPJ_BOOL opj_j2k_write_updated_tlm (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the updated tlm. More...
     
    static OPJ_BOOL opj_j2k_read_plm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PLM marker (Packet length, main header marker) More...
     
    static OPJ_BOOL opj_j2k_read_plt (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PLT marker (Packet length, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_read_ppm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PPM marker (Packed headers, main header) More...
     
    static OPJ_BOOL opj_j2k_merge_ppm (opj_cp_t *p_cp, opj_event_mgr_t *p_manager)
     Merges all PPM markers read (Packed headers, main header) More...
     
    static OPJ_BOOL opj_j2k_read_ppt (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PPT marker (Packed packet headers, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_merge_ppt (opj_tcp_t *p_tcp, opj_event_mgr_t *p_manager)
     Merges all PPT markers read (Packed headers, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_write_tlm (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the TLM marker (Tile Length Marker) More...
     
    static OPJ_BOOL opj_j2k_write_sot (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 total_data_size, OPJ_UINT32 *p_data_written, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_get_sot_values (OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, OPJ_UINT32 *p_tile_no, OPJ_UINT32 *p_tot_len, OPJ_UINT32 *p_current_part, OPJ_UINT32 *p_num_parts, opj_event_mgr_t *p_manager)
     Reads values from a SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_read_sot (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_write_sod (opj_j2k_t *p_j2k, opj_tcd_t *p_tile_coder, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOD marker (Start of data) More...
     
    static OPJ_BOOL opj_j2k_read_sod (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a SOD marker (Start Of Data) More...
     
    static OPJ_BOOL opj_j2k_write_rgn (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_UINT32 nb_comps, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the RGN marker (Region Of Interest) More...
     
    static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a RGN marker (Region Of Interest) More...
     
    static OPJ_BOOL opj_j2k_write_eoc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the EOC marker (End of Codestream) More...
     
    static OPJ_BOOL opj_j2k_write_mct_data_group (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the CBD-MCT-MCC-MCO markers (Multi components transform) More...
     
    static OPJ_BOOL opj_j2k_init_info (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Inits the Info. More...
     
    static OPJ_BOOL opj_j2k_add_mhmarker (opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
     Add main header marker information. More...
     
    static OPJ_BOOL opj_j2k_add_tlmarker (OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
     Add tile header marker information. More...
     
    static OPJ_BOOL opj_j2k_read_unk (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, OPJ_UINT32 *output_marker, opj_event_mgr_t *p_manager)
     Reads an unknown marker. More...
     
    static OPJ_BOOL opj_j2k_write_mct_record (opj_j2k_t *p_j2k, opj_mct_data_t *p_mct_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCT marker (Multiple Component Transform) More...
     
    static OPJ_BOOL opj_j2k_read_mct (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCT marker (Multiple Component Transform) More...
     
    static OPJ_BOOL opj_j2k_write_mcc_record (opj_j2k_t *p_j2k, opj_simple_mcc_decorrelation_data_t *p_mcc_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCC marker (Multiple Component Collection) More...
     
    static OPJ_BOOL opj_j2k_read_mcc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCC marker (Multiple Component Collection) More...
     
    static OPJ_BOOL opj_j2k_write_mco (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCO marker (Multiple component transformation ordering) More...
     
    static OPJ_BOOL opj_j2k_read_mco (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCO marker (Multiple Component Transform Ordering) More...
     
    static OPJ_BOOL opj_j2k_add_mct (opj_tcp_t *p_tcp, opj_image_t *p_image, OPJ_UINT32 p_index)
     
    static void opj_j2k_read_int16_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int32_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float32_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float64_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int16_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int32_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float32_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float64_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_int16 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_float64 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static OPJ_BOOL opj_j2k_end_encoding (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the encoding, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_cbd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the CBD marker (Component bit depth definition) More...
     
    static OPJ_BOOL opj_j2k_read_cbd (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a CBD marker (Component bit depth definition) More...
     
    static OPJ_BOOL opj_j2k_write_all_coc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes COC marker for each component. More...
     
    static OPJ_BOOL opj_j2k_write_all_qcc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes QCC marker for each component. More...
     
    static OPJ_BOOL opj_j2k_write_regions (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes regions of interests. More...
     
    static OPJ_BOOL opj_j2k_write_epc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes EPC ???? More...
     
    static OPJ_BOOL opj_j2k_check_poc_val (const opj_poc_t *p_pocs, OPJ_UINT32 tileno, OPJ_UINT32 p_nb_pocs, OPJ_UINT32 p_nb_resolutions, OPJ_UINT32 numcomps, OPJ_UINT32 numlayers, opj_event_mgr_t *p_manager)
     Checks the progression order changes values. More...
     
    static OPJ_UINT32 opj_j2k_get_num_tp (opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32 tileno)
     Gets the number of tile parts used for the given change of progression (if any) and the given tile. More...
     
    static OPJ_BOOL opj_j2k_calculate_tp (opj_j2k_t *p_j2k, opj_cp_t *cp, OPJ_UINT32 *p_nb_tiles, opj_image_t *image, opj_event_mgr_t *p_manager)
     Calculates the total number of tile parts needed by the encoder to encode such an image. More...
     
    static void opj_j2k_dump_MH_info (opj_j2k_t *p_j2k, FILE *out_stream)
     
    static void opj_j2k_dump_MH_index (opj_j2k_t *p_j2k, FILE *out_stream)
     
    static opj_codestream_index_topj_j2k_create_cstr_index (void)
     
    static OPJ_FLOAT32 opj_j2k_get_tp_stride (opj_tcp_t *p_tcp)
     
    static OPJ_FLOAT32 opj_j2k_get_default_stride (opj_tcp_t *p_tcp)
     
    static int opj_j2k_initialise_4K_poc (opj_poc_t *POC, int numres)
     
    static void opj_j2k_set_cinema_parameters (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_is_cinema_compliant (opj_image_t *image, OPJ_UINT16 rsiz, opj_event_mgr_t *p_manager)
     
    static void opj_j2k_set_imf_parameters (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_is_imf_compliant (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction (opj_stream_private_t *p_stream, OPJ_UINT32 tile_no, OPJ_BOOL *p_correction_needed, opj_event_mgr_t *p_manager)
     Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot). More...
     
    const char * opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
     Converts an enum type progression order to string type. More...
     
    static OPJ_BOOL opj_j2k_write_plt_in_memory (opj_j2k_t *p_j2k, opj_tcd_marker_info_t *marker_info, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Write one or more PLT markers in the provided buffer. More...
     
    void opj_j2k_setup_decoder (opj_j2k_t *j2k, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_t *j2k, OPJ_UINT32 num_threads)
     
    static int opj_j2k_get_default_thread_count ()
     
    opj_j2k_topj_j2k_create_compress (void)
     Creates a J2K compression structure. More...
     
    static int opj_j2k_get_imf_max_NL (opj_cparameters_t *parameters, opj_image_t *image)
     
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 codestream header structure. More...
     
    OPJ_BOOL opj_j2k_setup_mct_encoding (opj_tcp_t *p_tcp, opj_image_t *p_image)
     
    void opj_j2k_destroy (opj_j2k_t *p_j2k)
     Destroys a jpeg2000 codec. More...
     
    void j2k_destroy_cstr_index (opj_codestream_index_t *p_cstr_ind)
     Destroys a codestream index structure. More...
     
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_j2k_decode_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    static OPJ_BOOL opj_j2k_update_image_dimensions (opj_image_t *p_image, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    opj_j2k_topj_j2k_create_decompress (void)
     Creates a J2K decompression structure. More...
     
    static void opj_j2k_dump_tile_info (opj_tcp_t *l_default_tile, OPJ_INT32 numcomps, FILE *out_stream)
     
    void j2k_dump (opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the J2K decompression structure . More...
     
    void j2k_dump_image_header (opj_image_t *img_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump an image header structure. More...
     
    void j2k_dump_image_comp_header (opj_image_comp_t *comp_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump a component image header structure. More...
     
    opj_codestream_info_v2_tj2k_get_cstr_info (opj_j2k_t *p_j2k)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tj2k_get_cstr_index (opj_j2k_t *p_j2k)
     Get the codestream index from a JPEG2000 codec. More...
     
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_decoding (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on decoding data. More...
     
    static OPJ_BOOL opj_j2k_decode_one_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_decoding_tile (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on decoding one tile. More...
     
    static OPJ_BOOL opj_j2k_move_data_from_codec_to_output_image (opj_j2k_t *p_j2k, opj_image_t *p_image)
     
    OPJ_BOOL opj_j2k_decode (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_get_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor (opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL opj_j2k_encode (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Encodes an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    +

    Typedef Documentation

    + +

    ◆ j2k_prog_order_t

    + +
    +
    + + + + +
    typedef struct j2k_prog_order j2k_prog_order_t
    +
    + +
    +
    + +

    ◆ opj_dec_memory_marker_handler_t

    + + + +

    ◆ opj_j2k_mct_function

    + +
    +
    + + + + +
    typedef void(* opj_j2k_mct_function) (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ j2k_destroy_cstr_index()

    + +
    +
    + + + + + + + + +
    void j2k_destroy_cstr_index (opj_codestream_index_tp_cstr_ind)
    +
    + +

    Destroys a codestream index structure.

    +
    Parameters
    + + +
    p_cstr_indthe codestream index parameter to destroy.
    +
    +
    + +

    References opj_tile_index::marker, opj_codestream_index::marker, opj_codestream_index::nb_of_tiles, opj_free(), opj_tile_index::packet_index, opj_codestream_index::tile_index, and opj_tile_index::tp_index.

    + +

    Referenced by opj_destroy_cstr_index(), and opj_j2k_destroy().

    + +
    +
    + +

    ◆ j2k_dump()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump (opj_j2k_tp_j2k,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    +
    + +

    Dump some elements from the J2K decompression structure .

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References j2k_dump_image_header(), opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_IMG_INFO, opj_j2k_dump_MH_index(), opj_j2k_dump_MH_info(), opj_j2k_dump_tile_info(), OPJ_J2K_MH_IND, OPJ_J2K_MH_INFO, OPJ_J2K_TCH_INFO, OPJ_J2K_TH_IND, OPJ_J2K_TH_INFO, OPJ_JP2_IND, OPJ_JP2_INFO, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by jp2_dump(), and opj_create_decompress().

    + +
    +
    + +

    ◆ j2k_dump_image_comp_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump_image_comp_header (opj_image_comp_tcomp,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    +
    + +

    Dump a component image header structure.

    +
    Parameters
    + + + + +
    compthe component image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::prec, and opj_image_comp::sgnd.

    + +

    Referenced by j2k_dump_image_header().

    + +
    +
    + +

    ◆ j2k_dump_image_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump_image_header (opj_image_timage,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    +
    + +

    Dump an image header structure.

    +
    Parameters
    + + + + +
    imagethe image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_image::comps, j2k_dump_image_comp_header(), opj_image::numcomps, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by j2k_dump().

    + +
    +
    + +

    ◆ j2k_get_cstr_index()

    + + + +

    ◆ j2k_get_cstr_info()

    + +
    +
    + + + + + + + + +
    opj_codestream_info_v2_t* j2k_get_cstr_info (opj_j2k_tp_j2k)
    +
    + +

    Get the codestream info from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_j2kthe component image header to dump.
    +
    +
    +
    Returns
    the codestream information extract from the jpg2000 codec
    + +

    References opj_tccp::cblkh, opj_tccp_info::cblkh, opj_tccp::cblksty, opj_tccp_info::cblksty, opj_tccp::cblkw, opj_tccp_info::cblkw, opj_tccp::csty, opj_tcp::csty, opj_tccp_info::csty, opj_tile_v2_info::csty, opj_stepsize::expn, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_codestream_info_v2::m_default_tile_info, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_stepsize::mant, opj_tcp::mct, opj_tile_v2_info::mct, opj_codestream_info_v2::nbcomps, opj_image::numcomps, opj_tccp::numgbits, opj_tccp_info::numgbits, opj_tcp::numlayers, opj_tile_v2_info::numlayers, opj_tccp::numresolutions, opj_tccp_info::numresolutions, opj_calloc(), opj_destroy_cstr_info(), OPJ_J2K_MAXBANDS, OPJ_J2K_MAXRLVLS, opj_tccp::prch, opj_tccp_info::prch, opj_tccp::prcw, opj_tccp_info::prcw, opj_tcp::prg, opj_tile_v2_info::prg, opj_tccp::qmfbid, opj_tccp_info::qmfbid, opj_tccp::qntsty, opj_tccp_info::qntsty, opj_tccp::roishift, opj_tccp_info::roishift, opj_tccp::stepsizes, opj_tccp_info::stepsizes_expn, opj_tccp_info::stepsizes_mant, opj_tile_v2_info::tccp_info, opj_tcp::tccps, opj_cp::tdx, opj_codestream_info_v2::tdx, opj_cp::tdy, opj_codestream_info_v2::tdy, opj_cp::th, opj_codestream_info_v2::th, opj_codestream_info_v2::tile_info, opj_cp::tw, opj_codestream_info_v2::tw, opj_cp::tx0, opj_codestream_info_v2::tx0, opj_cp::ty0, and opj_codestream_info_v2::ty0.

    + +

    Referenced by jp2_get_cstr_info(), and opj_create_decompress().

    + +
    +
    + +

    ◆ opj_get_tile_dimensions()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_get_tile_dimensions (opj_image_tl_image,
    opj_tcd_tilecomp_tl_tilec,
    opj_image_comp_tl_img_comp,
    OPJ_UINT32l_size_comp,
    OPJ_UINT32l_width,
    OPJ_UINT32l_height,
    OPJ_UINT32l_offset_x,
    OPJ_UINT32l_offset_y,
    OPJ_UINT32l_image_width,
    OPJ_UINT32l_stride,
    OPJ_UINT32l_tile_offset 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_add_mct()

    + + + +

    ◆ opj_j2k_add_mhmarker()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_add_mhmarker (opj_codestream_index_tcstr_index,
    OPJ_UINT32 type,
    OPJ_OFF_T pos,
    OPJ_UINT32 len 
    )
    +
    +static
    +
    + +

    Add main header marker information.

    +
    Parameters
    + + + + + +
    cstr_indexCodestream information structure
    typemarker type
    posbyte offset of marker segment
    lenlength of marker segment
    +
    +
    + +

    References opj_marker_info::len, opj_codestream_index::marker, opj_codestream_index::marknum, opj_codestream_index::maxmarknum, OPJ_FALSE, opj_free(), opj_realloc(), OPJ_TRUE, opj_marker_info::pos, and opj_marker_info::type.

    + +

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_soc(), and opj_j2k_read_unk().

    + +
    +
    + +

    ◆ opj_j2k_add_tlmarker()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_add_tlmarker (OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_index,
    OPJ_UINT32 type,
    OPJ_OFF_T pos,
    OPJ_UINT32 len 
    )
    +
    +static
    +
    + +

    Add tile header marker information.

    +
    Parameters
    + + + + + + +
    tilenotile index number
    cstr_indexCodestream information structure
    typemarker type
    posbyte offset of marker segment
    lenlength of marker segment
    +
    +
    + +

    References opj_tile_index::current_tpsno, J2K_MS_SOT, opj_marker_info::len, opj_tile_index::marker, opj_tile_index::marknum, opj_tile_index::maxmarknum, OPJ_FALSE, opj_free(), opj_realloc(), OPJ_TRUE, opj_marker_info::pos, opj_tp_index::start_pos, opj_codestream_index::tile_index, opj_tile_index::tp_index, and opj_marker_info::type.

    + +

    Referenced by opj_j2k_read_sod(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ opj_j2k_allocate_tile_element_cstr_index()

    + + + +

    ◆ opj_j2k_are_all_used_components_decoded()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_build_decoder()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_build_decoder (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Builds the tcd decoder to use to decode tile.

    + +

    References OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_decoding_validation().

    + +
    +
    + +

    ◆ opj_j2k_build_encoder()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_build_encoder (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Builds the tcd encoder to use to encode tile.

    + +

    References OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_encoding_validation().

    + +
    +
    + +

    ◆ opj_j2k_calculate_tp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_calculate_tp (opj_j2k_tp_j2k,
    opj_cp_tcp,
    OPJ_UINT32p_nb_tiles,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Calculates the total number of tile parts needed by the encoder to encode such an image.

    +

    If not enough memory is available, then the function return false.

    +
    Parameters
    + + + + + + +
    p_nb_tilespointer that will hold the number of tile parts.
    cpthe coding parameters for the image.
    imagethe image to encode.
    p_j2kthe p_j2k encoder.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the function was successful, false else.
    + +

    References opj_j2k_get_num_tp(), opj_pi_update_encoding_parameters(), OPJ_TRUE, OPJ_UNUSED, tcp, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_init_info().

    + +
    +
    + +

    ◆ opj_j2k_check_poc_val()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_check_poc_val (const opj_poc_tp_pocs,
    OPJ_UINT32 tileno,
    OPJ_UINT32 p_nb_pocs,
    OPJ_UINT32 p_nb_resolutions,
    OPJ_UINT32 numcomps,
    OPJ_UINT32 numlayers,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Checks the progression order changes values.

    +

    Tells of the poc given as input are valid. A nice message is outputted at errors.

    +
    Parameters
    + + + + + + + + +
    p_pocsthe progression order changes.
    tilenothe tile number of interest
    p_nb_pocsthe number of progression order changes.
    p_nb_resolutionsthe number of resolutions.
    numcompsthe number of components
    numlayersthe number of layers.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the pocs are valid.
    + +

    References opj_poc::compno0, opj_poc::compno1, EVT_ERROR, opj_poc::layno1, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_uint_min(), opj_poc::resno0, opj_poc::resno1, and opj_poc::tile.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_j2k_compare_coc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_compare_coc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    +
    +static
    +
    + +

    Compares 2 COC markers (Coding style component)

    +
    Parameters
    + + + + +
    p_j2kJ2K codec.
    p_first_comp_nothe index of the first component to compare.
    p_second_comp_nothe index of the second component to compare.
    +
    +
    +
    Returns
    OPJ_TRUE if equals
    + +

    References opj_tccp::csty, opj_j2k::m_cp, opj_j2k::m_current_tile_number, OPJ_FALSE, opj_j2k_compare_SPCod_SPCoc(), opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_write_all_coc().

    + +
    +
    + +

    ◆ opj_j2k_compare_qcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_compare_qcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    +
    +static
    +
    + +

    Compare QCC markers (quantization component)

    +
    Parameters
    + + + + +
    p_j2kJ2K codec.
    p_first_comp_nothe index of the first component to compare.
    p_second_comp_nothe index of the second component to compare.
    +
    +
    +
    Returns
    OPJ_TRUE if equals.
    + +

    References opj_j2k::m_current_tile_number, and opj_j2k_compare_SQcd_SQcc().

    + +

    Referenced by opj_j2k_write_all_qcc().

    + +
    +
    + +

    ◆ opj_j2k_compare_SPCod_SPCoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    +
    +static
    +
    + +

    Compare 2 a SPCod/ SPCoc elements, i.e.

    +

    the coding style of a given component of a tile.

    +
    Parameters
    + + + + + +
    p_j2kJ2K codec.
    p_tile_noTile number
    p_first_comp_noThe 1st component number to compare.
    p_second_comp_noThe 1st component number to compare.
    +
    +
    +
    Returns
    OPJ_TRUE if SPCdod are equals.
    + +

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_tccp::numresolutions, OPJ_FALSE, OPJ_TRUE, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_compare_coc().

    + +
    +
    + +

    ◆ opj_j2k_compare_SQcd_SQcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    +
    +static
    +
    + +

    Compares 2 SQcd or SQcc element, i.e.

    +

    the quantization values of a band in the QCD or QCC.

    +
    Parameters
    + + + + + +
    p_j2kJ2K codec.
    p_tile_nothe tile to output.
    p_first_comp_nothe first component number to compare.
    p_second_comp_nothe second component number to compare.
    +
    +
    +
    Returns
    OPJ_TRUE if equals.
    + +

    References opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_stepsize::mant, opj_tccp::numgbits, opj_tccp::numresolutions, OPJ_FALSE, OPJ_TRUE, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_compare_qcc().

    + +
    +
    + +

    ◆ opj_j2k_convert_progression_order()

    + +
    +
    + + + + + + + + +
    const char* opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
    +
    + +

    Converts an enum type progression order to string type.

    + +

    References j2k_prog_order::enum_prog, j2k_prog_order_list, and j2k_prog_order::str_prog.

    + +

    Referenced by opj_j2k_get_num_tp(), and opj_pi_create_encode().

    + +
    +
    + +

    ◆ opj_j2k_copy_default_tcp_and_create_tcd()

    + + + +

    ◆ opj_j2k_copy_tile_component_parameters()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_j2k_copy_tile_component_parameters (opj_j2k_tp_j2k)
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_copy_tile_quantization_parameters()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_j2k_copy_tile_quantization_parameters (opj_j2k_tp_j2k)
    +
    +static
    +
    + +

    Copies the tile quantization parameters of all the component from the first tile component.

    +
    Parameters
    + + +
    p_j2kthe J2k codec.
    +
    +
    + +

    References J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_tccp::numgbits, OPJ_J2K_MAXBANDS, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_read_qcd().

    + +
    +
    + +

    ◆ opj_j2k_cp_destroy()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_j2k_cp_destroy (opj_cp_tp_cp)
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_create_compress()

    + + + +

    ◆ opj_j2k_create_cstr_index()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static opj_codestream_index_t * opj_j2k_create_cstr_index (void )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_create_decompress()

    + + + +

    ◆ opj_j2k_create_tcd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_create_tcd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Creates a tile-coder encoder.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_cp, opj_j2k::m_private_image, opj_j2k::m_tcd, opj_j2k::m_tp, opj_event_msg(), OPJ_FALSE, opj_tcd_create(), opj_tcd_destroy(), opj_tcd_init(), OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_decode (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_j2k_decode_one_tile()

    + + + +

    ◆ opj_j2k_decode_tile()

    + + + +

    ◆ opj_j2k_decode_tiles()

    + + + +

    ◆ opj_j2k_decoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_decoding_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    The default decoding validation procedure without any extension.

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the parameters are correct.
    + +

    References opj_j2k::m_decoder, opj_j2k::m_procedure_list, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_validation_list, OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_decoding_validation().

    + +
    +
    + +

    ◆ opj_j2k_destroy()

    + + + +

    ◆ opj_j2k_destroy_header_memory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_destroy_header_memory (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Destroys the memory associated with the decoding of headers.

    + +

    References opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_free(), OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_dump_MH_index()

    + + + +

    ◆ opj_j2k_dump_MH_info()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_dump_MH_info (opj_j2k_tp_j2k,
    FILE * out_stream 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_dump_tile_info()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_dump_tile_info (opj_tcp_tl_default_tile,
    OPJ_INT32 numcomps,
    FILE * out_stream 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_encode()

    + + + +

    ◆ opj_j2k_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_tp_j2k,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Specify extra options for the encoder.

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    +
    +
    +
    See also
    opj_encoder_set_extra_options() for more details.
    + +

    References EVT_ERROR, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_encoder_set_extra_options().

    + +
    +
    + +

    ◆ opj_j2k_encoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_encoding_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    The default encoding validation procedure without any extension.

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the parameters are correct.
    + +

    References EVT_ERROR, J2K_STATE_NONE, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k::m_procedure_list, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_validation_list, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, and opj_cp::tdy.

    + +

    Referenced by opj_j2k_setup_encoding_validation().

    + +
    +
    + +

    ◆ opj_j2k_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_exec(), opj_j2k_setup_end_compress(), and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    + +

    References OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_end_decompress().

    + +
    +
    + +

    ◆ opj_j2k_end_encoding()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_end_encoding (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Ends the encoding, i.e.

    +

    frees memory.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k_enc::m_encoded_tile_data, opj_j2k_enc::m_encoded_tile_size, opj_j2k::m_encoder, opj_j2k::m_specific_param, opj_j2k::m_tcd, opj_j2k_enc::m_tlm_sot_offsets_buffer, opj_j2k_enc::m_tlm_sot_offsets_current, opj_free(), opj_tcd_destroy(), OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_exec()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_exec (opj_j2k_tp_j2k,
    opj_procedure_list_tp_procedure_list,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Excutes the given procedures on the given codec.

    +
    Parameters
    + + + + + +
    p_procedure_listthe list of procedures to execute
    p_j2kthe jpeg2000 codec to execute the procedures on.
    p_streamthe stream to execute the procedures on.
    p_managerthe user manager.
    +
    +
    +
    Returns
    true if all the procedures were successfully executed.
    + +

    References opj_procedure_list_clear(), opj_procedure_list_get_first_procedure(), opj_procedure_list_get_nb_procedures(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_decode(), opj_j2k_end_compress(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    + +
    +
    + +

    ◆ opj_j2k_get_default_stride()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_FLOAT32 opj_j2k_get_default_stride (opj_tcp_tp_tcp)
    +
    +static
    +
    + +

    Referenced by opj_j2k_update_rates().

    + +
    +
    + +

    ◆ opj_j2k_get_default_thread_count()

    + +
    +
    + + + + + +
    + + + + + + + +
    static int opj_j2k_get_default_thread_count ()
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_get_end_header()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_get_end_header (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Gets the offset of the header.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::cstr_index, opj_codestream_index::main_head_end, opj_stream_tell(), OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_get_imf_max_NL()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static int opj_j2k_get_imf_max_NL (opj_cparameters_tparameters,
    opj_image_timage 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_get_marker_handler()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static const opj_dec_memory_marker_handler_t * opj_j2k_get_marker_handler (OPJ_UINT32 p_id)
    +
    +static
    +
    + +

    Reads the lookup table containing all the marker, status and action, and returns the handler associated with the marker value.

    +
    Parameters
    + + +
    p_idMarker value to look up
    +
    +
    +
    Returns
    the handler associated with the id.
    + +

    References opj_dec_memory_marker_handler::id, and j2k_memory_marker_handler_tab.

    + +

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_tile_header(), and opj_j2k_read_unk().

    + +
    +
    + +

    ◆ opj_j2k_get_max_coc_size()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_max_coc_size (opj_j2k_tp_j2k)
    +
    +static
    +
    + +

    Gets the maximum size taken by a coc.

    +
    Parameters
    + + +
    p_j2kthe jpeg2000 codec to use.
    +
    +
    + +

    References opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SPCod_SPCoc_size(), opj_uint_max(), opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_get_max_qcc_size(), and opj_j2k_get_specific_header_sizes().

    + +
    +
    + +

    ◆ opj_j2k_get_max_poc_size()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_max_poc_size (opj_j2k_tp_j2k)
    +
    +static
    +
    + +

    Gets the maximum size taken by the writing of a POC.

    + +

    References opj_j2k::m_cp, opj_tcp::numpocs, opj_uint_max(), opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_get_specific_header_sizes().

    + +
    +
    + +

    ◆ opj_j2k_get_max_qcc_size()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_tp_j2k)
    +
    +static
    +
    + +

    Gets the maximum size taken by a qcc.

    + +

    References opj_j2k_get_max_coc_size().

    + +

    Referenced by opj_j2k_get_specific_header_sizes().

    + +
    +
    + +

    ◆ opj_j2k_get_max_toc_size()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_max_toc_size (opj_j2k_tp_j2k)
    +
    +static
    +
    + +

    Gets the maximum size taken by the toc headers of all the tile parts of any given tile.

    + +

    References opj_j2k::m_cp, opj_tcp::m_nb_tile_parts, opj_uint_max(), opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_get_specific_header_sizes().

    + +
    +
    + +

    ◆ opj_j2k_get_num_tp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_num_tp (opj_cp_tcp,
    OPJ_UINT32 pino,
    OPJ_UINT32 tileno 
    )
    +
    +static
    +
    + +

    Gets the number of tile parts used for the given change of progression (if any) and the given tile.

    +
    Parameters
    + + + + +
    cpthe coding parameters.
    pinothe offset of the given poc (i.e. its position in the coding parameter).
    tilenothe given tile.
    +
    +
    +
    Returns
    the number of tile parts.
    + +

    References opj_poc::compE, opj_poc::layE, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_encoding_param::m_tp_pos, opj_tcp::numpocs, opj_j2k_convert_progression_order(), opj_poc::prcE, opj_poc::resE, tcp, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_calculate_tp(), and opj_j2k_write_all_tile_parts().

    + +
    +
    + +

    ◆ opj_j2k_get_sot_values()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_get_sot_values (OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    OPJ_UINT32p_tile_no,
    OPJ_UINT32p_tot_len,
    OPJ_UINT32p_current_part,
    OPJ_UINT32p_num_parts,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads values from a SOT marker (Start of tile-part)

    +

    the j2k decoder state is not affected. No side effects, no checks except for p_header_size.

    +
    Parameters
    + + + + + + + + +
    p_header_datathe data contained in the SOT marker.
    p_header_sizethe size of the data contained in the SOT marker.
    p_tile_noIsot.
    p_tot_lenPsot.
    p_current_partTPsot.
    p_num_partsTNsot.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    + +

    Referenced by opj_j2k_need_nb_tile_parts_correction(), and opj_j2k_read_sot().

    + +
    +
    + +

    ◆ opj_j2k_get_SPCod_SPCoc_size()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no 
    )
    +
    +static
    +
    + +

    Gets the size taken by writing a SPCod or SPCoc for the given tile and component.

    +
    Parameters
    + + + + +
    p_j2kthe J2K codec.
    p_tile_nothe tile index.
    p_comp_nothe component being outputted.
    +
    +
    +
    Returns
    the number of bytes taken by the SPCod element.
    + +

    References opj_tccp::csty, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_tccp::numresolutions, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_get_max_coc_size(), opj_j2k_write_coc(), opj_j2k_write_coc_in_memory(), and opj_j2k_write_cod().

    + +
    +
    + +

    ◆ opj_j2k_get_specific_header_sizes()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes (opj_j2k_tp_j2k)
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_get_SQcd_SQcc_size()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no 
    )
    +
    +static
    +
    + +

    Gets the size taken by writing SQcd or SQcc element, i.e.

    +

    the quantization values of a band in the QCD or QCC.

    +
    Parameters
    + + + + +
    p_tile_nothe tile index.
    p_comp_nothe component being outputted.
    p_j2kthe J2K codec.
    +
    +
    +
    Returns
    the number of bytes taken by the SPCod element.
    + +

    References J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_tccp::numresolutions, opj_tccp::qntsty, opj_tcp::tccps, opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_write_qcc(), opj_j2k_write_qcc_in_memory(), and opj_j2k_write_qcd().

    + +
    +
    + +

    ◆ opj_j2k_get_tile()

    + + + +

    ◆ opj_j2k_get_tile_data()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_get_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_data 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_get_tp_stride()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_FLOAT32 opj_j2k_get_tp_stride (opj_tcp_tp_tcp)
    +
    +static
    +
    + +

    References opj_tcp::m_nb_tile_parts.

    + +

    Referenced by opj_j2k_update_rates().

    + +
    +
    + +

    ◆ opj_j2k_init_info()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_init_info (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Inits the Info.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_enc::m_total_tile_parts, opj_j2k_calculate_tp(), and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_initialise_4K_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static int opj_j2k_initialise_4K_poc (opj_poc_tPOC,
    int numres 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_is_cinema_compliant()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_is_cinema_compliant (opj_image_timage,
    OPJ_UINT16 rsiz,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_is_imf_compliant()

    + + + +

    ◆ opj_j2k_mct_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_mct_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    The mct encoding validation procedure.

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the parameters are correct.
    + +

    References opj_j2k::m_cp, opj_tcp::m_mct_coding_matrix, opj_j2k::m_private_image, opj_tcp::mct, opj_image::numcomps, OPJ_TRUE, OPJ_UNUSED, opj_tccp::qmfbid, opj_cp::rsiz, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_setup_encoding_validation().

    + +
    +
    + +

    ◆ opj_j2k_merge_ppm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_merge_ppm (opj_cp_tp_cp,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Merges all PPM markers read (Packed headers, main header)

    +
    Parameters
    + + + +
    p_cpmain coding parameters.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), opj_read_bytes, OPJ_TRUE, opj_cp::ppm, opj_cp::ppm_buffer, opj_cp::ppm_data, opj_cp::ppm_data_size, opj_cp::ppm_len, opj_cp::ppm_markers, and opj_cp::ppm_markers_count.

    + +

    Referenced by opj_j2k_read_header_procedure().

    + +
    +
    + +

    ◆ opj_j2k_merge_ppt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_merge_ppt (opj_tcp_tp_tcp,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Merges all PPT markers read (Packed headers, tile-part header)

    +

    Merges all PPT markers read (Packed packet headers, tile-part header)

    +
    Parameters
    + + + +
    p_tcpthe tile.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, opj_tcp::ppt, opj_tcp::ppt_buffer, opj_tcp::ppt_data, opj_tcp::ppt_data_size, opj_tcp::ppt_len, opj_tcp::ppt_markers, and opj_tcp::ppt_markers_count.

    + +

    Referenced by opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ opj_j2k_move_data_from_codec_to_output_image()

    + + + +

    ◆ opj_j2k_need_nb_tile_parts_correction()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction (opj_stream_private_tp_stream,
    OPJ_UINT32 tile_no,
    OPJ_BOOLp_correction_needed,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot).

    +

    See issue 254.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    tile_notile number we're looking for.
    p_correction_neededoutput value. if true, non conformant codestream needs TNsot correction.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the function was successful, false else.
    + +

    References EVT_ERROR, J2K_MS_SOT, opj_event_msg(), OPJ_FALSE, opj_j2k_get_sot_values(), opj_read_bytes, opj_stream_has_seek(), opj_stream_read_data(), opj_stream_seek(), opj_stream_skip(), opj_stream_tell(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ opj_j2k_post_write_tile()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_pre_write_tile()

    + + + +

    ◆ opj_j2k_read_cbd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_cbd (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a CBD marker (Component bit depth definition)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the CBD box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the CBD marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_image::comps, EVT_ERROR, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_image_comp::prec, and opj_image_comp::sgnd.

    + +
    +
    + +

    ◆ opj_j2k_read_coc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_coc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a COC marker (Coding Style Component)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the COC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the COC marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tccp::csty, EVT_ERROR, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_j2k_read_SPCod_SPCoc(), opj_read_bytes, OPJ_TRUE, opj_tcp::tccps, and opj_cp::tcps.

    + +
    +
    + +

    ◆ opj_j2k_read_cod()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_cod (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_read_com()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_com (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a COM marker (comments)

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 file codec.
    p_header_datathe data contained in the COM box.
    p_header_sizethe size of the data contained in the COM marker.
    p_managerthe user event manager.
    +
    +
    + +

    References OPJ_TRUE, and OPJ_UNUSED.

    + +
    +
    + +

    ◆ opj_j2k_read_crg()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_crg (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a CRG marker (Component registration)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, and OPJ_UNUSED.

    + +
    +
    + +

    ◆ opj_j2k_read_float32_to_float()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_float32_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_float.

    + +
    +
    + +

    ◆ opj_j2k_read_float32_to_int32()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_float32_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_float.

    + +
    +
    + +

    ◆ opj_j2k_read_float64_to_float()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_float64_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_double.

    + +
    +
    + +

    ◆ opj_j2k_read_float64_to_int32()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_float64_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_double.

    + +
    +
    + +

    ◆ opj_j2k_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_tp_stream,
    opj_j2k_tp_j2k,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a jpeg2000 codestream header structure.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the box is valid.
    + +

    References opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_copy_image_header(), OPJ_FALSE, opj_image_create0(), opj_image_destroy(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_exec(), opj_j2k_setup_decoding_validation(), opj_j2k_setup_header_reading(), and OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_read_header().

    + +
    +
    + +

    ◆ opj_j2k_read_header_procedure()

    + + + +

    ◆ opj_j2k_read_int16_to_float()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_int16_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_bytes.

    + +
    +
    + +

    ◆ opj_j2k_read_int16_to_int32()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_int16_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_bytes.

    + +
    +
    + +

    ◆ opj_j2k_read_int32_to_float()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_int32_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_bytes.

    + +
    +
    + +

    ◆ opj_j2k_read_int32_to_int32()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_read_int32_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_read_bytes.

    + +
    +
    + +

    ◆ opj_j2k_read_mcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_mcc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_read_mco()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_mco (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a MCO marker (Multiple Component Transform Ordering)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the MCO box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the MCO marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, EVT_WARNING, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tccp::m_dc_level_shift, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_tcp::m_mct_decoding_matrix, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_mct(), opj_read_bytes, OPJ_TRUE, opj_tcp::tccps, and opj_cp::tcps.

    + +
    +
    + +

    ◆ opj_j2k_read_mct()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_mct (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_read_plm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_plm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a PLM marker (Packet length, main header marker)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, and OPJ_UNUSED.

    + +
    +
    + +

    ◆ opj_j2k_read_plt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_plt (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a PLT marker (Packet length, tile-part header)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the PLT box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the PLT marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and OPJ_UNUSED.

    + +
    +
    + +

    ◆ opj_j2k_read_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_poc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a POC marker (Progression Order Change)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_poc::compno0, opj_poc::compno1, EVT_ERROR, J2K_MAX_POCS, J2K_STATE_TPH, opj_poc::layno1, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_tcp::numlayers, opj_tcp::numpocs, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_uint_min(), opj_tcp::POC, opj_tcp::pocs, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, and opj_cp::tcps.

    + +
    +
    + +

    ◆ opj_j2k_read_ppm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_ppm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a PPM marker (Packed headers, main header)

    +

    Reads a PPM marker (Packed packet headers, main header)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_cp, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, opj_realloc(), OPJ_TRUE, opj_cp::ppm, opj_cp::ppm_markers, and opj_cp::ppm_markers_count.

    + +
    +
    + +

    ◆ opj_j2k_read_ppt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_ppt (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a PPT marker (Packed packet headers, tile-part header)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the PPT box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the PPT marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, opj_realloc(), OPJ_TRUE, opj_cp::ppm, opj_tcp::ppt, opj_tcp::ppt_markers, opj_tcp::ppt_markers_count, and opj_cp::tcps.

    + +
    +
    + +

    ◆ opj_j2k_read_qcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_qcc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a QCC marker (Quantization component)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the QCC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the QCC marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_cp::correct, EVT_ERROR, EVT_WARNING, opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_j2k_read_SQcd_SQcc(), opj_read_bytes, and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_j2k_read_qcd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_qcd (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a QCD marker (Quantization defaults)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the QCD box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the QCD marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_j2k_copy_tile_quantization_parameters(), opj_j2k_read_SQcd_SQcc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_j2k_read_rgn()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a RGN marker (Region Of Interest)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_cp::correct, EVT_ERROR, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    + +
    +
    + +

    ◆ opj_j2k_read_siz()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_siz (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a SIZ marker (image and tile size)

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 file codec.
    p_header_datathe data contained in the SIZ box.
    p_header_sizethe size of the data contained in the SIZ marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_cp::allow_different_bit_depth_sign, opj_image::comps, opj_cp::correct, opj_j2k::dump_state, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, EVT_WARNING, opj_cp::exp_comps, opj_image_comp::factor, opj_j2k::ihdr_h, opj_j2k::ihdr_w, J2K_STATE_MH, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_tcp::m_mcc_records, opj_tcp::m_mct_records, opj_tcp::m_nb_max_mcc_records, opj_tcp::m_nb_max_mct_records, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_cp::max_tiles, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_image_comp_header_update(), opj_int_ceildiv(), OPJ_J2K_MCC_DEFAULT_NB_RECORDS, OPJ_J2K_MCT_DEFAULT_NB_RECORDS, opj_read_bytes, OPJ_TRUE, opj_uint_adds(), opj_image_comp::prec, opj_image_comp::resno_decoded, opj_cp::rsiz, opj_image_comp::sgnd, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +
    +
    + +

    ◆ opj_j2k_read_soc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_soc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a SOC marker (Start of Codestream)

    +
    Parameters
    + + + + + + + +
    p_j2kthe jpeg2000 file codec.
    p_streamXXX needs data
    p_managerthe user event manager.
    p_j2kthe jpeg2000 file codec.
    p_streamFIXME DOC
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, J2K_MS_SOC, J2K_STATE_MHSIZ, opj_j2k::m_decoder, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_codestream_index::main_head_start, opj_event_msg(), OPJ_FALSE, opj_j2k_add_mhmarker(), opj_read_bytes, opj_stream_read_data(), opj_stream_tell(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_read_header_procedure().

    + +
    +
    + +

    ◆ opj_j2k_read_sod()

    + + + +

    ◆ opj_j2k_read_sot()

    + + + +

    ◆ opj_j2k_read_SPCod_SPCoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 compno,
    OPJ_BYTEp_header_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a SPCod or SPCoc element, i.e.

    +

    the coding style of a given component of a tile.

    Parameters
    + + + + + + +
    p_j2kthe jpeg2000 codec.
    compnoFIXME DOC
    p_header_datathe data contained in the COM box.
    p_header_sizethe size of the data contained in the COM marker.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, EVT_ERROR, J2K_CCP_CSTY_PRT, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_J2K_MAXRLVLS, opj_read_bytes, OPJ_TRUE, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_read_coc(), and opj_j2k_read_cod().

    + +
    +
    + +

    ◆ opj_j2k_read_SQcd_SQcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 compno,
    OPJ_BYTEp_header_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a SQcd or SQcc element, i.e.

    +

    the quantization values of a band in the QCD or QCC.

    +
    Parameters
    + + + + + + +
    p_j2kJ2K codec.
    compnothe component number to output.
    p_header_datathe data buffer.
    p_header_sizepointer to the size of the data buffer, it is changed by the function.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_cp::correct, EVT_ERROR, EVT_WARNING, opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_stepsize::mant, opj_tccp::numgbits, opj_event_msg(), OPJ_FALSE, OPJ_J2K_MAXBANDS, opj_read_bytes, OPJ_TRUE, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_read_qcc(), and opj_j2k_read_qcd().

    + +
    +
    + +

    ◆ opj_j2k_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_tp_j2k,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a tile header.

    +
    Parameters
    + + + + + + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_dec_memory_marker_handler::handler, opj_dec_memory_marker_handler::id, J2K_MS_EOC, J2K_MS_SOD, J2K_MS_SOT, J2K_STATE_DATA, J2K_STATE_EOC, J2K_STATE_NEOC, J2K_STATE_TPH, J2K_STATE_TPHSOT, opj_j2k_dec::m_can_decode, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_data, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k_dec::m_header_data_size, opj_j2k_dec::m_last_sot_read_pos, opj_tcp::m_nb_tile_parts, opj_j2k_dec::m_nb_tile_parts_correction, opj_j2k_dec::m_nb_tile_parts_correction_checked, opj_j2k_dec::m_skip_data, opj_j2k_dec::m_sot_length, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_tcd, opj_tcd_tile::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_tlmarker(), opj_j2k_get_marker_handler(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_sod(), opj_read_bytes, opj_realloc(), opj_stream_get_number_byte_left(), opj_stream_read_data(), opj_stream_skip(), opj_stream_tell(), opj_tcd_get_decoded_tile_size(), opj_tcd_init_decode_tile(), OPJ_TRUE, opj_dec_memory_marker_handler::states, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::th, opj_tcd_image::tiles, opj_cp::tw, opj_tcd_tile::x0, opj_tcd_tile::x1, opj_tcd_tile::y0, and opj_tcd_tile::y1.

    + +

    Referenced by opj_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tiles(), and opj_jp2_read_tile_header().

    + +
    +
    + +

    ◆ opj_j2k_read_tlm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_tlm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a TLM marker (Tile Length Marker)

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and OPJ_UNUSED.

    + +
    +
    + +

    ◆ opj_j2k_read_unk()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_read_unk (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    OPJ_UINT32output_marker,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads an unknown marker.

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object to read from.
    output_markerFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the marker could be deduced.
    + +

    References opj_j2k::cstr_index, EVT_ERROR, EVT_WARNING, opj_dec_memory_marker_handler::id, J2K_MS_SOT, J2K_MS_UNK, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_event_msg(), OPJ_FALSE, opj_j2k_add_mhmarker(), opj_j2k_get_marker_handler(), opj_read_bytes, opj_stream_read_data(), opj_stream_tell(), OPJ_TRUE, and opj_dec_memory_marker_handler::states.

    + +

    Referenced by opj_j2k_read_header_procedure().

    + +
    +
    + +

    ◆ opj_j2k_set_cinema_parameters()

    + + + +

    ◆ opj_j2k_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_tp_j2k,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +
    Parameters
    + + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_image::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_image_comp::factor, J2K_STATE_TPHSOT, opj_j2k::m_cp, opj_tcp::m_data, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_int_ceildiv(), opj_j2k_update_image_dimensions(), opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_set_decode_area().

    + +
    +
    + +

    ◆ opj_j2k_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_tp_j2k,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the indices of the components to decode.

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 codec.
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References EVT_ERROR, opj_j2k_dec::m_comps_indices_to_decode, opj_j2k::m_decoder, opj_j2k_dec::m_numcomps_to_decode, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_set_decoded_components().

    + +
    +
    + +

    ◆ opj_j2k_set_decoded_resolution_factor()

    + + + +

    ◆ opj_j2k_set_imf_parameters()

    + + + +

    ◆ opj_j2k_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_tj2k,
    OPJ_UINT32 num_threads 
    )
    +
    +
    + +

    ◆ opj_j2k_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_j2k_setup_decoder (opj_j2k_tj2k,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder decoding parameters using user parameters.

    +

    Decoding parameters are returned in j2k->cp.

    Parameters
    + + + +
    j2kJ2K decompressor handle
    parametersdecompression parameters
    +
    +
    + +

    References opj_cp::correct, opj_dparameters::cp_layer, opj_dparameters::cp_reduce, opj_j2k::dump_state, opj_cp::exp_comps, opj_dparameters::flags, opj_dparameters::jpwl_correct, opj_dparameters::jpwl_exp_comps, opj_dparameters::jpwl_max_tiles, opj_j2k::m_cp, opj_cp::m_dec, opj_decoding_param::m_layer, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_cp::max_tiles, and OPJ_DPARAMETERS_DUMP_FLAG.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_setup_decoder().

    + +
    +
    + +

    ◆ opj_j2k_setup_decoding()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_decoding (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on decoding data.

    +

    Developpers wanting to extend the library can add their own reading procedures.

    + +

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_decode_tiles(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_decode().

    + +
    +
    + +

    ◆ opj_j2k_setup_decoding_tile()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_decoding_tile (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on decoding one tile.

    +

    Developpers wanting to extend the library can add their own reading procedures.

    + +

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_decode_one_tile(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_get_tile().

    + +
    +
    + +

    ◆ opj_j2k_setup_decoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_decoding_validation (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the validation ,i.e.

    +

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    + +

    References opj_j2k::m_validation_list, OPJ_FALSE, opj_j2k_build_decoder(), opj_j2k_decoding_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_read_header().

    + +
    +
    + +

    ◆ opj_j2k_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_tp_j2k,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cp::comment, opj_poc::compno0, opj_poc::compno1, opj_image::comps, opj_cparameters::cp_cinema, opj_cparameters::cp_comment, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_matrice, opj_cparameters::cp_rsiz, opj_cparameters::cp_tdx, opj_cparameters::cp_tdy, opj_cparameters::cp_tx0, opj_cparameters::cp_ty0, opj_tccp::csty, opj_cparameters::csty, opj_image_comp::dx, opj_image_comp::dy, opj_cp::epb_on, opj_cp::epc_on, opj_cp::esd_on, EVT_ERROR, EVT_WARNING, opj_image_comp::h, opj_cp::hprot_MH, opj_cp::hprot_TPH, opj_cp::hprot_TPH_tileno, opj_cp::info_on, opj_cparameters::irreversible, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_poc::layno1, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_encoding_param::m_disto_alloc, opj_cp::m_enc, opj_encoding_param::m_fixed_alloc, opj_encoding_param::m_fixed_quality, opj_encoding_param::m_matrice, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_cparameters::max_comp_size, opj_cparameters::max_cs_size, opj_cparameters::mct_data, opj_cparameters::mode, opj_image::numcomps, opj_tccp::numgbits, opj_cparameters::numpocs, opj_cparameters::numresolution, opj_tccp::numresolutions, opj_calculate_norms(), opj_calloc(), OPJ_CINEMA2K, OPJ_CINEMA2K_24, OPJ_CINEMA2K_48, OPJ_CINEMA4K, OPJ_CINEMA4K_24, OPJ_CINEMA_24_COMP, OPJ_CINEMA_24_CS, OPJ_CINEMA_48_COMP, OPJ_CINEMA_48_CS, opj_dwt_calc_explicit_stepsizes(), opj_event_msg(), OPJ_EXTENSION_MCT, OPJ_EXTENSION_NONE, OPJ_FALSE, opj_free(), opj_int_ceildiv(), opj_int_floorlog2(), OPJ_IS_BROADCAST, OPJ_IS_CINEMA, OPJ_IS_IMF, OPJ_IS_PART2, OPJ_IS_STORAGE, opj_j2k_check_poc_val(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), OPJ_J2K_MAXRLVLS, opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_mct_encoding(), opj_malloc(), opj_matrix_inversion_f(), OPJ_MCT, OPJ_OFF, OPJ_PROFILE_CINEMA_2K, OPJ_PROFILE_CINEMA_4K, OPJ_PROFILE_CINEMA_S2K, OPJ_PROFILE_CINEMA_S4K, OPJ_PROFILE_NONE, OPJ_PROFILE_PART2, OPJ_STD_RSIZ, OPJ_TRUE, opj_version(), opj_cparameters::POC, opj_cp::pprot, opj_cp::pprot_packno, opj_cp::pprot_tileno, opj_tccp::prch, opj_cparameters::prch_init, opj_tccp::prcw, opj_cparameters::prcw_init, opj_image_comp::prec, opj_poc::prg1, opj_cparameters::prog_order, opj_tccp::qmfbid, opj_tccp::qntsty, opj_cp::red_on, opj_cparameters::res_spec, opj_poc::resno0, opj_poc::resno1, opj_cparameters::roi_compno, opj_cparameters::roi_shift, opj_tccp::roishift, opj_cp::rsiz, opj_cparameters::rsiz, opj_cp::sens_addr, opj_cp::sens_MH, opj_cp::sens_range, opj_cp::sens_size, opj_cp::sens_TPH, opj_cp::sens_TPH_tileno, opj_image_comp::sgnd, tcp, opj_cparameters::tcp_distoratio, opj_cparameters::tcp_mct, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_poc::tile, opj_cparameters::tile_size_on, opj_cparameters::tp_flag, opj_cparameters::tp_on, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image::x1, and opj_image::y1.

    + +

    Referenced by opj_create_compress(), and opj_jp2_setup_encoder().

    + +
    +
    + +

    ◆ opj_j2k_setup_encoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_encoding_validation (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the validation ,i.e.

    +

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    + +

    References opj_j2k::m_validation_list, OPJ_FALSE, opj_j2k_build_encoder(), opj_j2k_encoding_validation(), opj_j2k_mct_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_start_compress().

    + +
    +
    + +

    ◆ opj_j2k_setup_end_compress()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_end_compress (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the validation ,i.e.

    +

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    + +

    References opj_j2k::m_cp, opj_j2k::m_procedure_list, OPJ_FALSE, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_destroy_header_memory(), opj_j2k_end_encoding(), opj_j2k_write_eoc(), opj_j2k_write_epc(), opj_j2k_write_updated_tlm(), opj_procedure_list_add_procedure(), OPJ_TRUE, and opj_cp::rsiz.

    + +

    Referenced by opj_j2k_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_setup_header_reading()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_setup_header_reading (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on reading header.

    +

    Developpers wanting to extend the library can add their own reading procedures.

    + +

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_read_header().

    + +
    +
    + +

    ◆ opj_j2k_setup_header_writing()

    + + + +

    ◆ opj_j2k_setup_mct_encoding()

    + + + +

    ◆ opj_j2k_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Starts a compression scheme, i.e.

    +

    validates the codec parameters, writes the header.

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the codec is valid.
    + +

    References opj_image::comps, opj_image_comp::data, EVT_ERROR, opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_image::numcomps, opj_copy_image_header(), opj_event_msg(), OPJ_FALSE, opj_image_create0(), opj_j2k_exec(), opj_j2k_setup_encoding_validation(), opj_j2k_setup_header_writing(), and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_start_compress().

    + +
    +
    + +

    ◆ opj_j2k_tcp_data_destroy()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_j2k_tcp_data_destroy (opj_tcp_tp_tcp)
    +
    +static
    +
    + +

    Destroys the data inside a tile coding parameter structure.

    +
    Parameters
    + + +
    p_tcpthe tile coding parameter which contain data to destroy.
    +
    +
    + +

    References opj_tcp::m_data, opj_tcp::m_data_size, and opj_free().

    + +

    Referenced by opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), and opj_j2k_tcp_destroy().

    + +
    +
    + +

    ◆ opj_j2k_tcp_destroy()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_j2k_tcp_destroy (opj_tcp_tp_tcp)
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_update_image_data()

    + + + +

    ◆ opj_j2k_update_image_dimensions()

    + + + +

    ◆ opj_j2k_update_rates()

    + + + +

    ◆ opj_j2k_update_tlm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_update_tlm (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_part_size 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_all_coc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_all_coc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes COC marker for each component.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_compare_coc(), opj_j2k_write_coc(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_all_qcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_all_qcc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes QCC marker for each component.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_compare_qcc(), opj_j2k_write_qcc(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_all_tile_parts()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_all_tile_parts (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 total_data_size,
    opj_stream_private_tp_stream,
    struct opj_event_mgrp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_cbd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_cbd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the CBD marker (Component bit depth definition)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_image::comps, EVT_ERROR, J2K_MS_CBD, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, opj_write_bytes, opj_image_comp::prec, and opj_image_comp::sgnd.

    + +

    Referenced by opj_j2k_write_mct_data_group().

    + +
    +
    + +

    ◆ opj_j2k_write_coc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_coc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the COC marker (Coding style component)

    +
    Parameters
    + + + + + +
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_write_coc_in_memory(), opj_realloc(), opj_stream_write_data(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_write_all_coc().

    + +
    +
    + +

    ◆ opj_j2k_write_coc_in_memory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_coc_in_memory (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the COC marker (Coding style component)

    +
    Parameters
    + + + + + + +
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_dataFIXME DOC
    p_data_writtenFIXME DOC
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tccp::csty, J2K_MS_COC, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_write_SPCod_SPCoc(), opj_write_bytes, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_write_coc(), and opj_j2k_write_first_tile_part().

    + +
    +
    + +

    ◆ opj_j2k_write_cod()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_cod (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_com()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_com (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the COM marker (comment)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_cp::comment, EVT_ERROR, J2K_MS_COM, opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_eoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_eoc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the EOC marker (End of Codestream)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References J2K_MS_EOC, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_flush(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_setup_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_write_epc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_epc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes EPC ????

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_codestream_index::codestream_size, opj_j2k::cstr_index, opj_codestream_index::main_head_start, opj_stream_tell(), OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_j2k_setup_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_write_first_tile_part()

    + + + +

    ◆ opj_j2k_write_float_to_float()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_float_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_write_float.

    + +
    +
    + +

    ◆ opj_j2k_write_float_to_float64()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_float_to_float64 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_write_double.

    + +
    +
    + +

    ◆ opj_j2k_write_float_to_int16()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_float_to_int16 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_write_bytes.

    + +
    +
    + +

    ◆ opj_j2k_write_float_to_int32()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_float_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    +
    +static
    +
    + +

    References opj_write_bytes.

    + +
    +
    + +

    ◆ opj_j2k_write_mcc_record()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_mcc_record (opj_j2k_tp_j2k,
    opj_simple_mcc_decorrelation_data_tp_mcc_record,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_mco()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_mco (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_mct_data_group()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_mct_data_group (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the CBD-MCT-MCC-MCO markers (Multi components transform)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_mcc_records, opj_tcp::m_mct_records, opj_tcp::m_nb_mcc_records, opj_tcp::m_nb_mct_records, OPJ_FALSE, opj_j2k_write_cbd(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), OPJ_TRUE, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_mct_record()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_mct_record (opj_j2k_tp_j2k,
    opj_mct_data_tp_mct_record,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the MCT marker (Multiple Component Transform)

    +
    Parameters
    + + + + + +
    p_j2kJ2K codec.
    p_mct_recordFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, J2K_MS_MCT, opj_mct_data::m_array_type, opj_mct_data::m_data, opj_mct_data::m_data_size, opj_mct_data::m_element_type, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_mct_data::m_index, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_write_mct_data_group().

    + +
    +
    + +

    ◆ opj_j2k_write_plt_in_memory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_plt_in_memory (opj_j2k_tp_j2k,
    opj_tcd_marker_info_tmarker_info,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Write one or more PLT markers in the provided buffer.

    + +

    References EVT_ERROR, J2K_MS_PLT, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, opj_tcd_marker_info::p_packet_size, and opj_tcd_marker_info::packet_count.

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_j2k_write_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_poc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_poc_in_memory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_poc_in_memory (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the POC marker (Progression Order Change)

    +
    Parameters
    + + + + + +
    p_j2kJ2K codec.
    p_dataFIXME DOC
    p_data_writtenthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_poc::compno0, opj_poc::compno1, J2K_MS_POC, opj_poc::layno1, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_tcp::numlayers, opj_tcp::numpocs, opj_tccp::numresolutions, opj_int_min(), OPJ_UNUSED, opj_write_bytes, opj_tcp::pocs, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_write_first_tile_part(), and opj_j2k_write_poc().

    + +
    +
    + +

    ◆ opj_j2k_write_qcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_qcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the QCC marker (quantization component)

    +
    Parameters
    + + + + + +
    p_comp_nothe index of the component to output.
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_qcc_in_memory(), opj_realloc(), opj_stream_write_data(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_write_all_qcc().

    + +
    +
    + +

    ◆ opj_j2k_write_qcc_in_memory()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_j2k_write_qcc_in_memory (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the QCC marker (quantization component)

    +
    Parameters
    + + + + + + +
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_dataFIXME DOC
    p_data_writtenthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References J2K_MS_QCC, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_SQcd_SQcc(), and opj_write_bytes.

    + +

    Referenced by opj_j2k_write_first_tile_part(), and opj_j2k_write_qcc().

    + +
    +
    + +

    ◆ opj_j2k_write_qcd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_qcd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the QCD marker (quantization default)

    +
    Parameters
    + + + + +
    p_j2kJ2K codec.
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, J2K_MS_QCD, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_SQcd_SQcc(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_regions()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_regions (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes regions of interests.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_write_rgn(), OPJ_TRUE, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_rgn()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_rgn (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_UINT32 nb_comps,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the RGN marker (Region Of Interest)

    +
    Parameters
    + + + + + + + +
    p_tile_nothe tile to output
    p_comp_nothe component to output
    nb_compsthe number of components
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References J2K_MS_RGN, opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, opj_write_bytes, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_write_regions().

    + +
    +
    + +

    ◆ opj_j2k_write_siz()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_siz (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_j2k_write_soc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_soc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the SOC marker (Start Of Codestream)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References J2K_MS_SOC, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_sod()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_sod (opj_j2k_tp_j2k,
    opj_tcd_tp_tile_coder,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 total_data_size,
    const opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the SOD marker (Start of data)

    +

    This also writes optional PLT markers (before SOD)

    +
    Parameters
    + + + + + + + + +
    p_j2kJ2K codec.
    p_tile_coderFIXME DOC
    p_dataFIXME DOC
    p_data_writtenFIXME DOC
    total_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tcd::cur_tp_num, EVT_ERROR, J2K_MS_SOD, opj_j2k_enc::m_current_poc_tile_part_number, opj_j2k::m_current_tile_number, opj_j2k_enc::m_current_tile_part_number, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k_enc::m_reserved_bytes_for_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_write_plt_in_memory(), opj_malloc(), opj_tcd_encode_tile(), opj_tcd_marker_info_create(), opj_tcd_marker_info_destroy(), OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, opj_tcd_tile::packno, opj_codestream_info::packno, opj_tcd::tcd_image, opj_tcd_image::tiles, and opj_tcd::tp_num.

    + +

    Referenced by opj_j2k_write_all_tile_parts(), and opj_j2k_write_first_tile_part().

    + +
    +
    + +

    ◆ opj_j2k_write_sot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_sot (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32 total_data_size,
    OPJ_UINT32p_data_written,
    const opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the SOT marker (Start of tile-part)

    +
    Parameters
    + + + + + + + +
    p_j2kJ2K codec.
    p_dataOutput buffer
    total_data_sizeOutput buffer size
    p_data_writtenNumber of bytes written into stream
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, J2K_MS_SOT, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k_enc::m_current_tile_part_number, opj_j2k::m_encoder, opj_tcp::m_nb_tile_parts, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, and opj_cp::tcps.

    + +

    Referenced by opj_j2k_write_all_tile_parts(), and opj_j2k_write_first_tile_part().

    + +
    +
    + +

    ◆ opj_j2k_write_SPCod_SPCoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes a SPCod or SPCoc element, i.e.

    +

    the coding style of a given component of a tile.

    +
    Parameters
    + + + + + + + +
    p_j2kJ2K codec.
    p_tile_noFIXME DOC
    p_comp_nothe component number to output.
    p_dataFIXME DOC
    p_header_sizeFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    FIXME DOC
    + +

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, EVT_ERROR, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, opj_write_bytes, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by opj_j2k_write_coc_in_memory(), and opj_j2k_write_cod().

    + +
    +
    + +

    ◆ opj_j2k_write_SQcd_SQcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes a SQcd or SQcc element, i.e.

    +

    the quantization values of a band in the QCD or QCC.

    +
    Parameters
    + + + + + + + +
    p_tile_nothe tile to output.
    p_comp_nothe component number to output.
    p_datathe data buffer.
    p_header_sizepointer to the size of the data buffer, it is changed by the function.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_stepsize::mant, opj_tccp::numgbits, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, opj_write_bytes, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_write_qcc_in_memory(), and opj_j2k_write_qcd().

    + +
    +
    + +

    ◆ opj_j2k_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Writes a tile.

    +
    Parameters
    + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tcd_tile::comps, EVT_ERROR, opj_tcd::image, opj_j2k::m_tcd, opj_image::numcomps, opj_alloc_tile_component_data(), opj_event_msg(), OPJ_FALSE, opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_tcd_copy_tile_data(), OPJ_TRUE, opj_tcd::tcd_image, and opj_tcd_image::tiles.

    + +

    Referenced by opj_create_compress(), and opj_jp2_write_tile().

    + +
    +
    + +

    ◆ opj_j2k_write_tlm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_tlm (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the TLM marker (Tile Length Marker)

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References EVT_ERROR, J2K_MS_TLM, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_j2k_enc::m_tlm_start, opj_j2k_enc::m_total_tile_parts, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_tell(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_j2k_setup_header_writing().

    + +
    +
    + +

    ◆ opj_j2k_write_updated_tlm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_j2k_write_updated_tlm (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the updated tlm.

    +
    Parameters
    + + + + +
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::m_encoder, opj_j2k::m_specific_param, opj_j2k_enc::m_tlm_sot_offsets_buffer, opj_j2k_enc::m_tlm_start, opj_j2k_enc::m_total_tile_parts, OPJ_FALSE, opj_stream_seek(), opj_stream_tell(), opj_stream_write_data(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_setup_end_compress().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ j2k_mct_read_functions_to_float

    + +
    +
    + + + + + +
    + + + + +
    const opj_j2k_mct_function j2k_mct_read_functions_to_float[]
    +
    +static
    +
    +
    + +

    ◆ j2k_mct_read_functions_to_int32

    + +
    +
    + + + + + +
    + + + + +
    const opj_j2k_mct_function j2k_mct_read_functions_to_int32[]
    +
    +static
    +
    +
    + +

    ◆ j2k_mct_write_functions_from_float

    + +
    +
    + + + + + +
    + + + + +
    const opj_j2k_mct_function j2k_mct_write_functions_from_float[]
    +
    +static
    +
    +
    + +

    ◆ j2k_memory_marker_handler_tab

    + +
    +
    + + + + + +
    + + + + +
    const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab[]
    +
    +static
    +
    + +

    Referenced by opj_j2k_get_marker_handler().

    + +
    +
    + +

    ◆ j2k_prog_order_list

    + +
    +
    + + + + + +
    + + + + +
    const j2k_prog_order_t j2k_prog_order_list[]
    +
    +static
    +
    +Initial value:
    = {
    +
    {OPJ_CPRL, "CPRL"},
    +
    {OPJ_LRCP, "LRCP"},
    +
    {OPJ_PCRL, "PCRL"},
    +
    {OPJ_RLCP, "RLCP"},
    +
    {OPJ_RPCL, "RPCL"},
    +
    {(OPJ_PROG_ORDER) - 1, ""}
    +
    }
    +
    +

    Referenced by opj_j2k_convert_progression_order().

    + +
    +
    + +

    ◆ MCT_ELEMENT_SIZE

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_UINT32 MCT_ELEMENT_SIZE[]
    +
    +static
    +
    +Initial value:
    = {
    +
    2,
    +
    4,
    +
    4,
    +
    8
    +
    }
    +
    +

    FIXME DOC.

    + +

    Referenced by opj_j2k_add_mct(), and opj_j2k_setup_mct_encoding().

    + +
    +
    + +

    ◆ tabMaxSubLevelFromMainLevel

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_UINT16 tabMaxSubLevelFromMainLevel[]
    +
    +static
    +
    +Initial value:
    = {
    +
    15,
    +
    1,
    +
    1,
    +
    1,
    +
    2,
    +
    3,
    +
    4,
    +
    5,
    +
    6,
    +
    7,
    +
    8,
    +
    9
    +
    }
    +
    +

    Referenced by opj_j2k_is_imf_compliant().

    + +
    +
    +
    +
    static void opj_j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1600
    +
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    +
    static void opj_j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1413
    +
    static void opj_j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1515
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    static void opj_j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1447
    +
    static void opj_j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1532
    +
    static void opj_j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1566
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    static void opj_j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1498
    +
    static void opj_j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1464
    +
    static void opj_j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1583
    +
    static void opj_j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1430
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    static void opj_j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1549
    +
    static void opj_j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1481
    + + + + diff --git a/build/doc/html/j2k_8h.html b/build/doc/html/j2k_8h.html new file mode 100644 index 000000000..cd1fb733a --- /dev/null +++ b/build/doc/html/j2k_8h.html @@ -0,0 +1,2761 @@ + + + + + + + +OpenJPEG: j2k.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    j2k.h File Reference
    +
    +
    + +

    The JPEG-2000 Codestream Reader/Writer (J2K) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  opj_stepsize
     Quantization stepsize. More...
     
    struct  opj_tccp
     Tile-component coding parameters. More...
     
    struct  opj_mct_data
     FIXME DOC. More...
     
    struct  opj_simple_mcc_decorrelation_data
     FIXME DOC. More...
     
    struct  opj_ppx_struct
     
    struct  opj_tcp
     Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    struct  opj_encoding_param
     
    struct  opj_decoding_param
     
    struct  opj_cp
     Coding parameters. More...
     
    struct  opj_j2k_dec
     
    struct  opj_j2k_enc
     
    struct  opj_j2k
     JPEG-2000 codestream reader/writer. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define J2K_CP_CSTY_PRT   0x01
     
    #define J2K_CP_CSTY_SOP   0x02
     
    #define J2K_CP_CSTY_EPH   0x04
     
    #define J2K_CCP_CSTY_PRT   0x01
     
    #define J2K_CCP_CBLKSTY_LAZY   0x01
     Selective arithmetic coding bypass. More...
     
    #define J2K_CCP_CBLKSTY_RESET   0x02
     Reset context probabilities on coding pass boundaries. More...
     
    #define J2K_CCP_CBLKSTY_TERMALL   0x04
     Termination on each coding pass. More...
     
    #define J2K_CCP_CBLKSTY_VSC   0x08
     Vertically stripe causal context. More...
     
    #define J2K_CCP_CBLKSTY_PTERM   0x10
     Predictable termination. More...
     
    #define J2K_CCP_CBLKSTY_SEGSYM   0x20
     Segmentation symbols are used. More...
     
    #define J2K_CCP_QNTSTY_NOQNT   0
     
    #define J2K_CCP_QNTSTY_SIQNT   1
     
    #define J2K_CCP_QNTSTY_SEQNT   2
     
    #define J2K_MS_SOC   0xff4f
     SOC marker value. More...
     
    #define J2K_MS_SOT   0xff90
     SOT marker value. More...
     
    #define J2K_MS_SOD   0xff93
     SOD marker value. More...
     
    #define J2K_MS_EOC   0xffd9
     EOC marker value. More...
     
    #define J2K_MS_SIZ   0xff51
     SIZ marker value. More...
     
    #define J2K_MS_COD   0xff52
     COD marker value. More...
     
    #define J2K_MS_COC   0xff53
     COC marker value. More...
     
    #define J2K_MS_RGN   0xff5e
     RGN marker value. More...
     
    #define J2K_MS_QCD   0xff5c
     QCD marker value. More...
     
    #define J2K_MS_QCC   0xff5d
     QCC marker value. More...
     
    #define J2K_MS_POC   0xff5f
     POC marker value. More...
     
    #define J2K_MS_TLM   0xff55
     TLM marker value. More...
     
    #define J2K_MS_PLM   0xff57
     PLM marker value. More...
     
    #define J2K_MS_PLT   0xff58
     PLT marker value. More...
     
    #define J2K_MS_PPM   0xff60
     PPM marker value. More...
     
    #define J2K_MS_PPT   0xff61
     PPT marker value. More...
     
    #define J2K_MS_SOP   0xff91
     SOP marker value. More...
     
    #define J2K_MS_EPH   0xff92
     EPH marker value. More...
     
    #define J2K_MS_CRG   0xff63
     CRG marker value. More...
     
    #define J2K_MS_COM   0xff64
     COM marker value. More...
     
    #define J2K_MS_CBD   0xff78
     CBD marker value. More...
     
    #define J2K_MS_MCC   0xff75
     MCC marker value. More...
     
    #define J2K_MS_MCT   0xff74
     MCT marker value. More...
     
    #define J2K_MS_MCO   0xff77
     MCO marker value. More...
     
    #define J2K_MS_UNK   0
     UNKNOWN marker value. More...
     
    #define J2K_MS_EPC   0xff68
     EPC marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_EPB   0xff66
     EPB marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_ESD   0xff67
     ESD marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_RED   0xff69
     RED marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_SEC   0xff65
     SEC marker value (Part 8: Secure JPEG 2000) More...
     
    #define J2K_MS_INSEC   0xff94
     INSEC marker value (Part 8: Secure JPEG 2000) More...
     
    #define J2K_MAX_POCS   32
     Maximum number of POCs. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef enum J2K_STATUS J2K_STATUS
     Values that specify the status of the decoding process when decoding the main header. More...
     
    typedef enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
     Type of elements storing in the MCT data. More...
     
    typedef enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
     Type of MCT array. More...
     
    typedef enum T2_MODE J2K_T2_MODE
     T2 encoding mode. More...
     
    typedef struct opj_stepsize opj_stepsize_t
     Quantization stepsize. More...
     
    typedef struct opj_tccp opj_tccp_t
     Tile-component coding parameters. More...
     
    typedef struct opj_mct_data opj_mct_data_t
     FIXME DOC. More...
     
    typedef struct opj_simple_mcc_decorrelation_data opj_simple_mcc_decorrelation_data_t
     FIXME DOC. More...
     
    typedef struct opj_ppx_struct opj_ppx
     
    typedef struct opj_tcp opj_tcp_t
     Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    typedef struct opj_encoding_param opj_encoding_param_t
     
    typedef struct opj_decoding_param opj_decoding_param_t
     
    typedef struct opj_cp opj_cp_t
     Coding parameters. More...
     
    typedef struct opj_j2k_dec opj_j2k_dec_t
     
    typedef struct opj_j2k_enc opj_j2k_enc_t
     
    typedef struct opj_j2k opj_j2k_t
     JPEG-2000 codestream reader/writer. More...
     
    + + + + + + + + + + + + + +

    +Enumerations

    enum  J2K_STATUS {
    +  J2K_STATE_NONE = 0x0000, +J2K_STATE_MHSOC = 0x0001, +J2K_STATE_MHSIZ = 0x0002, +J2K_STATE_MH = 0x0004, +
    +  J2K_STATE_TPHSOT = 0x0008, +J2K_STATE_TPH = 0x0010, +J2K_STATE_MT = 0x0020, +J2K_STATE_NEOC = 0x0040, +
    +  J2K_STATE_DATA = 0x0080, +J2K_STATE_EOC = 0x0100, +J2K_STATE_ERR = 0x8000 +
    + }
     Values that specify the status of the decoding process when decoding the main header. More...
     
    enum  MCT_ELEMENT_TYPE { MCT_TYPE_INT16 = 0, +MCT_TYPE_INT32 = 1, +MCT_TYPE_FLOAT = 2, +MCT_TYPE_DOUBLE = 3 + }
     Type of elements storing in the MCT data. More...
     
    enum  MCT_ARRAY_TYPE { MCT_TYPE_DEPENDENCY = 0, +MCT_TYPE_DECORRELATION = 1, +MCT_TYPE_OFFSET = 2 + }
     Type of MCT array. More...
     
    enum  T2_MODE { THRESH_CALC = 0, +FINAL_PASS = 1 + }
     T2 encoding mode. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    void opj_j2k_setup_decoder (opj_j2k_t *j2k, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_t *j2k, OPJ_UINT32 num_threads)
     
    opj_j2k_topj_j2k_create_compress (void)
     Creates a J2K compression structure. More...
     
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    const char * opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
     Converts an enum type progression order to string type. More...
     
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 codestream header structure. More...
     
    void opj_j2k_destroy (opj_j2k_t *p_j2k)
     Destroys a jpeg2000 codec. More...
     
    void j2k_destroy_cstr_index (opj_codestream_index_t *p_cstr_ind)
     Destroys a codestream index structure. More...
     
    OPJ_BOOL opj_j2k_decode_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    opj_j2k_topj_j2k_create_decompress (void)
     Creates a J2K decompression structure. More...
     
    void j2k_dump (opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the J2K decompression structure . More...
     
    void j2k_dump_image_header (opj_image_t *image, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump an image header structure. More...
     
    void j2k_dump_image_comp_header (opj_image_comp_t *comp, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump a component image header structure. More...
     
    opj_codestream_info_v2_tj2k_get_cstr_info (opj_j2k_t *p_j2k)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tj2k_get_cstr_index (opj_j2k_t *p_j2k)
     Get the codestream index from a JPEG2000 codec. More...
     
    OPJ_BOOL opj_j2k_decode (opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_get_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor (opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_j2k_encode (opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Encodes an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_setup_mct_encoding (opj_tcp_t *p_tcp, opj_image_t *p_image)
     
    +

    Detailed Description

    +

    The JPEG-2000 Codestream Reader/Writer (J2K)

    +

    The functions in J2K.C have for goal to read/write the several parts of the codestream: markers and data.

    +

    Macro Definition Documentation

    + +

    ◆ J2K_CCP_CBLKSTY_LAZY

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_LAZY   0x01
    +
    + +

    Selective arithmetic coding bypass.

    + +
    +
    + +

    ◆ J2K_CCP_CBLKSTY_PTERM

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_PTERM   0x10
    +
    + +

    Predictable termination.

    + +
    +
    + +

    ◆ J2K_CCP_CBLKSTY_RESET

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_RESET   0x02
    +
    + +

    Reset context probabilities on coding pass boundaries.

    + +
    +
    + +

    ◆ J2K_CCP_CBLKSTY_SEGSYM

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_SEGSYM   0x20
    +
    + +

    Segmentation symbols are used.

    + +
    +
    + +

    ◆ J2K_CCP_CBLKSTY_TERMALL

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_TERMALL   0x04
    +
    + +

    Termination on each coding pass.

    + +
    +
    + +

    ◆ J2K_CCP_CBLKSTY_VSC

    + +
    +
    + + + + +
    #define J2K_CCP_CBLKSTY_VSC   0x08
    +
    + +

    Vertically stripe causal context.

    + +
    +
    + +

    ◆ J2K_CCP_CSTY_PRT

    + +
    +
    + + + + +
    #define J2K_CCP_CSTY_PRT   0x01
    +
    + +
    +
    + +

    ◆ J2K_CCP_QNTSTY_NOQNT

    + +
    +
    + + + + +
    #define J2K_CCP_QNTSTY_NOQNT   0
    +
    + +
    +
    + +

    ◆ J2K_CCP_QNTSTY_SEQNT

    + +
    +
    + + + + +
    #define J2K_CCP_QNTSTY_SEQNT   2
    +
    + +
    +
    + +

    ◆ J2K_CCP_QNTSTY_SIQNT

    + +
    +
    + + + + +
    #define J2K_CCP_QNTSTY_SIQNT   1
    +
    + +
    +
    + +

    ◆ J2K_CP_CSTY_EPH

    + +
    +
    + + + + +
    #define J2K_CP_CSTY_EPH   0x04
    +
    + +
    +
    + +

    ◆ J2K_CP_CSTY_PRT

    + +
    +
    + + + + +
    #define J2K_CP_CSTY_PRT   0x01
    +
    + +
    +
    + +

    ◆ J2K_CP_CSTY_SOP

    + +
    +
    + + + + +
    #define J2K_CP_CSTY_SOP   0x02
    +
    + +
    +
    + +

    ◆ J2K_MAX_POCS

    + +
    +
    + + + + +
    #define J2K_MAX_POCS   32
    +
    + +

    Maximum number of POCs.

    + +
    +
    + +

    ◆ J2K_MS_CBD

    + +
    +
    + + + + +
    #define J2K_MS_CBD   0xff78
    +
    + +

    CBD marker value.

    + +
    +
    + +

    ◆ J2K_MS_COC

    + +
    +
    + + + + +
    #define J2K_MS_COC   0xff53
    +
    + +

    COC marker value.

    + +
    +
    + +

    ◆ J2K_MS_COD

    + +
    +
    + + + + +
    #define J2K_MS_COD   0xff52
    +
    + +

    COD marker value.

    + +
    +
    + +

    ◆ J2K_MS_COM

    + +
    +
    + + + + +
    #define J2K_MS_COM   0xff64
    +
    + +

    COM marker value.

    + +
    +
    + +

    ◆ J2K_MS_CRG

    + +
    +
    + + + + +
    #define J2K_MS_CRG   0xff63
    +
    + +

    CRG marker value.

    + +
    +
    + +

    ◆ J2K_MS_EOC

    + +
    +
    + + + + +
    #define J2K_MS_EOC   0xffd9
    +
    + +

    EOC marker value.

    + +
    +
    + +

    ◆ J2K_MS_EPB

    + +
    +
    + + + + +
    #define J2K_MS_EPB   0xff66
    +
    + +

    EPB marker value (Part 11: JPEG 2000 for Wireless)

    + +
    +
    + +

    ◆ J2K_MS_EPC

    + +
    +
    + + + + +
    #define J2K_MS_EPC   0xff68
    +
    + +

    EPC marker value (Part 11: JPEG 2000 for Wireless)

    + +
    +
    + +

    ◆ J2K_MS_EPH

    + +
    +
    + + + + +
    #define J2K_MS_EPH   0xff92
    +
    + +

    EPH marker value.

    + +
    +
    + +

    ◆ J2K_MS_ESD

    + +
    +
    + + + + +
    #define J2K_MS_ESD   0xff67
    +
    + +

    ESD marker value (Part 11: JPEG 2000 for Wireless)

    + +
    +
    + +

    ◆ J2K_MS_INSEC

    + +
    +
    + + + + +
    #define J2K_MS_INSEC   0xff94
    +
    + +

    INSEC marker value (Part 8: Secure JPEG 2000)

    + +
    +
    + +

    ◆ J2K_MS_MCC

    + +
    +
    + + + + +
    #define J2K_MS_MCC   0xff75
    +
    + +

    MCC marker value.

    + +
    +
    + +

    ◆ J2K_MS_MCO

    + +
    +
    + + + + +
    #define J2K_MS_MCO   0xff77
    +
    + +

    MCO marker value.

    + +
    +
    + +

    ◆ J2K_MS_MCT

    + +
    +
    + + + + +
    #define J2K_MS_MCT   0xff74
    +
    + +

    MCT marker value.

    + +
    +
    + +

    ◆ J2K_MS_PLM

    + +
    +
    + + + + +
    #define J2K_MS_PLM   0xff57
    +
    + +

    PLM marker value.

    + +
    +
    + +

    ◆ J2K_MS_PLT

    + +
    +
    + + + + +
    #define J2K_MS_PLT   0xff58
    +
    + +

    PLT marker value.

    + +
    +
    + +

    ◆ J2K_MS_POC

    + +
    +
    + + + + +
    #define J2K_MS_POC   0xff5f
    +
    + +

    POC marker value.

    + +
    +
    + +

    ◆ J2K_MS_PPM

    + +
    +
    + + + + +
    #define J2K_MS_PPM   0xff60
    +
    + +

    PPM marker value.

    + +
    +
    + +

    ◆ J2K_MS_PPT

    + +
    +
    + + + + +
    #define J2K_MS_PPT   0xff61
    +
    + +

    PPT marker value.

    + +
    +
    + +

    ◆ J2K_MS_QCC

    + +
    +
    + + + + +
    #define J2K_MS_QCC   0xff5d
    +
    + +

    QCC marker value.

    + +
    +
    + +

    ◆ J2K_MS_QCD

    + +
    +
    + + + + +
    #define J2K_MS_QCD   0xff5c
    +
    + +

    QCD marker value.

    + +
    +
    + +

    ◆ J2K_MS_RED

    + +
    +
    + + + + +
    #define J2K_MS_RED   0xff69
    +
    + +

    RED marker value (Part 11: JPEG 2000 for Wireless)

    + +
    +
    + +

    ◆ J2K_MS_RGN

    + +
    +
    + + + + +
    #define J2K_MS_RGN   0xff5e
    +
    + +

    RGN marker value.

    + +
    +
    + +

    ◆ J2K_MS_SEC

    + +
    +
    + + + + +
    #define J2K_MS_SEC   0xff65
    +
    + +

    SEC marker value (Part 8: Secure JPEG 2000)

    + +
    +
    + +

    ◆ J2K_MS_SIZ

    + +
    +
    + + + + +
    #define J2K_MS_SIZ   0xff51
    +
    + +

    SIZ marker value.

    + +
    +
    + +

    ◆ J2K_MS_SOC

    + +
    +
    + + + + +
    #define J2K_MS_SOC   0xff4f
    +
    + +

    SOC marker value.

    + +
    +
    + +

    ◆ J2K_MS_SOD

    + +
    +
    + + + + +
    #define J2K_MS_SOD   0xff93
    +
    + +

    SOD marker value.

    + +
    +
    + +

    ◆ J2K_MS_SOP

    + +
    +
    + + + + +
    #define J2K_MS_SOP   0xff91
    +
    + +

    SOP marker value.

    + +
    +
    + +

    ◆ J2K_MS_SOT

    + +
    +
    + + + + +
    #define J2K_MS_SOT   0xff90
    +
    + +

    SOT marker value.

    + +
    +
    + +

    ◆ J2K_MS_TLM

    + +
    +
    + + + + +
    #define J2K_MS_TLM   0xff55
    +
    + +

    TLM marker value.

    + +
    +
    + +

    ◆ J2K_MS_UNK

    + +
    +
    + + + + +
    #define J2K_MS_UNK   0
    +
    + +

    UNKNOWN marker value.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ J2K_MCT_ARRAY_TYPE

    + +
    +
    + + + + +
    typedef enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
    +
    + +

    Type of MCT array.

    + +
    +
    + +

    ◆ J2K_MCT_ELEMENT_TYPE

    + +
    +
    + + + + +
    typedef enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
    +
    + +

    Type of elements storing in the MCT data.

    + +
    +
    + +

    ◆ J2K_STATUS

    + +
    +
    + + + + +
    typedef enum J2K_STATUS J2K_STATUS
    +
    + +

    Values that specify the status of the decoding process when decoding the main header.

    +

    These values may be combined with a | operator.

    + +
    +
    + +

    ◆ J2K_T2_MODE

    + +
    +
    + + + + +
    typedef enum T2_MODE J2K_T2_MODE
    +
    + +

    T2 encoding mode.

    + +
    +
    + +

    ◆ opj_cp_t

    + +
    +
    + + + + +
    typedef struct opj_cp opj_cp_t
    +
    + +

    Coding parameters.

    + +
    +
    + +

    ◆ opj_decoding_param_t

    + +
    +
    + + + + +
    typedef struct opj_decoding_param opj_decoding_param_t
    +
    + +
    +
    + +

    ◆ opj_encoding_param_t

    + +
    +
    + + + + +
    typedef struct opj_encoding_param opj_encoding_param_t
    +
    + +
    +
    + +

    ◆ opj_j2k_dec_t

    + +
    +
    + + + + +
    typedef struct opj_j2k_dec opj_j2k_dec_t
    +
    + +
    +
    + +

    ◆ opj_j2k_enc_t

    + +
    +
    + + + + +
    typedef struct opj_j2k_enc opj_j2k_enc_t
    +
    + +
    +
    + +

    ◆ opj_j2k_t

    + +
    +
    + + + + +
    typedef struct opj_j2k opj_j2k_t
    +
    + +

    JPEG-2000 codestream reader/writer.

    + +
    +
    + +

    ◆ opj_mct_data_t

    + +
    +
    + + + + +
    typedef struct opj_mct_data opj_mct_data_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_ppx

    + +
    +
    + + + + +
    typedef struct opj_ppx_struct opj_ppx
    +
    + +
    +
    + +

    ◆ opj_simple_mcc_decorrelation_data_t

    + +
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_stepsize_t

    + +
    +
    + + + + +
    typedef struct opj_stepsize opj_stepsize_t
    +
    + +

    Quantization stepsize.

    + +
    +
    + +

    ◆ opj_tccp_t

    + +
    +
    + + + + +
    typedef struct opj_tccp opj_tccp_t
    +
    + +

    Tile-component coding parameters.

    + +
    +
    + +

    ◆ opj_tcp_t

    + +
    +
    + + + + +
    typedef struct opj_tcp opj_tcp_t
    +
    + +

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ J2K_STATUS

    + +
    +
    + + + + +
    enum J2K_STATUS
    +
    + +

    Values that specify the status of the decoding process when decoding the main header.

    +

    These values may be combined with a | operator.

    + + + + + + + + + + + + +
    Enumerator
    J2K_STATE_NONE 

    a SOC marker is expected

    +
    J2K_STATE_MHSOC 

    a SOC marker is expected

    +
    J2K_STATE_MHSIZ 

    a SIZ marker is expected

    +
    J2K_STATE_MH 

    the decoding process is in the main header

    +
    J2K_STATE_TPHSOT 

    the decoding process is in a tile part header and expects a SOT marker

    +
    J2K_STATE_TPH 

    the decoding process is in a tile part header

    +
    J2K_STATE_MT 

    the EOC marker has just been read

    +
    J2K_STATE_NEOC 

    the decoding process must not expect a EOC marker because the codestream is truncated

    +
    J2K_STATE_DATA 

    a tile header has been successfully read and codestream is expected

    +
    J2K_STATE_EOC 

    the decoding process has encountered the EOC marker

    +
    J2K_STATE_ERR 

    the decoding process has encountered an error (FIXME warning V1 = 0x0080)

    +
    + +
    +
    + +

    ◆ MCT_ARRAY_TYPE

    + +
    +
    + + + + +
    enum MCT_ARRAY_TYPE
    +
    + +

    Type of MCT array.

    + + + + +
    Enumerator
    MCT_TYPE_DEPENDENCY 
    MCT_TYPE_DECORRELATION 
    MCT_TYPE_OFFSET 
    + +
    +
    + +

    ◆ MCT_ELEMENT_TYPE

    + +
    +
    + + + + +
    enum MCT_ELEMENT_TYPE
    +
    + +

    Type of elements storing in the MCT data.

    + + + + + +
    Enumerator
    MCT_TYPE_INT16 
    MCT_TYPE_INT32 

    MCT data is stored as signed shorts.

    +
    MCT_TYPE_FLOAT 

    MCT data is stored as signed integers.

    +
    MCT_TYPE_DOUBLE 

    MCT data is stored as floats.

    +
    + +
    +
    + +

    ◆ T2_MODE

    + +
    +
    + + + + +
    enum T2_MODE
    +
    + +

    T2 encoding mode.

    + + + +
    Enumerator
    THRESH_CALC 
    FINAL_PASS 

    Function called in Rate allocation process.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ j2k_destroy_cstr_index()

    + +
    +
    + + + + + + + + +
    void j2k_destroy_cstr_index (opj_codestream_index_tp_cstr_ind)
    +
    + +

    Destroys a codestream index structure.

    +
    Parameters
    + + +
    p_cstr_indthe codestream index parameter to destroy.
    +
    +
    + +

    References opj_tile_index::marker, opj_codestream_index::marker, opj_codestream_index::nb_of_tiles, opj_free(), opj_tile_index::packet_index, opj_codestream_index::tile_index, and opj_tile_index::tp_index.

    + +

    Referenced by opj_destroy_cstr_index(), and opj_j2k_destroy().

    + +
    +
    + +

    ◆ j2k_dump()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump (opj_j2k_tp_j2k,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    +
    + +

    Dump some elements from the J2K decompression structure .

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References j2k_dump_image_header(), opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_IMG_INFO, opj_j2k_dump_MH_index(), opj_j2k_dump_MH_info(), opj_j2k_dump_tile_info(), OPJ_J2K_MH_IND, OPJ_J2K_MH_INFO, OPJ_J2K_TCH_INFO, OPJ_J2K_TH_IND, OPJ_J2K_TH_INFO, OPJ_JP2_IND, OPJ_JP2_INFO, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    + +

    Referenced by jp2_dump(), and opj_create_decompress().

    + +
    +
    + +

    ◆ j2k_dump_image_comp_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump_image_comp_header (opj_image_comp_tcomp,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    +
    + +

    Dump a component image header structure.

    +
    Parameters
    + + + + +
    compthe component image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::prec, and opj_image_comp::sgnd.

    + +

    Referenced by j2k_dump_image_header().

    + +
    +
    + +

    ◆ j2k_dump_image_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void j2k_dump_image_header (opj_image_timage,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    +
    + +

    Dump an image header structure.

    +
    Parameters
    + + + + +
    imagethe image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_image::comps, j2k_dump_image_comp_header(), opj_image::numcomps, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by j2k_dump().

    + +
    +
    + +

    ◆ j2k_get_cstr_index()

    + + + +

    ◆ j2k_get_cstr_info()

    + +
    +
    + + + + + + + + +
    opj_codestream_info_v2_t* j2k_get_cstr_info (opj_j2k_tp_j2k)
    +
    + +

    Get the codestream info from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_j2kthe component image header to dump.
    +
    +
    +
    Returns
    the codestream information extract from the jpg2000 codec
    + +

    References opj_tccp::cblkh, opj_tccp_info::cblkh, opj_tccp::cblksty, opj_tccp_info::cblksty, opj_tccp::cblkw, opj_tccp_info::cblkw, opj_tccp::csty, opj_tcp::csty, opj_tccp_info::csty, opj_tile_v2_info::csty, opj_stepsize::expn, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_codestream_info_v2::m_default_tile_info, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_stepsize::mant, opj_tcp::mct, opj_tile_v2_info::mct, opj_codestream_info_v2::nbcomps, opj_image::numcomps, opj_tccp::numgbits, opj_tccp_info::numgbits, opj_tcp::numlayers, opj_tile_v2_info::numlayers, opj_tccp::numresolutions, opj_tccp_info::numresolutions, opj_calloc(), opj_destroy_cstr_info(), OPJ_J2K_MAXBANDS, OPJ_J2K_MAXRLVLS, opj_tccp::prch, opj_tccp_info::prch, opj_tccp::prcw, opj_tccp_info::prcw, opj_tcp::prg, opj_tile_v2_info::prg, opj_tccp::qmfbid, opj_tccp_info::qmfbid, opj_tccp::qntsty, opj_tccp_info::qntsty, opj_tccp::roishift, opj_tccp_info::roishift, opj_tccp::stepsizes, opj_tccp_info::stepsizes_expn, opj_tccp_info::stepsizes_mant, opj_tile_v2_info::tccp_info, opj_tcp::tccps, opj_cp::tdx, opj_codestream_info_v2::tdx, opj_cp::tdy, opj_codestream_info_v2::tdy, opj_cp::th, opj_codestream_info_v2::th, opj_codestream_info_v2::tile_info, opj_cp::tw, opj_codestream_info_v2::tw, opj_cp::tx0, opj_codestream_info_v2::tx0, opj_cp::ty0, and opj_codestream_info_v2::ty0.

    + +

    Referenced by jp2_get_cstr_info(), and opj_create_decompress().

    + +
    +
    + +

    ◆ opj_j2k_convert_progression_order()

    + +
    +
    + + + + + + + + +
    const char* opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
    +
    + +

    Converts an enum type progression order to string type.

    + +

    References j2k_prog_order::enum_prog, j2k_prog_order_list, and j2k_prog_order::str_prog.

    + +

    Referenced by opj_j2k_get_num_tp(), and opj_pi_create_encode().

    + +
    +
    + +

    ◆ opj_j2k_create_compress()

    + + + +

    ◆ opj_j2k_create_decompress()

    + + + +

    ◆ opj_j2k_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_decode (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_j2k_decode_tile()

    + + + +

    ◆ opj_j2k_destroy()

    + + + +

    ◆ opj_j2k_encode()

    + + + +

    ◆ opj_j2k_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_tp_j2k,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Specify extra options for the encoder.

    +
    Parameters
    + + + + +
    p_j2kthe jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    +
    +
    +
    See also
    opj_encoder_set_extra_options() for more details.
    + +

    References EVT_ERROR, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_encoder_set_extra_options().

    + +
    +
    + +

    ◆ opj_j2k_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_tp_j2k,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_exec(), opj_j2k_setup_end_compress(), and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_end_compress().

    + +
    +
    + +

    ◆ opj_j2k_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    + +

    References OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_end_decompress().

    + +
    +
    + +

    ◆ opj_j2k_get_tile()

    + + + +

    ◆ opj_j2k_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_tp_stream,
    opj_j2k_tp_j2k,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a jpeg2000 codestream header structure.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the box is valid.
    + +

    References opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_copy_image_header(), OPJ_FALSE, opj_image_create0(), opj_image_destroy(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_exec(), opj_j2k_setup_decoding_validation(), opj_j2k_setup_header_reading(), and OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_read_header().

    + +
    +
    + +

    ◆ opj_j2k_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_tp_j2k,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a tile header.

    +
    Parameters
    + + + + + + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_dec_memory_marker_handler::handler, opj_dec_memory_marker_handler::id, J2K_MS_EOC, J2K_MS_SOD, J2K_MS_SOT, J2K_STATE_DATA, J2K_STATE_EOC, J2K_STATE_NEOC, J2K_STATE_TPH, J2K_STATE_TPHSOT, opj_j2k_dec::m_can_decode, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_data, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k_dec::m_header_data_size, opj_j2k_dec::m_last_sot_read_pos, opj_tcp::m_nb_tile_parts, opj_j2k_dec::m_nb_tile_parts_correction, opj_j2k_dec::m_nb_tile_parts_correction_checked, opj_j2k_dec::m_skip_data, opj_j2k_dec::m_sot_length, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_tcd, opj_tcd_tile::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_tlmarker(), opj_j2k_get_marker_handler(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_sod(), opj_read_bytes, opj_realloc(), opj_stream_get_number_byte_left(), opj_stream_read_data(), opj_stream_skip(), opj_stream_tell(), opj_tcd_get_decoded_tile_size(), opj_tcd_init_decode_tile(), OPJ_TRUE, opj_dec_memory_marker_handler::states, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::th, opj_tcd_image::tiles, opj_cp::tw, opj_tcd_tile::x0, opj_tcd_tile::x1, opj_tcd_tile::y0, and opj_tcd_tile::y1.

    + +

    Referenced by opj_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tiles(), and opj_jp2_read_tile_header().

    + +
    +
    + +

    ◆ opj_j2k_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_tp_j2k,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +
    Parameters
    + + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_image::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_image_comp::factor, J2K_STATE_TPHSOT, opj_j2k::m_cp, opj_tcp::m_data, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_int_ceildiv(), opj_j2k_update_image_dimensions(), opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_set_decode_area().

    + +
    +
    + +

    ◆ opj_j2k_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_tp_j2k,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the indices of the components to decode.

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 codec.
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References EVT_ERROR, opj_j2k_dec::m_comps_indices_to_decode, opj_j2k::m_decoder, opj_j2k_dec::m_numcomps_to_decode, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_set_decoded_components().

    + +
    +
    + +

    ◆ opj_j2k_set_decoded_resolution_factor()

    + + + +

    ◆ opj_j2k_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_tj2k,
    OPJ_UINT32 num_threads 
    )
    +
    +
    + +

    ◆ opj_j2k_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_j2k_setup_decoder (opj_j2k_tj2k,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder decoding parameters using user parameters.

    +

    Decoding parameters are returned in j2k->cp.

    Parameters
    + + + +
    j2kJ2K decompressor handle
    parametersdecompression parameters
    +
    +
    + +

    References opj_cp::correct, opj_dparameters::cp_layer, opj_dparameters::cp_reduce, opj_j2k::dump_state, opj_cp::exp_comps, opj_dparameters::flags, opj_dparameters::jpwl_correct, opj_dparameters::jpwl_exp_comps, opj_dparameters::jpwl_max_tiles, opj_j2k::m_cp, opj_cp::m_dec, opj_decoding_param::m_layer, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_cp::max_tiles, and OPJ_DPARAMETERS_DUMP_FLAG.

    + +

    Referenced by opj_create_decompress(), and opj_jp2_setup_decoder().

    + +
    +
    + +

    ◆ opj_j2k_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_tp_j2k,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cp::comment, opj_poc::compno0, opj_poc::compno1, opj_image::comps, opj_cparameters::cp_cinema, opj_cparameters::cp_comment, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_matrice, opj_cparameters::cp_rsiz, opj_cparameters::cp_tdx, opj_cparameters::cp_tdy, opj_cparameters::cp_tx0, opj_cparameters::cp_ty0, opj_tccp::csty, opj_cparameters::csty, opj_image_comp::dx, opj_image_comp::dy, opj_cp::epb_on, opj_cp::epc_on, opj_cp::esd_on, EVT_ERROR, EVT_WARNING, opj_image_comp::h, opj_cp::hprot_MH, opj_cp::hprot_TPH, opj_cp::hprot_TPH_tileno, opj_cp::info_on, opj_cparameters::irreversible, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_poc::layno1, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_encoding_param::m_disto_alloc, opj_cp::m_enc, opj_encoding_param::m_fixed_alloc, opj_encoding_param::m_fixed_quality, opj_encoding_param::m_matrice, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_cparameters::max_comp_size, opj_cparameters::max_cs_size, opj_cparameters::mct_data, opj_cparameters::mode, opj_image::numcomps, opj_tccp::numgbits, opj_cparameters::numpocs, opj_cparameters::numresolution, opj_tccp::numresolutions, opj_calculate_norms(), opj_calloc(), OPJ_CINEMA2K, OPJ_CINEMA2K_24, OPJ_CINEMA2K_48, OPJ_CINEMA4K, OPJ_CINEMA4K_24, OPJ_CINEMA_24_COMP, OPJ_CINEMA_24_CS, OPJ_CINEMA_48_COMP, OPJ_CINEMA_48_CS, opj_dwt_calc_explicit_stepsizes(), opj_event_msg(), OPJ_EXTENSION_MCT, OPJ_EXTENSION_NONE, OPJ_FALSE, opj_free(), opj_int_ceildiv(), opj_int_floorlog2(), OPJ_IS_BROADCAST, OPJ_IS_CINEMA, OPJ_IS_IMF, OPJ_IS_PART2, OPJ_IS_STORAGE, opj_j2k_check_poc_val(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), OPJ_J2K_MAXRLVLS, opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_mct_encoding(), opj_malloc(), opj_matrix_inversion_f(), OPJ_MCT, OPJ_OFF, OPJ_PROFILE_CINEMA_2K, OPJ_PROFILE_CINEMA_4K, OPJ_PROFILE_CINEMA_S2K, OPJ_PROFILE_CINEMA_S4K, OPJ_PROFILE_NONE, OPJ_PROFILE_PART2, OPJ_STD_RSIZ, OPJ_TRUE, opj_version(), opj_cparameters::POC, opj_cp::pprot, opj_cp::pprot_packno, opj_cp::pprot_tileno, opj_tccp::prch, opj_cparameters::prch_init, opj_tccp::prcw, opj_cparameters::prcw_init, opj_image_comp::prec, opj_poc::prg1, opj_cparameters::prog_order, opj_tccp::qmfbid, opj_tccp::qntsty, opj_cp::red_on, opj_cparameters::res_spec, opj_poc::resno0, opj_poc::resno1, opj_cparameters::roi_compno, opj_cparameters::roi_shift, opj_tccp::roishift, opj_cp::rsiz, opj_cparameters::rsiz, opj_cp::sens_addr, opj_cp::sens_MH, opj_cp::sens_range, opj_cp::sens_size, opj_cp::sens_TPH, opj_cp::sens_TPH_tileno, opj_image_comp::sgnd, tcp, opj_cparameters::tcp_distoratio, opj_cparameters::tcp_mct, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_poc::tile, opj_cparameters::tile_size_on, opj_cparameters::tp_flag, opj_cparameters::tp_on, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image::x1, and opj_image::y1.

    + +

    Referenced by opj_create_compress(), and opj_jp2_setup_encoder().

    + +
    +
    + +

    ◆ opj_j2k_setup_mct_encoding()

    + + + +

    ◆ opj_j2k_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Starts a compression scheme, i.e.

    +

    validates the codec parameters, writes the header.

    +
    Parameters
    + + + + + +
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the codec is valid.
    + +

    References opj_image::comps, opj_image_comp::data, EVT_ERROR, opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_image::numcomps, opj_copy_image_header(), opj_event_msg(), OPJ_FALSE, opj_image_create0(), opj_j2k_exec(), opj_j2k_setup_encoding_validation(), opj_j2k_setup_header_writing(), and OPJ_TRUE.

    + +

    Referenced by opj_create_compress(), and opj_jp2_start_compress().

    + +
    +
    + +

    ◆ opj_j2k_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Writes a tile.

    +
    Parameters
    + + + + + + + +
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_tcd_tile::comps, EVT_ERROR, opj_tcd::image, opj_j2k::m_tcd, opj_image::numcomps, opj_alloc_tile_component_data(), opj_event_msg(), OPJ_FALSE, opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_tcd_copy_tile_data(), OPJ_TRUE, opj_tcd::tcd_image, and opj_tcd_image::tiles.

    + +

    Referenced by opj_create_compress(), and opj_jp2_write_tile().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/j2k_8h_source.html b/build/doc/html/j2k_8h_source.html new file mode 100644 index 000000000..23db35b55 --- /dev/null +++ b/build/doc/html/j2k_8h_source.html @@ -0,0 +1,1413 @@ + + + + + + + +OpenJPEG: j2k.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    j2k.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2006-2007, Parvatha Elangovan
    +
    15  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    16  * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    +
    17  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    18  *
    +
    19  * All rights reserved.
    +
    20  *
    +
    21  * Redistribution and use in source and binary forms, with or without
    +
    22  * modification, are permitted provided that the following conditions
    +
    23  * are met:
    +
    24  * 1. Redistributions of source code must retain the above copyright
    +
    25  * notice, this list of conditions and the following disclaimer.
    +
    26  * 2. Redistributions in binary form must reproduce the above copyright
    +
    27  * notice, this list of conditions and the following disclaimer in the
    +
    28  * documentation and/or other materials provided with the distribution.
    +
    29  *
    +
    30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    31  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    32  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    33  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    34  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    35  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    36  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    37  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    38  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    39  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    40  * POSSIBILITY OF SUCH DAMAGE.
    +
    41  */
    +
    42 #ifndef OPJ_J2K_H
    +
    43 #define OPJ_J2K_H
    +
    44 
    +
    53 
    +
    54 #define J2K_CP_CSTY_PRT 0x01
    +
    55 #define J2K_CP_CSTY_SOP 0x02
    +
    56 #define J2K_CP_CSTY_EPH 0x04
    +
    57 #define J2K_CCP_CSTY_PRT 0x01
    +
    58 #define J2K_CCP_CBLKSTY_LAZY 0x01
    +
    59 #define J2K_CCP_CBLKSTY_RESET 0x02
    +
    60 #define J2K_CCP_CBLKSTY_TERMALL 0x04
    +
    61 #define J2K_CCP_CBLKSTY_VSC 0x08
    +
    62 #define J2K_CCP_CBLKSTY_PTERM 0x10
    +
    63 #define J2K_CCP_CBLKSTY_SEGSYM 0x20
    +
    64 #define J2K_CCP_QNTSTY_NOQNT 0
    +
    65 #define J2K_CCP_QNTSTY_SIQNT 1
    +
    66 #define J2K_CCP_QNTSTY_SEQNT 2
    +
    67 
    +
    68 /* ----------------------------------------------------------------------- */
    +
    69 
    +
    70 #define J2K_MS_SOC 0xff4f
    +
    71 #define J2K_MS_SOT 0xff90
    +
    72 #define J2K_MS_SOD 0xff93
    +
    73 #define J2K_MS_EOC 0xffd9
    +
    74 #define J2K_MS_SIZ 0xff51
    +
    75 #define J2K_MS_COD 0xff52
    +
    76 #define J2K_MS_COC 0xff53
    +
    77 #define J2K_MS_RGN 0xff5e
    +
    78 #define J2K_MS_QCD 0xff5c
    +
    79 #define J2K_MS_QCC 0xff5d
    +
    80 #define J2K_MS_POC 0xff5f
    +
    81 #define J2K_MS_TLM 0xff55
    +
    82 #define J2K_MS_PLM 0xff57
    +
    83 #define J2K_MS_PLT 0xff58
    +
    84 #define J2K_MS_PPM 0xff60
    +
    85 #define J2K_MS_PPT 0xff61
    +
    86 #define J2K_MS_SOP 0xff91
    +
    87 #define J2K_MS_EPH 0xff92
    +
    88 #define J2K_MS_CRG 0xff63
    +
    89 #define J2K_MS_COM 0xff64
    +
    90 #define J2K_MS_CBD 0xff78
    +
    91 #define J2K_MS_MCC 0xff75
    +
    92 #define J2K_MS_MCT 0xff74
    +
    93 #define J2K_MS_MCO 0xff77
    +
    95 #define J2K_MS_UNK 0
    +
    97 /* UniPG>> */
    +
    98 #ifdef USE_JPWL
    +
    99 #define J2K_MS_EPC 0xff68
    +
    100 #define J2K_MS_EPB 0xff66
    +
    101 #define J2K_MS_ESD 0xff67
    +
    102 #define J2K_MS_RED 0xff69
    +
    103 #endif /* USE_JPWL */
    +
    104 #ifdef USE_JPSEC
    +
    105 #define J2K_MS_SEC 0xff65
    +
    106 #define J2K_MS_INSEC 0xff94
    +
    107 #endif /* USE_JPSEC */
    +
    108 /* <<UniPG */
    +
    109 
    +
    110 #define J2K_MAX_POCS 32
    +
    112 /* ----------------------------------------------------------------------- */
    +
    113 
    +
    118 typedef enum J2K_STATUS {
    +
    119  J2K_STATE_NONE = 0x0000,
    +
    120  J2K_STATE_MHSOC = 0x0001,
    +
    121  J2K_STATE_MHSIZ = 0x0002,
    +
    122  J2K_STATE_MH = 0x0004,
    +
    123  J2K_STATE_TPHSOT = 0x0008,
    +
    124  J2K_STATE_TPH = 0x0010,
    +
    125  J2K_STATE_MT = 0x0020,
    +
    126  J2K_STATE_NEOC = 0x0040,
    +
    127  J2K_STATE_DATA = 0x0080,
    +
    129  J2K_STATE_EOC = 0x0100,
    +
    130  J2K_STATE_ERR = 0x8000
    +
    131 } J2K_STATUS;
    +
    132 
    +
    136 typedef enum MCT_ELEMENT_TYPE {
    + + + + + +
    142 
    +
    146 typedef enum MCT_ARRAY_TYPE {
    + + + + +
    151 
    +
    152 /* ----------------------------------------------------------------------- */
    +
    153 
    +
    157 typedef enum T2_MODE {
    + + +
    160 } J2K_T2_MODE;
    +
    161 
    +
    165 typedef struct opj_stepsize {
    + + + +
    171 
    +
    175 typedef struct opj_tccp {
    + + + + + + + + + + + + + +
    202 }
    +
    203 opj_tccp_t;
    +
    204 
    +
    205 
    +
    206 
    +
    210 typedef struct opj_mct_data {
    + + + + + +
    216 }
    + +
    218 
    + + + + + + +
    228 }
    + +
    230 
    +
    231 typedef struct opj_ppx_struct {
    +
    232  OPJ_BYTE* m_data; /* m_data == NULL => Zppx not read yet */
    + +
    234 } opj_ppx;
    +
    235 
    +
    241 typedef struct opj_tcp {
    + + + + + + + + +
    257 
    + + +
    262 
    + + + + + + + + + + + + + + + + + + + +
    301 
    +
    302 
    +
    303  /***** FLAGS *******/
    + + + +
    310 } opj_tcp_t;
    +
    311 
    +
    312 
    +
    313 
    +
    314 
    +
    315 typedef struct opj_encoding_param {
    + + + + + + + + +
    332 }
    + +
    334 
    +
    335 typedef struct opj_decoding_param {
    + + +
    340 }
    + +
    342 
    +
    343 
    +
    347 typedef struct opj_cp {
    +
    349  /*int img_size;*/
    + +
    353  OPJ_UINT32 tx0; /* MSD see norm */
    +
    355  OPJ_UINT32 ty0; /* MSD see norm */
    + + + + + +
    366 
    + + +
    371 
    + + + +
    378 
    + +
    380 
    + + + + + +
    391 
    + +
    394 
    +
    395  union {
    + + +
    398  }
    + +
    400 
    +
    401 
    +
    402  /* UniPG>> */
    +
    403 #ifdef USE_JPWL
    +
    404 
    + + + + + +
    415  int hprot_MH;
    + + + + + + + + +
    433  int sens_MH;
    + + + + + +
    444 #endif /* USE_JPWL */
    +
    445 
    +
    446  /******** FLAGS *********/
    + + + +
    453  /* <<UniPG */
    +
    454 } opj_cp_t;
    +
    455 
    +
    456 
    +
    457 typedef struct opj_j2k_dec {
    + + + + + + + + + +
    473 
    + + +
    478 
    + +
    485 
    + + +
    488 
    + + + + + +
    496 
    +
    497 } opj_j2k_dec_t;
    +
    498 
    +
    499 typedef struct opj_j2k_enc {
    + +
    502 
    + +
    505 
    + + + +
    519 
    + +
    523 
    +
    524  /* encoded data for a tile */
    + +
    526 
    +
    527  /* size of the encoded_data */
    + +
    529 
    +
    530  /* encoded data for a tile */
    + +
    532 
    +
    533  /* size of the encoded_data */
    +
    534 
    + +
    536 
    +
    537  /* whether to generate PLT markers */
    + +
    539 
    +
    540  /* reserved bytes in m_encoded_tile_size for PLT markers */
    + +
    542 
    +
    543 } opj_j2k_enc_t;
    +
    544 
    +
    545 
    +
    546 
    +
    547 struct opj_tcd;
    +
    551 typedef struct opj_j2k {
    +
    552  /* J2K codestream is decoded*/
    + +
    554 
    +
    555  /* FIXME DOC*/
    +
    556  union {
    + + +
    559  }
    + +
    561 
    + +
    564 
    +
    565  /* pointer to the output image (decoded)*/
    + +
    567 
    + +
    570 
    + +
    573 
    + +
    576 
    + +
    579 
    + +
    582 
    +
    584  struct opj_tcd * m_tcd;
    +
    585 
    + +
    588 
    + +
    591 
    + +
    594 
    +
    596  unsigned int dump_state;
    +
    597 }
    +
    598 opj_j2k_t;
    +
    599 
    +
    600 
    +
    601 
    +
    602 
    +
    605 /* ----------------------------------------------------------------------- */
    +
    606 
    +
    613 void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters);
    +
    614 
    + +
    616 
    + +
    623 
    +
    624 
    + +
    626  opj_cparameters_t *parameters,
    + +
    628  opj_event_mgr_t * p_manager);
    +
    629 
    + +
    634 
    +
    635 /* ----------------------------------------------------------------------- */
    +
    639 
    + +
    645  opj_stream_private_t *p_stream,
    +
    646  opj_event_mgr_t * p_manager);
    +
    647 
    + +
    659  opj_j2k_t* p_j2k,
    +
    660  opj_image_t** p_image,
    +
    661  opj_event_mgr_t* p_manager);
    +
    662 
    +
    663 
    +
    669 void opj_j2k_destroy(opj_j2k_t *p_j2k);
    +
    670 
    + +
    677 
    + +
    688  OPJ_UINT32 p_tile_index,
    +
    689  OPJ_BYTE * p_data,
    +
    690  OPJ_UINT32 p_data_size,
    +
    691  opj_stream_private_t *p_stream,
    +
    692  opj_event_mgr_t * p_manager);
    +
    693 
    + +
    709  OPJ_UINT32 * p_tile_index,
    +
    710  OPJ_UINT32 * p_data_size,
    +
    711  OPJ_INT32 * p_tile_x0,
    +
    712  OPJ_INT32 * p_tile_y0,
    +
    713  OPJ_INT32 * p_tile_x1,
    +
    714  OPJ_INT32 * p_tile_y1,
    +
    715  OPJ_UINT32 * p_nb_comps,
    +
    716  OPJ_BOOL * p_go_on,
    +
    717  opj_stream_private_t *p_stream,
    +
    718  opj_event_mgr_t * p_manager);
    +
    719 
    +
    720 
    + +
    732  OPJ_UINT32 numcomps,
    +
    733  const OPJ_UINT32* comps_indices,
    +
    734  opj_event_mgr_t * p_manager);
    +
    735 
    + +
    750  opj_image_t* p_image,
    +
    751  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    +
    752  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
    +
    753  opj_event_mgr_t * p_manager);
    +
    754 
    + +
    761 
    +
    762 
    +
    771 void j2k_dump(opj_j2k_t* p_j2k, OPJ_INT32 flag, FILE* out_stream);
    +
    772 
    +
    773 
    +
    774 
    +
    782 void j2k_dump_image_header(opj_image_t* image, OPJ_BOOL dev_dump_flag,
    +
    783  FILE* out_stream);
    +
    784 
    +
    792 void j2k_dump_image_comp_header(opj_image_comp_t* comp, OPJ_BOOL dev_dump_flag,
    +
    793  FILE* out_stream);
    +
    794 
    + +
    803 
    + +
    812 
    + +
    822  opj_stream_private_t *p_stream,
    +
    823  opj_image_t *p_image,
    +
    824  opj_event_mgr_t *p_manager);
    +
    825 
    +
    826 
    + +
    828  opj_stream_private_t *p_stream,
    +
    829  opj_image_t* p_image,
    +
    830  opj_event_mgr_t * p_manager,
    +
    831  OPJ_UINT32 tile_index);
    +
    832 
    + +
    834  OPJ_UINT32 res_factor,
    +
    835  opj_event_mgr_t * p_manager);
    +
    836 
    + +
    847  opj_j2k_t *p_j2k,
    +
    848  const char* const* p_options,
    +
    849  opj_event_mgr_t * p_manager);
    +
    850 
    + +
    861  OPJ_UINT32 p_tile_index,
    +
    862  OPJ_BYTE * p_data,
    +
    863  OPJ_UINT32 p_data_size,
    +
    864  opj_stream_private_t *p_stream,
    +
    865  opj_event_mgr_t * p_manager);
    +
    866 
    + + +
    872  opj_event_mgr_t * p_manager);
    +
    873 
    + +
    885  opj_stream_private_t *p_stream,
    +
    886  opj_image_t * p_image,
    +
    887  opj_event_mgr_t * p_manager);
    +
    888 
    + + +
    895  opj_event_mgr_t * p_manager);
    +
    896 
    + +
    898 
    +
    899 
    +
    900 #endif /* OPJ_J2K_H */
    +
    +
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    +
    static void opj_j2k_dump_MH_info(opj_j2k_t *p_j2k, FILE *out_stream)
    Definition: j2k.c:11147
    +
    opj_procedure_list_t * m_procedure_list
    the list of procedures to exec
    Definition: j2k.h:572
    +
    OPJ_UINT32 cblkw
    log2 of code-blocks width
    Definition: openjpeg.h:908
    +
    #define opj_read_double
    Definition: cio.h:67
    +
    static OPJ_BOOL opj_j2k_read_cbd(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a CBD marker (Component bit depth definition)
    Definition: j2k.c:6517
    +
    OPJ_UINT32 * m_comps_indices_to_decode
    Definition: j2k.h:487
    +
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    +
    OPJ_BOOL ownsData
    Definition: tcd.h:206
    +
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    OPJ_BITFIELD m_fixed_quality
    add fixed_quality
    Definition: j2k.h:329
    +
    static void opj_j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1600
    +
    void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    static OPJ_BOOL opj_j2k_update_image_data(opj_tcd_t *p_tcd, opj_image_t *p_output_image)
    Definition: j2k.c:9765
    +
    static OPJ_BOOL opj_j2k_write_mct_record(opj_j2k_t *p_j2k, opj_mct_data_t *p_mct_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCT marker (Multiple Component Transform)
    Definition: j2k.c:5669
    +
    OPJ_BOOL jpwl_correct
    activates the JPWL correction capabilities
    Definition: openjpeg.h:596
    +
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER
    Definition: opj_common.h:44
    +
    OPJ_BYTE * m_header_data
    Definition: j2k.h:464
    +
    opj_j2k_dec_t m_decoder
    Definition: j2k.h:557
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    static OPJ_BOOL opj_j2k_write_qcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the QCD marker (quantization default)
    Definition: j2k.c:2964
    +
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    +
    OPJ_FLOAT32 * m_mct_coding_matrix
    the mct coding matrix
    Definition: j2k.h:288
    +
    static OPJ_UINT32 opj_j2k_get_max_toc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the toc headers of all the tile parts of any given tile.
    Definition: j2k.c:3416
    +
    int hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: j2k.h:415
    +
    OPJ_PROG_ORDER prg
    progression order
    Definition: j2k.h:245
    +
    OPJ_BYTE * m_data
    Definition: j2k.h:232
    +
    OPJ_BITFIELD m_fixed_alloc
    allocation by fixed layer
    Definition: j2k.h:327
    +
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    +
    OPJ_UINT32 cur_pino
    Current Packet iterator number.
    Definition: tcd.h:261
    +
    #define OPJ_EXTENSION_NONE
    JPEG 2000 Part-2 extensions.
    Definition: openjpeg.h:216
    +
    float tcp_rates[100]
    rates of layers - might be subsequently limited by the max_cs_size field.
    Definition: openjpeg.h:421
    +
    OPJ_UINT32 m_index
    Definition: j2k.h:213
    +
    opj_image_t * image
    image header
    Definition: tcd.h:265
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    OPJ_UINT32 m_data_size
    Definition: j2k.h:215
    +
    opj_poc_t pocs[J2K_MAX_POCS]
    progression order changes
    Definition: j2k.h:256
    +
    OPJ_UINT32 nb_of_tiles
    Definition: openjpeg.h:1050
    +
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    +
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    +
    OPJ_BYTE m_tp_flag
    Flag determining tile part generation.
    Definition: j2k.h:323
    +
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Reads a SPCod or SPCoc element, i.e.
    Definition: j2k.c:10484
    +
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    +
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    +
    OPJ_CHAR * comment
    comment
    Definition: j2k.h:361
    +
    OPJ_UINT32 states
    value of the state when the marker can appear
    Definition: j2k.c:1367
    +
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: j2k.h:195
    +
    static OPJ_BOOL opj_j2k_check_poc_val(const opj_poc_t *p_pocs, OPJ_UINT32 tileno, OPJ_UINT32 p_nb_pocs, OPJ_UINT32 p_nb_resolutions, OPJ_UINT32 numcomps, OPJ_UINT32 numlayers, opj_event_mgr_t *p_manager)
    Checks the progression order changes values.
    Definition: j2k.c:1628
    +
    static OPJ_BOOL opj_j2k_write_first_tile_part(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
    Definition: j2k.c:12559
    +
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    +
    #define OPJ_PROFILE_IMF_2K
    Definition: openjpeg.h:206
    +
    #define J2K_MAX_POCS
    Maximum number of POCs.
    Definition: j2k.h:110
    +
    static OPJ_BOOL opj_j2k_write_mcc_record(opj_j2k_t *p_j2k, opj_simple_mcc_decorrelation_data_t *p_mcc_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCC marker (Multiple Component Collection)
    Definition: j2k.c:5876
    +
    static OPJ_BOOL opj_j2k_write_mco(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCO marker (Multiple component transformation ordering)
    Definition: j2k.c:6224
    +
    opj_mct_data_t * m_offset_array
    Definition: j2k.h:226
    +
    #define J2K_MS_ESD
    ESD marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:101
    +
    OPJ_OFF_T main_head_start
    main header start position (SOC position)
    Definition: openjpeg.h:1033
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    +
    OPJ_BYTE * m_encoded_tile_data
    Definition: j2k.h:525
    +
    #define OPJ_PROFILE_IMF_4K
    Definition: openjpeg.h:207
    +
    struct opj_tcd * m_tcd
    the current tile coder/decoder
    Definition: j2k.h:584
    +
    opj_cp_t m_cp
    Coding parameters.
    Definition: j2k.h:569
    +
    static OPJ_BOOL opj_j2k_write_rgn(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_UINT32 nb_comps, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the RGN marker (Region Of Interest)
    Definition: j2k.c:5003
    +
    struct opj_j2k opj_j2k_t
    JPEG-2000 codestream reader/writer.
    +
    #define opj_write_double
    Definition: cio.h:66
    +
    static OPJ_BOOL opj_j2k_write_siz(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SIZ marker (image and tile size)
    Definition: j2k.c:1934
    +
    static void opj_j2k_update_tlm(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_part_size)
    Updates the Tile Length Marker.
    Definition: j2k.c:911
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    +
    OPJ_BITFIELD m_can_decode
    to tell that a tile can be decoded.
    Definition: j2k.h:490
    +
    OPJ_INT32 x0
    Definition: tcd.h:173
    +
    static OPJ_FLOAT32 opj_j2k_get_tp_stride(opj_tcp_t *p_tcp)
    Definition: j2k.c:5181
    +
    static OPJ_BOOL opj_j2k_create_tcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Creates a tile-coder encoder.
    Definition: j2k.c:12921
    +
    #define J2K_MS_PLT
    PLT marker value.
    Definition: j2k.h:83
    +
    static OPJ_BOOL opj_j2k_exec(opj_j2k_t *p_j2k, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Excutes the given procedures on the given codec.
    Definition: j2k.c:8837
    +
    static OPJ_BOOL opj_j2k_write_all_qcc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes QCC marker for each component.
    Definition: j2k.c:5514
    +
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    +
    @ OPJ_CINEMA2K_48
    2K Digital Cinema at 24 fps
    Definition: openjpeg.h:290
    +
    static OPJ_BOOL opj_j2k_setup_decoding_validation(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:8325
    +
    unsigned int dump_state
    Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set.
    Definition: j2k.h:596
    +
    int cp_tx0
    XTOsiz.
    Definition: openjpeg.h:391
    +
    OPJ_INT32 y1
    Definition: tcd.h:173
    +
    JPEG-2000 codestream reader/writer.
    Definition: j2k.h:551
    +
    #define OPJ_DPARAMETERS_DUMP_FLAG
    Definition: openjpeg.h:541
    +
    static OPJ_BOOL opj_j2k_read_qcd(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a QCD marker (Quantization defaults)
    Definition: j2k.c:3032
    +
    static void opj_j2k_copy_tile_quantization_parameters(opj_j2k_t *p_j2k)
    Copies the tile quantization parameters of all the component from the first tile component.
    Definition: j2k.c:10942
    +
    J2K_MCT_ARRAY_TYPE m_array_type
    Definition: j2k.h:212
    +
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    +
    OPJ_INT32 x1
    Definition: tcd.h:173
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    J2K_STATUS
    Values that specify the status of the decoding process when decoding the main header.
    Definition: j2k.h:118
    +
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    +
    int tcp_numlayers
    number of layers
    Definition: openjpeg.h:417
    +
    #define OPJ_PROFILE_NONE
    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing t...
    Definition: openjpeg.h:194
    +
    static OPJ_BOOL opj_j2k_write_cbd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the CBD marker (Component bit depth definition)
    Definition: j2k.c:6448
    +
    static OPJ_BOOL opj_j2k_write_plt_in_memory(opj_j2k_t *p_j2k, opj_tcd_marker_info_t *marker_info, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Write one or more PLT markers in the provided buffer.
    Definition: j2k.c:4638
    +
    OPJ_UINT32 max_tiles
    maximum number of tiles at the decoder
    Definition: j2k.h:443
    +
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    +
    OPJ_INT32 m_tp_pos
    Position of tile part flag in progression order.
    Definition: j2k.h:319
    +
    OPJ_BITFIELD m_is_irreversible
    Definition: j2k.h:227
    +
    OPJ_UINT32 qntsty
    quantisation style
    Definition: openjpeg.h:916
    +
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    +
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    static OPJ_BOOL opj_j2k_read_coc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COC marker (Coding Style Component)
    Definition: j2k.c:2905
    +
    OPJ_UINT32 current_nb_tps
    current nb of tile part (allocated)
    Definition: openjpeg.h:1006
    +
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    +
    OPJ_UINT32 m_sot_length
    to tell the tile part length
    Definition: j2k.h:467
    +
    static OPJ_UINT32 opj_j2k_get_max_coc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by a coc.
    Definition: j2k.c:2877
    +
    OPJ_OFF_T end_pos
    end position
    Definition: openjpeg.h:992
    +
    int subsampling_dy
    subsampling value for dy
    Definition: openjpeg.h:463
    +
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Reads a SQcd or SQcc element, i.e.
    Definition: j2k.c:10823
    +
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    +
    float tcp_distoratio[100]
    different psnr for successive layers.
    Definition: openjpeg.h:424
    +
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    +
    @ J2K_STATE_MT
    the EOC marker has just been read
    Definition: j2k.h:125
    +
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    +
    #define OPJ_CINEMA_48_COMP
    Definition: openjpeg.h:264
    +
    #define OPJ_J2K_TH_INFO
    Tile information based on the current tile header.
    Definition: openjpeg.h:172
    +
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    +
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    +
    int pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: j2k.h:421
    +
    @ THRESH_CALC
    Definition: j2k.h:158
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    #define OPJ_PROFILE_CINEMA_S4K
    Definition: openjpeg.h:201
    +
    OPJ_UINT32 ppm_len
    size of the ppm_data
    Definition: j2k.h:375
    +
    #define OPJ_J2K_TCH_INFO
    Tile/Component information of all tiles.
    Definition: openjpeg.h:173
    +
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    +
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    +
    @ J2K_STATE_MHSOC
    a SOC marker is expected
    Definition: j2k.h:120
    +
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compare 2 a SPCod/ SPCoc elements, i.e.
    Definition: j2k.c:10368
    +
    static const j2k_prog_order_t j2k_prog_order_list[]
    Definition: j2k.c:1320
    +
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    +
    static OPJ_BOOL opj_j2k_move_data_from_codec_to_output_image(opj_j2k_t *p_j2k, opj_image_t *p_image)
    Definition: j2k.c:11736
    +
    union opj_j2k::@1 m_specific_param
    +
    static OPJ_BOOL opj_j2k_setup_header_reading(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header.
    Definition: j2k.c:8304
    +
    int cblockh_init
    initial code block height, default to 64
    Definition: openjpeg.h:430
    +
    static const opj_j2k_mct_function j2k_mct_read_functions_to_float[]
    Definition: j2k.c:1342
    +
    #define OPJ_GET_IMF_SUBLEVEL(v)
    Definition: openjpeg.h:230
    +
    static OPJ_BOOL opj_j2k_write_sod(opj_j2k_t *p_j2k, opj_tcd_t *p_tile_coder, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOD marker (Start of data)
    Definition: j2k.c:4722
    +
    static OPJ_BOOL opj_j2k_write_tlm(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the TLM marker (Tile Length Marker)
    Definition: j2k.c:4166
    +
    OPJ_BITFIELD ppt
    If ppt == 1 --> there was a PPT marker for the present tile.
    Definition: j2k.h:307
    +
    OPJ_BYTE * m_tlm_sot_offsets_buffer
    Stores the sizes of the tlm.
    Definition: j2k.h:514
    +
    static OPJ_UINT32 opj_j2k_get_max_qcc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by a qcc.
    Definition: j2k.c:3162
    +
    static OPJ_BOOL opj_j2k_read_ppt(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PPT marker (Packed packet headers, tile-part header)
    Definition: j2k.c:4028
    +
    #define OPJ_PROFILE_CINEMA_4K
    Definition: openjpeg.h:199
    +
    #define J2K_MS_PPT
    PPT marker value.
    Definition: j2k.h:85
    +
    int sens_MH
    sensitivity method for MH (-1,0-7)
    Definition: j2k.h:433
    +
    @ OPJ_CINEMA4K
    Profile name for a 2K image.
    Definition: openjpeg.h:279
    +
    OPJ_UINT16 rsiz
    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.
    Definition: openjpeg.h:537
    +
    static OPJ_BOOL opj_j2k_read_qcc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a QCC marker (Quantization component)
    Definition: j2k.c:3174
    +
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Writes a SPCod or SPCoc element, i.e.
    Definition: j2k.c:10415
    +
    OPJ_BOOL info_on
    enables writing of informative techniques of ESD, in case of activated JPWL
    Definition: j2k.h:411
    +
    #define OPJ_J2K_DEFAULT_HEADER_SIZE
    Definition: openjpeg.h:151
    +
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1018
    +
    #define J2K_MS_COC
    COC marker value.
    Definition: j2k.h:76
    +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    +
    OPJ_BYTE * ppm_buffer
    packet header storage original buffer
    Definition: j2k.h:382
    +
    OPJ_UINT32 m_nb_mcc_records
    the number of mct records.
    Definition: j2k.h:298
    +
    OPJ_UINT32 ihdr_h
    Image height coming from JP2 IHDR box.
    Definition: j2k.h:593
    +
    OPJ_BYTE * m_data
    Definition: j2k.h:214
    +
    OPJ_UINT32 m_index
    Definition: j2k.h:223
    +
    static OPJ_BOOL opj_j2k_add_mct(opj_tcp_t *p_tcp, opj_image_t *p_image, OPJ_UINT32 p_index)
    Definition: j2k.c:6361
    +
    int res_spec
    Definition: openjpeg.h:440
    +
    OPJ_UINT32 m_end_tile_x
    Definition: j2k.h:471
    +
    @ OPJ_CINEMA2K
    Standard JPEG2000 profile.
    Definition: openjpeg.h:278
    +
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    +
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    +
    int cp_fixed_quality
    add fixed_quality
    Definition: openjpeg.h:403
    +
    #define J2K_MS_SEC
    SEC marker value (Part 8: Secure JPEG 2000)
    Definition: j2k.h:105
    +
    static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a SIZ marker (image and tile size)
    Definition: j2k.c:2040
    +
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    static void opj_j2k_copy_tile_component_parameters(opj_j2k_t *p_j2k)
    Copies the tile component parameters of all the component from the first tile component.
    Definition: j2k.c:10635
    +
    static OPJ_BOOL opj_j2k_read_sot(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a SOT marker (Start of tile-part)
    Definition: j2k.c:4316
    +
    @ tcp
    Definition: query_parser.h:41
    +
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    +
    static OPJ_BOOL opj_j2k_read_plt(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PLT marker (Packet length, tile-part header)
    Definition: j2k.c:3756
    +
    OPJ_BOOL m_last_tile_part
    Indicate that the current tile-part is assume as the last tile part of the codestream.
    Definition: j2k.h:484
    +
    OPJ_BYTE * ppt_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:264
    +
    static OPJ_BOOL opj_j2k_is_imf_compliant(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7053
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    #define J2K_MS_SOP
    SOP marker value.
    Definition: j2k.h:86
    +
    OPJ_BITFIELD ppm
    if ppm == 1 --> there was a PPM marker
    Definition: j2k.h:448
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    OPJ_BOOL red_on
    enables writing of RED, in case of activated JPWL
    Definition: j2k.h:413
    +
    int exp_comps
    expected number of components at the decoder
    Definition: j2k.h:441
    +
    #define J2K_MS_INSEC
    INSEC marker value (Part 8: Secure JPEG 2000)
    Definition: j2k.h:106
    +
    int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: openjpeg.h:496
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    OPJ_FLOAT32 rates[100]
    rates of layers
    Definition: j2k.h:252
    +
    OPJ_INT32 x1
    Definition: tcd.h:191
    +
    @ MCT_TYPE_DEPENDENCY
    Definition: j2k.h:147
    +
    Message handler object used for.
    Definition: event.h:50
    +
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS
    Definition: openjpeg.h:152
    +
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    +
    opj_tccp_info_t * tccp_info
    information concerning tile component parameters
    Definition: openjpeg.h:949
    +
    void j2k_dump_image_comp_header(opj_image_comp_t *comp_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump a component image header structure.
    Definition: j2k.c:11192
    +
    static const opj_j2k_mct_function j2k_mct_write_functions_from_float[]
    Definition: j2k.c:1356
    +
    #define J2K_CCP_QNTSTY_SEQNT
    Definition: j2k.h:66
    +
    @ OPJ_STD_RSIZ
    Definition: openjpeg.h:277
    +
    OPJ_UINT32 cp_layer
    Set the maximum number of quality layers to decode.
    Definition: openjpeg.h:561
    +
    enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
    Type of MCT array.
    +
    OPJ_BITFIELD m_nb_tile_parts_correction
    Definition: j2k.h:495
    +
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    +
    opj_packet_info_t * packet_index
    information concerning packets inside tile
    Definition: openjpeg.h:1024
    +
    #define OPJ_IS_BROADCAST(v)
    Definition: openjpeg.h:224
    +
    int sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1,0-7)
    Definition: j2k.h:437
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_BITFIELD allow_different_bit_depth_sign
    whether different bit depth or sign per component is allowed.
    Definition: j2k.h:452
    +
    OPJ_INT32 m_dc_level_shift
    the dc_level_shift
    Definition: j2k.h:201
    +
    char * cp_comment
    comment for coding
    Definition: openjpeg.h:407
    +
    OPJ_BYTE * ppm_data_first
    pointer remaining on the first byte of the first header if ppm is used
    Definition: j2k.h:384
    +
    char str_prog[5]
    Definition: j2k.c:1317
    +
    OPJ_UINT32 cur_tp_num
    Current tile part number.
    Definition: tcd.h:257
    +
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    +
    int jpwl_sens_size
    enables writing of ESD, (0=no/1/2 bytes)
    Definition: openjpeg.h:488
    +
    static OPJ_BOOL opj_j2k_setup_header_writing(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header.
    Definition: j2k.c:12468
    +
    OPJ_PROG_ORDER prog_order
    progression order (default OPJ_LRCP)
    Definition: openjpeg.h:411
    +
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    +
    OPJ_UINT32 m_max_comp_size
    Maximum rate for each component.
    Definition: j2k.h:317
    +
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    +
    static void opj_j2k_dump_tile_info(opj_tcp_t *l_default_tile, OPJ_INT32 numcomps, FILE *out_stream)
    Definition: j2k.c:10971
    +
    static OPJ_BOOL opj_j2k_setup_end_compress(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:12408
    +
    static void opj_j2k_set_imf_parameters(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6964
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    static OPJ_BOOL opj_j2k_write_eoc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the EOC marker (End of Codestream)
    Definition: j2k.c:5066
    +
    static OPJ_BOOL opj_j2k_read_cod(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COD marker (Coding style defaults)
    Definition: j2k.c:2628
    +
    opj_procedure_list_t * m_validation_list
    the list of validation procedures to follow to make sure the code is valid
    Definition: j2k.h:575
    +
    OPJ_UINT32 m_layer
    if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers ...
    Definition: j2k.h:339
    +
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    +
    OPJ_OFF_T main_head_end
    main header end position (first SOT position)
    Definition: openjpeg.h:1035
    +
    static void opj_j2k_write_poc_in_memory(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the POC marker (Progression Order Change)
    Definition: j2k.c:3309
    +
    #define J2K_MS_EPC
    EPC marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:99
    +
    OPJ_UINT32 ppm_data_read
    size of the ppm_data
    Definition: j2k.h:377
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    OPJ_UINT32 m_nb_max_mct_records
    the max number of mct records.
    Definition: j2k.h:294
    +
    static void opj_j2k_get_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_data)
    Definition: j2k.c:12275
    +
    int pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: j2k.h:423
    +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW
    Definition: opj_common.h:42
    +
    #define OPJ_J2K_MAXBANDS
    Number of maximum sub-band linked to number of resolution level.
    Definition: openjpeg.h:147
    +
    OPJ_OFF_T end_header
    end position of the header
    Definition: openjpeg.h:990
    +
    int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: openjpeg.h:482
    +
    static void opj_j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1413
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible
    Definition: openjpeg.h:914
    +
    @ MCT_TYPE_DOUBLE
    MCT data is stored as floats.
    Definition: j2k.h:140
    +
    OPJ_UINT32 m_nb_max_mcc_records
    the max number of mct records.
    Definition: j2k.h:300
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    Coding parameters.
    Definition: j2k.h:347
    +
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    +
    OPJ_UINT32 nb_packet
    packet number
    Definition: openjpeg.h:1022
    +
    OPJ_INT32 x0
    Definition: tcd.h:191
    +
    #define OPJ_CINEMA_24_COMP
    Definition: openjpeg.h:263
    +
    Index structure about a tile.
    Definition: openjpeg.h:999
    +
    @ J2K_STATE_MH
    the decoding process is in the main header
    Definition: j2k.h:122
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: openjpeg.h:912
    +
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    +
    OPJ_BITFIELD m_discard_tiles
    Definition: j2k.h:491
    +
    int numresolution
    number of resolutions
    Definition: openjpeg.h:426
    +
    static OPJ_BOOL opj_j2k_setup_decoding(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on decoding data.
    Definition: j2k.c:11588
    +
    OPJ_UINT32 m_nb_comps
    Definition: j2k.h:224
    +
    OPJ_OFF_T m_tlm_start
    locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is...
    Definition: j2k.h:510
    +
    int jpwl_exp_comps
    expected number of components
    Definition: openjpeg.h:598
    +
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:243
    +
    Compression parameters.
    Definition: openjpeg.h:387
    +
    OPJ_UINT32 m_current_tile_number
    number of the tile currently concern by coding/decoding
    Definition: j2k.h:581
    +
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    +
    #define OPJ_PROFILE_IMF_2K_R
    Definition: openjpeg.h:209
    +
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    +
    OPJ_UINT32 m_start_tile_y
    Definition: j2k.h:470
    +
    static OPJ_BOOL opj_j2k_write_coc(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COC marker (Coding style component)
    Definition: j2k.c:2755
    +
    OPJ_PROG_ORDER prg
    progression order
    Definition: openjpeg.h:942
    +
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    +
    void j2k_dump_image_comp_header(opj_image_comp_t *comp, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump a component image header structure.
    Definition: j2k.c:11192
    +
    #define J2K_MS_PPM
    PPM marker value.
    Definition: j2k.h:84
    +
    static const opj_j2k_mct_function j2k_mct_read_functions_to_int32[]
    Definition: j2k.c:1349
    +
    static OPJ_BOOL opj_j2k_read_poc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a POC marker (Progression Order Change)
    Definition: j2k.c:3489
    +
    struct opj_simple_mcc_decorrelation_data opj_simple_mcc_decorrelation_data_t
    FIXME DOC.
    +
    @ OPJ_CINEMA2K_24
    Not Digital Cinema.
    Definition: openjpeg.h:289
    +
    opj_image_t * m_output_image
    Definition: j2k.h:566
    +
    OPJ_BOOL esd_on
    enables writing of ESD, in case of activated JPWL
    Definition: j2k.h:409
    +
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    +
    int cp_tdx
    XTsiz.
    Definition: openjpeg.h:395
    +
    static OPJ_BOOL opj_j2k_write_poc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the POC marker (Progression Order Change)
    Definition: j2k.c:3254
    +
    OPJ_INT32 x1
    Definition: tcd.h:230
    +
    Quantization stepsize.
    Definition: j2k.h:165
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1016
    +
    OPJ_UINT32 m_total_tile_parts
    Total num of tile parts in whole image = num tiles* num tileparts in each tile.
    Definition: j2k.h:522
    +
    int hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: j2k.h:417
    +
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    +
    OPJ_INT32 ppm_store
    use in case of multiple marker PPM (number of info already store)
    Definition: j2k.h:388
    +
    int irreversible
    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
    Definition: openjpeg.h:434
    +
    #define OPJ_IS_STORAGE(v)
    Definition: openjpeg.h:223
    +
    OPJ_UINT32 ihdr_w
    Image width coming from JP2 IHDR box.
    Definition: j2k.h:590
    +
    static void opj_j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1515
    +
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    +
    static OPJ_BOOL opj_j2k_merge_ppm(opj_cp_t *p_cp, opj_event_mgr_t *p_manager)
    Merges all PPM markers read (Packed headers, main header)
    Definition: j2k.c:3888
    +
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    +
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    +
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    +
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the headers of the SOT.
    Definition: j2k.c:3435
    +
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    +
    OPJ_BOOL m_is_decoder
    Definition: j2k.h:553
    +
    Definition: j2k.h:231
    +
    #define J2K_MS_TLM
    TLM marker value.
    Definition: j2k.h:81
    +
    OPJ_UINT32 ppm_markers_count
    number of ppm markers (reserved size)
    Definition: j2k.h:368
    +
    struct opj_j2k_dec opj_j2k_dec_t
    +
    OPJ_FLOAT32 * m_mct_decoding_matrix
    the mct decoding matrix
    Definition: j2k.h:286
    +
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    +
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    +
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11431
    +
    #define J2K_MS_RED
    RED marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:102
    +
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Matrix inversion.
    Definition: invert.c:70
    +
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    +
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    +
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    +
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: openjpeg.h:926
    +
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    +
    static OPJ_BOOL opj_j2k_decoding_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The default decoding validation procedure without any extension.
    Definition: j2k.c:8619
    +
    #define OPJ_IMG_INFO
    EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump.
    Definition: openjpeg.h:170
    +
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    +
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    +
    int cp_ty0
    YTOsiz.
    Definition: openjpeg.h:393
    +
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    +
    OPJ_CINEMA_MODE cp_cinema
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not complia...
    Definition: openjpeg.h:506
    +
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    +
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1046
    +
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: openjpeg.h:922
    +
    static OPJ_BOOL opj_j2k_encoding_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The default encoding validation procedure without any extension.
    Definition: j2k.c:8568
    +
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    +
    static OPJ_BOOL opj_j2k_read_unk(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, OPJ_UINT32 *output_marker, opj_event_mgr_t *p_manager)
    Reads an unknown marker.
    Definition: j2k.c:5606
    +
    T2_MODE
    T2 encoding mode.
    Definition: j2k.h:157
    +
    static OPJ_BOOL opj_j2k_get_end_header(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Gets the offset of the header.
    Definition: j2k.c:5426
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    @ MCT_TYPE_OFFSET
    Definition: j2k.h:149
    +
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1042
    +
    int sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: j2k.h:435
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    OPJ_UINT32 cp_reduce
    Set the number of highest resolution levels to be discarded.
    Definition: openjpeg.h:554
    +
    #define J2K_MS_QCC
    QCC marker value.
    Definition: j2k.h:79
    +
    OPJ_UINT32 ppm_data_size
    Number of bytes actually stored inside the ppm_data.
    Definition: j2k.h:386
    +
    OPJ_UINT32 ty0
    tile origin in y = YTOsiz
    Definition: openjpeg.h:961
    +
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    +
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    unsigned int flags
    Definition: openjpeg.h:604
    +
    static OPJ_BOOL opj_j2k_decode_one_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11607
    +
    #define OPJ_J2K_MH_INFO
    Codestream information based only on the main header.
    Definition: openjpeg.h:171
    +
    #define J2K_MS_SIZ
    SIZ marker value.
    Definition: j2k.h:74
    +
    static OPJ_BOOL opj_j2k_read_header_procedure(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The read header procedure.
    Definition: j2k.c:8652
    +
    OPJ_BOOL(* handler)(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    action linked to the marker
    Definition: j2k.c:1369
    +
    static OPJ_BOOL opj_j2k_write_mct_data_group(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
    Definition: j2k.c:5442
    +
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    +
    #define OPJ_GET_IMF_MAINLEVEL(v)
    Definition: openjpeg.h:229
    +
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:904
    +
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    +
    static void opj_j2k_tcp_destroy(opj_tcp_t *p_tcp)
    Destroys a tile coding parameter structure.
    Definition: j2k.c:9139
    +
    OPJ_BYTE * m_header_tile_data
    Definition: j2k.h:531
    + +
    #define J2K_MS_SOT
    SOT marker value.
    Definition: j2k.h:71
    +
    struct opj_cp opj_cp_t
    Coding parameters.
    +
    static void opj_j2k_write_coc_in_memory(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the COC marker (Coding style component)
    Definition: j2k.c:2827
    +
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    +
    @ MCT_TYPE_INT16
    Definition: j2k.h:137
    +
    static OPJ_BOOL opj_j2k_setup_encoding_validation(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:12443
    +
    OPJ_BYTE * ppm_data_current
    Definition: j2k.h:379
    +
    static void opj_j2k_write_qcc_in_memory(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the QCC marker (quantization component)
    Definition: j2k.c:3112
    +
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    +
    #define OPJ_J2K_MH_IND
    Codestream index based only on the main header.
    Definition: openjpeg.h:174
    +
    static OPJ_BOOL opj_j2k_calculate_tp(opj_j2k_t *p_j2k, opj_cp_t *cp, OPJ_UINT32 *p_nb_tiles, opj_image_t *image, opj_event_mgr_t *p_manager)
    Calculates the total number of tile parts needed by the encoder to encode such an image.
    Definition: j2k.c:1772
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    Definition: j2k.h:335
    +
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    +
    OPJ_BITFIELD m_skip_data
    Definition: j2k.h:492
    +
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    +
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    +
    struct opj_dec_memory_marker_handler opj_dec_memory_marker_handler_t
    +
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    +
    static OPJ_BOOL opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
    Add tile header marker information.
    Definition: j2k.c:8178
    +
    opj_ppx * ppm_markers
    ppm markers data (table indexed by Zppm)
    Definition: j2k.h:370
    +
    static OPJ_BOOL opj_j2k_read_rgn(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a RGN marker (Region Of Interest)
    Definition: j2k.c:5107
    +
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS
    Definition: openjpeg.h:153
    +
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    +
    #define J2K_MS_SOC
    SOC marker value.
    Definition: j2k.h:70
    +
    static void opj_j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1447
    +
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    +
    #define OPJ_PROFILE_PART2
    Definition: openjpeg.h:197
    +
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    +
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    +
    static OPJ_BOOL opj_j2k_write_all_coc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes COC marker for each component.
    Definition: j2k.c:5490
    +
    OPJ_BYTE * ppt_buffer
    used to keep a track of the allocated memory
    Definition: j2k.h:266
    +
    struct j2k_prog_order j2k_prog_order_t
    +
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction(opj_stream_private_t *p_stream, OPJ_UINT32 tile_no, OPJ_BOOL *p_correction_needed, opj_event_mgr_t *p_manager)
    Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot).
    Definition: j2k.c:9262
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    opj_ppx * ppt_markers
    ppt markers data (table indexed by Zppt)
    Definition: j2k.h:261
    +
    static OPJ_BOOL opj_j2k_is_cinema_compliant(opj_image_t *image, OPJ_UINT16 rsiz, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6850
    +
    char OPJ_CHAR
    Definition: openjpeg.h:114
    +
    #define opj_read_float
    Definition: cio.h:69
    +
    OPJ_UINT32 m_numcomps_to_decode
    Definition: j2k.h:486
    +
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    +
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    int len
    length, marker val included
    Definition: openjpeg.h:782
    +
    OPJ_UINT32 tw
    number of tiles in X
    Definition: openjpeg.h:967
    +
    static OPJ_BOOL opj_j2k_write_epc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes EPC ????
    Definition: j2k.c:5566
    +
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    +
    OPJ_PROG_ORDER enum_prog
    Definition: j2k.c:1316
    +
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    static const struct opj_dec_memory_marker_handler * opj_j2k_get_marker_handler(OPJ_UINT32 p_id)
    Reads the lookup table containing all the marker, status and action, and returns the handler associat...
    Definition: j2k.c:9018
    +
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    +
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    +
    opj_thread_pool_t * m_tp
    Thread pool.
    Definition: j2k.h:587
    +
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    +
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    +
    static OPJ_BOOL opj_j2k_read_ppm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PPM marker (Packed headers, main header)
    Definition: j2k.c:3810
    +
    MCT_ARRAY_TYPE
    Type of MCT array.
    Definition: j2k.h:146
    +
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    void(* opj_j2k_mct_function)(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1339
    +
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    +
    OPJ_UINT32 m_current_tile_part_number
    Tile part number currently coding, taking into account POC.
    Definition: j2k.h:504
    +
    opj_decoding_param_t m_dec
    Definition: j2k.h:396
    +
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    +
    #define J2K_MS_UNK
    UNKNOWN marker value.
    Definition: j2k.h:95
    +
    FIXME DOC.
    Definition: j2k.h:210
    +
    static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a SOD marker (Start Of Data)
    Definition: j2k.c:4860
    +
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: openjpeg.h:928
    +
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    +
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: j2k.h:250
    +
    OPJ_UINT32 nb_tps
    number of tile parts
    Definition: openjpeg.h:1004
    +
    @ J2K_STATE_TPH
    the decoding process is in a tile part header
    Definition: j2k.h:124
    +
    OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:918
    +
    Definition: j2k.h:315
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    +
    OPJ_BOOL tile_size_on
    size of tile: tile_size_on = false (not in argument) or = true (in argument)
    Definition: openjpeg.h:389
    +
    OPJ_BYTE * ppm_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:373
    +
    @ J2K_STATE_DATA
    a tile header has been successfully read and codestream is expected
    Definition: j2k.h:127
    +
    opj_tile_info_v2_t * tile_info
    information regarding tiles inside image
    Definition: openjpeg.h:978
    +
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    +
    A list of procedures.
    Definition: function_list.h:57
    +
    #define J2K_MS_RGN
    RGN marker value.
    Definition: j2k.h:77
    +
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    +
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    +
    OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t *p_tcp, opj_image_t *p_image)
    Definition: j2k.c:8381
    +
    char tp_flag
    Flag for Tile part generation.
    Definition: openjpeg.h:520
    +
    OPJ_BOOL epb_on
    enables writing of EPB, in case of activated JPWL
    Definition: j2k.h:407
    +
    OPJ_INT32 y0
    Definition: tcd.h:173
    +
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    +
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    +
    static OPJ_BOOL opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
    Add main header marker information.
    Definition: j2k.c:8147
    +
    #define OPJ_IS_PART2(v)
    Definition: openjpeg.h:226
    +
    const char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    +
    int jpwl_sens_range
    sensitivity range (0-3)
    Definition: openjpeg.h:492
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    #define OPJ_CINEMA_24_CS
    JPEG 2000 codestream and component size limits in cinema profiles.
    Definition: openjpeg.h:261
    +
    int image_offset_y0
    subimage encoding: origin image offset in y direction
    Definition: openjpeg.h:459
    +
    int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1=no,0-7)
    Definition: openjpeg.h:498
    +
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    +
    #define OPJ_JP2_INFO
    <
    Definition: openjpeg.h:177
    +
    static OPJ_BOOL opj_j2k_write_qcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the QCC marker (quantization component)
    Definition: j2k.c:3060
    +
    OPJ_INT32 x0
    Definition: tcd.h:230
    +
    static OPJ_BOOL opj_j2k_compare_qcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compare QCC markers (quantization component)
    Definition: j2k.c:3105
    +
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Writes a SQcd or SQcc element, i.e.
    Definition: j2k.c:10748
    +
    static void opj_j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1532
    +
    int jpwl_sens_MH
    sensitivity method for MH (-1=no,0-7)
    Definition: openjpeg.h:494
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    static OPJ_BOOL opj_j2k_read_tlm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a TLM marker (Tile Length Marker)
    Definition: j2k.c:3622
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    int subsampling_dx
    subsampling value for dx
    Definition: openjpeg.h:461
    +
    #define J2K_CCP_CSTY_PRT
    Definition: j2k.h:57
    +
    OPJ_UINT32 current_tpsno
    current tile-part index
    Definition: openjpeg.h:1008
    +
    OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t *p_tcp, opj_image_t *p_image)
    Definition: j2k.c:8381
    +
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    +
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    +
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    +
    #define J2K_MS_EOC
    EOC marker value.
    Definition: j2k.h:73
    +
    @ MCT_TYPE_DECORRELATION
    Definition: j2k.h:148
    +
    @ J2K_STATE_TPHSOT
    the decoding process is in a tile part header and expects a SOT marker
    Definition: j2k.h:123
    +
    OPJ_UINT32 cblkw
    code-blocks width
    Definition: j2k.h:181
    +
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    +
    #define OPJ_PROFILE_CINEMA_S2K
    Definition: openjpeg.h:200
    +
    int pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: j2k.h:425
    +
    static int opj_j2k_get_default_thread_count()
    Definition: j2k.c:6607
    +
    OPJ_UINT32 m_nb_mct_records
    the number of mct records.
    Definition: j2k.h:292
    +
    static void opj_j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1566
    +
    Tile-component coding parameters information.
    Definition: openjpeg.h:900
    +
    static OPJ_BOOL opj_j2k_merge_ppt(opj_tcp_t *p_tcp, opj_event_mgr_t *p_manager)
    Merges all PPT markers read (Packed headers, tile-part header)
    Definition: j2k.c:4113
    +
    int packno
    packet number
    Definition: openjpeg.h:849
    +
    OPJ_UINT32 tx0
    tile origin in x = XTOsiz
    Definition: openjpeg.h:959
    +
    int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: openjpeg.h:486
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    int jpwl_sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: openjpeg.h:490
    +
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
    Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
    Definition: j2k.c:10342
    +
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    +
    int roi_compno
    region of interest: affected component in [0..3], -1 means no ROI
    Definition: openjpeg.h:436
    +
    OPJ_BYTE * m_tlm_sot_offsets_current
    The current offset of the tlm buffer.
    Definition: j2k.h:518
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: openjpeg.h:924
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_UINT32 nbcomps
    number of components
    Definition: openjpeg.h:972
    +
    static OPJ_BOOL opj_j2k_destroy_header_memory(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Destroys the memory associated with the decoding of headers.
    Definition: j2k.c:12833
    +
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    static OPJ_BOOL opj_j2k_write_com(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COM marker (comment)
    Definition: j2k.c:2461
    +
    @ J2K_STATE_ERR
    the decoding process has encountered an error (FIXME warning V1 = 0x0080)
    Definition: j2k.h:130
    +
    opj_poc_t POC[32]
    progression order changes
    Definition: openjpeg.h:413
    +
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    +
    OPJ_INT32 y1
    Definition: tcd.h:230
    +
    #define J2K_MS_COM
    COM marker value.
    Definition: j2k.h:89
    +
    #define J2K_MS_MCO
    MCO marker value.
    Definition: j2k.h:93
    +
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    +
    OPJ_INT32 y0
    Definition: tcd.h:191
    +
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    +
    #define J2K_CP_CSTY_SOP
    Definition: j2k.h:55
    +
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    +
    OPJ_BOOL m_PLT
    Definition: j2k.h:538
    +
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    +
    char tcp_mct
    MCT (multiple component transform)
    Definition: openjpeg.h:522
    +
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    +
    struct opj_stepsize opj_stepsize_t
    Quantization stepsize.
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    int cp_fixed_alloc
    allocation by fixed layer
    Definition: openjpeg.h:401
    +
    @ MCT_TYPE_FLOAT
    MCT data is stored as signed integers.
    Definition: j2k.h:139
    +
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compares 2 SQcd or SQcc element, i.e.
    Definition: j2k.c:10700
    +
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    +
    #define J2K_MS_PLM
    PLM marker value.
    Definition: j2k.h:82
    +
    struct opj_encoding_param opj_encoding_param_t
    +
    int max_cs_size
    Maximum size (in bytes) for the whole codestream.
    Definition: openjpeg.h:534
    +
    #define J2K_CP_CSTY_EPH
    Definition: j2k.h:56
    +
    static void opj_j2k_tcp_data_destroy(opj_tcp_t *p_tcp)
    Destroys the data inside a tile coding parameter structure.
    Definition: j2k.c:9210
    +
    OPJ_OFF_T m_last_sot_read_pos
    Position of the last SOT marker read.
    Definition: j2k.h:477
    +
    void * mct_data
    Naive implementation of MCT restricted to a single reversible array based encoding without offset con...
    Definition: openjpeg.h:527
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    +
    OPJ_UINT32 ppt_data_size
    Number of bytes stored inside ppt_data.
    Definition: j2k.h:268
    +
    static OPJ_BOOL opj_j2k_read_plm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PLM marker (Packet length, main header marker)
    Definition: j2k.c:3683
    +
    OPJ_UINT32 m_state
    locate in which part of the codestream the decoder is (main header, tile header, end)
    Definition: j2k.h:459
    +
    static OPJ_BOOL opj_j2k_update_rates(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Updates the rates of the tcp.
    Definition: j2k.c:5192
    +
    @ J2K_STATE_EOC
    the decoding process has encountered the EOC marker
    Definition: j2k.h:129
    +
    static int opj_j2k_initialise_4K_poc(opj_poc_t *POC, int numres)
    Definition: j2k.c:6683
    +
    static OPJ_BOOL opj_j2k_mct_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The mct encoding validation procedure.
    Definition: j2k.c:8345
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    +
    int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: openjpeg.h:478
    +
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    +
    int prch_init[OPJ_J2K_MAXRLVLS]
    initial precinct height
    Definition: openjpeg.h:444
    +
    static OPJ_BOOL opj_j2k_update_image_dimensions(opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:9982
    +
    static OPJ_BOOL opj_j2k_setup_decoding_tile(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on decoding one tile.
    Definition: j2k.c:11720
    +
    @ J2K_STATE_NONE
    a SOC marker is expected
    Definition: j2k.h:119
    +
    #define J2K_MS_CBD
    CBD marker value.
    Definition: j2k.h:90
    +
    static opj_codestream_index_t * opj_j2k_create_cstr_index(void)
    Definition: j2k.c:10320
    +
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    +
    OPJ_UINT32 qntsty
    quantisation style
    Definition: j2k.h:189
    +
    OPJ_UINT32 m_header_tile_data_size
    Definition: j2k.h:535
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    +
    static OPJ_BOOL opj_j2k_write_updated_tlm(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the updated tlm.
    Definition: j2k.c:12766
    +
    static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads the tiles.
    Definition: j2k.c:11467
    +
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    +
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    +
    opj_codestream_index_t * cstr_index
    helper used to write the index file
    Definition: j2k.h:578
    +
    static OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k)
    Definition: j2k.c:11406
    +
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    +
    OPJ_UINT32 ppt_len
    size of ppt_data
    Definition: j2k.h:270
    +
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    +
    static void opj_j2k_set_cinema_parameters(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6702
    +
    OPJ_UINT32 m_encoded_tile_size
    Definition: j2k.h:528
    +
    #define J2K_CP_CSTY_PRT
    Definition: j2k.h:54
    +
    OPJ_BITFIELD m_nb_tile_parts_correction_checked
    TNsot correction : see issue 254.
    Definition: j2k.h:494
    +
    OPJ_UINT32 ppt_markers_count
    number of ppt markers (reserved size)
    Definition: j2k.h:259
    +
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    +
    OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:920
    +
    static OPJ_BOOL opj_j2k_read_mct(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCT marker (Multiple Component Transform)
    Definition: j2k.c:5743
    +
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    +
    struct opj_ppx_struct opj_ppx
    +
    enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
    Type of elements storing in the MCT data.
    +
    #define J2K_MS_MCT
    MCT marker value.
    Definition: j2k.h:92
    +
    static void opj_j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1498
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    +
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    +
    OPJ_UINT32 tdy
    tile size in y = YTsiz
    Definition: openjpeg.h:965
    +
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    +
    #define OPJ_IMF_MAINLEVEL_MAX
    Definition: openjpeg.h:232
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    static void opj_get_tile_dimensions(opj_image_t *l_image, opj_tcd_tilecomp_t *l_tilec, opj_image_comp_t *l_img_comp, OPJ_UINT32 *l_size_comp, OPJ_UINT32 *l_width, OPJ_UINT32 *l_height, OPJ_UINT32 *l_offset_x, OPJ_UINT32 *l_offset_y, OPJ_UINT32 *l_image_width, OPJ_UINT32 *l_stride, OPJ_UINT32 *l_tile_offset)
    Definition: j2k.c:12239
    +
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    +
    OPJ_UINT32 m_current_poc_tile_part_number
    Tile part number, regardless of poc, for each new poc, tp is reset to 1.
    Definition: j2k.h:501
    +
    static OPJ_BOOL opj_j2k_read_mco(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCO marker (Multiple Component Transform Ordering)
    Definition: j2k.c:6295
    +
    OPJ_INT32 m_current_tile_part_number
    current tile part number or -1 if first time into this tile
    Definition: j2k.h:276
    +
    @ OPJ_OFF
    Definition: openjpeg.h:288
    +
    OPJ_BOOL correct
    enables JPWL correction at the decoder
    Definition: j2k.h:439
    +
    static void opj_j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1464
    +
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    +
    #define OPJ_PROFILE_IMF_8K
    Definition: openjpeg.h:208
    +
    int cp_disto_alloc
    allocation by rate/distortion
    Definition: openjpeg.h:399
    +
    @ OPJ_CINEMA4K_24
    2K Digital Cinema at 48 fps
    Definition: openjpeg.h:291
    +
    Tile-component coding parameters.
    Definition: j2k.h:175
    +
    OPJ_INT32 * data
    Definition: tcd.h:204
    +
    #define OPJ_J2K_TH_IND
    Tile index based on the current tile.
    Definition: openjpeg.h:175
    +
    #define OPJ_PROFILE_CINEMA_2K
    Definition: openjpeg.h:198
    +
    static OPJ_BOOL opj_j2k_read_com(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COM marker (comments)
    Definition: j2k.c:2526
    +
    #define OPJ_JP2_IND
    JP2 file index.
    Definition: openjpeg.h:178
    +
    void j2k_dump_image_header(opj_image_t *img_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump an image header structure.
    Definition: j2k.c:11160
    +
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    +
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    +
    Definition: j2k.h:499
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    +
    OPJ_UINT32 m_data_size
    Definition: j2k.h:233
    +
    OPJ_FLOAT32 distoratio[100]
    add fixed_quality
    Definition: j2k.h:272
    +
    OPJ_OFF_T start_pos
    start position
    Definition: openjpeg.h:988
    +
    static void opj_j2k_dump_MH_index(opj_j2k_t *p_j2k, FILE *out_stream)
    Definition: j2k.c:11076
    +
    #define OPJ_PROFILE_IMF_8K_R
    Definition: openjpeg.h:211
    +
    Definition: j2k.c:1315
    +
    OPJ_BOOL epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: j2k.h:405
    +
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    +
    static void opj_j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1583
    +
    int roi_shift
    region of interest: upshift value
    Definition: openjpeg.h:438
    +
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    +
    static const OPJ_UINT32 MCT_ELEMENT_SIZE[]
    FIXME DOC.
    Definition: j2k.c:1332
    +
    int sens_size
    enables writing of ESD, (0/2/4 bytes)
    Definition: j2k.h:427
    +
    int cblockw_init
    initial code block width, default to 64
    Definition: openjpeg.h:428
    +
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Create a new TCD handle.
    Definition: tcd.c:203
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    @ OPJ_MCT
    Profile name for a 4K image.
    Definition: openjpeg.h:280
    +
    int hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: j2k.h:419
    +
    static OPJ_BOOL opj_j2k_init_info(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Inits the Info.
    Definition: j2k.c:12856
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    Decompression parameters.
    Definition: openjpeg.h:546
    +
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    +
    static OPJ_UINT32 opj_j2k_get_max_poc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the writing of a POC.
    Definition: j2k.c:3396
    +
    struct opj_j2k_enc opj_j2k_enc_t
    +
    #define opj_write_float
    Definition: cio.h:68
    +
    opj_tile_info_v2_t m_default_tile_info
    Default information regarding tiles inside image.
    Definition: openjpeg.h:975
    +
    OPJ_UINT32 m_nb_tile_parts
    number of tile parts for the tile.
    Definition: j2k.h:278
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1044
    +
    OPJ_UINT32 packno
    Definition: tcd.h:236
    +
    static OPJ_BOOL opj_j2k_pre_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:12212
    +
    void j2k_dump_image_header(opj_image_t *image, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump an image header structure.
    Definition: j2k.c:11160
    +
    #define JPWL_MAX_NO_PACKSPECS
    Maximum number of packet parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:157
    +
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    +
    struct opj_tccp opj_tccp_t
    Tile-component coding parameters.
    +
    #define JPWL_MAX_NO_TILESPECS
    Maximum number of tile parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:156
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    OPJ_INT32 y1
    Definition: tcd.h:191
    +
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    +
    @ MCT_TYPE_INT32
    MCT data is stored as signed shorts.
    Definition: j2k.h:138
    +
    OPJ_UINT32 numlayers
    number of layers
    Definition: openjpeg.h:944
    +
    OPJ_UINT32 m_reserved_bytes_for_PLT
    Definition: j2k.h:541
    +
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    +
    static OPJ_BOOL opj_j2k_write_sot(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 total_data_size, OPJ_UINT32 *p_data_written, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOT marker (Start of tile-part)
    Definition: j2k.c:4227
    +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH
    Definition: opj_common.h:43
    +
    OPJ_INT32 ppm_previous
    use in case of multiple marker PPM (case on non-finished previous info)
    Definition: j2k.h:390
    +
    opj_mct_data_t * m_mct_records
    mct records
    Definition: j2k.h:290
    +
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    +
    static void opj_j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1430
    +
    struct opj_tcp opj_tcp_t
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    +
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: j2k.h:193
    +
    OPJ_UINT32 tileno
    tile index
    Definition: openjpeg.h:1001
    +
    OPJ_FLOAT64 * mct_norms
    encoding norms
    Definition: j2k.h:284
    +
    int jpwl_max_tiles
    maximum number of tiles
    Definition: openjpeg.h:600
    +
    #define opj_read_bytes
    Definition: cio.h:65
    +
    OPJ_UINT32 cur_totnum_tp
    Total number of tileparts of the current tile.
    Definition: tcd.h:259
    +
    OPJ_UINT32 m_reduce
    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
    Definition: j2k.h:337
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    +
    J2K_MCT_ELEMENT_TYPE m_element_type
    Definition: j2k.h:211
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    #define OPJ_PROFILE_IMF_4K_R
    Definition: openjpeg.h:210
    +
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    +
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    +
    OPJ_BYTE * m_data
    data for the tile
    Definition: j2k.h:280
    +
    static OPJ_BOOL opj_j2k_compare_coc(opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compares 2 COC markers (Coding style component)
    Definition: j2k.c:2806
    +
    int image_offset_x0
    subimage encoding: origin image offset in x direction
    Definition: openjpeg.h:457
    +
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    static OPJ_UINT32 opj_j2k_get_num_tp(opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32 tileno)
    Gets the number of tile parts used for the given change of progression (if any) and the given tile.
    Definition: j2k.c:1715
    +
    char tp_on
    Tile part generation.
    Definition: openjpeg.h:518
    +
    int mode
    mode switch (cblk_style)
    Definition: openjpeg.h:432
    +
    static OPJ_BOOL opj_j2k_read_crg(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a CRG marker (Component registration)
    Definition: j2k.c:3580
    +
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
    Gets the size taken by writing SQcd or SQcc element, i.e.
    Definition: j2k.c:10669
    +
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    +
    opj_mct_data_t * m_decorrelation_array
    Definition: j2k.h:225
    +
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    +
    struct opj_mct_data opj_mct_data_t
    FIXME DOC.
    +
    int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: openjpeg.h:484
    +
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    +
    OPJ_UINT32 m_start_tile_x
    Only tiles index in the correct range will be decoded.
    Definition: j2k.h:469
    +
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION
    Definition: opj_common.h:45
    +
    OPJ_UINT64 codestream_size
    codestream's size
    Definition: openjpeg.h:1038
    +
    opj_j2k_enc_t m_encoder
    Definition: j2k.h:558
    +
    static const OPJ_UINT16 tabMaxSubLevelFromMainLevel[]
    Definition: j2k.c:7038
    +
    static OPJ_FLOAT32 opj_j2k_get_default_stride(opj_tcp_t *p_tcp)
    Definition: j2k.c:5186
    +
    @ J2K_STATE_MHSIZ
    a SIZ marker is expected
    Definition: j2k.h:121
    +
    static void opj_j2k_cp_destroy(opj_cp_t *p_cp)
    Destroys a coding parameter structure.
    Definition: j2k.c:9219
    +
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:940
    +
    int cp_tdy
    YTsiz.
    Definition: openjpeg.h:397
    +
    static OPJ_BOOL opj_j2k_write_all_tile_parts(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
    Definition: j2k.c:12644
    +
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    +
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: openjpeg.h:946
    +
    #define OPJ_CINEMA_48_CS
    Definition: openjpeg.h:262
    +
    opj_tp_index_t * tp_index
    information concerning tile parts
    Definition: openjpeg.h:1010
    +
    int csty
    csty : coding style
    Definition: openjpeg.h:409
    +
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    +
    OPJ_INT32 * m_matrice
    fixed layer
    Definition: j2k.h:321
    +
    static OPJ_BOOL opj_j2k_end_encoding(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the encoding, i.e.
    Definition: j2k.c:12799
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_BITFIELD m_is_decoder
    tells if the parameter is a coding or decoding one
    Definition: j2k.h:450
    +
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    +
    OPJ_UINT32 th
    number of tiles in Y
    Definition: openjpeg.h:969
    +
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    +
    OPJ_INT32 y0
    Definition: tcd.h:230
    +
    Index structure about a tile part.
    Definition: openjpeg.h:986
    +
    OPJ_UINT32 m_data_size
    size of data
    Definition: j2k.h:282
    +
    OPJ_BITFIELD m_disto_alloc
    allocation by rate/distortion
    Definition: j2k.h:325
    +
    struct opj_decoding_param opj_decoding_param_t
    +
    static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Copies the decoding tile parameters onto all the tile parameters.
    Definition: j2k.c:8868
    +
    static OPJ_BOOL opj_j2k_read_mcc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCC marker (Multiple Component Collection)
    Definition: j2k.c:5991
    +
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    static const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab[]
    Definition: j2k.c:1376
    +
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    +
    Definition: j2k.c:1363
    +
    static OPJ_BOOL opj_j2k_get_sot_values(OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, OPJ_UINT32 *p_tile_no, OPJ_UINT32 *p_tot_len, OPJ_UINT32 *p_current_part, OPJ_UINT32 *p_num_parts, opj_event_mgr_t *p_manager)
    Reads values from a SOT marker (Start of tile-part)
    Definition: j2k.c:4287
    +
    static int opj_j2k_get_imf_max_NL(opj_cparameters_t *parameters, opj_image_t *image)
    Definition: j2k.c:6913
    +
    static void opj_j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1549
    +
    OPJ_UINT32 cblkh
    code-blocks height
    Definition: j2k.h:183
    +
    static void opj_j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1481
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    +
    OPJ_RSIZ_CAPABILITIES cp_rsiz
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.
    Definition: openjpeg.h:516
    +
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    +
    FIXME DOC.
    Definition: j2k.h:222
    +
    void opj_image_comp_header_update(opj_image_t *p_image_header, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    +
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    +
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    +
    OPJ_BITFIELD cod
    If cod == 1 --> there was a COD marker for the present tile.
    Definition: j2k.h:305
    +
    #define OPJ_EXTENSION_MCT
    Definition: openjpeg.h:217
    +
    OPJ_UINT32 tile
    Tile number (starting at 1)
    Definition: openjpeg.h:371
    +
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    +
    opj_tcp_t * m_default_tcp
    store decoding parameters common to all tiles (information like COD, COC in main header)
    Definition: j2k.h:463
    +
    OPJ_UINT32 tp_num
    Tile part number.
    Definition: tcd.h:255
    +
    OPJ_UINT32 cblkh
    log2 of code-blocks height
    Definition: openjpeg.h:910
    +
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    +
    int prcw_init[OPJ_J2K_MAXRLVLS]
    initial precinct width
    Definition: openjpeg.h:442
    +
    opj_image_t * m_private_image
    pointer to the internal/private encoded / decoded image
    Definition: j2k.h:563
    +
    OPJ_UINT32 numpocs
    number of progression order changes (POC), default to 0
    Definition: openjpeg.h:415
    +
    static OPJ_BOOL opj_j2k_write_cod(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COD marker (Coding style default)
    Definition: j2k.c:2545
    +
    OPJ_UINT32 m_end_tile_y
    Definition: j2k.h:472
    +
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    +
    #define J2K_MS_MCC
    MCC marker value.
    Definition: j2k.h:91
    +
    MCT_ELEMENT_TYPE
    Type of elements storing in the MCT data.
    Definition: j2k.h:136
    +
    #define J2K_CCP_QNTSTY_SIQNT
    Definition: j2k.h:65
    +
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    +
    opj_simple_mcc_decorrelation_data_t * m_mcc_records
    mcc records
    Definition: j2k.h:296
    +
    #define J2K_CCP_QNTSTY_NOQNT
    Definition: j2k.h:64
    +
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1014
    +
    #define J2K_MS_COD
    COD marker value.
    Definition: j2k.h:75
    +
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:177
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: openjpeg.h:480
    +
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    +
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    +
    #define J2K_MS_POC
    POC marker value.
    Definition: j2k.h:80
    +
    OPJ_BOOL jpwl_epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: openjpeg.h:474
    +
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    +
    int jpwl_hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: openjpeg.h:476
    +
    Progression order changes.
    Definition: openjpeg.h:359
    +
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    +
    #define J2K_MS_CRG
    CRG marker value.
    Definition: j2k.h:88
    +
    Marker structure.
    Definition: openjpeg.h:776
    +
    OPJ_UINT32 id
    marker value
    Definition: j2k.c:1365
    +
    OPJ_INT32 m_tile_ind_to_dec
    Index of the tile to decode (used in get_tile)
    Definition: j2k.h:475
    +
    @ J2K_STATE_NEOC
    the decoding process must not expect a EOC marker because the codestream is truncated
    Definition: j2k.h:126
    +
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    +
    int * cp_matrice
    fixed layer
    Definition: openjpeg.h:405
    +
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    +
    OPJ_UINT32 tdx
    tile size in x = XTsiz
    Definition: openjpeg.h:963
    +
    static OPJ_BOOL opj_j2k_read_soc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a SOC marker (Start of Codestream)
    Definition: j2k.c:1893
    +
    int sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: j2k.h:429
    +
    OPJ_UINT32 m_header_data_size
    Definition: j2k.h:465
    +
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: openjpeg.h:906
    +
    Definition: thread.c:605
    +
    static OPJ_BOOL opj_j2k_build_encoder(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Builds the tcd encoder to use to encode tile.
    Definition: j2k.c:8556
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    static OPJ_BOOL opj_j2k_write_regions(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes regions of interests.
    Definition: j2k.c:5537
    +
    union opj_cp::@0 m_specific_param
    +
    #define J2K_MS_QCD
    QCD marker value.
    Definition: j2k.h:78
    +
    #define J2K_MS_EPB
    EPB marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:100
    +
    static OPJ_BOOL opj_j2k_post_write_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:12364
    +
    #define OPJ_GET_IMF_PROFILE(v)
    Definition: openjpeg.h:228
    +
    #define J2K_MS_SOD
    SOD marker value.
    Definition: j2k.h:72
    +
    Definition: j2k.h:457
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    +
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    +
    int sens_range
    sensitivity range (0-3)
    Definition: j2k.h:431
    +
    int max_comp_size
    Maximum size (in bytes) for each component.
    Definition: openjpeg.h:511
    +
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    +
    static OPJ_BOOL opj_j2k_write_soc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOC marker (Start Of Codestream)
    Definition: j2k.c:1853
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    +
    static OPJ_BOOL opj_j2k_build_decoder(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Builds the tcd decoder to use to decode tile.
    Definition: j2k.c:8544
    + + + + diff --git a/build/doc/html/j2kheader__manager_8c.html b/build/doc/html/j2kheader__manager_8c.html new file mode 100644 index 000000000..3dede9b73 --- /dev/null +++ b/build/doc/html/j2kheader__manager_8c.html @@ -0,0 +1,488 @@ + + + + + + + +OpenJPEG: j2kheader_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    j2kheader_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <math.h>
    +#include <assert.h>
    +#include "j2kheader_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    SIZmarker_param_t get_SIZmkrdata_from_j2kstream (Byte_t *SIZstream)
     
    CODmarker_param_t get_CODmkrdata_from_j2kstream (Byte_t *CODstream)
     
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
     get main header information from j2k codestream More...
     
    OPJ_BOOL modify_SIZmkrstream (SIZmarker_param_t SIZ, int difOfdecomplev, Byte_t *SIZstream)
     
    Byte2_t modify_CODmkrstream (CODmarker_param_t COD, int numOfdecomp, Byte_t *CODstream)
     
    OPJ_BOOL modify_mainheader (Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
     modify main header in j2k codestream to fit with the new number of decompositions More...
     
    OPJ_BOOL modify_COCmkrstream (int numOfdecomp, Byte_t *COCstream, Byte2_t Csiz, Byte2_t *oldLcoc, Byte2_t *newLcoc)
     
    OPJ_BOOL modify_tileheader (Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
     modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ get_CODmkrdata_from_j2kstream()

    + + + +

    ◆ get_mainheader_from_j2kstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_tj2kstream,
    SIZmarker_param_tSIZ,
    CODmarker_param_tCOD 
    )
    +
    + +

    get main header information from j2k codestream

    +
    Parameters
    + + + + +
    [in]j2kstreamj2k codestream
    [out]SIZSIZ marker pointer
    [out]CODCOD marker pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References big2(), FCGI_stderr, get_CODmkrdata_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), CODmarker_param::Lcod, SIZmarker_param::Lsiz, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by get_SIZ_from_jpipstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    + +
    +
    + +

    ◆ get_SIZmkrdata_from_j2kstream()

    + + + +

    ◆ modify_COCmkrstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_COCmkrstream (int numOfdecomp,
    Byte_tCOCstream,
    Byte2_t Csiz,
    Byte2_toldLcoc,
    Byte2_tnewLcoc 
    )
    +
    + +

    References big2(), FCGI_stderr, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by modify_tileheader().

    + +
    +
    + +

    ◆ modify_CODmkrstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte2_t modify_CODmkrstream (CODmarker_param_t COD,
    int numOfdecomp,
    Byte_tCODstream 
    )
    +
    +
    + +

    ◆ modify_mainheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_mainheader (Byte_tj2kstream,
    int numOfdecomp,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    Byte8_tj2klen 
    )
    +
    + +

    modify main header in j2k codestream to fit with the new number of decompositions

    +
    Parameters
    + + + + + + +
    [in]j2kstreamj2k codestream
    [in]numOfdecompthe New number of decompositions
    [in]SIZoriginal SIZ marker information
    [in]CODoriginal COD marker information
    [out]j2klenpointer to the length of j2k code stream
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References FCGI_stderr, CODmarker_param::Lcod, SIZmarker_param::Lsiz, modify_CODmkrstream(), modify_SIZmkrstream(), CODmarker_param::numOfdecomp, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by recons_codestream_from_JPPstream().

    + +
    +
    + +

    ◆ modify_SIZmkrstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_SIZmkrstream (SIZmarker_param_t SIZ,
    int difOfdecomplev,
    Byte_tSIZstream 
    )
    +
    +
    + +

    ◆ modify_tileheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_tileheader (Byte_tj2kstream,
    Byte8_t SOToffset,
    int numOfdecomp,
    Byte2_t Csiz,
    Byte8_tj2klen 
    )
    +
    + +

    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images

    +
    Parameters
    + + + + + + +
    [in]j2kstreamj2k codestream
    [in]SOToffsetoffset of SOT marker from the beginning of j2kstream
    [in]numOfdecompthe New number of decompositions, -1 if the same as original
    [in]Csiznumber of components
    [out]j2klenpointer to the length of j2k code stream
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References FCGI_stderr, modify_4Bytecode(), modify_COCmkrstream(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by recons_codestream_from_JPPstream().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/j2kheader__manager_8h.html b/build/doc/html/j2kheader__manager_8h.html new file mode 100644 index 000000000..2d96c1fbf --- /dev/null +++ b/build/doc/html/j2kheader__manager_8h.html @@ -0,0 +1,253 @@ + + + + + + + +OpenJPEG: j2kheader_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    j2kheader_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "index_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions

    OPJ_BOOL get_mainheader_from_j2kstream (Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
     get main header information from j2k codestream More...
     
    OPJ_BOOL modify_mainheader (Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
     modify main header in j2k codestream to fit with the new number of decompositions More...
     
    OPJ_BOOL modify_tileheader (Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
     modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images More...
     
    +

    Function Documentation

    + +

    ◆ get_mainheader_from_j2kstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_tj2kstream,
    SIZmarker_param_tSIZ,
    CODmarker_param_tCOD 
    )
    +
    + +

    get main header information from j2k codestream

    +
    Parameters
    + + + + +
    [in]j2kstreamj2k codestream
    [out]SIZSIZ marker pointer
    [out]CODCOD marker pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References big2(), FCGI_stderr, get_CODmkrdata_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), CODmarker_param::Lcod, SIZmarker_param::Lsiz, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by get_SIZ_from_jpipstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    + +
    +
    + +

    ◆ modify_mainheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_mainheader (Byte_tj2kstream,
    int numOfdecomp,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    Byte8_tj2klen 
    )
    +
    + +

    modify main header in j2k codestream to fit with the new number of decompositions

    +
    Parameters
    + + + + + + +
    [in]j2kstreamj2k codestream
    [in]numOfdecompthe New number of decompositions
    [in]SIZoriginal SIZ marker information
    [in]CODoriginal COD marker information
    [out]j2klenpointer to the length of j2k code stream
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References FCGI_stderr, CODmarker_param::Lcod, SIZmarker_param::Lsiz, modify_CODmkrstream(), modify_SIZmkrstream(), CODmarker_param::numOfdecomp, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by recons_codestream_from_JPPstream().

    + +
    +
    + +

    ◆ modify_tileheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL modify_tileheader (Byte_tj2kstream,
    Byte8_t SOToffset,
    int numOfdecomp,
    Byte2_t Csiz,
    Byte8_tj2klen 
    )
    +
    + +

    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images

    +
    Parameters
    + + + + + + +
    [in]j2kstreamj2k codestream
    [in]SOToffsetoffset of SOT marker from the beginning of j2kstream
    [in]numOfdecompthe New number of decompositions, -1 if the same as original
    [in]Csiznumber of components
    [out]j2klenpointer to the length of j2k code stream
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References FCGI_stderr, modify_4Bytecode(), modify_COCmkrstream(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by recons_codestream_from_JPPstream().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/j2kheader__manager_8h_source.html b/build/doc/html/j2kheader__manager_8h_source.html new file mode 100644 index 000000000..0337c465d --- /dev/null +++ b/build/doc/html/j2kheader__manager_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +OpenJPEG: j2kheader_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    j2kheader_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef J2KHEADER_MANAGER_H_
    +
    33 # define J2KHEADER_MANAGER_H_
    +
    34 
    +
    35 #include "byte_manager.h"
    +
    36 #include "index_manager.h"
    +
    37 
    + + +
    48 
    +
    59 OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp,
    +
    60  SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen);
    +
    61 
    +
    72 OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset,
    +
    73  int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen);
    +
    74 
    +
    75 #endif /* !J2KHEADER_MANAGER_H_ */
    +
    +
    Byte2_t Lsiz
    length of marker segment excluding the marker
    Definition: index_manager.h:56
    +
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    +
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    +
    Byte2_t Lcod
    length of marker segment excluding the marker
    Definition: index_manager.h:76
    +
    Byte4_t XTsiz
    width of one reference tile with respect to the reference grid
    Definition: index_manager.h:62
    +
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    #define FCGI_stderr
    Definition: j2kheader_manager.c:44
    +
    OPJ_BOOL modify_SIZmkrstream(SIZmarker_param_t SIZ, int difOfdecomplev, Byte_t *SIZstream)
    Definition: j2kheader_manager.c:187
    +
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    +
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    +
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    +
    SIZmarker_param_t get_SIZmkrdata_from_j2kstream(Byte_t *SIZstream)
    Definition: j2kheader_manager.c:82
    +
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    +
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    +
    Byte_t YRsiz[3]
    vertical separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:71
    +
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    +
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    + +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    +
    Byte_t XRsiz[3]
    horizontal separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:70
    +
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    +
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    +
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    +
    OPJ_BOOL modify_COCmkrstream(int numOfdecomp, Byte_t *COCstream, Byte2_t Csiz, Byte2_t *oldLcoc, Byte2_t *newLcoc)
    Definition: j2kheader_manager.c:299
    +
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    +
    Byte4_t YTsiz
    height of one reference tile with respect to the reference grid
    Definition: index_manager.h:63
    +
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    +
    progression order
    Definition: index_manager.h:55
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    CODmarker_param_t get_CODmkrdata_from_j2kstream(Byte_t *CODstream)
    Definition: j2kheader_manager.c:118
    + +
    Byte4_t XTOsiz
    horizontal offset from the origin of the reference grid to the left side of the first tile
    Definition: index_manager.h:64
    +
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    Byte2_t modify_CODmkrstream(CODmarker_param_t COD, int numOfdecomp, Byte_t *CODstream)
    Definition: j2kheader_manager.c:223
    + +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    +
    Byte2_t Rsiz
    capabilities that a decoder needs
    Definition: index_manager.h:57
    +
    Byte4_t YTOsiz
    vertical offset from the origin of the reference grid to the top side of the first tile
    Definition: index_manager.h:65
    + + + + diff --git a/build/doc/html/jp2_8c.html b/build/doc/html/jp2_8c.html new file mode 100644 index 000000000..70bcc971f --- /dev/null +++ b/build/doc/html/jp2_8c.html @@ -0,0 +1,3366 @@ + + + + + + + +OpenJPEG: jp2.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Macros

    #define OPJ_BOX_SIZE   1024
     
    #define OPJ_UNUSED(x)   (void)x
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    static const opj_jp2_header_handler_t jp2_header []
     
    static const opj_jp2_header_handler_t jp2_img_header []
     
    static OPJ_BOOL opj_jp2_read_ihdr (opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
     Reads a IHDR box - Image Header box. More...
     
    static OPJ_BYTEopj_jp2_write_ihdr (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Image Header box - Image Header box. More...
     
    static OPJ_BYTEopj_jp2_write_bpcc (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Bit per Component box. More...
     
    static OPJ_BOOL opj_jp2_read_bpcc (opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
     Reads a Bit per Component box. More...
     
    static OPJ_BOOL opj_jp2_read_cdef (opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
     
    static void opj_jp2_apply_cdef (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *)
     
    static OPJ_BYTEopj_jp2_write_cdef (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Channel Definition box. More...
     
    static OPJ_BYTEopj_jp2_write_colr (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Colour Specification box. More...
     
    static OPJ_BOOL opj_jp2_write_ftyp (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes a FTYP box - File type box. More...
     
    static OPJ_BOOL opj_jp2_read_ftyp (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a a FTYP box - File type box. More...
     
    static OPJ_BOOL opj_jp2_skip_jp2c (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_jp2_read_jp2h (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box). More...
     
    static OPJ_BOOL opj_jp2_write_jp2h (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box). More...
     
    static OPJ_BOOL opj_jp2_write_jp2c (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes the Jpeg2000 codestream Header box - JP2C Header box. More...
     
    static OPJ_BOOL opj_jp2_read_jp (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file signature box. More...
     
    static OPJ_BOOL opj_jp2_write_jp (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes a jpeg2000 file signature box. More...
     
    static OPJ_BOOL opj_jp2_apply_pclr (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
     Apply collected palette data. More...
     
    static void opj_jp2_free_pclr (opj_jp2_color_t *color)
     
    static OPJ_BOOL opj_jp2_read_pclr (opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
     Collect palette data. More...
     
    static OPJ_BOOL opj_jp2_read_cmap (opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
     Collect component mapping data. More...
     
    static OPJ_BOOL opj_jp2_read_colr (opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
     Reads the Color Specification box. More...
     
    static OPJ_BOOL opj_jp2_setup_end_header_writing (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header after the codestream. More...
     
    static OPJ_BOOL opj_jp2_setup_end_header_reading (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header after the codestream. More...
     
    static OPJ_BOOL opj_jp2_read_header_procedure (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    static OPJ_BOOL opj_jp2_exec (opj_jp2_t *jp2, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Executes the given procedures on the given codec. More...
     
    static OPJ_BOOL opj_jp2_read_boxhdr (opj_jp2_box_t *box, OPJ_UINT32 *p_number_bytes_read, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Reads a box header. More...
     
    static OPJ_BOOL opj_jp2_setup_encoding_validation (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_jp2_setup_header_writing (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header. More...
     
    static OPJ_BOOL opj_jp2_default_validation (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    static const opj_jp2_header_handler_topj_jp2_img_find_handler (OPJ_UINT32 p_id)
     Finds the image execution function related to the given box id. More...
     
    static const opj_jp2_header_handler_topj_jp2_find_handler (OPJ_UINT32 p_id)
     Finds the execution function related to the given box id. More...
     
    static OPJ_BOOL opj_jp2_read_boxhdr_char (opj_jp2_box_t *box, OPJ_BYTE *p_data, OPJ_UINT32 *p_number_bytes_read, OPJ_UINT32 p_box_max_size, opj_event_mgr_t *p_manager)
     Reads a box header. More...
     
    static OPJ_BOOL opj_jp2_setup_decoding_validation (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_jp2_setup_header_reading (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header. More...
     
    static OPJ_BOOL opj_jp2_check_color (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_decode (opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 file stream. More...
     
    void opj_jp2_setup_decoder (opj_jp2_t *jp2, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_t *jp2, OPJ_UINT32 num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL opj_jp2_encode (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Encode an image into a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    static OPJ_BOOL opj_jpip_skip_iptr (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    void opj_jp2_destroy (opj_jp2_t *jp2)
     Destroy a JP2 decompressor handle. More...
     
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL opj_jp2_get_tile (opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    opj_jp2_topj_jp2_create (OPJ_BOOL p_is_decoder)
     Creates a jpeg2000 file decompressor. More...
     
    void jp2_dump (opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the JP2 decompression structure . More...
     
    opj_codestream_index_tjp2_get_cstr_index (opj_jp2_t *p_jp2)
     Get the codestream index from a JPEG2000 codec. More...
     
    opj_codestream_info_v2_tjp2_get_cstr_info (opj_jp2_t *p_jp2)
     Get the codestream info from a JPEG2000 codec. More...
     
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_BOX_SIZE

    + +
    +
    + + + + +
    #define OPJ_BOX_SIZE   1024
    +
    + +
    +
    + +

    ◆ OPJ_UNUSED

    + +
    +
    + + + + + + + + +
    #define OPJ_UNUSED( x)   (void)x
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ jp2_dump()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void jp2_dump (opj_jp2_tp_jp2,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    +
    + +

    Dump some elements from the JP2 decompression structure .

    +
    Parameters
    + + + + +
    p_jp2the jp2 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_jp2::j2k, and j2k_dump().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ jp2_get_cstr_index()

    + +
    +
    + + + + + + + + +
    opj_codestream_index_t* jp2_get_cstr_index (opj_jp2_tp_jp2)
    +
    + +

    Get the codestream index from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_jp2jp2 codec.
    +
    +
    +
    Returns
    the codestream index extract from the jpg2000 codec
    + +

    References opj_jp2::j2k, and j2k_get_cstr_index().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ jp2_get_cstr_info()

    + +
    +
    + + + + + + + + +
    opj_codestream_info_v2_t* jp2_get_cstr_info (opj_jp2_tp_jp2)
    +
    + +

    Get the codestream info from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_jp2jp2 codec.
    +
    +
    +
    Returns
    the codestream information extract from the jpg2000 codec
    + +

    References opj_jp2::j2k, and j2k_get_cstr_info().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_apply_cdef()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_jp2_apply_cdef (opj_image_timage,
    opj_jp2_color_tcolor,
    opj_event_mgr_tmanager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_apply_pclr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_apply_pclr (opj_image_timage,
    opj_jp2_color_tcolor,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_check_color()

    + + + +

    ◆ opj_jp2_create()

    + + + +

    ◆ opj_jp2_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_decode (opj_jp2_tjp2,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Decode tile data.

    +
    Parameters
    + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    FIXME DOC
    + +

    References opj_jp2::j2k, and opj_j2k_decode_tile().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_default_validation()

    + + + +

    ◆ opj_jp2_destroy()

    + + + +

    ◆ opj_jp2_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_encode (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encode an image into a JPEG-2000 file stream.

    +
    Parameters
    + + + + +
    jp2JP2 compressor handle
    streamOutput buffer stream
    p_managerevent manager
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_jp2::j2k, and opj_j2k_encode().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_tp_jp2,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Specify extra options for the encoder.

    +
    Parameters
    + + + + +
    p_jp2the jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    +
    +
    +
    See also
    opj_encoder_set_extra_options() for more details.
    + +

    References opj_jp2::j2k, and opj_j2k_encoder_set_extra_options().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_compress(), opj_jp2_exec(), and opj_jp2_setup_end_header_writing().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_decompress(), opj_jp2_exec(), and opj_jp2_setup_end_header_reading().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_exec()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_exec (opj_jp2_tjp2,
    opj_procedure_list_tp_procedure_list,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Executes the given procedures on the given codec.

    +
    Parameters
    + + + + + +
    p_procedure_listthe list of procedures to execute
    jp2the jpeg2000 file codec to execute the procedures on.
    streamthe stream to execute the procedures on.
    p_managerthe user manager.
    +
    +
    +
    Returns
    true if all the procedures were successfully executed.
    + +

    References opj_procedure_list_clear(), opj_procedure_list_get_first_procedure(), opj_procedure_list_get_nb_procedures(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_end_compress(), opj_jp2_end_decompress(), opj_jp2_read_header(), and opj_jp2_start_compress().

    + +
    +
    + +

    ◆ opj_jp2_find_handler()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static const opj_jp2_header_handler_t * opj_jp2_find_handler (OPJ_UINT32 p_id)
    +
    +static
    +
    + +

    Finds the execution function related to the given box id.

    +
    Parameters
    + + +
    p_idthe id of the handler to fetch.
    +
    +
    +
    Returns
    the given handler or NULL if it could not be found.
    + +

    References jp2_header.

    + +

    Referenced by opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_jp2_free_pclr()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_jp2_free_pclr (opj_jp2_color_tcolor)
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_get_tile()

    + + + +

    ◆ opj_jp2_img_find_handler()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static const opj_jp2_header_handler_t * opj_jp2_img_find_handler (OPJ_UINT32 p_id)
    +
    +static
    +
    + +

    Finds the image execution function related to the given box id.

    +
    Parameters
    + + +
    p_idthe id of the handler to fetch.
    +
    +
    +
    Returns
    the given handler or NULL if it could not be found.
    +
    Parameters
    + + +
    p_idthe id of the handler to fetch.
    +
    +
    +
    Returns
    the given handler or 00 if it could not be found.
    + +

    References jp2_img_header.

    + +

    Referenced by opj_jp2_read_header_procedure(), and opj_jp2_read_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_read_boxhdr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_boxhdr (opj_jp2_box_tbox,
    OPJ_UINT32p_number_bytes_read,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a box header.

    +

    The box is the way data is packed inside a jpeg2000 file structure.

    +
    Parameters
    + + + + + +
    ciothe input stream to read data from.
    boxthe box structure to fill.
    p_number_bytes_readpointer to an int that will store the number of bytes read from the stream (shoul usually be 2).
    p_manageruser event manager.
    +
    +
    +
    Returns
    true if the box is recognized, false otherwise
    + +

    References EVT_ERROR, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_read_bytes, opj_stream_get_number_byte_left(), opj_stream_read_data(), OPJ_TRUE, and opj_jp2_box::type.

    + +

    Referenced by opj_jp2_read_header_procedure().

    + +
    +
    + +

    ◆ opj_jp2_read_boxhdr_char()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_boxhdr_char (opj_jp2_box_tbox,
    OPJ_BYTEp_data,
    OPJ_UINT32p_number_bytes_read,
    OPJ_UINT32 p_box_max_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a box header.

    +

    The box is the way data is packed inside a jpeg2000 file structure. Data is read from a character string

    +
    Parameters
    + + + + + + +
    boxthe box structure to fill.
    p_datathe character string to read data from.
    p_number_bytes_readpointer to an int that will store the number of bytes read from the stream (shoul usually be 2).
    p_box_max_sizethe maximum number of bytes in the box.
    p_managerFIXME DOC
    +
    +
    +
    Returns
    true if the box is recognized, false otherwise
    + +

    References EVT_ERROR, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and opj_jp2_box::type.

    + +

    Referenced by opj_jp2_read_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_read_bpcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_bpcc (opj_jp2_tjp2,
    OPJ_BYTEp_bpc_header_data,
    OPJ_UINT32 p_bpc_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a Bit per Component box.

    +
    Parameters
    + + + + + +
    p_bpc_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_bpc_header_sizethe size of the bpc header
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the bpc header is valid, false else.
    + +

    References opj_jp2::bpc, opj_jp2_comps::bpcc, opj_jp2::comps, EVT_ERROR, EVT_WARNING, opj_jp2::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_jp2_read_cdef()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_cdef (opj_jp2_tjp2,
    OPJ_BYTEp_cdef_header_data,
    OPJ_UINT32 p_cdef_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_read_cmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_cmap (opj_jp2_tjp2,
    OPJ_BYTEp_cmap_header_data,
    OPJ_UINT32 p_cmap_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Collect component mapping data.

    +
    Parameters
    + + + + + +
    jp2JP2 handle
    p_cmap_header_dataFIXME DOC
    p_cmap_header_sizeFIXME DOC
    p_managerFIXME DOC
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_jp2_pclr::cmap, opj_jp2_cmap_comp::cmp, opj_jp2::color, EVT_ERROR, opj_jp2_color::jp2_pclr, opj_jp2_cmap_comp::mtyp, opj_jp2_pclr::nr_channels, opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, OPJ_TRUE, and opj_jp2_cmap_comp::pcol.

    + +
    +
    + +

    ◆ opj_jp2_read_colr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_colr (opj_jp2_tjp2,
    OPJ_BYTEp_colr_header_data,
    OPJ_UINT32 p_colr_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads the Color Specification box.

    +
    Parameters
    + + + + + +
    p_colr_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_colr_header_sizethe size of the color header
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the bpc header is valid, false else.
    + +

    References opj_jp2::approx, opj_jp2::color, opj_jp2::enumcs, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_jp2_color::icc_profile_buf, opj_jp2_color::icc_profile_len, opj_jp2_color::jp2_has_colr, opj_jp2::meth, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, OPJ_TRUE, and opj_jp2::precedence.

    + +
    +
    + +

    ◆ opj_jp2_read_ftyp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_ftyp (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a a FTYP box - File type box.

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the FTYP box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the FTYP box.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the FTYP box is valid.
    + +

    References opj_jp2::brand, opj_jp2::cl, EVT_ERROR, opj_jp2::jp2_state, JP2_STATE_FILE_TYPE, JP2_STATE_SIGNATURE, opj_jp2::minversion, opj_jp2::numcl, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_jp2_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_tp_stream,
    opj_jp2_tjp2,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a jpeg2000 file header structure.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    jp2the jpeg2000 file header structure.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the box is valid.
    + +

    References EVT_ERROR, opj_jp2::has_ihdr, opj_jp2::has_jp2h, opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, opj_event_msg(), OPJ_FALSE, opj_j2k_read_header(), opj_jp2_exec(), opj_jp2_setup_decoding_validation(), and opj_jp2_setup_header_reading().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_read_header_procedure()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_header_procedure (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_read_ihdr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_ihdr (opj_jp2_tjp2,
    OPJ_BYTEp_image_header_data,
    OPJ_UINT32 p_image_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a IHDR box - Image Header box.

    +
    Parameters
    + + + + + +
    p_image_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_image_header_sizethe size of the image header
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the image header is valid, false else.
    + +

    References opj_cp::allow_different_bit_depth_sign, opj_jp2::bpc, opj_jp2::C, opj_jp2::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_jp2::h, opj_jp2::has_ihdr, opj_j2k::ihdr_h, opj_j2k::ihdr_w, opj_jp2::IPR, opj_jp2::j2k, opj_j2k::m_cp, opj_jp2::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_jp2::UnkC, and opj_jp2::w.

    + +
    +
    + +

    ◆ opj_jp2_read_jp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_jp (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads a jpeg2000 file signature box.

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the signature box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the signature box.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the file signature box is valid.
    + +

    References EVT_ERROR, opj_jp2::jp2_state, JP2_STATE_NONE, JP2_STATE_SIGNATURE, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_jp2_read_jp2h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_jp2h (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).

    +
    Parameters
    + + + + + +
    p_header_datathe data contained in the file header box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the file header box.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the JP2 Header box was successfully recognized.
    + +

    References EVT_ERROR, opj_jp2_header_handler::handler, opj_jp2::has_jp2h, JP2_IHDR, opj_jp2::jp2_img_state, JP2_IMG_STATE_NONE, JP2_IMG_STATE_UNKNOWN, opj_jp2::jp2_state, JP2_STATE_FILE_TYPE, JP2_STATE_HEADER, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_jp2_img_find_handler(), opj_jp2_read_boxhdr_char(), OPJ_TRUE, and opj_jp2_box::type.

    + +
    +
    + +

    ◆ opj_jp2_read_pclr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_read_pclr (opj_jp2_tjp2,
    OPJ_BYTEp_pclr_header_data,
    OPJ_UINT32 p_pclr_header_size,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Collect palette data.

    +
    Parameters
    + + + + + +
    jp2JP2 handle
    p_pclr_header_dataFIXME DOC
    p_pclr_header_sizeFIXME DOC
    p_manager
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_jp2_pclr::channel_sign, opj_jp2_pclr::channel_size, opj_jp2_pclr::cmap, opj_jp2::color, opj_jp2_pclr::entries, EVT_ERROR, opj_jp2_color::jp2_pclr, opj_jp2_pclr::nr_channels, opj_jp2_pclr::nr_entries, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), opj_read_bytes, and OPJ_TRUE.

    + +
    +
    + +

    ◆ opj_jp2_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_tp_jp2,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a tile header.

    +
    Parameters
    + + + + + + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_jp2::j2k, and opj_j2k_read_tile_header().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_tp_jp2,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +
    Parameters
    + + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_jp2::j2k, and opj_j2k_set_decode_area().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_tjp2,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the indices of the components to decode.

    +
    Parameters
    + + + + + +
    jp2JP2 decompressor handle
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager;
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_jp2::j2k, and opj_j2k_set_decoded_components().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decoded_resolution_factor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_tp_jp2,
    OPJ_UINT32 res_factor,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_tjp2,
    OPJ_UINT32 num_threads 
    )
    +
    + +

    Allocates worker threads for the compressor/decompressor.

    +
    Parameters
    + + + +
    jp2JP2 decompressor handle
    num_threadsNumber of threads.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_jp2::j2k, and opj_j2k_set_threads().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_jp2_setup_decoder (opj_jp2_tjp2,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder decoding parameters using user parameters.

    +

    Decoding parameters are returned in jp2->j2k->cp.

    Parameters
    + + + +
    jp2JP2 decompressor handle
    parametersdecompression parameters
    +
    +
    + +

    References opj_jp2::color, opj_dparameters::flags, opj_jp2::ignore_pclr_cmap_cdef, opj_jp2::j2k, opj_jp2_color::jp2_has_colr, OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG, and opj_j2k_setup_decoder().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_setup_decoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_decoding_validation (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the validation ,i.e.

    +

    adds the procedures to launch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    + +

    References OPJ_TRUE, and OPJ_UNUSED.

    + +

    Referenced by opj_jp2_read_header().

    + +
    +
    + +

    ◆ opj_jp2_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_tjp2,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_setup_encoding_validation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_encoding_validation (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the validation ,i.e.

    +

    adds the procedures to launch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    + +

    References opj_jp2::m_validation_list, OPJ_FALSE, opj_jp2_default_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_start_compress().

    + +
    +
    + +

    ◆ opj_jp2_setup_end_header_reading()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_end_header_reading (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on reading header after the codestream.

    +

    Developpers wanting to extend the library can add their own writing procedures.

    + +

    References opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_end_decompress().

    + +
    +
    + +

    ◆ opj_jp2_setup_end_header_writing()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_end_header_writing (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on writing header after the codestream.

    +

    Developpers wanting to extend the library can add their own writing procedures.

    + +

    References opj_jp2::jpip_on, opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_write_jp2c(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_end_compress().

    + +
    +
    + +

    ◆ opj_jp2_setup_header_reading()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_header_reading (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on reading header.

    +

    Developpers wanting to extend the library can add their own writing procedures.

    + +

    References opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_read_header().

    + +
    +
    + +

    ◆ opj_jp2_setup_header_writing()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_setup_header_writing (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Sets up the procedures to do on writing header.

    +

    Developpers wanting to extend the library can add their own writing procedures.

    + +

    References opj_jp2::jpip_on, opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_skip_jp2c(), opj_jp2_write_ftyp(), opj_jp2_write_jp(), opj_jp2_write_jp2h(), opj_jpip_skip_iptr(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    + +

    Referenced by opj_jp2_start_compress().

    + +
    +
    + +

    ◆ opj_jp2_skip_jp2c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_skip_jp2c (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_jp2_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Starts a compression scheme, i.e.

    +

    validates the codec parameters, writes the header.

    +
    Parameters
    + + + + + +
    jp2the jpeg2000 file codec.
    streamthe stream object.
    p_imageFIXME DOC
    p_managerFIXME DOC
    +
    +
    +
    Returns
    true if the codec is valid.
    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, OPJ_FALSE, opj_j2k_start_compress(), opj_jp2_exec(), opj_jp2_setup_encoding_validation(), and opj_jp2_setup_header_writing().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_write_bpcc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BYTE * opj_jp2_write_bpcc (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    +
    +static
    +
    + +

    Writes the Bit per Component box.

    +
    Parameters
    + + + +
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    +
    +
    +
    Returns
    the data being copied.
    + +

    References opj_jp2_comps::bpcc, opj_jp2::comps, JP2_BPCC, opj_jp2::numcomps, opj_calloc(), and opj_write_bytes.

    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_write_cdef()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BYTE * opj_jp2_write_cdef (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    +
    +static
    +
    + +

    Writes the Channel Definition box.

    +
    Parameters
    + + + +
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    +
    +
    +
    Returns
    the data being copied.
    + +

    References opj_jp2_cdef_info::asoc, opj_jp2_cdef_info::cn, opj_jp2::color, opj_jp2_cdef::info, JP2_CDEF, opj_jp2_color::jp2_cdef, opj_jp2_cdef::n, opj_malloc(), opj_write_bytes, and opj_jp2_cdef_info::typ.

    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_write_colr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BYTE * opj_jp2_write_colr (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    +
    +static
    +
    + +

    Writes the Colour Specification box.

    +
    Parameters
    + + + +
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    +
    +
    +
    Returns
    the data being copied.
    + +

    References opj_jp2::approx, opj_jp2::color, opj_jp2::enumcs, opj_jp2_color::icc_profile_buf, opj_jp2_color::icc_profile_len, JP2_COLR, opj_jp2::meth, opj_calloc(), opj_write_bytes, and opj_jp2::precedence.

    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_write_ftyp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_write_ftyp (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes a FTYP box - File type box.

    +
    Parameters
    + + + + +
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if writing was successful.
    + +

    References opj_jp2::brand, opj_jp2::cl, EVT_ERROR, JP2_FTYP, opj_jp2::minversion, opj_jp2::numcl, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_stream_write_data(), and opj_write_bytes.

    + +

    Referenced by opj_jp2_setup_header_writing().

    + +
    +
    + +

    ◆ opj_jp2_write_ihdr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BYTE * opj_jp2_write_ihdr (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    +
    +static
    +
    + +

    Writes the Image Header box - Image Header box.

    +
    Parameters
    + + + +
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    +
    +
    +
    Returns
    the data being copied.
    + +

    References opj_jp2::bpc, opj_jp2::C, opj_jp2::h, opj_jp2::IPR, JP2_IHDR, opj_jp2::numcomps, opj_calloc(), opj_write_bytes, opj_jp2::UnkC, and opj_jp2::w.

    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ opj_jp2_write_jp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_write_jp (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes a jpeg2000 file signature box.

    +
    Parameters
    + + + + +
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if writing was successful.
    + +

    References JP2_JP, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, OPJ_UNUSED, and opj_write_bytes.

    + +

    Referenced by opj_jp2_setup_header_writing().

    + +
    +
    + +

    ◆ opj_jp2_write_jp2c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_write_jp2c (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the Jpeg2000 codestream Header box - JP2C Header box.

    +

    This function must be called AFTER the coding has been done.

    +
    Parameters
    + + + + +
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_manageruser event manager.
    +
    +
    +
    Returns
    true if writing was successful.
    + +

    References EVT_ERROR, opj_jp2::j2k_codestream_offset, JP2_JP2C, opj_event_msg(), OPJ_FALSE, opj_stream_has_seek(), opj_stream_seek(), opj_stream_tell(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_jp2_setup_end_header_writing().

    + +
    +
    + +

    ◆ opj_jp2_write_jp2h()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jp2_write_jp2h (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).

    +
    Parameters
    + + + + +
    jp2the jpeg2000 file codec.
    streamthe stream to write data to.
    p_manageruser event manager.
    +
    +
    +
    Returns
    true if writing was successful.
    + +

    References opj_jp2::bpc, opj_jp2::color, EVT_ERROR, opj_jp2_img_header_writer_handler::handler, opj_jp2_color::jp2_cdef, JP2_JP2H, opj_jp2_img_header_writer_handler::m_data, opj_jp2_img_header_writer_handler::m_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_jp2_write_bpcc(), opj_jp2_write_cdef(), opj_jp2_write_colr(), opj_jp2_write_ihdr(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    + +

    Referenced by opj_jp2_setup_header_writing().

    + +
    +
    + +

    ◆ opj_jp2_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Writes a tile.

    +
    Parameters
    + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_jp2::j2k, and opj_j2k_write_tile().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jpip_skip_iptr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_jpip_skip_iptr (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    +

    Variable Documentation

    + +

    ◆ jp2_header

    + +
    +
    + + + + + +
    + + + + +
    const opj_jp2_header_handler_t jp2_header[]
    +
    +static
    +
    +Initial value: +

    Referenced by opj_jp2_find_handler().

    + +
    +
    + +

    ◆ jp2_img_header

    + +
    +
    + + + + + +
    + + + + +
    const opj_jp2_header_handler_t jp2_img_header[]
    +
    +static
    +
    +
    +
    +
    static OPJ_BOOL opj_jp2_read_bpcc(opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
    Reads a Bit per Component box.
    Definition: jp2.c:727
    +
    static OPJ_BOOL opj_jp2_read_cmap(opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
    Collect component mapping data.
    Definition: jp2.c:1266
    +
    static OPJ_BOOL opj_jp2_read_jp2h(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:2690
    +
    #define JP2_JP2H
    JP2 header box (super-box)
    Definition: jp2.h:51
    +
    #define JP2_IHDR
    Image header box.
    Definition: jp2.h:52
    +
    #define JP2_COLR
    Colour specification box.
    Definition: jp2.h:53
    +
    #define JP2_CMAP
    Component Mapping box.
    Definition: jp2.h:57
    +
    #define JP2_CDEF
    Channel Definition box.
    Definition: jp2.h:58
    +
    static OPJ_BOOL opj_jp2_read_ihdr(opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
    Reads a IHDR box - Image Header box.
    Definition: jp2.c:561
    +
    static OPJ_BOOL opj_jp2_read_pclr(opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
    Collect palette data.
    Definition: jp2.c:1152
    +
    static OPJ_BOOL opj_jp2_read_cdef(opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.c:1392
    +
    #define JP2_JP
    JPEG 2000 signature box.
    Definition: jp2.h:49
    +
    #define JP2_PCLR
    Palette box.
    Definition: jp2.h:56
    +
    static OPJ_BOOL opj_jp2_read_colr(opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
    Reads the Color Specification box.
    Definition: jp2.c:1464
    +
    #define JP2_FTYP
    File type box.
    Definition: jp2.h:50
    +
    static OPJ_BOOL opj_jp2_read_ftyp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a a FTYP box - File type box.
    Definition: jp2.c:2585
    +
    static OPJ_BOOL opj_jp2_read_jp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file signature box.
    Definition: jp2.c:2536
    +
    #define JP2_BPCC
    Bits per component box.
    Definition: jp2.h:60
    + + + + diff --git a/build/doc/html/jp2_8h.html b/build/doc/html/jp2_8h.html new file mode 100644 index 000000000..3a9548ce3 --- /dev/null +++ b/build/doc/html/jp2_8h.html @@ -0,0 +1,1792 @@ + + + + + + + +OpenJPEG: jp2.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2.h File Reference
    +
    +
    + +

    The JPEG-2000 file format Reader/Writer (JP2) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  opj_jp2_cdef_info
     Channel description: channel index, type, association. More...
     
    struct  opj_jp2_cdef
     Channel descriptions and number of descriptions. More...
     
    struct  opj_jp2_cmap_comp
     Component mappings: channel index, mapping type, palette index. More...
     
    struct  opj_jp2_pclr
     Palette data: table entries, palette columns. More...
     
    struct  opj_jp2_color
     Collector for ICC profile, palette, component mapping, channel description. More...
     
    struct  opj_jp2_comps
     JP2 component. More...
     
    struct  opj_jp2
     JPEG-2000 file format reader/writer. More...
     
    struct  opj_jp2_box
     JP2 Box. More...
     
    struct  opj_jp2_header_handler
     
    struct  opj_jp2_img_header_writer_handler
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define JP2_JP   0x6a502020
     JPEG 2000 signature box. More...
     
    #define JP2_FTYP   0x66747970
     File type box. More...
     
    #define JP2_JP2H   0x6a703268
     JP2 header box (super-box) More...
     
    #define JP2_IHDR   0x69686472
     Image header box. More...
     
    #define JP2_COLR   0x636f6c72
     Colour specification box. More...
     
    #define JP2_JP2C   0x6a703263
     Contiguous codestream box. More...
     
    #define JP2_URL   0x75726c20
     Data entry URL box. More...
     
    #define JP2_PCLR   0x70636c72
     Palette box. More...
     
    #define JP2_CMAP   0x636d6170
     Component Mapping box. More...
     
    #define JP2_CDEF   0x63646566
     Channel Definition box. More...
     
    #define JP2_DTBL   0x6474626c
     Data Reference box. More...
     
    #define JP2_BPCC   0x62706363
     Bits per component box. More...
     
    #define JP2_JP2   0x6a703220
     File type fields. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct opj_jp2_cdef_info opj_jp2_cdef_info_t
     Channel description: channel index, type, association. More...
     
    typedef struct opj_jp2_cdef opj_jp2_cdef_t
     Channel descriptions and number of descriptions. More...
     
    typedef struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
     Component mappings: channel index, mapping type, palette index. More...
     
    typedef struct opj_jp2_pclr opj_jp2_pclr_t
     Palette data: table entries, palette columns. More...
     
    typedef struct opj_jp2_color opj_jp2_color_t
     Collector for ICC profile, palette, component mapping, channel description. More...
     
    typedef struct opj_jp2_comps opj_jp2_comps_t
     JP2 component. More...
     
    typedef struct opj_jp2 opj_jp2_t
     JPEG-2000 file format reader/writer. More...
     
    typedef struct opj_jp2_box opj_jp2_box_t
     JP2 Box. More...
     
    typedef struct opj_jp2_header_handler opj_jp2_header_handler_t
     
    typedef struct opj_jp2_img_header_writer_handler opj_jp2_img_header_writer_handler_t
     
    + + + + + + +

    +Enumerations

    enum  JP2_STATE {
    +  JP2_STATE_NONE = 0x0, +JP2_STATE_SIGNATURE = 0x1, +JP2_STATE_FILE_TYPE = 0x2, +JP2_STATE_HEADER = 0x4, +
    +  JP2_STATE_CODESTREAM = 0x8, +JP2_STATE_END_CODESTREAM = 0x10, +JP2_STATE_UNKNOWN = 0x7fffffff +
    + }
     < Resolution box (super-box) More...
     
    enum  JP2_IMG_STATE { JP2_IMG_STATE_NONE = 0x0, +JP2_IMG_STATE_UNKNOWN = 0x7fffffff + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    void opj_jp2_setup_decoder (opj_jp2_t *jp2, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_t *jp2, OPJ_UINT32 num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL opj_jp2_decode (opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL opj_jp2_encode (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Encode an image into a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_t *jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    opj_jp2_topj_jp2_create (OPJ_BOOL p_is_decoder)
     Creates a jpeg2000 file decompressor. More...
     
    void opj_jp2_destroy (opj_jp2_t *jp2)
     Destroy a JP2 decompressor handle. More...
     
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL opj_jp2_get_tile (opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    void jp2_dump (opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the JP2 decompression structure . More...
     
    opj_codestream_info_v2_tjp2_get_cstr_info (opj_jp2_t *p_jp2)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tjp2_get_cstr_index (opj_jp2_t *p_jp2)
     Get the codestream index from a JPEG2000 codec. More...
     
    +

    Detailed Description

    +

    The JPEG-2000 file format Reader/Writer (JP2)

    +

    Macro Definition Documentation

    + +

    ◆ JP2_BPCC

    + +
    +
    + + + + +
    #define JP2_BPCC   0x62706363
    +
    + +

    Bits per component box.

    + +
    +
    + +

    ◆ JP2_CDEF

    + +
    +
    + + + + +
    #define JP2_CDEF   0x63646566
    +
    + +

    Channel Definition box.

    + +
    +
    + +

    ◆ JP2_CMAP

    + +
    +
    + + + + +
    #define JP2_CMAP   0x636d6170
    +
    + +

    Component Mapping box.

    + +
    +
    + +

    ◆ JP2_COLR

    + +
    +
    + + + + +
    #define JP2_COLR   0x636f6c72
    +
    + +

    Colour specification box.

    + +
    +
    + +

    ◆ JP2_DTBL

    + +
    +
    + + + + +
    #define JP2_DTBL   0x6474626c
    +
    + +

    Data Reference box.

    + +
    +
    + +

    ◆ JP2_FTYP

    + +
    +
    + + + + +
    #define JP2_FTYP   0x66747970
    +
    + +

    File type box.

    + +
    +
    + +

    ◆ JP2_IHDR

    + +
    +
    + + + + +
    #define JP2_IHDR   0x69686472
    +
    + +

    Image header box.

    + +
    +
    + +

    ◆ JP2_JP

    + +
    +
    + + + + +
    #define JP2_JP   0x6a502020
    +
    + +

    JPEG 2000 signature box.

    + +
    +
    + +

    ◆ JP2_JP2

    + +
    +
    + + + + +
    #define JP2_JP2   0x6a703220
    +
    + +

    File type fields.

    + +
    +
    + +

    ◆ JP2_JP2C

    + +
    +
    + + + + +
    #define JP2_JP2C   0x6a703263
    +
    + +

    Contiguous codestream box.

    + +
    +
    + +

    ◆ JP2_JP2H

    + +
    +
    + + + + +
    #define JP2_JP2H   0x6a703268
    +
    + +

    JP2 header box (super-box)

    + +
    +
    + +

    ◆ JP2_PCLR

    + +
    +
    + + + + +
    #define JP2_PCLR   0x70636c72
    +
    + +

    Palette box.

    + +
    +
    + +

    ◆ JP2_URL

    + +
    +
    + + + + +
    #define JP2_URL   0x75726c20
    +
    + +

    Data entry URL box.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ opj_jp2_box_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_box opj_jp2_box_t
    +
    + +

    JP2 Box.

    + +
    +
    + +

    ◆ opj_jp2_cdef_info_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_cdef_info opj_jp2_cdef_info_t
    +
    + +

    Channel description: channel index, type, association.

    + +
    +
    + +

    ◆ opj_jp2_cdef_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_cdef opj_jp2_cdef_t
    +
    + +

    Channel descriptions and number of descriptions.

    + +
    +
    + +

    ◆ opj_jp2_cmap_comp_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
    +
    + +

    Component mappings: channel index, mapping type, palette index.

    + +
    +
    + +

    ◆ opj_jp2_color_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_color opj_jp2_color_t
    +
    + +

    Collector for ICC profile, palette, component mapping, channel description.

    + +
    +
    + +

    ◆ opj_jp2_comps_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_comps opj_jp2_comps_t
    +
    + +

    JP2 component.

    + +
    +
    + +

    ◆ opj_jp2_header_handler_t

    + +
    +
    + +
    +
    + +

    ◆ opj_jp2_img_header_writer_handler_t

    + + + +

    ◆ opj_jp2_pclr_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_pclr opj_jp2_pclr_t
    +
    + +

    Palette data: table entries, palette columns.

    + +
    +
    + +

    ◆ opj_jp2_t

    + +
    +
    + + + + +
    typedef struct opj_jp2 opj_jp2_t
    +
    + +

    JPEG-2000 file format reader/writer.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ JP2_IMG_STATE

    + +
    +
    + + + + +
    enum JP2_IMG_STATE
    +
    + + + +
    Enumerator
    JP2_IMG_STATE_NONE 
    JP2_IMG_STATE_UNKNOWN 
    + +
    +
    + +

    ◆ JP2_STATE

    + +
    +
    + + + + +
    enum JP2_STATE
    +
    + +

    < Resolution box (super-box)

    +

    < Intellectual property box < XML box < UUID box < UUID info box (super-box) < UUID list box

    + + + + + + + + +
    Enumerator
    JP2_STATE_NONE 
    JP2_STATE_SIGNATURE 
    JP2_STATE_FILE_TYPE 
    JP2_STATE_HEADER 
    JP2_STATE_CODESTREAM 
    JP2_STATE_END_CODESTREAM 
    JP2_STATE_UNKNOWN 
    + +
    +
    +

    Function Documentation

    + +

    ◆ jp2_dump()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void jp2_dump (opj_jp2_tp_jp2,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    +
    + +

    Dump some elements from the JP2 decompression structure .

    +
    Parameters
    + + + + +
    p_jp2the jp2 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    +
    +
    + +

    References opj_jp2::j2k, and j2k_dump().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ jp2_get_cstr_index()

    + +
    +
    + + + + + + + + +
    opj_codestream_index_t* jp2_get_cstr_index (opj_jp2_tp_jp2)
    +
    + +

    Get the codestream index from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_jp2jp2 codec.
    +
    +
    +
    Returns
    the codestream index extract from the jpg2000 codec
    + +

    References opj_jp2::j2k, and j2k_get_cstr_index().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ jp2_get_cstr_info()

    + +
    +
    + + + + + + + + +
    opj_codestream_info_v2_t* jp2_get_cstr_info (opj_jp2_tp_jp2)
    +
    + +

    Get the codestream info from a JPEG2000 codec.

    +
    Parameters
    + + +
    p_jp2jp2 codec.
    +
    +
    +
    Returns
    the codestream information extract from the jpg2000 codec
    + +

    References opj_jp2::j2k, and j2k_get_cstr_info().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_create()

    + + + +

    ◆ opj_jp2_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_decode (opj_jp2_tjp2,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Decode tile data.

    +
    Parameters
    + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    +
    Returns
    FIXME DOC
    + +

    References opj_jp2::j2k, and opj_j2k_decode_tile().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_destroy()

    + + + +

    ◆ opj_jp2_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_encode (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encode an image into a JPEG-2000 file stream.

    +
    Parameters
    + + + + +
    jp2JP2 compressor handle
    streamOutput buffer stream
    p_managerevent manager
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_jp2::j2k, and opj_j2k_encode().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_tp_jp2,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Specify extra options for the encoder.

    +
    Parameters
    + + + + +
    p_jp2the jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    +
    +
    +
    See also
    opj_encoder_set_extra_options() for more details.
    + +

    References opj_jp2::j2k, and opj_j2k_encoder_set_extra_options().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_compress(), opj_jp2_exec(), and opj_jp2_setup_end_header_writing().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_decompress(), opj_jp2_exec(), and opj_jp2_setup_end_header_reading().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_get_tile()

    + + + +

    ◆ opj_jp2_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_tp_stream,
    opj_jp2_tjp2,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a jpeg2000 file header structure.

    +
    Parameters
    + + + + + +
    p_streamthe stream to read data from.
    jp2the jpeg2000 file header structure.
    p_imageFIXME DOC
    p_managerthe user event manager.
    +
    +
    +
    Returns
    true if the box is valid.
    + +

    References EVT_ERROR, opj_jp2::has_ihdr, opj_jp2::has_jp2h, opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, opj_event_msg(), OPJ_FALSE, opj_j2k_read_header(), opj_jp2_exec(), opj_jp2_setup_decoding_validation(), and opj_jp2_setup_header_reading().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_tp_jp2,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reads a tile header.

    +
    Parameters
    + + + + + + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_jp2::j2k, and opj_j2k_read_tile_header().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_tp_jp2,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +
    Parameters
    + + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_jp2::j2k, and opj_j2k_set_decode_area().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_tjp2,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Sets the indices of the components to decode.

    +
    Parameters
    + + + + + +
    jp2JP2 decompressor handle
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager;
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_jp2::j2k, and opj_j2k_set_decoded_components().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_set_decoded_resolution_factor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_tp_jp2,
    OPJ_UINT32 res_factor,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_tjp2,
    OPJ_UINT32 num_threads 
    )
    +
    + +

    Allocates worker threads for the compressor/decompressor.

    +
    Parameters
    + + + +
    jp2JP2 decompressor handle
    num_threadsNumber of threads.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_jp2::j2k, and opj_j2k_set_threads().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_jp2_setup_decoder (opj_jp2_tjp2,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder decoding parameters using user parameters.

    +

    Decoding parameters are returned in jp2->j2k->cp.

    Parameters
    + + + +
    jp2JP2 decompressor handle
    parametersdecompression parameters
    +
    +
    + +

    References opj_jp2::color, opj_dparameters::flags, opj_jp2::ignore_pclr_cmap_cdef, opj_jp2::j2k, opj_jp2_color::jp2_has_colr, OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG, and opj_j2k_setup_decoder().

    + +

    Referenced by opj_create_decompress().

    + +
    +
    + +

    ◆ opj_jp2_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_tjp2,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_jp2_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Starts a compression scheme, i.e.

    +

    validates the codec parameters, writes the header.

    +
    Parameters
    + + + + + +
    jp2the jpeg2000 file codec.
    streamthe stream object.
    p_imageFIXME DOC
    p_managerFIXME DOC
    +
    +
    +
    Returns
    true if the codec is valid.
    + +

    References opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, OPJ_FALSE, opj_j2k_start_compress(), opj_jp2_exec(), opj_jp2_setup_encoding_validation(), and opj_jp2_setup_header_writing().

    + +

    Referenced by opj_create_compress().

    + +
    +
    + +

    ◆ opj_jp2_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Writes a tile.

    +
    Parameters
    + + + + + + + +
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    +
    +
    + +

    References opj_jp2::j2k, and opj_j2k_write_tile().

    + +

    Referenced by opj_create_compress().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jp2_8h_source.html b/build/doc/html/jp2_8h_source.html new file mode 100644 index 000000000..f3cf69c6c --- /dev/null +++ b/build/doc/html/jp2_8h_source.html @@ -0,0 +1,650 @@ + + + + + + + +OpenJPEG: jp2.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    jp2.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    10  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    11  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    12  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    13  * All rights reserved.
    +
    14  *
    +
    15  * Redistribution and use in source and binary forms, with or without
    +
    16  * modification, are permitted provided that the following conditions
    +
    17  * are met:
    +
    18  * 1. Redistributions of source code must retain the above copyright
    +
    19  * notice, this list of conditions and the following disclaimer.
    +
    20  * 2. Redistributions in binary form must reproduce the above copyright
    +
    21  * notice, this list of conditions and the following disclaimer in the
    +
    22  * documentation and/or other materials provided with the distribution.
    +
    23  *
    +
    24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    25  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    27  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    28  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    29  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    30  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    31  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    32  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    33  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    34  * POSSIBILITY OF SUCH DAMAGE.
    +
    35  */
    +
    36 #ifndef OPJ_JP2_H
    +
    37 #define OPJ_JP2_H
    +
    38 
    +
    46 
    +
    47 /*#define JPIP_JPIP 0x6a706970*/
    +
    48 
    +
    49 #define JP2_JP 0x6a502020
    +
    50 #define JP2_FTYP 0x66747970
    +
    51 #define JP2_JP2H 0x6a703268
    +
    52 #define JP2_IHDR 0x69686472
    +
    53 #define JP2_COLR 0x636f6c72
    +
    54 #define JP2_JP2C 0x6a703263
    +
    55 #define JP2_URL 0x75726c20
    +
    56 #define JP2_PCLR 0x70636c72
    +
    57 #define JP2_CMAP 0x636d6170
    +
    58 #define JP2_CDEF 0x63646566
    +
    59 #define JP2_DTBL 0x6474626c
    +
    60 #define JP2_BPCC 0x62706363
    +
    61 #define JP2_JP2 0x6a703220
    +
    63 /* For the future */
    +
    64 /* #define JP2_RES 0x72657320 */
    +
    65 /* #define JP2_JP2I 0x6a703269 */
    +
    66 /* #define JP2_XML 0x786d6c20 */
    +
    67 /* #define JP2_UUID 0x75756994 */
    +
    68 /* #define JP2_UINF 0x75696e66 */
    +
    69 /* #define JP2_ULST 0x756c7374 */
    +
    71 /* ----------------------------------------------------------------------- */
    +
    72 
    +
    73 typedef enum {
    + + + + + + +
    80  JP2_STATE_UNKNOWN = 0x7fffffff /* ISO C restricts enumerator values to range of 'int' */
    +
    81 }
    +
    82 JP2_STATE;
    +
    83 
    +
    84 typedef enum {
    + +
    86  JP2_IMG_STATE_UNKNOWN = 0x7fffffff
    +
    87 }
    + +
    89 
    +
    93 typedef struct opj_jp2_cdef_info {
    + + +
    96 
    +
    100 typedef struct opj_jp2_cdef {
    + + + +
    104 
    +
    108 typedef struct opj_jp2_cmap_comp {
    + + + +
    112 
    +
    116 typedef struct opj_jp2_pclr {
    + + + + + + + +
    124 
    +
    128 typedef struct opj_jp2_color {
    + + +
    131 
    + + + + +
    136 
    +
    140 typedef struct opj_jp2_comps {
    + + + + +
    145 
    +
    149 typedef struct opj_jp2 {
    + + + +
    156 
    +
    157  /* width of image */
    + +
    159  /* height of image */
    + +
    161  /* number of components in the image */
    + + + + + + + + + + + + + + +
    176  /* FIXME: The following two variables are used to save offset
    +
    177  as we write out a JP2 file to disk. This mechanism is not flexible
    +
    178  as codec writers will need to extand those fields as new part
    +
    179  of the standard are implemented.
    +
    180  */
    + + + + + +
    186 
    + +
    188 
    + + + +
    192 }
    +
    193 opj_jp2_t;
    +
    194 
    +
    198 typedef struct opj_jp2_box {
    + + + +
    202 } opj_jp2_box_t;
    +
    203 
    +
    204 typedef struct opj_jp2_header_handler {
    +
    205  /* marker value */
    + +
    207  /* action linked to the marker */
    + +
    209  OPJ_BYTE *p_header_data,
    +
    210  OPJ_UINT32 p_header_size,
    +
    211  opj_event_mgr_t * p_manager);
    +
    212 }
    + +
    214 
    +
    215 
    + +
    217  /* action to perform */
    +
    218  OPJ_BYTE* (*handler)(opj_jp2_t *jp2, OPJ_UINT32 * p_data_size);
    +
    219  /* result of the action : data */
    + +
    221  /* size of data */
    + +
    223 }
    + +
    225 
    +
    228 /* ----------------------------------------------------------------------- */
    +
    229 
    +
    236 void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters);
    +
    237 
    + +
    245 
    + +
    256  opj_stream_private_t *p_stream,
    +
    257  opj_image_t* p_image,
    +
    258  opj_event_mgr_t * p_manager);
    +
    259 
    + +
    271  opj_cparameters_t *parameters,
    +
    272  opj_image_t *image,
    +
    273  opj_event_mgr_t * p_manager);
    +
    274 
    + +
    283  opj_stream_private_t *stream,
    +
    284  opj_event_mgr_t * p_manager);
    +
    285 
    +
    286 
    + +
    298  opj_stream_private_t *stream,
    +
    299  opj_image_t * p_image,
    +
    300  opj_event_mgr_t * p_manager);
    +
    301 
    +
    302 
    + + +
    309  opj_event_mgr_t * p_manager);
    +
    310 
    +
    311 /* ----------------------------------------------------------------------- */
    +
    312 
    + + +
    319  opj_event_mgr_t * p_manager);
    +
    320 
    + +
    332  opj_jp2_t *jp2,
    +
    333  opj_image_t ** p_image,
    +
    334  opj_event_mgr_t * p_manager);
    +
    335 
    + +
    347  OPJ_UINT32 numcomps,
    +
    348  const OPJ_UINT32* comps_indices,
    +
    349  opj_event_mgr_t * p_manager);
    +
    350 
    + +
    366  OPJ_UINT32 * p_tile_index,
    +
    367  OPJ_UINT32 * p_data_size,
    +
    368  OPJ_INT32 * p_tile_x0,
    +
    369  OPJ_INT32 * p_tile_y0,
    +
    370  OPJ_INT32 * p_tile_x1,
    +
    371  OPJ_INT32 * p_tile_y1,
    +
    372  OPJ_UINT32 * p_nb_comps,
    +
    373  OPJ_BOOL * p_go_on,
    +
    374  opj_stream_private_t *p_stream,
    +
    375  opj_event_mgr_t * p_manager);
    +
    376 
    + +
    388  OPJ_UINT32 p_tile_index,
    +
    389  OPJ_BYTE * p_data,
    +
    390  OPJ_UINT32 p_data_size,
    +
    391  opj_stream_private_t *p_stream,
    +
    392  opj_event_mgr_t * p_manager);
    +
    393 
    + +
    406  OPJ_UINT32 p_tile_index,
    +
    407  OPJ_BYTE * p_data,
    +
    408  OPJ_UINT32 p_data_size,
    +
    409  opj_stream_private_t *p_stream,
    +
    410  opj_event_mgr_t * p_manager);
    +
    411 
    +
    417 opj_jp2_t* opj_jp2_create(OPJ_BOOL p_is_decoder);
    +
    418 
    +
    423 void opj_jp2_destroy(opj_jp2_t *jp2);
    +
    424 
    +
    425 
    + +
    440  opj_image_t* p_image,
    +
    441  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    +
    442  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
    +
    443  opj_event_mgr_t * p_manager);
    +
    444 
    + +
    449  opj_stream_private_t *p_stream,
    +
    450  opj_image_t* p_image,
    +
    451  opj_event_mgr_t * p_manager,
    +
    452  OPJ_UINT32 tile_index);
    +
    453 
    +
    454 
    + +
    459  OPJ_UINT32 res_factor,
    +
    460  opj_event_mgr_t * p_manager);
    +
    461 
    + +
    472  opj_jp2_t *p_jp2,
    +
    473  const char* const* p_options,
    +
    474  opj_event_mgr_t * p_manager);
    +
    475 
    +
    476 
    +
    477 /* TODO MSD: clean these 3 functions */
    +
    486 void jp2_dump(opj_jp2_t* p_jp2, OPJ_INT32 flag, FILE* out_stream);
    +
    487 
    + +
    496 
    + +
    505 
    +
    506 
    +
    510 
    +
    511 #endif /* OPJ_JP2_H */
    +
    512 
    +
    +
    OPJ_UINT32 approx
    Definition: jp2.h:168
    +
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    @ JP2_STATE_SIGNATURE
    Definition: jp2.h:75
    +
    struct opj_jp2_header_handler opj_jp2_header_handler_t
    +
    opj_j2k_dec_t m_decoder
    Definition: j2k.h:557
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    static OPJ_BOOL opj_jp2_check_color(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
    Definition: jp2.c:894
    +
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    +
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    +
    JP2_STATE
    < Resolution box (super-box)
    Definition: jp2.h:73
    +
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    +
    @ OPJ_CLRSPC_EYCC
    e-YCC
    Definition: openjpeg.h:315
    +
    Palette data: table entries, palette columns.
    Definition: jp2.h:116
    +
    OPJ_UINT32 w
    Definition: jp2.h:158
    +
    opj_image_t * image
    image header
    Definition: tcd.h:265
    +
    static OPJ_BOOL opj_jp2_read_bpcc(opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
    Reads a Bit per Component box.
    Definition: jp2.c:727
    +
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    +
    static OPJ_BOOL opj_jp2_read_header_procedure(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2261
    +
    OPJ_UINT32 precedence
    Definition: jp2.h:170
    +
    static const opj_jp2_header_handler_t jp2_header[]
    Definition: jp2.c:425
    +
    static OPJ_BOOL opj_jpip_skip_iptr(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2662
    +
    opj_cp_t m_cp
    Coding parameters.
    Definition: j2k.h:569
    +
    #define opj_write_double
    Definition: cio.h:66
    +
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    +
    opj_jp2_cmap_comp_t * cmap
    Definition: jp2.h:120
    +
    static OPJ_BOOL opj_jp2_read_cmap(opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
    Collect component mapping data.
    Definition: jp2.c:1266
    +
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    +
    #define JP2_JP2
    File type fields.
    Definition: jp2.h:61
    +
    JPEG-2000 codestream reader/writer.
    Definition: j2k.h:551
    +
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    +
    struct opj_procedure_list * m_validation_list
    list of validation procedures
    Definition: jp2.h:153
    +
    OPJ_UINT32 C
    Definition: jp2.h:164
    +
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    +
    OPJ_UINT32 * entries
    Definition: jp2.h:117
    +
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    +
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    @ JP2_IMG_STATE_NONE
    Definition: jp2.h:85
    +
    JPEG-2000 file format reader/writer.
    Definition: jp2.h:149
    +
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    +
    OPJ_BYTE mtyp
    Definition: jp2.h:110
    +
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    +
    OPJ_BOOL ignore_pclr_cmap_cdef
    Definition: jp2.h:189
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    static const opj_jp2_header_handler_t jp2_img_header[]
    Definition: jp2.c:431
    +
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    +
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    +
    static void opj_jp2_apply_cdef(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *)
    Definition: jp2.c:1329
    +
    union opj_j2k::@1 m_specific_param
    +
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    +
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    +
    OPJ_UINT16 cn
    Definition: jp2.h:94
    +
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    +
    struct opj_jp2_cdef_info opj_jp2_cdef_info_t
    Channel description: channel index, type, association.
    +
    OPJ_BOOL jpip_on
    Enable JPIP indexing.
    Definition: openjpeg.h:524
    +
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    +
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    +
    OPJ_UINT32 ihdr_h
    Image height coming from JP2 IHDR box.
    Definition: j2k.h:593
    +
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    +
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    +
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    +
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    static OPJ_BOOL opj_jp2_skip_jp2c(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2644
    +
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    +
    static OPJ_BOOL opj_jp2_read_boxhdr(opj_jp2_box_t *box, OPJ_UINT32 *p_number_bytes_read, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Reads a box header.
    Definition: jp2.c:473
    +
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    +
    static OPJ_BOOL opj_jp2_apply_pclr(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
    Apply collected palette data.
    Definition: jp2.c:1036
    +
    OPJ_UINT32 brand
    Definition: jp2.h:171
    +
    Channel description: channel index, type, association.
    Definition: jp2.h:93
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    struct opj_jp2_pclr opj_jp2_pclr_t
    Palette data: table entries, palette columns.
    +
    opj_jp2_pclr_t * jp2_pclr
    Definition: jp2.h:133
    +
    Message handler object used for.
    Definition: event.h:50
    +
    OPJ_UINT16 nr_entries
    Definition: jp2.h:121
    +
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    +
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    +
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    +
    OPJ_BOOL jpip_on
    Definition: jp2.h:183
    +
    OPJ_INT32 init_pos
    Definition: jp2.h:201
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_BITFIELD allow_different_bit_depth_sign
    whether different bit depth or sign per component is allowed.
    Definition: j2k.h:452
    +
    #define JP2_URL
    Data entry URL box.
    Definition: jp2.h:55
    +
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    +
    OPJ_UINT16 n
    Definition: jp2.h:102
    +
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    +
    OPJ_UINT32 type
    Definition: jp2.h:200
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    static OPJ_BOOL opj_jp2_read_jp2h(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:2690
    +
    @ JP2_STATE_END_CODESTREAM
    Definition: jp2.h:79
    +
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    +
    @ OPJ_CLRSPC_GRAY
    grayscale
    Definition: openjpeg.h:313
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    OPJ_UINT32 h
    Definition: jp2.h:160
    +
    @ JP2_IMG_STATE_UNKNOWN
    Definition: jp2.h:86
    +
    @ OPJ_CLRSPC_CMYK
    CMYK.
    Definition: openjpeg.h:316
    +
    OPJ_UINT32 * cl
    Definition: jp2.h:174
    +
    static OPJ_BYTE * opj_jp2_write_ihdr(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Image Header box - Image Header box.
    Definition: jp2.c:636
    +
    @ JP2_STATE_HEADER
    Definition: jp2.h:77
    +
    OPJ_BYTE nr_channels
    Definition: jp2.h:122
    +
    struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
    Component mappings: channel index, mapping type, palette index.
    +
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    +
    Compression parameters.
    Definition: openjpeg.h:387
    +
    OPJ_BYTE jp2_has_colr
    Definition: jp2.h:134
    +
    OPJ_UINT32 minversion
    Definition: jp2.h:172
    +
    struct opj_jp2_comps opj_jp2_comps_t
    JP2 component.
    +
    Collector for ICC profile, palette, component mapping, channel description.
    Definition: jp2.h:128
    +
    static const opj_jp2_header_handler_t * opj_jp2_find_handler(OPJ_UINT32 p_id)
    Finds the execution function related to the given box id.
    Definition: jp2.c:2492
    +
    @ OPJ_CLRSPC_UNKNOWN
    not supported by the library
    Definition: openjpeg.h:310
    +
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    +
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    +
    OPJ_UINT32 ihdr_w
    Image width coming from JP2 IHDR box.
    Definition: j2k.h:590
    +
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    +
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    +
    #define JP2_JP2H
    JP2 header box (super-box)
    Definition: jp2.h:51
    +
    @ OPJ_CLRSPC_SRGB
    sRGB
    Definition: openjpeg.h:312
    +
    OPJ_BYTE pcol
    Definition: jp2.h:110
    +
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    +
    #define JP2_IHDR
    Image header box.
    Definition: jp2.h:52
    +
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    +
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    +
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    +
    static OPJ_BOOL opj_jp2_read_boxhdr_char(opj_jp2_box_t *box, OPJ_BYTE *p_data, OPJ_UINT32 *p_number_bytes_read, OPJ_UINT32 p_box_max_size, opj_event_mgr_t *p_manager)
    Reads a box header.
    Definition: jp2.c:2764
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    +
    unsigned int flags
    Definition: openjpeg.h:604
    +
    static OPJ_BOOL opj_jp2_write_jp(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes a jpeg2000 file signature box.
    Definition: jp2.c:1861
    +
    @ JP2_STATE_UNKNOWN
    Definition: jp2.h:80
    + +
    OPJ_UINT32 jp2_state
    Definition: jp2.h:184
    +
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    +
    OPJ_UINT32 sgnd
    Definition: jp2.h:142
    +
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    +
    static OPJ_BOOL opj_jp2_setup_end_header_writing(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header after the codestream.
    Definition: jp2.c:2153
    +
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    +
    static void opj_jp2_free_pclr(opj_jp2_color_t *color)
    Definition: jp2.c:880
    +
    static OPJ_BOOL opj_jp2_setup_encoding_validation(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: jp2.c:2880
    +
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    +
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    +
    #define JP2_COLR
    Colour specification box.
    Definition: jp2.h:53
    +
    OPJ_BYTE * channel_sign
    Definition: jp2.h:118
    +
    OPJ_UINT32 m_size
    Definition: jp2.h:222
    +
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    +
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    static OPJ_BOOL opj_jp2_default_validation(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2204
    +
    OPJ_UINT32 m_numcomps_to_decode
    Definition: j2k.h:486
    +
    #define JP2_CMAP
    Component Mapping box.
    Definition: jp2.h:57
    +
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    +
    OPJ_OFF_T j2k_codestream_offset
    Definition: jp2.h:181
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    +
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    +
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_UINT32 bpc
    Definition: jp2.h:163
    +
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    +
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    +
    struct opj_procedure_list * m_procedure_list
    list of execution procedures
    Definition: jp2.h:155
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    +
    A list of procedures.
    Definition: function_list.h:57
    +
    OPJ_UINT32 id
    Definition: jp2.h:206
    +
    #define JPIP_IPTR
    Definition: indexbox_manager.h:55
    +
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    +
    opj_jp2_color_t color
    Definition: jp2.h:187
    +
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    OPJ_UINT32 bpcc
    Definition: jp2.h:143
    +
    OPJ_UINT32 jp2_img_state
    Definition: jp2.h:185
    +
    static OPJ_BOOL opj_jp2_setup_header_reading(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header.
    Definition: jp2.c:2946
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    OPJ_UINT16 asoc
    Definition: jp2.h:94
    +
    OPJ_UINT32 icc_profile_len
    Definition: jp2.h:130
    +
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    +
    struct opj_jp2_cdef opj_jp2_cdef_t
    Channel descriptions and number of descriptions.
    +
    @ OPJ_CLRSPC_SYCC
    YUV.
    Definition: openjpeg.h:314
    +
    #define OPJ_BOX_SIZE
    Definition: jp2.c:45
    +
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    +
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    +
    OPJ_UINT32 meth
    Definition: jp2.h:167
    +
    @ JP2_STATE_NONE
    Definition: jp2.h:74
    +
    #define JP2_JP2C
    Contiguous codestream box.
    Definition: jp2.h:54
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_OFF_T jpip_iptr_offset
    Definition: jp2.h:182
    +
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    +
    opj_jp2_cdef_info_t * info
    Definition: jp2.h:101
    +
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    +
    #define JPIP_FIDX
    Definition: indexbox_manager.h:52
    +
    OPJ_BYTE * m_data
    Definition: jp2.h:220
    +
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    +
    struct opj_jp2 opj_jp2_t
    JPEG-2000 file format reader/writer.
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    #define JPIP_PRXY
    Definition: indexbox_manager.h:54
    +
    @ JP2_STATE_FILE_TYPE
    Definition: jp2.h:76
    +
    static OPJ_BOOL opj_jp2_exec(opj_jp2_t *jp2, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Executes the given procedures on the given codec.
    Definition: jp2.c:2426
    +
    OPJ_UINT32 depth
    Definition: jp2.h:141
    +
    OPJ_BYTE *(* handler)(opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
    Definition: jp2.h:218
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    +
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    +
    OPJ_UINT16 alpha
    alpha channel
    Definition: openjpeg.h:697
    +
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    +
    #define JP2_CDEF
    Channel Definition box.
    Definition: jp2.h:58
    +
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    +
    static const opj_jp2_header_handler_t * opj_jp2_img_find_handler(OPJ_UINT32 p_id)
    Finds the image execution function related to the given box id.
    Definition: jp2.c:2512
    +
    static OPJ_BOOL opj_jp2_read_ihdr(opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
    Reads a IHDR box - Image Header box.
    Definition: jp2.c:561
    +
    static OPJ_BOOL opj_jp2_read_pclr(opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
    Collect palette data.
    Definition: jp2.c:1152
    +
    OPJ_UINT32 IPR
    Definition: jp2.h:166
    +
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    +
    static OPJ_BOOL opj_jp2_read_cdef(opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.c:1392
    +
    #define JP2_JP
    JPEG 2000 signature box.
    Definition: jp2.h:49
    +
    OPJ_UINT32 numcl
    Definition: jp2.h:173
    +
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    +
    OPJ_UINT32 numcomps
    Definition: jp2.h:162
    +
    static OPJ_BOOL opj_jp2_setup_decoding_validation(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: jp2.c:2896
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    +
    OPJ_BYTE * channel_size
    Definition: jp2.h:119
    +
    Channel descriptions and number of descriptions.
    Definition: jp2.h:100
    +
    @ JP2_STATE_CODESTREAM
    Definition: jp2.h:78
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    #define JP2_PCLR
    Palette box.
    Definition: jp2.h:56
    +
    Decompression parameters.
    Definition: openjpeg.h:546
    +
    OPJ_UINT32 UnkC
    Definition: jp2.h:165
    +
    OPJ_UINT32 length
    Definition: jp2.h:199
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    +
    static OPJ_BOOL opj_jp2_read_colr(opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
    Reads the Color Specification box.
    Definition: jp2.c:1464
    +
    OPJ_UINT32 enumcs
    Definition: jp2.h:169
    +
    Component mappings: channel index, mapping type, palette index.
    Definition: jp2.h:108
    +
    Definition: jp2.h:204
    +
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    +
    #define JP2_FTYP
    File type box.
    Definition: jp2.h:50
    +
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    +
    static OPJ_BOOL opj_jp2_write_ftyp(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes a FTYP box - File type box.
    Definition: jp2.c:1771
    +
    #define opj_read_bytes
    Definition: cio.h:65
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    static OPJ_BYTE * opj_jp2_write_cdef(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Channel Definition box.
    Definition: jp2.c:762
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    +
    opj_j2k_t * j2k
    handle to the J2K codec
    Definition: jp2.h:151
    +
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    + +
    struct opj_jp2_color opj_jp2_color_t
    Collector for ICC profile, palette, component mapping, channel description.
    +
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    +
    opj_jp2_cdef_t * jp2_cdef
    Definition: jp2.h:132
    +
    #define JPIP_CIDX
    Definition: indexbox_manager.h:43
    +
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    +
    opj_jp2_comps_t * comps
    Definition: jp2.h:175
    +
    static OPJ_BOOL opj_jp2_write_jp2c(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes the Jpeg2000 codestream Header box - JP2C Header box.
    Definition: jp2.c:1823
    +
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    +
    static OPJ_BOOL opj_jp2_read_ftyp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a a FTYP box - File type box.
    Definition: jp2.c:2585
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    JP2 component.
    Definition: jp2.h:140
    +
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG
    Definition: openjpeg.h:540
    +
    struct opj_jp2_img_header_writer_handler opj_jp2_img_header_writer_handler_t
    +
    OPJ_BYTE * icc_profile_buf
    Definition: jp2.h:129
    +
    OPJ_BYTE has_jp2h
    Definition: jp2.h:190
    +
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    +
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    +
    static OPJ_BOOL opj_jp2_read_jp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file signature box.
    Definition: jp2.c:2536
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    +
    OPJ_UINT16 typ
    Definition: jp2.h:94
    +
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    +
    static OPJ_BYTE * opj_jp2_write_colr(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Colour Specification box.
    Definition: jp2.c:813
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    +
    OPJ_UINT16 cmp
    Definition: jp2.h:109
    +
    #define JP2_BPCC
    Bits per component box.
    Definition: jp2.h:60
    +
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    +
    static OPJ_BOOL opj_jp2_write_jp2h(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:1664
    +
    OPJ_BYTE has_ihdr
    Definition: jp2.h:191
    +
    OPJ_BOOL(* handler)(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.h:208
    +
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    +
    static OPJ_BOOL opj_jp2_setup_end_header_reading(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header after the codestream.
    Definition: jp2.c:2188
    +
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    +
    static OPJ_BYTE * opj_jp2_write_bpcc(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Bit per Component box.
    Definition: jp2.c:688
    +
    JP2_IMG_STATE
    Definition: jp2.h:84
    +
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    +
    static OPJ_BOOL opj_jp2_setup_header_writing(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header.
    Definition: jp2.c:2911
    + + + + diff --git a/build/doc/html/jp2k__decoder_8c.html b/build/doc/html/jp2k__decoder_8c.html new file mode 100644 index 000000000..0ddd34f3f --- /dev/null +++ b/build/doc/html/jp2k__decoder_8c.html @@ -0,0 +1,277 @@ + + + + + + + +OpenJPEG: jp2k_decoder.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2k_decoder.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include <assert.h>
    +#include <limits.h>
    +#include "jp2k_decoder.h"
    +#include "openjpeg.h"
    +
    + + + + + + + + + + + + + + +

    +Functions

    static void error_callback (const char *msg, void *client_data)
     sample error callback expecting a FILE* client object More...
     
    static void warning_callback (const char *msg, void *client_data)
     sample warning callback expecting a FILE* client object More...
     
    static void info_callback (const char *msg, void *client_data)
     sample debug callback expecting no client object More...
     
    static Byte_timagetopnm (opj_image_t *image, ihdrbox_param_t **ihdrbox)
     
    Byte_tj2k_to_pnm (const char *fn, ihdrbox_param_t **ihdrbox)
     
    +

    Function Documentation

    + +

    ◆ error_callback()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void error_callback (const char * msg,
    void * client_data 
    )
    +
    +static
    +
    + +

    sample error callback expecting a FILE* client object

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ imagetopnm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static Byte_t * imagetopnm (opj_image_timage,
    ihdrbox_param_t ** ihdrbox 
    )
    +
    +static
    +
    +
    + +

    ◆ info_callback()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void info_callback (const char * msg,
    void * client_data 
    )
    +
    +static
    +
    + +

    sample debug callback expecting no client object

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ j2k_to_pnm()

    + + + +

    ◆ warning_callback()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void warning_callback (const char * msg,
    void * client_data 
    )
    +
    +static
    +
    + +

    sample warning callback expecting a FILE* client object

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jp2k__decoder_8h.html b/build/doc/html/jp2k__decoder_8h.html new file mode 100644 index 000000000..9d05a43a8 --- /dev/null +++ b/build/doc/html/jp2k__decoder_8h.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: jp2k_decoder.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2k_decoder.h File Reference
    +
    + + + + + diff --git a/build/doc/html/jp2k__decoder_8h_source.html b/build/doc/html/jp2k__decoder_8h_source.html new file mode 100644 index 000000000..8c3d48cd5 --- /dev/null +++ b/build/doc/html/jp2k__decoder_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +OpenJPEG: jp2k_decoder.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    jp2k_decoder.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef JP2K_DECODER_H_
    +
    32 # define JP2K_DECODER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "ihdrbox_manager.h"
    +
    36 
    +
    37 Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox);
    +
    38 
    +
    39 #endif /* !JP2K_DECODER_H_ */
    +
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    +
    static Byte_t * imagetopnm(opj_image_t *image, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:164
    +
    static void warning_callback(const char *msg, void *client_data)
    sample warning callback expecting a FILE* client object
    Definition: jp2k_decoder.c:148
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    +
    OPJ_UINT32 DA_y1
    Decoding area bottom boundary.
    Definition: openjpeg.h:581
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    +
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    +
    void * opj_stream_t
    Definition: openjpeg.h:660
    +
    void * opj_codec_t
    JPEG2000 codec V2.
    Definition: openjpeg.h:612
    +
    static void info_callback(const char *msg, void *client_data)
    sample debug callback expecting no client object
    Definition: jp2k_decoder.c:156
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    OPJ_UINT32 DA_x0
    Decoding area left boundary.
    Definition: openjpeg.h:575
    +
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    static void error_callback(const char *msg, void *client_data)
    sample error callback expecting a FILE* client object
    Definition: jp2k_decoder.c:140
    +
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    + +
    OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    + +
    OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    + +
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    +
    void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    +
    Decompression parameters.
    Definition: openjpeg.h:546
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    + +
    void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    +
    opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    +
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    +
    OPJ_UINT32 DA_y0
    Decoding area up boundary.
    Definition: openjpeg.h:579
    +
    OPJ_UINT32 DA_x1
    Decoding area right boundary.
    Definition: openjpeg.h:577
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    +
    @ OPJ_CODEC_J2K
    JPEG-2000 codestream : read/write.
    Definition: openjpeg.h:324
    + + + + diff --git a/build/doc/html/jp2k__encoder_8c.html b/build/doc/html/jp2k__encoder_8c.html new file mode 100644 index 000000000..513891250 --- /dev/null +++ b/build/doc/html/jp2k__encoder_8c.html @@ -0,0 +1,1784 @@ + + + + + + + +OpenJPEG: jp2k_encoder.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2k_encoder.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <math.h>
    +#include <assert.h>
    +#include "jp2k_encoder.h"
    +#include "j2kheader_manager.h"
    +#include "imgreg_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    message_param_tsearch_message (Byte8_t class_id, Byte8_t in_class_id, Byte8_t csn, message_param_t *msg)
     search a message by class_id More...
     
    Byte_trecons_codestream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *codelen)
     reconstruct j2k codestream from JPT- (in future, JPP-) stream More...
     
    Byte_trecons_j2k (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     reconstruct j2k codestream from message queue More...
     
    Byte_tadd_emptyboxstream (placeholder_param_t *phld, Byte_t *jp2stream, Byte8_t *jp2len)
     
    Byte_tadd_msgstream (message_param_t *message, Byte_t *origstream, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_trecons_jp2 (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
     reconstruct jp2 file codestream from message queue More...
     
    OPJ_BOOL isJPPstream (Byte8_t csn, msgqueue_param_t *msgqueue)
     
    Byte_trecons_codestream_from_JPTstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     
    Byte_trecons_codestream_from_JPPstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     
    Byte_tadd_EOC (Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tadd_mainhead_msgstream (msgqueue_param_t *msgqueue, Byte_t *origstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t *j2klen)
     
    Byte8_t get_last_tileID (msgqueue_param_t *msgqueue, Byte8_t csn, OPJ_BOOL isJPPstream)
     
    Byte_tadd_emptytilestream (const Byte8_t tileID, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tadd_SOTmkr (Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_trecons_bitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_LRCPbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_RLCPbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_RPCLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_PCRLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_CPRLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    int comp_numOfprcts (Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r)
     
    Byte8_t comp_seqID (Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r, int p)
     
    Byte_trecons_packet (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, int prct_idx, int lay_idx, Byte8_t *j2klen)
     
    Byte_trecons_precinct (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, Byte8_t seqID, Byte8_t *j2klen)
     
    Byte_tadd_padding (Byte8_t padding, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tgene_msgstream (message_param_t *message, Byte_t *stream, Byte8_t *length)
     
    Byte_tgene_emptytilestream (const Byte8_t tileID, Byte8_t *length)
     
    Byte_trecons_j2kmainhead (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
     reconstruct j2k codestream of mainheader from message queue More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ add_emptyboxstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * add_emptyboxstream (placeholder_param_tphld,
    Byte_tjp2stream,
    Byte8_tjp2len 
    )
    +
    +
    + +

    ◆ add_emptytilestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * add_emptytilestream (const Byte8_t tileID,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ add_EOC()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t * add_EOC (Byte_tj2kstream,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ add_mainhead_msgstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * add_mainhead_msgstream (msgqueue_param_tmsgqueue,
    Byte_torigstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ add_msgstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * add_msgstream (message_param_tmessage,
    Byte_torigstream,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ add_padding()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * add_padding (Byte8_t padding,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    +
    + +

    References opj_free(), and opj_malloc().

    + +

    Referenced by recons_packet(), and recons_precinct().

    + +
    +
    + +

    ◆ add_SOTmkr()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t * add_SOTmkr (Byte_tj2kstream,
    Byte8_tj2klen 
    )
    +
    + +

    References opj_free(), and opj_malloc().

    + +

    Referenced by recons_codestream_from_JPPstream().

    + +
    +
    + +

    ◆ comp_numOfprcts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int comp_numOfprcts (Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int r 
    )
    +
    +
    + +

    ◆ comp_seqID()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t comp_seqID (Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int r,
    int p 
    )
    +
    +
    + +

    ◆ gene_emptytilestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t * gene_emptytilestream (const Byte8_t tileID,
    Byte8_tlength 
    )
    +
    + +

    References opj_malloc().

    + +

    Referenced by add_emptytilestream().

    + +
    +
    + +

    ◆ gene_msgstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * gene_msgstream (message_param_tmessage,
    Byte_tstream,
    Byte8_tlength 
    )
    +
    +
    + +

    ◆ get_last_tileID()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t get_last_tileID (msgqueue_param_tmsgqueue,
    Byte8_t csn,
    OPJ_BOOL isJPPstream 
    )
    +
    +
    + +

    ◆ isJPPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL isJPPstream (Byte8_t csn,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ recons_bitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_bitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_codestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_codestream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tcodelen 
    )
    +
    + +

    reconstruct j2k codestream from JPT- (in future, JPP-) stream

    +
    Parameters
    + + + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal JPT- JPP- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]codelencodestream length
    +
    +
    +
    Returns
    generated reconstructed j2k codestream
    + +

    References isJPPstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    + +

    Referenced by recons_j2k(), and recons_jp2().

    + +
    +
    + +

    ◆ recons_codestream_from_JPPstream()

    + + + +

    ◆ recons_codestream_from_JPTstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_codestream_from_JPTstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_CPRLbitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_CPRLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_j2k()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_j2k (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    +
    + +

    reconstruct j2k codestream from message queue

    +
    Parameters
    + + + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]j2klenpointer to the j2k codestream length
    +
    +
    +
    Returns
    generated reconstructed j2k codestream
    + +

    References recons_codestream().

    + +

    Referenced by decode_jpip(), and jpipstream_to_pnm().

    + +
    +
    + +

    ◆ recons_j2kmainhead()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_j2kmainhead (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    +
    + +

    reconstruct j2k codestream of mainheader from message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]j2klenpointer to the j2k codestream length
    +
    +
    +
    Returns
    generated reconstructed j2k codestream
    + +

    References add_mainhead_msgstream().

    + +

    Referenced by get_SIZ_from_jpipstream().

    + +
    +
    + +

    ◆ recons_jp2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_jp2 (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tjp2len 
    )
    +
    + +

    reconstruct jp2 file codestream from message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]jp2lenpointer to the jp2 codestream length
    +
    +
    +
    Returns
    generated reconstructed jp2 codestream
    + +

    References add_emptyboxstream(), add_msgstream(), msgqueue_param::first, METADATA_MSG, message_param::next, opj_free(), placeholder_param::OrigBH, placeholder_param::OrigBHlen, message_param::phld, recons_codestream(), and search_message().

    + +

    Referenced by decode_jpip(), and handle_JP2saveMSG().

    + +
    +
    + +

    ◆ recons_LRCPbitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_LRCPbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_packet()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_packet (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int * max_reslev,
    int comp_idx,
    int res_idx,
    int prct_idx,
    int lay_idx,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_PCRLbitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_PCRLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_precinct()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_precinct (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int * max_reslev,
    int comp_idx,
    int res_idx,
    Byte8_t seqID,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_RLCPbitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_RLCPbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ recons_RPCLbitstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * recons_RPCLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    +
    +
    + +

    ◆ search_message()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    message_param_t * search_message (Byte8_t class_id,
    Byte8_t in_class_id,
    Byte8_t csn,
    message_param_tmsg 
    )
    +
    + +

    search a message by class_id

    +
    Parameters
    + + + + + +
    [in]class_idclass identifiers
    [in]in_class_idin-class identifiers, -1 means any
    [in]csncodestream number
    [in]msgfirst message pointer of the searching list
    +
    +
    +
    Returns
    found message pointer
    + +

    References message_param::class_id, message_param::csn, message_param::in_class_id, and message_param::next.

    + +

    Referenced by add_mainhead_msgstream(), recons_codestream_from_JPPstream(), recons_codestream_from_JPTstream(), recons_jp2(), recons_packet(), and recons_precinct().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jp2k__encoder_8h.html b/build/doc/html/jp2k__encoder_8h.html new file mode 100644 index 000000000..f3502d5bd --- /dev/null +++ b/build/doc/html/jp2k__encoder_8h.html @@ -0,0 +1,260 @@ + + + + + + + +OpenJPEG: jp2k_encoder.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jp2k_encoder.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "msgqueue_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions

    Byte_trecons_j2k (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     reconstruct j2k codestream from message queue More...
     
    Byte_trecons_jp2 (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
     reconstruct jp2 file codestream from message queue More...
     
    Byte_trecons_j2kmainhead (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
     reconstruct j2k codestream of mainheader from message queue More...
     
    +

    Function Documentation

    + +

    ◆ recons_j2k()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_j2k (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    +
    + +

    reconstruct j2k codestream from message queue

    +
    Parameters
    + + + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]j2klenpointer to the j2k codestream length
    +
    +
    +
    Returns
    generated reconstructed j2k codestream
    + +

    References recons_codestream().

    + +

    Referenced by decode_jpip(), and jpipstream_to_pnm().

    + +
    +
    + +

    ◆ recons_j2kmainhead()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_j2kmainhead (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    +
    + +

    reconstruct j2k codestream of mainheader from message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]j2klenpointer to the j2k codestream length
    +
    +
    +
    Returns
    generated reconstructed j2k codestream
    + +

    References add_mainhead_msgstream().

    + +

    Referenced by get_SIZ_from_jpipstream().

    + +
    +
    + +

    ◆ recons_jp2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* recons_jp2 (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tjp2len 
    )
    +
    + +

    reconstruct jp2 file codestream from message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]jp2lenpointer to the jp2 codestream length
    +
    +
    +
    Returns
    generated reconstructed jp2 codestream
    + +

    References add_emptyboxstream(), add_msgstream(), msgqueue_param::first, METADATA_MSG, message_param::next, opj_free(), placeholder_param::OrigBH, placeholder_param::OrigBHlen, message_param::phld, recons_codestream(), and search_message().

    + +

    Referenced by decode_jpip(), and handle_JP2saveMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jp2k__encoder_8h_source.html b/build/doc/html/jp2k__encoder_8h_source.html new file mode 100644 index 000000000..578a8b4b5 --- /dev/null +++ b/build/doc/html/jp2k__encoder_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + +OpenJPEG: jp2k_encoder.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    jp2k_encoder.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef JP2K_ENCODER_H_
    +
    33 # define JP2K_ENCODER_H_
    +
    34 
    +
    35 #include "byte_manager.h"
    +
    36 #include "msgqueue_manager.h"
    +
    37 
    +
    49 Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn,
    +
    50  int fw, int fh, Byte8_t *j2klen);
    +
    51 
    +
    52 
    +
    62 Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn,
    +
    63  Byte8_t *jp2len);
    +
    64 
    +
    74 Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream,
    +
    75  Byte8_t csn, Byte8_t *j2klen);
    +
    76 
    +
    77 #endif /* !JP2K_ENCODER_H_ */
    +
    +
    #define METADATA_MSG
    Definition: msgqueue_manager.h:45
    +
    int comp_numOfprcts(Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r)
    Definition: jp2k_encoder.c:576
    +
    #define TILE_MSG
    Definition: msgqueue_manager.h:42
    +
    Byte_t * add_padding(Byte8_t padding, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:826
    +
    Byte_t * gene_emptytilestream(const Byte8_t tileID, Byte8_t *length)
    Definition: jp2k_encoder.c:880
    +
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    +
    Byte_t * recons_codestream_from_JPTstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:189
    +
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    +
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    +
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    +
    #define EXT_TILE_MSG
    Definition: msgqueue_manager.h:43
    +
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    + +
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    +
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    +
    #define PRECINCT_MSG
    Definition: msgqueue_manager.h:39
    +
    Byte_t * recons_CPRLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:542
    +
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    +
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    +
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    +
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    +
    Byte_t * add_EOC(Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:844
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    + +
    #define FCGI_stderr
    Definition: jp2k_encoder.c:48
    +
    OPJ_BOOL last_byte
    if message contains the last byte of the data-bin
    Definition: msgqueue_manager.h:50
    +
    Byte8_t length
    message byte length
    Definition: msgqueue_manager.h:55
    +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    Byte8_t bin_offset
    offset of the data in this message from the start of the data-bin
    Definition: msgqueue_manager.h:54
    +
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    +
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    message parameters
    Definition: msgqueue_manager.h:48
    +
    Byte_t * add_SOTmkr(Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:345
    +
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    + +
    Byte8_t comp_seqID(Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r, int p)
    Definition: jp2k_encoder.c:675
    +
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    +
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    +
    struct message_param * next
    pointer to the next message
    Definition: msgqueue_manager.h:59
    +
    Byte_t * recons_precinct(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, Byte8_t seqID, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:636
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    Byte_t * recons_packet(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, int prct_idx, int lay_idx, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:593
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    + +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_OFF_T res_offset
    offset in the resource
    Definition: msgqueue_manager.h:57
    +
    Byte_t * recons_codestream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *codelen)
    reconstruct j2k codestream from JPT- (in future, JPP-) stream
    Definition: jp2k_encoder.c:149
    +
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    Byte_t * gene_msgstream(message_param_t *message, Byte_t *stream, Byte8_t *length)
    Definition: jp2k_encoder.c:864
    +
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    +
    Byte8_t in_class_id
    in-class identifier A.2.3
    Definition: msgqueue_manager.h:51
    +
    Byte8_t aux
    Definition: msgqueue_manager.h:56
    +
    Byte_t * recons_LRCPbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:426
    +
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    +
    progression order
    Definition: index_manager.h:55
    +
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    +
    Byte_t * add_msgstream(message_param_t *message, Byte_t *origstream, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:741
    +
    Byte_t * recons_RPCLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:481
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    #define MAINHEADER_MSG
    Definition: msgqueue_manager.h:44
    + +
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    +
    Byte8_t class_id
    class identifiers
    Definition: msgqueue_manager.h:52
    +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    Byte8_t get_last_tileID(msgqueue_param_t *msgqueue, Byte8_t csn, OPJ_BOOL isJPPstream)
    Definition: jp2k_encoder.c:692
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    + +
    Byte_t * recons_bitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:389
    +
    placeholder_param_t * phld
    placeholder pointer in index
    Definition: msgqueue_manager.h:58
    +
    Byte_t * recons_RLCPbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:451
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    +
    Byte_t * add_mainhead_msgstream(msgqueue_param_t *msgqueue, Byte_t *origstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:325
    +
    Byte_t * recons_codestream_from_JPPstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:257
    +
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    +
    Byte_t * add_emptytilestream(const Byte8_t tileID, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:802
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    OPJ_BOOL isJPPstream(Byte8_t csn, msgqueue_param_t *msgqueue)
    Definition: jp2k_encoder.c:161
    +
    Byte_t * recons_PCRLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:507
    +
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    #define TILE_HEADER_MSG
    Definition: msgqueue_manager.h:41
    +
    message_param_t * search_message(Byte8_t class_id, Byte8_t in_class_id, Byte8_t csn, message_param_t *msg)
    search a message by class_id
    Definition: jp2k_encoder.c:717
    +
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    +
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    +
    Byte_t * add_emptyboxstream(placeholder_param_t *phld, Byte_t *jp2stream, Byte8_t *jp2len)
    Definition: jp2k_encoder.c:770
    + + + + diff --git a/build/doc/html/jpip__parser_8c.html b/build/doc/html/jpip__parser_8c.html new file mode 100644 index 000000000..3f7db732b --- /dev/null +++ b/build/doc/html/jpip__parser_8c.html @@ -0,0 +1,693 @@ + + + + + + + +OpenJPEG: jpip_parser.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jpip_parser.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <string.h>
    +#include <math.h>
    +#include "jpip_parser.h"
    +#include "channel_manager.h"
    +#include "imgreg_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_BOOL identify_target (query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
     REQUEST: target identification by target or tid request. More...
     
    OPJ_BOOL associate_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel association this must be processed before any process. More...
     
    OPJ_BOOL open_channel (query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: new channel (cnew) assignment. More...
     
    OPJ_BOOL close_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel close (cclose) More...
     
    void enqueue_imagedata (query_param_t query_param, msgqueue_param_t *msgqueue)
     enqueue tiles or precincts into the message queue More...
     
    OPJ_BOOL enqueue_metabins (query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue)
     enqueue metadata bins into the message queue More...
     
    OPJ_BOOL gene_JPIPstream (query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
     REQUEST: view-window (fsiz) More...
     
    void enqueue_precincts (int xmin, int xmax, int ymin, int ymax, int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bins into the queue More...
     
    void enqueue_allprecincts (int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
     enqueue all precincts inside a tile into the queue More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ associate_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL associate_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: channel association this must be processed before any process.

    +
    Parameters
    + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [out]cursessionaddress of the associated session pointer
    [out]curchanneladdress of the associated channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cid, query_param::cnew, FCGI_stderr, OPJ_FALSE, OPJ_TRUE, search_session_and_channel(), and set_channel_variable_param().

    + +
    +
    + +

    ◆ close_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL close_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: channel close (cclose)

    +
    Parameters
    + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in,out]cursessionaddress of the session pointer of deleting channel
    [in,out]curchanneladdress of the deleting channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cclose, delete_channel(), delete_session(), FCGI_stdout, logstream, query_param::numOfcclose, OPJ_FALSE, OPJ_TRUE, search_channel(), and search_session_and_channel().

    + +
    +
    + +

    ◆ enqueue_allprecincts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_allprecincts (int tile_id,
    int level,
    int lastcomp,
    OPJ_BOOLcomps,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    enqueue all precincts inside a tile into the queue

    +
    Parameters
    + + + + + + + +
    [in]tile_idtile index
    [in]leveldecomposition level
    [in]lastcomplast component number
    [in]compspointer to the array that stores the requested components
    [in]layersnumber of quality layers
    [in]msgqueuemessage queue
    +
    +
    +
    Returns
    + +

    References msgqueue_param::cachemodel, index_param::COD, target_param::codeidx, SIZmarker_param::Csiz, enqueue_precinct(), get_tile_XSiz(), get_tile_YSiz(), CODmarker_param::numOfdecomp, CODmarker_param::Scod, index_param::SIZ, cachemodel_param::target, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by enqueue_imagedata().

    + +
    +
    + +

    ◆ enqueue_imagedata()

    + + + +

    ◆ enqueue_metabins()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL enqueue_metabins (query_param_t query_param,
    metadatalist_param_tmetadatalist,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    enqueue metadata bins into the message queue

    +
    Parameters
    + + + + +
    [in]query_paramstructured query
    [in]metadatalistpointer to metadata bin list
    [in,out]msgqueuemessage queue pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::box_type, enqueue_metadata(), FCGI_stdout, MAX_NUMOFBOX, OPJ_FALSE, OPJ_TRUE, and search_metadataidx().

    + +

    Referenced by gene_JPIPstream().

    + +
    +
    + +

    ◆ enqueue_precincts()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_precincts (int xmin,
    int xmax,
    int ymin,
    int ymax,
    int tile_id,
    int level,
    int lastcomp,
    OPJ_BOOLcomps,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    enqueue precinct data-bins into the queue

    +
    Parameters
    + + + + + + + + + + + +
    [in]xminmin x coordinate in the tile at the decomposition level
    [in]xmaxmax x coordinate in the tile at the decomposition level
    [in]yminmin y coordinate in the tile at the decomposition level
    [in]ymaxmax y coordinate in the tile at the decomposition level
    [in]tile_idtile index
    [in]leveldecomposition level
    [in]lastcomplast component number
    [in]compspointer to the array that stores the requested components
    [in]layersnumber of quality layers
    [in]msgqueuemessage queue
    +
    +
    +
    Returns
    + +

    References msgqueue_param::cachemodel, index_param::COD, target_param::codeidx, SIZmarker_param::Csiz, enqueue_precinct(), get_tile_XSiz(), get_tile_YSiz(), CODmarker_param::numOfdecomp, CODmarker_param::Scod, index_param::SIZ, cachemodel_param::target, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    + +

    Referenced by enqueue_imagedata().

    + +
    +
    + +

    ◆ gene_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL gene_JPIPstream (query_param_t query_param,
    target_param_ttarget,
    session_param_tcursession,
    channel_param_tcurchannel,
    msgqueue_param_t ** msgqueue 
    )
    +
    + +

    REQUEST: view-window (fsiz)

    +
    Parameters
    + + + + + + +
    [in]query_paramstructured query
    [in]targetrequested target pointer
    [in,out]cursessionassociated session pointer
    [in,out]curchannelassociated channel pointer
    [out]msgqueueaddress of the message queue pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::box_type, channel_param::cachemodel, index_param::COD, target_param::codeidx, enqueue_imagedata(), enqueue_mainheader(), enqueue_metabins(), FCGI_stdout, query_param::fx, query_param::fy, gene_cachemodel(), gene_msgqueue(), cachemodel_param::jppstream, JPPstream, query_param::layers, query_param::len, query_param::metadata_only, index_param::metadatalist, cachemodel_param::mhead_model, CODmarker_param::numOflayers, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and cachemodel_param::target.

    + +
    +
    + +

    ◆ identify_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL identify_target (query_param_t query_param,
    targetlist_param_ttargetlist,
    target_param_t ** target 
    )
    +
    + +

    REQUEST: target identification by target or tid request.

    +
    Parameters
    + + + + +
    [in]query_paramstructured query
    [in]targetlisttarget list pointer
    [out]targetaddress of target pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cid, FCGI_stdout, gene_target(), OPJ_FALSE, OPJ_TRUE, search_target(), search_targetBytid(), query_param::target, and query_param::tid.

    + +
    +
    + +

    ◆ open_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL open_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    auxtrans_param_t auxtrans,
    target_param_ttarget,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: new channel (cnew) assignment.

    +
    Parameters
    + + + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in]auxtransauxiliary transport
    [in]targetrequested target pointer
    [in,out]cursessionaddress of the associated/opened session pointer
    [in,out]curchanneladdress of the associated/opened channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References gene_cachemodel(), gene_channel(), gene_session(), JPPstream, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and search_cachemodel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jpip__parser_8h.html b/build/doc/html/jpip__parser_8h.html new file mode 100644 index 000000000..c0701d692 --- /dev/null +++ b/build/doc/html/jpip__parser_8h.html @@ -0,0 +1,371 @@ + + + + + + + +OpenJPEG: jpip_parser.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jpip_parser.h File Reference
    +
    +
    +
    #include "query_parser.h"
    +#include "session_manager.h"
    +#include "target_manager.h"
    +#include "msgqueue_manager.h"
    +#include "channel_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_BOOL identify_target (query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
     REQUEST: target identification by target or tid request. More...
     
    OPJ_BOOL associate_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel association this must be processed before any process. More...
     
    OPJ_BOOL open_channel (query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: new channel (cnew) assignment. More...
     
    OPJ_BOOL close_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel close (cclose) More...
     
    OPJ_BOOL gene_JPIPstream (query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
     REQUEST: view-window (fsiz) More...
     
    +

    Function Documentation

    + +

    ◆ associate_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL associate_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: channel association this must be processed before any process.

    +
    Parameters
    + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [out]cursessionaddress of the associated session pointer
    [out]curchanneladdress of the associated channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cid, query_param::cnew, FCGI_stderr, OPJ_FALSE, OPJ_TRUE, search_session_and_channel(), and set_channel_variable_param().

    + +
    +
    + +

    ◆ close_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL close_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: channel close (cclose)

    +
    Parameters
    + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in,out]cursessionaddress of the session pointer of deleting channel
    [in,out]curchanneladdress of the deleting channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cclose, delete_channel(), delete_session(), FCGI_stdout, logstream, query_param::numOfcclose, OPJ_FALSE, OPJ_TRUE, search_channel(), and search_session_and_channel().

    + +
    +
    + +

    ◆ gene_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL gene_JPIPstream (query_param_t query_param,
    target_param_ttarget,
    session_param_tcursession,
    channel_param_tcurchannel,
    msgqueue_param_t ** msgqueue 
    )
    +
    + +

    REQUEST: view-window (fsiz)

    +
    Parameters
    + + + + + + +
    [in]query_paramstructured query
    [in]targetrequested target pointer
    [in,out]cursessionassociated session pointer
    [in,out]curchannelassociated channel pointer
    [out]msgqueueaddress of the message queue pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::box_type, channel_param::cachemodel, index_param::COD, target_param::codeidx, enqueue_imagedata(), enqueue_mainheader(), enqueue_metabins(), FCGI_stdout, query_param::fx, query_param::fy, gene_cachemodel(), gene_msgqueue(), cachemodel_param::jppstream, JPPstream, query_param::layers, query_param::len, query_param::metadata_only, index_param::metadatalist, cachemodel_param::mhead_model, CODmarker_param::numOflayers, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and cachemodel_param::target.

    + +
    +
    + +

    ◆ identify_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL identify_target (query_param_t query_param,
    targetlist_param_ttargetlist,
    target_param_t ** target 
    )
    +
    + +

    REQUEST: target identification by target or tid request.

    +
    Parameters
    + + + + +
    [in]query_paramstructured query
    [in]targetlisttarget list pointer
    [out]targetaddress of target pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References query_param::cid, FCGI_stdout, gene_target(), OPJ_FALSE, OPJ_TRUE, search_target(), search_targetBytid(), query_param::target, and query_param::tid.

    + +
    +
    + +

    ◆ open_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL open_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    auxtrans_param_t auxtrans,
    target_param_ttarget,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    +
    + +

    REQUEST: new channel (cnew) assignment.

    +
    Parameters
    + + + + + + + +
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in]auxtransauxiliary transport
    [in]targetrequested target pointer
    [in,out]cursessionaddress of the associated/opened session pointer
    [in,out]curchanneladdress of the associated/opened channel pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References gene_cachemodel(), gene_channel(), gene_session(), JPPstream, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and search_cachemodel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jpip__parser_8h_source.html b/build/doc/html/jpip__parser_8h_source.html new file mode 100644 index 000000000..796d121bb --- /dev/null +++ b/build/doc/html/jpip__parser_8h_source.html @@ -0,0 +1,243 @@ + + + + + + + +OpenJPEG: jpip_parser.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    jpip_parser.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef JPIP_PARSER_H_
    +
    33 # define JPIP_PARSER_H_
    +
    34 
    +
    35 #include "query_parser.h"
    +
    36 #include "session_manager.h"
    +
    37 #include "target_manager.h"
    +
    38 #include "msgqueue_manager.h"
    +
    39 #include "channel_manager.h"
    +
    40 
    + +
    50  targetlist_param_t *targetlist, target_param_t **target);
    +
    51 
    + +
    63  sessionlist_param_t *sessionlist,
    +
    64  session_param_t **cursession,
    +
    65  channel_param_t **curchannel);
    + +
    78  sessionlist_param_t *sessionlist,
    +
    79  auxtrans_param_t auxtrans,
    +
    80  target_param_t *target,
    +
    81  session_param_t **cursession,
    +
    82  channel_param_t **curchannel);
    +
    83 
    + +
    94  sessionlist_param_t *sessionlist,
    +
    95  session_param_t **cursession,
    +
    96  channel_param_t **curchannel);
    +
    97 
    + +
    109  target_param_t *target,
    +
    110  session_param_t *cursession,
    +
    111  channel_param_t *curchannel,
    +
    112  msgqueue_param_t **msgqueue);
    +
    113 
    +
    114 #endif /* !JPIP_PARSER_H_ */
    +
    +
    int ox
    frame size (fsiz)
    Definition: imgreg_manager.h:39
    +
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    +
    int ry
    Definition: query_parser.h:51
    +
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    +
    Session parameters.
    Definition: session_manager.h:38
    +
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    +
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    +
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    +
    OPJ_BOOL metadata_only
    metadata-only request
    Definition: query_parser.h:69
    +
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    +
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    +
    int len
    maximum response length
    Definition: query_parser.h:71
    +
    Byte4_t minvalue
    minimal value
    Definition: index_manager.h:148
    +
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    +
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    +
    #define logstream
    Definition: jpip_parser.c:45
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    +
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    +
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    + +
    int fy
    frame size (fx,fy)
    Definition: query_parser.h:50
    + +
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    +
    Session list parameters.
    Definition: session_manager.h:45
    +
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    +
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    + +
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    +
    image_return_t return_type
    image return type
    Definition: query_parser.h:70
    +
    char * cclose
    list of closing channel identifiers, separated by '\0'
    Definition: query_parser.h:58
    +
    index parameters
    Definition: index_manager.h:86
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    +
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    +
    int oy
    Definition: imgreg_manager.h:39
    +
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    +
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    +
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    +
    int lastcomp
    last component number
    Definition: query_parser.h:53
    +
    OPJ_BOOL jppstream
    return type, true: JPP-stream, false: JPT-stream
    Definition: cachemodel_manager.h:39
    +
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    +
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    +
    image region parameters
    Definition: imgreg_manager.h:35
    +
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    +
    int sx
    offset (roff)
    Definition: imgreg_manager.h:40
    +
    int rw
    Definition: query_parser.h:51
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    OPJ_BOOL * comps
    components (dynamic array) for jpp-stream, null means all components
    Definition: query_parser.h:54
    +
    int rh
    roi region
    Definition: query_parser.h:51
    +
    char * target
    target name
    Definition: query_parser.h:48
    +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    +
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    +
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    +
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    +
    #define MAX_NUMOFBOX
    maximum number of meta request box
    Definition: query_parser.h:38
    + +
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    +
    char box_type[MAX_NUMOFBOX][4]
    interested box-types
    Definition: query_parser.h:60
    +
    void enqueue_imagedata(query_param_t query_param, msgqueue_param_t *msgqueue)
    enqueue tiles or precincts into the message queue
    Definition: jpip_parser.c:300
    +
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    +
    int sy
    Definition: imgreg_manager.h:40
    + +
    int layers
    quality layers
    Definition: query_parser.h:52
    +
    char * cid
    channel identifier
    Definition: query_parser.h:55
    +
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    +
    cachemodel_param_t * cachemodel
    reference cachemodel pointer
    Definition: msgqueue_manager.h:67
    +
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    +
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    int level
    region size (rsiz)
    Definition: imgreg_manager.h:41
    +
    OPJ_BOOL enqueue_metabins(query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue)
    enqueue metadata bins into the message queue
    Definition: jpip_parser.c:488
    +
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    +
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    +
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    +
    Byte4_t maxvalue
    maximal value
    Definition: index_manager.h:149
    +
    #define FCGI_stderr
    Definition: jpip_parser.c:44
    +
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    +
    cachemodel_param_t * cachemodel
    reference pointer to the cache model
    Definition: channel_manager.h:44
    +
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    +
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    +
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    +
    Target list parameters.
    Definition: target_manager.h:59
    +
    char * tid
    target identifier
    Definition: query_parser.h:49
    +
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    +
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    +
    1-dimensional range parameters
    Definition: index_manager.h:147
    +
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    +
    int numOfcclose
    number of closing channels
    Definition: query_parser.h:59
    +
    int xosiz
    Definition: imgreg_manager.h:36
    +
    target parameters
    Definition: target_manager.h:40
    +
    Query parameters.
    Definition: query_parser.h:47
    +
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    void enqueue_precincts(int xmin, int xmax, int ymin, int ymax, int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bins into the queue
    Definition: jpip_parser.c:386
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    +
    #define FCGI_stdout
    Definition: jpip_parser.c:43
    +
    @ JPPstream
    Definition: query_parser.h:44
    +
    void enqueue_allprecincts(int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
    enqueue all precincts inside a tile into the queue
    Definition: jpip_parser.c:452
    +
    int yosiz
    Definition: imgreg_manager.h:36
    +
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    +
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    +
    Channel parameters.
    Definition: channel_manager.h:43
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    int rx
    Definition: query_parser.h:51
    +
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    +
    int fx
    Definition: query_parser.h:50
    +
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    + +
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    + +
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    + + + + diff --git a/build/doc/html/jpip_architect.png b/build/doc/html/jpip_architect.png new file mode 100644 index 0000000000000000000000000000000000000000..5375bf91f1305181ddcddcd0ab2fe63b9a2446ee GIT binary patch literal 62577 zcmYg&2RN2(__yr6LXw>xvdP{avcoHz?7c!n_IRwyN@SFgJtKRIBqV#6O=h-i-|7E9 zzVG-P$J=^&p8LM9>pIWhI-e*_bwwh48hkV~G$Lgsc`YS#N!Q6HbR4?I>%eU#?aZ=|`=?L>|rJQI*^`YKR0S7Q&A8 zYJMX06txFEJWJLddRsJkeddE3()!RFLR_G+Kia&u{guE%T?L{GvPNOib{rKzp> z4Gau!$1GBZ3x0c;bK?e=0&~1RCsl5GdhlYMVX1EM=)kS{t2b}RX`-KRO;yhZoRvO& zMKzrFD0|S(NhnPr`^ytXk_+B;(gXEE?FP>c-N3*=E-tP_l`!*U!_pO3kv~5_$l<5WoOc-iJHxl-MY)m2(i_pfbjZKI<)rMkjLqXl~eZ@QOM-*M-rOK%IiW|rsV z@CD>CkT_JQ7MFhT*<;yOT=SOh2>Fd_2-7Oe(PVRTbL&mwdhp=EnV2#SOa7^mt9kQT zgZ<4ew?vhPS(*-yl@2qt3K^sW2nh&^efgAfwSo`i5DDE@?r_8Q_V!3*dsi$&f4XF^ z8E;QdPdG81&)QHfmr;!w^;nJbG`*zH!Nz$1^zaR4#@O2WdWadk ze}T3GJUFD?;ri%~t(@Nes~e+K_+b_mby7X!n-`{%e}BGai??7z{ePvp<1Y@)YWr;}M;)r=nVI61Op8jG_;>)5+fQ)YQ}=D_Vf>oJg5A zJ4aya>8jr>{oy~V)Q`MwY65pFY=W%rCv@`?!VaN466STsJ)=7?|BP3GS@Oi?iS|uzMl{JOdrEK-Nu4Hp(Fgq(N z%R}q~^`$h6E3GYm3NF)=C%->UsB$E#z%h|qLp$p)*88-+y6Uk#bHP!Q%^bfvQDNB; zPNb@=JUBX9U0eI$JC!;2baf{yzSbV)QV_Dq##>Q>9_sPi=d1kT@ z(S&YoHVQZwii$W)6qJ;?y2U!|qlX*gx44Z9va_EZ@62b(MHFclG01UY3MmE4$mD8e zt;rH6s^q%Ly1DJ@;qDO;dlN*-w_8-K*I2Foh4&a78~Zz2d$=`d$Tbi-M}*VExc?^MT{ex4G)b!1z4*LT#Pd}A4w-3+f@Bir+b{tcCOc>(h@Ux8)pDBQggJT-DUb%Tk zvYHJR-lv`(zrv47mA}`W3~_F=iHeHy^18yFiHeG%r>AEjkJ9(0z{lEUZPLNowigzz z#UY{3$lV?;%vQ@H;-_FrdHGeoNUKx>a;wOb%9m-W@Pb|vX zI8MwQUi)O)YSQ3g|C@>cV{xJLRbQGg4&N&Lfy=OJb+q`M8luCksj6z^`*&R0U&nqe z!NI}EEVK$OHj0<>%orFL*rB`g9T5hVHe0_N$J^S1I_BFn`cefQS8W`TH!m^jk?{#1 zxZd?r;y=tz-=LutiFsV89bleyp1&&=LA;-9BwnYFNci%`V|9QDUJBk+7khsYjcW`#(R3-@ku9FE0<4 zQk$I;MV+Nt2c-~-Q-wZZ+S1v-?fkqv@^{@U2`r_WaU(x5tSj1&&T zBbSNrxHvt8SCXS3d)K?{UXLHfeE)t_pN+Klj@j2pGI&oOZtj`-XRO-ae*HRE^;DN{ zWJ0Yg5NZ`_YqJXq3XaasO5eNJ+0})UqZ)?1;Yb;7o~ZL&6JtTbk3>&zJWcqi!o!ER zsi`;NY{2V9k9aCnx=lDeS5Uw%87nZ3_(2B6g0)e5Jz+{8Rw88 zztUWJ+Wf}GF*hpBmwCjS*v@zS`z}h#?>H_wc_K>=hk+pj)@f^^;x0FL8T=_GCWb%d zb?-8_Y0G={{C+q#8)K#LFn&P~gi}R^yg2(uLPS(uQ$vi0r>v^Fe{kUBfzTt5`a16( zcHL>xI&Cn9<)dWU#)hHxGmJU=OE z*spAC-$zG1M+*LfY9!D6yT#v#g&bP@_u1L2*}$vcRrWU{I(82Za)#F!3nc>10s2V$ z9g|uOw70hhUS0hAk@A3+nDyR0EGCbmO@q3Ul9J7};e0=-tCRgdaO63u2s+B|sU{tt zp8C9aQSCHIP8)`Sj^5PNWLWJWXx&4BB284WuFzM>C1;N^pMWizF6ny&&(*Rk#!ZCQ z)O6O+P}_k6JNR>cU7a^{7FLb)gWX+t9M!x1IOt4a$oYkZy`6bE5|UW>5iBgM(NbS+ zx!`g|=IGLicd4GOH%XuVr}65eO?T#=4jToX_;UeaVMSa3B^&Fb#SIM&R8&;BOh!gV zv|W{zmHBEZ7WVchyNimds;YIj2yN@@>u=w_4ZGfXIFBf{OD@`(i#4G;7dhXZlf!gZ zaYjj_H9h^O880U%S7frFvua?7?$%j7NQa%lx;IkqX)OG9*qm zcP+6K*4F0-v!2 zqV(0G!b;0NT_#hDJz7mISuL+T2PKafwyR>6YE@&gsF)1@_RT$IGq6MV8c}w3cAm#F zczSvsdN-Z_`Ze-6fAhnKf7?@nPCuy0qX6KT`QWfhSj3>uiYMnPvyijJ!LBi+CEnC| zi;tD4Abv6ZRIH&vy{rsQD{s=g!i3OGS>CJvT$4ChBfA94qE)gnN@^Uc4OLYM5c<$x z$fH=^^+vybE#&g+_-wlsy45ADJ|%7GoCX|Ud;7JOl`%NFP|fvB2pA3D*KNKt4Y2>+ zAo%NSa_v?J@1s)sm_<$HYQsl%q-b9eC&m96eL>GDhf-4gbT*(Z=!O|xv2}`>Y(np{ zHoNDS5Ud1N4Q_7kOQ&*L+?(u)D*tiO=+3qE1PheZ>t|!Jd!c=bt#KIq*ty+$6+;SL z5b)XGk;0oXi`SU$?1&4w`foPS>-lqTc6Oh`bxI`L-Mby%zuW!$``dY{%AnTeLs-~D zfUYTORIfUrx+*GmO-y)0SGWTOzt)9LrfsN#NU#^6F~)1;%hkG{sN`N*d8a`# zHAu6bLG3^D`Sj&}28Xu6jL*n+2d(;GtVzdPS$x>(bkmW)~M1=a1JNu}2fnX(=$VkmbqU>w zab(Y1f`H)Fa__qgNnasBK^^9JLTX+#?z5fw4%l(t5+=|#R{AqC-n?-?*|Uan0xc#l zH@8&3;-g|L{awWv3FvZAb%dVIywAvpCDme2glb>FQt(6#y3>yzNnA!rsi{7@3lDLN zt{g^G?qI5v4-F0dhITjG+Un9u8m;iScr-mdJt-+^aBy&A{1eV2o?Scbzb4T=xrW-@ z0lKFA`bKOND#O&pH)S3;IN-A5?wR5rhulP{B|{ha9)A~(|A!Axwr83N2nb$C%s^Y2 zY4#njcGSCd>m9rmz%~OTqtIWpw6qd0_LiVKxB8#e0MEkB0w{8NcE)2|=L+SFfQpls zkMF-iZMckUaQ8Y%7ds)!oVuM?m?YLry7kQKuY~V;a;MGksz;dd%+L>~rHKkS;P&0! z_t1l-VimK8Gb96?TwJ7h*>E2hqO7eSc6J&qF1$QGhpQM|?E3d_Hwu@a@!7^0kEE|u zlh@PpkwQ6z*COS%{h_}9lDfXi^E@$RCVh(^mXN0*Tw6~4z}q$LXsgetnnu`KMXpx< zCMgovoH}Nayn?!;oIl>~dnB1E)C7LVu|W(RYPCFL1RQXMZ{OUeYv18w%3WMs;1CV{ z*)7ms-}c(3pR9d)k;KK-_hY8T2dfbaJ5)AH)5F8_KE+F8?%9?X&s?6@MAX(cCk&sA zjA&);ES~-26!QJ`_Ws%}9{R~vQ%)-J`uamR5334&I&n`GRpp9j?(8?C_@DlwCL?dR zsibrl4ekC>=X2N-Mu6x`C1Mb-VU)i5C+>xfjgxV?C5#<9*x&W%doad@zaRbO&+0=J62-w3~;yazrTmjd4V8t=#{BKX~xB+7ILBvH^2U? zhQ`0$-HO^;Xnb4KdKwxe?0BkjN=mq4NM$9ZiE77N$nV|Vg-O0shEcMaGfm#R7J$|K z{rp^MKN-;>zKhMz&$qGW+p_UduKMM;p z=a0#$sgKUn_c-)SB)tCi73*<~m#V5NPtr5Y&UPtk8ap{T(Kfm*{-hJuwDH4)nDi-ql8;f1D zrcKBHwp%aIF{GP(BjT0HORx6VhTjEV^;uLTb0z`t92-<__2|xhI{Wi?gTLQZOIYFk z&~Cqry?ase>>OObo1N1V(x#J$?o@etY`%ZLFkV(|H+|${vr?`4E=m4j=O@!o#l_P# z{=QEno4H%hE$pmN#iJG#6T`ECYv(5)hlcccOsRHH=uJ#s+4Ktu3XcyCPoHgkvSd|n z^8Wj)=24o0MzX8jwh778?NHyN)zvkFe`^UodsdYzeX(?60!|03y?^?jM!$L${i^Z# z$zGr1c>CSE_oE*S4*Vn0m-+qs_k90<*$Pak38$k-vb&^6&{aAjNEC4&Wk}I+qbVOi zbq3~69<>A@GWz99SdFdOS#5u&wKjTYz&(WqiubJv`oB1k}h&O<18%OG=8CI*R{=-%03fs@iexzm2Ue zNw)?0xQMp5V^*k3u^sOw6bjYej=Xc{PQCHZKl_~)ZpFH#R9uGIy$CFh{E7-b_E>XJ zlLTm@J1v4u=t`ylLl*ps$L(?>j=(5e-SOa0`SsaaReR<}(Z~nglS9X+Ps^T>7T<_j z+!A}fxv?hdF;c+&r19_X`UH7I@u-6{9UX^}QN|67DX;Y$Z8jyAH^zv{@~U6Hn-gck zPmeB7H^N7YJr56Gy?XiFd0Lm9;`#QdDk1@xj){;Ed06{Q_xt9D=YsqX$I<$_I&Hdk3LHG7YT$1{#n1GSA2XLj1e2=)>sZq@b36wTKbxC zb%=Bi?l0GU~eO8UU{xsXktd8aVKV0G-AbCJr(ygiK2gH1Qc`+M! zaW7u!^2P2)wX8N?r-5?wP#ltg{du_rYVANqi7G}xoS|gG;390Hgk*)&Qt0u_C{T4Q ztgJBA5xkS+P9kWGHYi`b5MdOln*mn;gZ2l6V=fjaV;*;hORScAM!xwTZ{$+xdqaiU z+uxV9DS4)hPVcrhbWh)y4Cy#l65qRA`*apNmK1t4z(Jrd_aEmSA0NX`!w&s2?^<-S z4%9>Zy2T!C0Asm!WSdl9Q2^a@3>uDT%OLh zzI&?}07#6BxNEc{RGvAiw`YzeTEX|QUs{c-c%P@0kPv^W(%<)vYVVlyREcq;uBNdu zJB0;x-Z!^;WA21*!suvmudN1;nI==8qouXAwSDhWPEOr2BfYPGinWWFrA!MoL0ZUM zckyeeVxW-s(kmX7Q;bd(vQ_`@Ke8w_>_65ZixzoqBsz{exQT$o!X6K5T&~vS(2vdj zd<{`UL-y)adFJjMEo~`MGrEsMcK)=q`c5^~rOp8U>wPzJVCFxEMT*v-csq@yB`18L%9`M5EpaS`MqS6)s1dyJu zgV{Hca;8^jJZ{k~!8b&bK^eA)FUT_bhl9g+NOnrFKuD`S;OGJ3HRukm#?~w%Wcv7( z0&Z_`JKF?~FZiNysrztr;tJUH$kU<5R2w)tG!}zOlPFocfw^O0QQ-{|mPpL>^mMKL z@XG1o1}>AW?H>?rTK!J=@7}cp)&J~hi-3?2IC9$?z34!JaPx29zQF?b{`ldyzY-lA z+Yg%e0@#C}w(-vZ_!fUnTCae19Xz}gL3f}ve!?K>x4N{V zYpliZJ;93|%7AO^G)L=*?7#?7<0C{Z^2aN2Qr)^m8GJ!OtJ-N% zA)8xuBZ|a5Nh!{dwv!}M`vt|Pk=v{+In@K zpq>xvVv6>Z{MCN*4TQ2j8wdmAB?dQd-^SZ#9b#N%wfG_sYOi_Hl=Z^E*}V~IZ5IA% z`Sro!1>sQ`C}sRYLf9Shztv+jX+pnT^Wmr}V_IUx$LLt@4hN)^Jcwyvp^ni{QyH}A2~mrF|W-a9lj;7SCL zSdhjnQm_lMil>$4-s9#-W2hc5l3J^+Ws(*mR9qpk$h<)IudUYlu3cisAwUFJa zCP?~raus`Vi`8ku0KIE*{{3BB+nAo1G^ZAF{Z2|8@c@3UHk1^WI0ybc{>hk6h)))G za%%d4K?!qIj_vjgb5@*6cArs`$i+fuQeK|(bTvquptC3{+Fri7_YHxdz<+40yE3== zV{B-Bpm6y0i~TZ_26^U$tq<>)_zk9?Z?!Ws|1hcsB5T-W5f+o4Zm==-V5MK9)iqci zF)b?gveQCbQL(H>C}+uORmi3NDzx0FP`e1AtGKwh*XqDLFjD>$Laj7wTia*##sE%S z*)`b{!@|Pa)?!J~hxo-llqs*0ydztiXf5FPyvG(Od!JFJjjuuq4?23YZ}y%QjpxkY zIGd#7n@jX1?@d029F>GSE9UG4m0ktiz|hjt^7Hrae=oZD=g+tmU2)Jl7bBxGBMR{- zm4cjn4~#0%Dp29!E|Z^^_m+D}onQGgtCksa8zAg28e)`G;lw~`{m|o~xCsO|EA_t!sVqs6d*H5+6VDv~UaaAov3wUY?B&3;$$yACZJ75bqSFrLj*8 zaSk!Kc<_Q86ERHOPDnepNJZej4vFmEOG<7AlRJEtDq%=ivDTu|b@Jf0`lqJGr7O3n z3@0bzlv!lmDzb|m0~s>F@dLji+lW0eh7j*R_C$+#T=Qhd)_^+0C;FNL!&6f;omlG# zvR5f;DA)fvgocTZ3HBQ$B_$Jzg&om7uNG0_g>mMPA7AGhMRLrY{ww zU~pu>PS7_n==}EW^5jnjba4NFe?g$@taDq;(OP2&JcmbR?(FOj@=liKF<^awWuOzm z3zeBPpGrR(pX-TrkFs_4Yce& zLrc}b)LCu_Ch{lC07lr)!>P?qArb=;hC?+?S(h7a0N27k8Pd!pTa%5vLZ5|P_T)u< z{al#B+xu+X+&80m$??#Sf$_R}QLZdguKZE$c`^pQ$m~%tM)|KVf}jiXhXLD8waVPS zxr23hc*v@jJO_k)aS_8<6o7{>+_{?C>*8WZ_*Eshr?2mWknQRkO39Y)Fi!itLx7`2)7Cf-=we3 zv-9)+UB84*@%Zyk<9kfQX`eoA=O`z{(21}7{X4_xaE0I4>@Y-!R;+`iG0GlYLW&d7 zb30v1MN?e3HNK(%aR{vvEv*e|YBeq`okpdc;x~gjS@EU#?`jQ^= zy>*aHL3SY6#Lg^kefEb~_Sfa=U^c-m?zZgxy}ciOeXwt0|HmT${bd{e-P^}UD)6!? zGjs0m@5Yst6-`_6C;>17!D^NAKc%LohOO|c#s3T}w#muK*2~l4n3$g+-97zPw|lVm zn1_eQ%+<8oVYKjZ{^!cdV9HCV-vw`;nsuN{WyF+m`(>|7%Rl-#-bC6botBjQ6rs}%ivyYVI`2QZ{Zzw-Mxm^h8~bfl_QMLX^cP(Wfnc2VfBTk~ znaLgZo@u*M^k*8uW0J#^*#GywGOIqYic#yTG-Ce<^*GCIpAc+S(di z(1>4XL}BbJKKklr9E3&jzkV6diHCgW1bGVl*!S-VIruoWqo;DQ6|w=Cf>3H{VF9vA zORhd>%@3IefvN%E0kn!uL}O)V7kPQ-ALe5Wc|tf&4UlYsMPl9b`ug?8sd7P+G57WJ zgN+5jmT+@@V`F0gGhp^bmdi1((0(Q;HLQjPz{$dbxtX@JdVYQmw24;y`DWz{1}6S6 z+;o%&8`O-Q-CcA3lzfehqksQ!jxO+@(NZ+p59j^(@q_4&kT$|4!m+Bl8m|^RQq9fF z>yN9*-@kvs`IcE8=1x%yC+;@mZL=m?e;jQ`KqH&!yFHj45g$)B^nSTDwwi&bR!z|3 zVXEeK(AWE_fBJ3TbXVp*^4&SxwhRfWK_Gl^FyBVWr*`0Uxq;zrGw|qU>JAZOLO0lf z0}Y;zK=nXlMSoJ7n`^DDP2uDP`!JF%B^Uz-Z0K7|RpuSoD9uWnzHc#f(}j;g6>GQR zhi{>g_@MnT>kd2SPg*Pf6R5|~GFPXnIgqPB13zqe#Qeky*SvJR~TL zIYh*UHUI5j1i7+A!E_Y}#ym@2k&sv2VFb4V&bDgF?kaE^*J&aW;=8R}BZtSwx8bVK zPxb+HfCS8?zleqY1*-3jp7ZNRG=B1ny08GrKH>+!Yu*C z&$SU!32(6Cm8{In1^_D*6ck|K5KH)F8=*h(OygRO+8dkiOD?k+|~ z&%Z^oUsWR)gqrLW;B@U)RD3%1Jy3= z{pd*5&)^}$gC@SskNRSEur=*9kSXgVMzvi)jDtW~r)5%(3<;%qczD=)^C#zaR83JAQH^nL#P zxlpu%QR8z+UtDa}&R*9w+x~Re0e$W57C;UBq*`-wtbV>1)z#H)`^!Zh_3QWVS1(__ zRk2o32v113S)dF^@cH)4qx@lU&vlC1w^ROK*Z`iP#s@J z+3`MQ%7$V?-VCfwsEW?N>fqU9jUY2E&M*GWZf$MB8Z^Gxw|TU11d$#FF^^R!uIlRQ zPAyI{n&*E#f<2Y28D8~Iy zkv|+bk24YqRj}M=YES5Q2Eg_OpM@wf!P0`-#=)V%@5CKHj34UpaJ~kh7w9;Md-s4m zxr@+BWjqDd-n=6mP7i{W)yUAW1w?dk6k9KjjMUVAMBQYKWHA*J6MNF&Aqr3#B8gz= z$cTT2%pjC(NL!5d_HKYA3B?i3#u>^x_dDOygEe4+f2XQ9Adv!0ixrGmUXCQ1>>eW&g9?FRze*1XiItueHsTKi~SZXq#rXyPOxFX(b^ zqv9eWaEzs&t*G@SjpsOZxi!JUz+y0RuR?m}OQ&YUYy(~pgXOk11H4Crp<%=6X@7>K zoUE)oX%doK@BURp-k6+-I(w|H3o zIXes9P68_}BV!f-GThbg&(_yG8mW#4Rz4~&F>w?UF5roCadMI(Yiep#a`zy)p=s#m zR#95Y#all5nJy^aAXn@9ig62QQ-@sR8y415YBQ<&2aU(BP>&m+K)Lr%3 zgoiwSuq^CzFvy(9-_^@>`Xuwubn+w7aPH&A8yU zP}Bh0#SS`YklhWTw2QvgocSy%DXHrcCFxUDQLzhT&VX|a)B(7!u~MU3i za(eK}{gQMV{L2-h-(Fe$#z_$Vi_4oG&PnDE{;;R)u=sq3G?o1^g z`fUCzEn#9}LV%Ctju2s&8-PrJUvhnXgq9Wh4%I%;Ls-byVx=#G8mTz-N$Kg;^M^}I zO5T6?5QdyDF{mslEwvW_Mf5hm)%Q}PS}0q2y2Z^+P3Y+8>zbB$pRq6-UwC`}fYu4S z8xoN>k~$gq=de7Uw7((ev9+yMd5D_3c#rlQJ4#K;Yl}wD=L_@JN)- zaV4U5MDb9BmRO`JuyXL;yWY@{5NO7bJuEBZ_FhSs@;Bt9+V_^w{Kmq~gR)1^D?@K;aUwBjtQ4O&=y4ZVnM5xz)cP#3ksr^P_zu zj9&wR_TSuW2}aB54#i@M^OG{o)vB0uijqf8$Qf`_$s0rQ0s%iu^SezY6Ei9(?}Eaf zr4QQ&SIJUQ|LK1(e4HnuNqq)-=!}@-L4yvK2`V1#^pgrF9Tav&$@oKHy3^VkT6ixr zbE?)w=AH)@;O`gr?nSGjohIdFv+-KECIE$YB;v6rvVWUQj(<24h{EiHYtgMFiw znCZ3d;+n4BHo^RXhnPS3{Lqc?aB+8bc9b4H%GG4U>|Llm$DBn2uCJ*0XZrZPe@4(P zJ@&-IW*@Qx!|ULv^l5T3HGQm}rsfV5R`87=?H&A)qH7lp_!00e$Qyw3e7Lu_4q(;A zrL3{>40dlM*?-n{N{Pzl^HdW;cIhRI7_vk_v0Gq!U|_)Fhsc+A+e~UEz;#jAWZpYl}BiO2YoZwA0ul(eqa@~Fsp-**jehwkt{Cud6lEThY z@~Gh}GY6)=rYA&C-eEi5K>obMj)lm=*HFg%MNruwNDe9rz}MH&(PT&%Md<2c6%rcz z`jv&1^*TWWNC*sC2-`te{q*#-TnEwy4&cQ_M-#DC0Rw~V96&8r3Vd)^fx8paOMvxt z24L-Qbx@9tA}=S0H|4tK1_hz9va;rCrM!JhK}ssaW-M!x0?`lwAC31J5Gm{go}l>Z#A3j)1_duS6$gnNWORLZWlI8F&@&RoP4!PfONx9^i2cg~}<>b~pe3ljR7*XWpa^G#u2*Ozo;>U? zYUP$K2!l8Y00E}=0q~?$lQ;*5hE8`!kf^bJMW4b?jwl~2PH7-*fF+@P;ATNEwq1xs zhuN0(5)~H$cmf26_h4d7I*Gi1$PP$m&?KRYGh`1t9MM&$XBrm=h8Jk6O&M_!nyxf;j-aUawI5R8l`a(z;M1Lki+c zD!JFOAcN0e2L|F?RWFWo+IcsDutHP$;`R$Xc+=JZ%I~L9=Bl{DsJjs>H1fuBPMWfB z#&Q-FaiiovLVJv%5nPAr090UjaL~MR^78T$-27_OLGX$qI-;VZM@L65>^=K2GqGO2 zdIdP)w9pw1i%DBc%fi|^Z2iSn#LV!=hp*s-0{2=1$wefF05b&qifTh=Tia`)4>CnC zv@@`F0Ql`L3Y0z};K=ZNFL%2bAV|RK(*5%%45Rq?_!N|N5r!e{@&BA?jkrJibX#58 zbxy|1%S&9m5rx78>z_B%kK~zGXy|IvqmnOzD8tgfun?^Q7a&>#jEuspprqnj(7+FS zla_Yp)-Amiv8j@u5zbN2W5 zfwgUKZ9y>h3_yGc5(4*n5Gq5b;$V)AMwlJ5QC@|v7!r7pgWAW_`njh+PT1vF zvUFgJVJRqZ^=WBF_V$HINmN-Jr|M`AM05CG$HV{xrHA(bb%06dXD#g>; z35Z9KLhJ7C2Kgsc8Snck7`8|yHj1RTZ>ec$hSofeb+R;ErF9&|gLFnQwMV~I&$qR)p_lTT7#wt)X?pSBfB#Y7 z=c@c0${?aVeIa;y!X8-U#C5OilWR-(=~V+(R!2d?5H5ftm)}9=z3uJjY7Y}J%%Y?r z>kk5qpPxidznl)1a$5r~vpwW9-{P%pRaI3%oE>-ql)kp27*cmnPgp5mbMtwC{{yUS z^p~cJ$EJ^%@^*3Z-11U|Ap8o|{BU3t*X7rrft1OTJJUTjp z<5yi#VF1ws=mPu?9)Rxyxx^aild#vFem5klA%vgK_$~J&uD1S;`rZk{9)PU3HaCNs zg+xW`k1XO4SGb8P&g7wyW5*-R50SX`j*g($GK^MQlKQ;{!bcF+{`xf`#Nk1j0+Q40 zb6E5^UmZ6Kz5XpkBbhkG{UXc1tca^n$+#>oBA&BH?-&Z7QK3 z4|pY+o%>>M{?UBmx)7W$SEx;VM`#lwR}hx*aCHTjfLFtx)rIJK#*Pa3J{egBq-CM$ zw<{0S-t0;>^g+H2K1TF${3p8MD5$I5*C_A^O`q%dt2EZ}XUGp5bJw~^S0J+(k7nKL zX?+R}OOupXQiFHDW>AL*TVZU4_l$E%OSgjY1ebS@g=OdDT1kQ#kr{Y+07NwNDl7Ma zPDdU*x8koadH(~!#>RH<9ssr~nD{ek7BDN0d-Dc{4ietH;dh$gg^`X7k|vXaLyVpF z%LalScL1N#~591JIV#I>AFPt`1mjb2qvve7sh_F5(~ee;O}yCIVfP)O4;4J z+19;Dr6$b))9)b=?)ASmH#Y|c26A$8pl~yyWVk49-5Li50TCf6J#g`>tE*shL5?k~ zcUd=?UN%{`P+K0Mc;`+UKGVzSThYB3Z&0MEAjiXZL6U8~`iQp}UKU6{ync<#@2PL! zR)D*K1`3A?=ByeTV1DHfXemHOAg8XOq!dJPla@FiL?=oYH+OfWDfzHTuGDSy5Pva2 zLCEoEff0bY?b_iN_YE6nzTi+o-N*E3uYP+yEm9B&H;^tJ_;+RH+u|+&3Z)!Y$JOzR zu^@F&D4^gD0{I`X1Nk`*MsFb10y)1?kyZkEj=ur1O9O z#T#=2n1tmdR6v!;Fvp{i(7A;orQ&)ZtW{fHPTGTV@~ZX|Bn<*h#nZzxP~2m6slt+$ z`&Ld|Kl;4LkgMn?v;r&0ItKgFF)hu{-}qGyV_rX!`Q()lDQZxp2|E7(I+cp2eVgz3J#tm56@E&9swX+9`9yD z%&JfubUWw4k63Aa*oHR|36sToJSa`Lx?{fp2Gpn&Z=ub~DB#uHNj50;jeP;h!JDxmSh+D(Bv zjf#UYBVhW#AW4x>rXf%Yy(8of$LwD2ed&rl0i&f9K}$~xlCKm z!C3*m()0E{5RMBl>0VND3=I#H(24|^CxeOsQniJpCCH_X&$oOQzeR&CTy`(Rz5^J?|X@g#b0_xpgB6HR z#VfI>A#Ns52;BHbzLlp{2n7Z+WLz&(J*l+k2l47n$sC_&5~$8#al>UP(=1lMqN;v{ z^-(4^-UpzBm^OIa2Pweh18=75)2B}%#szUj)BupY%ndj@!1-N%i+z6zFy|9=eb7CDZUO@xl+@sQ0Qq;kH3TcudawrLROpM8Iw+2QRPl z)hz&C3?L~*D*z1u0h%aF|b4Da8S!uH)3+n3X_R!H@l4?u+A??b1 zj2VT=)1RkyZeX1s_K}fzvcLaRP7bF1kMHs+bqYS>uEQXGK+jBx*J^iVnmcXReF_x-YLKF}u|XVAk#Yih_+(s<%+d-<3wX#3Y2-py`9n`|nfhCCvjHK>d&})rVFFhI;d}KkAQsbP9Mi6<3y*AAJxL zyni20`>~lb%l8G2@2R{qFC@}yYrVjF0#p_0b;yEdA7F|a0A>WsA>lB>M%c0H(eU8| zU9>_dnk3b$dldMgp`q~f#UbAaw*!!d-dkkeWKI^+cyrsSq&XGG4pZ;&{!-$;3f(TNSG$Rr!jINCPzdp-@NN~jdnj;sdtG8837xA2 zd>-hq45IE<&=L>-6p-jV9nR|mw`!hnGePsjPsNG?!0MAKJ2E#*!P*f_EB+VYh=IEV zhru4&8W7a6F+fi%u<2ne9ZXE{6egU6)JzU{7o>S3|BARTDLs3(4~-H81XGCD?OBd| z+on9@>HP>rIGN89*l8`0F$VtkEi`T6qut&1FsugCW`Ohq4p!sq>qT+-@WVbr-vZGl zTdNTI0zL`J_~76qKyA1X0(^Yf&AeqW{0pX3x(7G_W@Q*H+~AGlWcIg$QUIt0M1t>D z{QB?EF)%$=R?Z*;ArruXlcDF_x4toPH*Bl*-OS1TAx?rLo5POQe zSm1oSaAi6GJK~5+fFLwe1iXZcyWYS#F!ZuCuwE37t{1J{RAx~&xZOWMIu@iMiDeZA zH2`J?#=n1$%(RepTlfll0Ej%8f8eS^Qvx&uaZ&)u-W6>jn1gC?cXGHoF##d%uzmNS zM}ss4_zA3|=-UtSpr;859f4K?ZU#^RWE=$r7J}Zjx!p~Il~obu$tfDx6JLHYLrb~& zL7g>n!Hmza$s6?fEucx@1L5&!LBVE3!TsyVE2O%26xb}1);v6zy^9h7P>^ z=MSW+&H7Et&2Aig10aDuNXB~x)5t;XXMies>*++@F+0jdpRH)uUDnP90D}UO*)}Uj z{f`U@v#yFUw6eH;VDElafyf*8yR(N$nkZ7z9w<-~Q&a72ipwU7rUF8;BT6dQUy$hXEI;M#DoY4PJMk`qM|7Z*&tQuy9Bah$Bqt%fV;}be7R6F>-n>M*T|!~BO^ZBl|>gOlnCN;>42S|A`)T+9(} z4!Vd8uB7)4ni3nxV(^TvjdGZ4$<2jCcP7m>*@KK4c*-D}2laTJo9>E<#E{SlzU;QL z0Tsp84~G!2ZG$h#RP2((!wwSae00Mg*{os?PGfS z%(v(}@LSp@|!^{(y7Hwg)XrtjqukGrjSa~x{0As?q%xLR!2 z00NyXB}zd53={(SpK^~w+Z1WFThdAK=cyK`?d?LLgs(K1>=%(&mO<*Ex%uL2)J?D? z!708Td26@1eD&VfjPtse!npx-1Pmo)@99iay=^}|VMk^J3j#6I==BLY9*|0uXbUh+ zSg)VGy}dtwf=&Vn9PpN{!J78)5EzWd_3sB`9Mp$owH45Q{?4|N@Xf*JAi$*Cwa{s7 z{2o&85yW&bOCg^>%%rsqm@qZo3z8iA6&4TsOiK~R4Dt7nxLUBc^#D1lsszM7n5gze=NYa7iEjHWV)^Yg3>Id{2ZWW|CXd7UY;JA_wF+=L z@%<$;c))DnM8Ss}sN_P_Q$wTQG~i?z);?9#E12CMKAr~D6iB)WU&pS&aUKLpk^*)< z{5aHgQY3&slPbG-_*4!x#B`-CNm?I*d{abRoI%7D%{a7Gy&tE@cRMHuBG$KlrvGkm zTWtRE<8fC^82qK=A;CkP+anw@h1xVb-Vlo%OG}Nz56Ecit$d}Ory-9Uf1d()eEzV3 z({n+opF4kn8LiE>O1qKEcK{w}Uv+){9F&_n8OHAr1e18-4m%45xynpiTcCNtah{r( zcugmMU4x-!fjk5k2@@>Pmp<@YX(PqBS#<_HhN|!41<%yqhDdffF z+|xfD3s6ctX*vD2PKhsAzw#LJv=Dhx$^Bej?g}%(pu7S+jePz3n$p18!ZrGu`VQM! zapn@ZO$4?@=}D(DCe7*K`&eF<*~BDSooEG)lag+*9tsWY_P zp~w-V&sNItK{~LtfTaQIxk*m`CMjuUZOtI!!PS*hLz{TL*S3kNscB>brvI%XfypmH zPR0Zz=1H(PGZ3W!rIFjDX`=S2sl|&+Whah9{5V0ph;;D%A=?&&n4Fz$JxaavD5NoE#S650|Z3@tTI#6D`@b*JH9V&tgP5TtYtZ9LSFwbG=7K%%XVLlnkJyk z%jN4qC0?J8cRO7F97aI$ce0X=UyFs}jdcDLOWyuO~=xNNzFUIG}njE(a_bUsAz=aXmB51s&p-$S90?yc1C8pd z1s|@thZtQ*4sdH2RRKwj#IFh1ESysq&>%vsK^TS(4kyzH6gVKUU%KHyc&-g$*|Sw; z%0R{n+SHevEZyR(^L-7-6SObsX=~?b6>rZp6>1e;CTL~<+K)2Tx7(iExo@--8+=tA zs^SSLOWt%y0l>&Is72REVxP%_>+$2^rKKehEkSGLGWcu-WDs%?W(=U7@bdFd0iS|P zFsya?Ka_oUIMsa^x0Q~4%&aoA6S7k{Ns^VVR7hrJ6iN1$L`gzIl2suzRCZR$UQI-V zibA&cb9%1#ddKzt^Y+JcJ){g-2U+i+(&fOBsFul|8Q# z%pakWubA2M`iU025Ba`p7`=>iqGn6uW2~2j`xxC6)M5r1>J>)({)C(RhsKXRc8q=X zYLDFO-p|Vmd#I(`uOF&uXt+lzVe`u3xfO1ed@e=rKH4-oag&)tf**xqy@@17S_F8Y zGJtyvmF+B;k^L2XN`B8DmgxuzUel8eT)FeK0>}OiR)U05$CMp+lpJI7uj9Nc%HKA= zkVN)VN0NlDwXo}68RFsH>pw%`6y2&WWFiJz0h&>{y?f!Lofm8dDhk}qA6@v6DV-yE zy@TAl1Zf;@CLqfFC`7ei8K`X#xZ_%wWK+P$3}O#KGTRUB(VaDe(Ofw8kJzz~4Za&=G8* zt$Gzwgyh!_+P;u7;oYM@4P~qA=;hz3vlVtGX~@o}-T*4oM8 zP6U`i-IxR+CTKO-)m+lPW>W(rwyh2#gEKWXn?F4!9Uu`Z00F?+gtMPJDsXjCUQ+Tq zwj$){$j`ynlTAV9PEBK@F2u~d#6@3D;a}K**RDQ%#QSGsH&Krctt`+eJY+ug^ZBW% zgSa}69XnS0nnkP$KNZFVr&FiKzI}Ua{h)C>UFb_lpd*_x~RT+cz(Jp+#D;~^3NFI$e?RVSGqvu~+3#7dts`{HAg zfn?XBdUB3ItQeZCrdG3~?(`$c>}z#@p^gk+J-}JFr;1nZB-a*Bbmuc7t`kn{vRRe| z=jZ1FY;7A(ow{&m&ruDJN!>+h;Kyc_k$!DE8hsDj;(Jx5J;M0Fd8U z1=wcfsF-)}-Vw3^Uxc68bT?HoCsT2=A390FG#a6M#l`J*a)J*0%0I9Ce&BpsdAEuR zS&Rt76_4`iTTh-q2FO51cM+Y0r)PQX0|!i-_M*lToSV| z)$aiTBbH;_l`AjN#^L@E{Kf5Q+xh)GZIWxv*U*h9CwCK9MSh_xI$fQ;W1gzx#BFcMT8r0pZ^WFVkjWbNTDSiZE0bP9OhIBtjV-w){szlmH=@g6+Bezh6@ zm(Ro>_xkt8nIDF;v+*gTcfG?yTpv6y`2J|e(W~23XFd#;`7bZSU8iyB_dTCqpV49p zg$>7&hUUlLriyUI0Z=h&J}6f@J~oEP49Jfd>*2^iKm@|Xgi;N3Wlq90UUC<8QrNcx zGFN|Hri!S+(YwBSbb1zIL> zp9rmEU|#VQ!`+Aj8>9m~W~Go$lv?k)Z`{69a`5J@Tk~HI(>V~Uv+P2mo67Qx=OGKP z)qSd+Wg_9C_#Vo_2vRnhCR|GJK`U;_Z2tvKFzDhc;dwv6fhH0?{r%$S`8oXw0SDxo z!e~ zq#f;KcV7F(hz2WZtQKixsKu2(E3zu`{(z1xG3cJYx#vV_S=kHE;W}Kj$Z^{m)y-}+ z2;dp|PK61j;5(kn9#P9VJKd>BgnGH>q|TT7H<7fgt#6_3JAV9**p%SauW*3oYw+`OadO3x)jK*rU5;oT6uo}m$D-^k zR3${qm_&&Ye_>_%kNsLEB9^Bnlv(1iiSOMN<;(q6TDYuGAN{-t->EI6>NQef1fcJNJmG} zgr=fDp8j|xxJLmu|DEVOiPHItvua>ltU;A?fX|vVkw+z)3h`A3%bdiMt~(js_FJ5D zMTaI#OoRv`*4*5@2aqlhTH^fx!*%tJH+T?KQ-XfF>}PfJKYH-;{}A$$`FM12*=F#q zewMz%7vp15Ybhbu^63tbx3W;tenJ_8G6L;BpX7>}V5)Vb!1?@0AF7a7is+-+rh{`sQo;b$g~` z8Bre5V#J!(Q(5=+MT^DrFHO~kKiak}a%qV}iu2|s>m)RjCjrB|yOWC$!-Is;aI$VB zJ^e*xB`pmNF{+M!m?2rEo6|yaUu2do(m?8M!Gm64OK_Pi(bb zug~EXXe*X|n6|5T)n?3Vep6pbxp78;bin8S;R8P|$~8K*-wA}36tIoI&wH01;jhkz z>vgGZ@<>5fP!8aFW%VjKacr{*L+Jb&B#NM$#U<`DcH@{hcsQz1iqT(DJZ7rQ7oYWT zI$Wv#^vBCC&Gn__kbjtIu7d05RSrA5oUyAJs(r4e20bESA(T1CTnYsE8Js@X ziCqJ6Mdni2(C`s1EiF-grE}RQeSYPa*>#Ge+@$8dzMHx^aC+UQ3Eu2)V*e&R@_!;4+$WEFSIZ)^H?xWXGO^7#7 z{_o_Wi~>nI2wdj^5EcY66sSVGYxy#B0h#QqktCRwnVFdl#LUcIx=;8kSrSRRx|&V@ zc2ni678%R^R$>depZqtSQsd0j#}DClv8U@)sE0e?(FEe9u?N`Fw2c+>p84?`Yd#?v z>Tzula=zapf3ar=aE8*@mb%nkNE=W-)7sYJS~H|WA6e&6W});}a3Lq0l+7_Z7TI=t zsVHh&eyeos+Bi-#G@@8-bEy0F?Y(IJ&Tr($k3bZ;aAGvQeht>`V_Tb{D4WtVsW~%> z!dKv`(Rknz1Tf1Mc<|k{SO7h6TYpy3iZc_FilSP!LcI6%1KP~>aymuXS^(mK5Ozzl z_!_4r;Wwo`EO%qDTz;)lu!m$Wg)omIpQ#SBVxz$mYgM*qe$d`dz;_4@rHt53;kA$Y zvUZJRuZi(Skd`Vdl2RYW#!`occ|R^IVp)$KLLx7Gr9;1d;f9?huev*0a`&fy`~U%# ze)~2O6Zf3`sLC6^5a{+ZR*y9}cmstA4=-$|v}rDf)y`1$j!vvW#f;?U5LiIq&;{4m~^iOtiGZn3{dV3q!gfoo%j*pOELB@@%Ww*NeyL6SEQd0C1)$StS`-;pK zQtsN1|J``)Y;jk?gA`8j%>Z9vbhKgo&(S9?ha2GD$f}EmZwa+H?4D8g;f(ba0U%;AfXb9TP9RMfvl2BtSEwNS^ z2Y9tpGtaNDtt0^M?(auKTUJ#>$axQh1MLljE?~rvtvC(rjj*qzC$PYqAfdYRSYqPn&nd8iUXc zm~YtGamQ@iyqSzrY=GQC2~j6!u2XAm$MjL3Uk2u$Q%pW^+Up zBEnU4Z*bJ9L-mYG0nw=dhwwm5q`43Ejv7RYGM3OZHZ)8lu=UfYwaxEZ2dyc@jYTM`O=?NQWek0NZho@o6`zWy} zRqIsiP)c}h@yS0ph$WvzC`(~S(l@ioqlBn+T6GN&aCi2k-?(uecO5?AHqD@ycya)a zU^(gR?}xzfOLcpT742Ij3gh$!peA$tB^ebKwCMTbP4$`#6aUNOIdkR*EHfyq5V&Us z4I98=poPJ8K&h88EK780MA>jg!7)7dJxCg18N`nvboKw+v z-bZ&^eZBEXbhFCvhw$c#2>XHlSg9<^u#^8(e0b1DQVqa+1AGunc~gC~NwCc-Q9l>J z%?}Ww+S;KoHp1m(m%Jw5C5m>f)Y@Q1q@KfSC4s7E*tCFST?W~nrtH}*^C!gL@T=a% zsu-w1EZpmc2H4R!%ohPH60&8FRWkA^%gD)`nlKb}y+7M_#N=r*S=0J$0?+sMXFmf&%Os>{ODi2V7Xnx=g zz-PUHlT<9Z=EA17Rqlv=?f5tLCcXBmff>6`sbtfg2;DeHI&o=t3E996KNZXgZJ$16 zkg`jxA3&nk?E1dr*Iynq1I*D$NZP%9`?RCujl{$fa;l-UrQfAXD!zHHL@Iy^0J;$E zCY$nxl>{jBwDJq1^7A?lt=Kr`f3jT_-{UH=d|+J)Ik#}mj})p05^`&G-uyf~&+(4& z93mnkFZ%n3y)CpXfDPj!#<$JQVEN>*Kj-JcM3q1wqI!`i-P-Tt zFd?kP&0@$yBzA!IX>O&B+;?{`G@vdn+^npj_5-kn<4;E#dlg)I5s8r80ySclhD;5q zK>wLq$Ufug>6cK00HWpD`%v z8$bU?li@i-m%4sRuJ@1vT!Bjk7Y??0)DOQL>eDXvhH5ycQRbq3h4jSU$D`+*w~^61 z$WwyX=KH(4OhdIOY=#*b87CV~M(G(W6)@nAL&h2O8UHM2G-q7f1lA;1QeZ9uvi|bb zt86Xdz@5m#jEQlXu-s4xSo^$1REWO`$oIzT(m4dBxb@`YJ0lJyyzxp_1I3V1xPER} zT&?^~eYga>a3X=b)N?ORJrVEu4k}Q$3Y>qMLPEn3<0ADiV14yDST*gfy7wk_Skwsjd!cAhUC`4D``5cL6d0a6pCu z#9Owqe}NGIoBF%35H-m5Na*sz>8!Pk9Lu1#26ve1kVfHy;~Bpncf7B+H?M+Y4AxVW z{Ry`Onv8UmUPZl$l7B#702MwCAU|*9XN*kA%t6Ry5b{fcWXZx}Z}(}26DP<7oCsof4;+LzP5yKCmpoEDZ>BWtjPx^pSt}FshK)r;X-)p|L(__LD1wA& zAm9=>q8aN2m!0tL$>6I_Vdf{#zTVT8hQhP$d+&<*0DsUD4@9Gnm~N1eOx$u=vrYp@ zPeA1IAP!N`=URd#PoGv_{39m!JUBcrT---bFXqV;UtE5uc(?MSkSc@zod>ooM+Zvt zlHlC?_mRTQxn;{GKR-Cq4Z7F&=Wh#Q?1}H8RhLf`1|4YcZfa`_Eb1FXkw{Cx83oFO zIofPZjIUm;D?ufj5~KuR-mcnk=cJ^I8plzBYI=BFavtwxWrZWE zuMkBnMAAy`eUOhC-&UQ)>L6qT_7C%66oOS7^0lj9&82z=2Dl^WX0q>fy8N#+{zOH# zx$K79jID=-{o=W=aK`8&rh=77eUuQ9NXnMjv18Bq2@@9=iLR_t%GVT(!vF}-Vc6G4 z)xIhbiJYuGOXJ#bnd)H+z#K@Tkroru_`%AHe{-=TGzTt@IJ#gpIb&`scp4%F)a|CG zB;ji)KM=&BI$yEp~Klf%Wv zH%qlO?FPcvroo}As@@`HKLEqs-tGaRCLJ9e3<-|{gBa_UqwEI&TVl$?UWbMl=q67O zl!WT$Nb)@oWfZx_7=MM4hmoA#tKcZtBPOOFc{fdTx8dT=nqD`q^uUdG87HGzioZP0 z-T&t1>;3!HY-|)jLM7k*?SUB-QDo0j);Kx$70)S#gd7)aEu`y&eSKC?;0i#cw7K?( zAAIQ$SN)yrjq8Z1_Y;+^_p&`FTGt^$E7Cv-(gfrY{18I>q8gf-GGPY7?{z4JWW^6K zsm3;zrdj$+Y;8ifZ{1QwJ_d@BxA{7o6qD!jKc>QWXZN2}fxyUk`sL)s)oSzTH1X=T zoLaff{Pb`LX4z^Hav^F18sXq__Uuo{SeYSbcX1)p`sk0Jtwkr?dvs}*)UB}pRxZ%K z<~pTNu}vc?-7j5r#VrcBNSa(ZR@78YUbi|}N!(FzOyiH_AnnC)hL~ zl1X^xb;l%m8ZWqac>;t+;-AC(uT zA7~5iA-SN!6VMDID-2aV?SPbk{5ijZ=ot_Km?D6){{J!jpk^Lx4S(z`3`TfcFE9ON zZt@D%f;}0zm3Xj?!=6LW5v_>s9x9QK&%Dz1VLfX_z<%xqE&=-GJ1Hp_KZvg)3?ECVTni_;c z^Wga+wQg=c`p#wN=XQxFIXCiS!pk>`+`=l2wO)VA0HhU$S zk6nVU2{99*CJbt-s)!fx2A61;>^>85Lz7W4E|lY-skm6A`3Iv^Fy{1M)jHJ90@h zDao^pj5oeC+&=LXV3YyZ)aM@`+$|sYt&g^JA4qVxxzqULb2G7|HEw%VO@f?(Pzprb zxu#3s=BEZMitfkr719fpSvx#Q8{s-F7%Y6X!MsJr6hdA1> z|AM3t0TUqfU}M6OXk%riA|#~!&{7cR!TSav*WbX6FJn_Zb!T1`-!1QzEE6FfxcVnF8|#0tGID2qLCk+)hYH zNJ;4jHAMGC!Q>@7)f8SHD+$Oz{s&M0R0CyE2^UB(E}Z=|>F#_%WY4GOhI>ZbcGcT) z8gfPNQqkZK9Zb`I?e!6{xRl!3=yR@}Ee=++yQN=n+TLv$o>Es1{V(flD!<-i=!|>> zg0HR;BT0zI*|Z(bft2LX2u56`~YS*?ZgvlgU3_#|+? z7`_91WyBo#tC^*x@5VY<7xY*7UIV!FvD0OaK6wkNQ+GE40WqBf1=^l};}5=6`YYCkOp51qFzQaFYq(OX2~+W``CTB(>j92rc030ft6aovp84mE)x7I8TMh)*C+LNtR13{e;+ zczEO3Ci5V?yd;V1PD7vDLmEX-v6~zJD1O47WxF^0eLU}Y7mQn72xScDIc<)chgO%PMTzG zs$kcg7@{2>wTVXb=f{>^av{+{hh4vD1#ECY-I(=kps%*Jr8hZon1p*e{sOh-gY1=| z3p5I`qB4>^L=N+Y@#waUbYLCt+S0u$-uHYY4|9rhZg)E6OjgYe4)O?Lo(JMhaGYX` z9e&P0NrKNBx;h9nFoh_bTPNG3hJl9ad#LLI;x3^ffu_n1s+$^W$nDc-OlWHiq*LDD z1whk?$_fJn_P*2*z4K=5iF?1SynHFp3CLVf{RYeog(Bz3S|+N%_|J2>xb=;6H%5C; zWfB3l8lk;=Klk-Lft&_nbL>@@36|gWVfDi(4j@-NMaYJD3;|_>A3mUbB(8L2b~8Nb zTvV^ImXemHUdZ#<74I1EWG-j$0zekcTV)ejxf!1k$J_AZaoZDEy>6w`)o*xu? z7uTEskO{iOCrCU7?V{e2fSU08`Q^fx80HN1{X35OO32UF#ImCiz;Ud!+Q76eX_Io5 zWSP@3V`D4HWGE{t=cmNkVx1wC%GNjzn)-Kk%j1U|pWdsy_sd(EG} zX^YIUWtcg}+wbh(e_)^PYkap0-@C?eqH(sOO2?_UCvaI2*jZ9b;uTbLf)Nk~&=lhx z-cmcHufM+dl?CZBF|}xpGcxs`UT@2VOb8~2053o#( z|H6ugSODiW0(9BglOV9w^8&m&^xXTotqd0+LpSKp&^}E{AB*36@zap89$ z4oCuJRD|bL@5oWB?O!wFjx@ABFM+5t${uA3wlci14<9qzUBu@h;|3}Wv8Q!H`i4AJ zL2@8cCm6Xwwz3KF@t^SV$?_!x6C+Fp*-<7}z~lq#fWKQrK|ujJ+@_|c&Q8|i%XG)P zv&R7|CMt7UbMY|h?w~fvq8>dYidXf1;6sy+?!wO=SBOz_#0`iXTY~#McW%EkdIsBbdB~05`nmpr0Sr*kVEN zY5H-^@%*3u6Rm4Cjtbb)2}JJ;7ouHGz~cyq6lC{^nMcT38#3YnDK<7b0U*F0fH#*9 ziXBouHYK1o{4^xYFTuwNYx&`eb3yxpZ+dJd%Fq6uqnj`HwBzRD;ju9_y=x)?RcJx# z@|^SWLf&X@nnQ*H5dqQ;PUyA_Tzx9CwmY5`7hDD zzn!ZnRT&83{}C=zF&11W$D45{J!xM~_tz(9&Usxp@%;REk7$-my+bex028Y@WyJ$@ zsHQ_sOu@T5O=*XLVKtNek=`0F%mFejfZjH(xp~aq-jS^!n}#Tryga+MlFG0pYQGN0 z=(tMb;)`VpWB@0(3h&LdX3*vUQfeE|ydcTRn_WbKv(jqv59egP z#XCq(O$A$x2|p?z1%!IwWrLY(qu72)qYqCQ7fU@kPjD#Y%^1Am^g^TGzR^0Pa$zN@ zUVZWJS3LsWktT&-u?{?pjZkplHYh@(_a zWNjwYE_1)gt&o~(+|-mpiZEU9H`U6QETH5I*qd2D3~hE@aEbCf&7dCC-ZnO{3IbdY zH_FdWpV>{tsOcaT{e7EnQrcW>$Mvkd?eDVO)EKn-gi>}c;BW<|gd-5EgbxVD4jV47 zh-MD@DEnWZAy)5i@9b6T=q@YH_|%mwjoALOvd2AAoX-o#ZtLfM`!;$7d8*^Z)m)?F zX1r$`;U(H1u%7X=#lyqiDZ8_F;sfqJU8@h6Gr?~@Jw+x9HO4vuRU=58=3h*%JNB*bOT zSdX`hIWCya6lp(zUKt^P=SLdoxFaG~j<<2Db)<9BZ%TQC%zQHMRGWfCv>;c93IT4p zRVl_EsqgGXYG&J|M)g8l?gBXmRz?!pM_P?}{jv&@%F8rY6Lk69VREmn7*=l0GpcXMFN;M?4 zj3h4la}uU72xMcVOZC}qIkhxgboi+4NGDV8r>3GPmFZn1@U`K=%DGl8|G~)k4BgK4s2rz$1fF1YEl$1QnB0~cM6#PgDMy_k=tv6#NwZXwbTiFyspF62- z_Sj!F{{Ngbvv?{{@0ED-b{ikNLS&134Y&&x@ErbFsNe4!Wgx*O_Up6U+%do`5PG6= zV~Irm<_M4|#DVeAWYN>WQyoRDlVeq;7ub`Tm?vOecGQK-N@gm?RK< zW^_w#7!?GnP4Z_$NY3d<_pe;kANqv%1~&|p-U$j4p{5SBJ(f~@{KwZ{ndm-GzggeR zSg+*b$Y-lGF!Vfiy;_n;GHe|2U|_5t^}eXBO_|g}v-fD-_Dw=4!62G0&dC98zHhOB zc$bmUjdLRj8H($K%1%KrlyaP_beBVSX+vDQ&PLje^473tTId97yk>=~F~} zC5i`R(V$r1io+kp#KZ*YDFWXxITe)?RAa%2A*_Zy0YNm_wPhtG*03%jU{z8Q82Z)Z zWQ%Z?KaG*UjxdJFc0sm{-WG6Vwb*rJ#njx;&o+VZ7OWZ>rNatFABMap%-K8l{3A|h z!3fwYAT=w4EELZOF%^zz>$Hyeqj~_3L}@b#i)z)~_ky1=WeXqT5}Mq^S7V!LA8A)6 zwEnQ2s2-FfyxAhReALFqek`^?nz+FJ+D%_7EnvfE4VlB-M>#YY;s0eMC&aZfkuXFYUJV372hAcTtqqFu6wVgEfXaqok1AC*9;rNHJcSlE-Jbj1XlF_E!l>%yooKM=If81A6wc zv5~f4?}0X>I(H{ks2w^|lv$p%v}DH%9vf=OxVSffrZ7 z+1bOt`Y}~VmV6vh4Fbym3leVf{iuH@dtzTZ*dRmi;vd?EEX)}>Ru!NI1ur0bNb^g4 zaTy{!674M6&4Okav{-ldpE%lw_cM7BhEZz$Tj0nN%by|GKCj)r{nnur*2Lr0L72n{ z<3Y@6?iuL}qf87iOnHNv0*i8YB#B2eNF&Og{O6tf#;85OvgxwUU64j-+5rR@q$x^* z-NO0-{-_`?-_qQycj(a6$LD_ll@Lh)v+==|cI}dumJVOMfkFf{Eeo$=KI{WSy|UNz z0QCRwK|-j9OvPJN5JGORT{{rVZrJwrTVxb4tMTU4U6ua+b=R-&Op7HHUzOUP%=`04 zjJV~}#QoG+XWE$Ev$L}}#~=@Vt|uCH@t|zVFErt>U!%=~;28aIxzgWXUyxq{CFj=N zzB2G{3cYnyKwt!}^1r|faK54FiqTHe&qb*QtSCiK)cgGT+sbE-=;-LcV~Cih7$Pr1 z-H_M=PZq^_ai&jfUqrYWqf8`p#=eml>yhroi_B$vdrTGG{M>dO>A==c>{tQdLE)l9 zz>q&swU%bPgTOqzZDc+U#K*? zvuSb`H4B=e7udTv^&pCe#i6p2ZBXux#zm@X)HiXj9U@6yfLPF?lbdyTq0nJsR%f^9 z^yZ^r_ffz;A{$(AY(a!}O|Kjc9*PTggH;sm2MBHW!?UtN>W6Rdxnv2uHku8LaR5t> zvH}+cBQ5of072aouly^h-Z<eaZ{BT|}ykx9L)1vZpO9M>I{D)#XF zaDrWmLaY?Z4)PKeVBp8v}cpQ*W5C2($;InjKNb%4V*x__a%`6Zm*Z|>I~}nk2!-%7k0SYsPx&+eJ{*bR2@E2_nwkRq(=jxu zI)~G?hAbXDmt-=m&wT~%Dr8YDVM0@lx8X-Ulf#N<4pvLoh|0kzAeKaTWCqPLGM1;Y zMj(@F@XPLWA?~DgRmAL#vd531_AM^nDPJSc=-zoZvKj1YP8 zEupG+n%1K0;8#_Q1Vw}|tjvI?{!1-V98AyRZ}tkrorr!HshwH^MY+{fA6I_<_)vA{ zj{IzS!8M_ZOHNHzzq+2;pYc_EN!(MQHK`#xk;v7{^HA$tVOAGaeQN1khC;1uApHF-7bayfs~CrDTvCk?yu>Ab`twSLt|A3j}eA4 z3hsqphi3U8(p{kYn)OSw3e#q<67(eEXRrny{1-q~mns(E!7XQ3Q}eD(@iGO)xvYaa z+UB9u8&C;@EW^B4$jgxn!yNr}dio=PMjZLL863=gzjwWcbOT6m+IDm1?8tIHbXQ~; z6^|8AIJC!*OHg|`L%tRL=#W8_VF%5Xzc3qsYr;gYq9TS}WGLd_kht*p^W?kz_%@7O znDqnu9kn2U5Sh0-a8ZI2Aqe5=&pm&*8+oP8%@l33Ed0;R&IKemAU2PKZThIv;J%ti ziWoJ-uY9Q?<6T&LMbzLEbZQT)N5A6;F8J(S_D2mXQqm;!d z5n(u7#wmEiAWa-^704YcKmRmzgO{9d&?iu5Z@V7*ZG0TV(?JmI!n~J`t}fyGm|g)v z0T86@O`Dciu})W3R-z*!X8bfr+m=lQj&q+zJ9Y=5zQ}!%XB5$Si&FsJ07UdaEr~FP zUg%QAl9>2aiS=@rkU=Jcg|E4QZ9zMi7O|$I1nE4Hgj>ZxL(5PN+$qvz;Q5sV{E5Rv zV_Q4aakvP9yW!G2QRWn%lk*iXY;|o77o(%2BaRtF+})?;Hs7M3tDvg-45tLH-MEAV z@w)HsuOAbJ=OQCT71V-0Jo)*`zb!+(LQWH7XchW83#z6jF+2L_$5hPqOEqAuudA;I zk7F#B1k?{vSPP&AP&p-_d^@fZeoJyEs0FkwuhljwnZOr<(7k=W(aC3D9L?|mGGYzc;$Q+>&YAytetgl_7 zk9>?I=2GjI4zKBDQ_x3zz#)M6Cg!c`n6fP_B?W^ooPOJdg)vQI;L8`7C$IYHn>Dmv zpi2CWQ*I4E81QD^y?fAg<$=*e%!&}@T( zRd|*S(`h;)MrpzjXM@HL5>0v`ns6keK1GQL?MXF;yWvlF#t{hW6GsUdtbE1y?QYcB z*k7zAvj~tCj+lpACnBU)mu(OVvL|5C1ZM^&H=_JZJZXXS zjH#)O+xj1WSuv7$g}O7>_?7RNT31O4J7V)etXNq9Ni6#5}d18 z-#~Am^hT~D*mzJ<2+a=noBa8cxl#p+O2B?Vd7GP?=_A%=c3_7O*`b3c2r);qb8w6f z4G}pxeITX|4i2^(Nr;Q17XOP|41OiV0scZ&4q6U5Vl@I=+1N-W*NMHf6^R&(0#zay zP{_HkBM|%@qi(`*SVHw`^~JyMf;$8^Z%F|G?daqvbE4{H+EI`$Sa*m?1G)!!7swpM zjG<+Oc|L;ZAjb`p1)jrw6A7F$$UcHR2TTFbh#j)BXZs!uVio=chYK4WxS_=`01EBn zplLHuI@6=pg7yU)3U=b}@LB^;zyttR64Ck#IDeK~Zss3^We^IfYDedyxiOzoSdxUN?SD!#~&E7dix142;pnbitgPLm6P+tkqMT?F1aZ1 z3fqHjNa&lI!~v|=)!oIz0nl}3@bPv8bUhtuuVSD%3!+*G=5CPEiKY;2bMjwuKd$03 zOh$7iI;r2`5n=j{<)803xgws?MnLq$&QC1di#EluE@*KA$G@Cm+2H9B3e^U1efSkK zh1-2p>LJ{N=*&iKaxP*S+3IT^-zp~?onwm-n7I2O1+qQrs*$6z5t}fYW zUQ;6|B_)N@L|C}4zrPW*dVn9j>Y%vdnQ5iITaHspDKZ!f3VU9nB} z$@#aXN|za=Za-KGvp8}D!m2-DQn3=zd}EJQUHW?!*(V=2|J}S##LpS$Ik-u9gW!>| z67aCG`7?WlLRJQut*DE$YI;`b&L2Sw9DO4bOZCKK$CmzrNCNW;G;9EkFx?4j45#Ed zRsK*dxQbEex=Yk*nTH{S3`a4n-6;G(!u$XI`3g?!o%6h65=_@<10BXrbLX?wY7R3P z-|h(z7K*n}&A%R->3NAtDM9Rjk&@}wMRUllLBIWH%|}u%emw4VX%3j+E%@ryFbP9X zRKFsv{*@K+q86B8~_ZuVlu=oEkTR7K4LnZPWR6*Ds~SmzC!Lt69j2SWCQ z*qkeIahNo5CLmxHjT{1A;4eh@8ZtR-YzE0F8yIp8|2YXcIke7_$*rx%uB7^~AwAJ2 zVb&MdjbcP2jcI@W$q(?Wb7XM35Js6?lJ2g)Ogy-aAg0^q#gt-E@6sFL!D#mw0>gsn z=*?FGagO8l1%2PP7_BWr3@4I+-GEU=@Y#j+V0QViM9O_>F`_iaqpdnJnMcmLvk2!% zm2P7f6l1`blGp#wew4)(CRMx1`#Bm`3y~}J>827l@MpmE?AUpCe>jYddZH00r?(vL zWWVi-ei)Fa_H%)F7)#<$CAP6)r!_|Da~jnZ^pK8`hKgRDSDqr z>zrEWsLxy)u8V}6HUT1GG^9AlBN@3XV$V?SSK&C`b_zkC;^LccSZi$Csi6^o0(+=e z@l-2fsB!Kh{2J1SRY*plPJS7#CcW>{xZPxWyhh|g0_PS7Q%q^7E!d9R4Sfe_Z&*%>O= zoX(&^mLAmx!Iv7+NoV&tpDKKOR?z3#-mS!l)(cDj4WfuRA|WGVfB+}cO6X7P>+5p> z#3YXsUTSD3Sj!*_W&=wB$mBF4Nli>Bj#d`;IkNq29rH%a3542c#Xu=R*K!-r%jmkN z5lDFtNUpZkSiyrq4Bb$#N^N+$ST5TbaG80hiP^wMG`>k_#e1j2Tni1 zl#qZ$xd*;O227mX5FO)2YgQx(4N-~xyo|#4Dy~j=*orKRYT3_0jF-qgjM?ov_ikOg z)(MzjN@Fbgm&TV}F(wU2yMnL@*-^*`#re(pmG?>sjU=^KoPik7Cg5(0yk~%aCHlz& zQba-ust16dc8ssQ$1X#$3Qk#zPiM8@pg!nxs8*fd-s*%P1&3Ri^@GW7VWnX{ikpQ{ zWG`NYKoJO|4`$1pAJ*h-G0XWLlV+1ju+)m^02i@M!!Lx0NwZg>RX_;Y#`>!x52G~E zIbTmqq)5w#MFt=Zm{n9>?h5p534)516WtHII483X8vnJapq!2msT9M#j8h2~4ssI8 z)>XVjpyXytvN16Tbb*f<<`5NS<-MLmA+WyUoY|^7RNseK*Dp|pgCN3%4a$w|cTQ?S zQp-*L@OUcgi@yFu3$!%9a1{v%>`ZEDwtG`#+{(UnYX%N|2+G)Q2i-EbUr->K-WFxF zA9}ebr|BMF#ZaeMov^)VwjnjaKiFdMlU)+Ute6ZJ!^hWlDJl5rwmT>sGHUG%?r87`od@CqFEV*tOGASr{sAc5K0=0O@ZMd!*ps`n zV5w%cUPputd{M-+5go(z(U|W9psc~66k%advSN%|)TZ)k^2m`oNYbLXMLZapiH^O+nSg&(;x zKZR*>2nn04Phs*aKPYO7CK4YL(ji>cJ{SX)$Pz@GF2AT4lCKV?!b2c)s{c{jEtQ0W zxg+xhZ;OYFErpzPl9Fc3{<d6j`Dzm7E5{3~Fn;46!?U*(M=>8lmTaW*_VV_6`QERD!vKBxTpGT^K`z zhf5a~dEcmOD8yJRuN$c!)z!iF_Sw*x0q=xGtu}0Sm%&Q>aZx-&m=*qw*(102QBl8_ zkR(7t#xM|9-~^?(V=y)ZPZZh(6yoSha6?mnU{5tz#}dTD#}!tMyAC@Ax5ynG;Z2)2 z3#gwb%qfB#Pm~_VZ$d58hJ?&Z3o=sU#1(a-n-E?NFu(VMgB32FBe;JE*;oyvc51o| z12JbuM+{Pg4-t(BluKmbv#6aW)#NGki9kg0Z}HziXCXWqHtbY`gi z|D)qR7cL|K?rwT=hBhi{Xur7t%WK7~rMz#OGS!POS|xAUC#Nw?$BGr3CJTh%;_~vsWUo7JO4!~z z4kB#;U=cKKa9v|WJI3xolY_{(^L(K3R#yY=u~Jb9E?XZze%!@n0?3ll9gSEbtRl_e zW5_8>PXM1zUM zcY!$9b9Cd$X^AQ-8;G$0)PVES8@&MD98@bXEn*|Nc8hsRMz(vnxFAN15&F+Vhu#1Y zdUf$nV{I)tgcQT&ajs*R{pcxRPiT4pDKi`xX(}E+hlXY#2+DaMt36RIb_**8qEaAH zVJT-ZUXBD!1Lp7o_)t|>2a`#z8_*-&yEppbnJ(0NXo@kD3I7)51Pq&Z)XvfRGHQm4 zMi7M&t0mbDLyYg%-FMV|-?laCf>%U!$ZO2UAZX7saa!x$3Xk$dO}UUh%3dvQ;V$2_ z^mH(i2nc%&U=50D5fN$yaWq$20a5p#;J83+4)85ssC9PlM)L_uZUoa;j@;P6QUx4xZjOxu3Y>`c6pQ`X42j>Om@m7A4q+|=U|k4v`9&AO2Vt{dA|tiJ9;IwA$_K*;tgZH&73OZzRNAIJ zIlr)gL{j9rR^gg*lpObdo~Q;&H6D6RjQElkJtA}?k{~p*{J69|7M9w0kKy%Al_3?MkJT|kPY&bUo*%Sg`vZHzI*nFHT*|DA41&> zLTUpS4*-N!^95$ed1}a$=bu68y6~&o`+L_H0I%0>!efOUMo0hq7Z27;XK(M1uG}|> z^a8CxPIH6b1P#vGZF5&mS{Fs$7~Wo6>N!n3P5jhVU?<=pAS4`R#h+1>s8)*237!Kb z0`mF^LX7n_gCQ-Bp3Dfw-1bw*q}h2jxOC+dKm zBQkFR|3FEcCbXPMI+=OKTE^1U6uE9(qFFm6ByK^RfHVEbLs?15f?u&)8wOF`8<#d) z(nher>691>@yTAa_$VZ-np;;zvOC+uv*^RL8T#lM>$w?eiKTYj_a8naBRR0`$iOWC zE3+c6p==8EfjFnWUNnBV;t;GS2V)?P6AyGkxX97i;bI~4Z#W2mgu`82nV;{1Zf4@# zX+@=C4blW!Nv$)RM*!*1|NUDHsU<)D8kW=_{3Z*D9e*Q)XtQHitj^J9OO5G4nCS}A~A*-LL{N}F_9-I>?eRyjDVnY z^XBjdE+TPgWP~IqW3CxpQ>>qRUGH4aGm0HUkYRAeA!HZACw1@9X29L8j*l@whp`?S zXRX;2!9El}!!cP0Dx8`5g5hJD$=!2*RRjBp9hV?*2R;W@0#7~m;d4|4Vyp}pf$r~* z+hwPO1l+@D_!{=YsDbE2mdB4U#2GvScEh*PQD|2oT2rN+_W+Sdem_soGR1aG=@UZM zi1P0srb^a_M)EHtS#as1#=zmpeC)aQ!cUmDe7*4vVGQWGLccVqmD7n2f`QiLf-7jv zXC(iy)y@;laWNg8oszIobGQjb5Jzv&#(!%UX0ULan9UROpd!WOZ<7!Q+MrovMZvrb z-V>#YHZds2?06l6I!s0C>Sz>Elk8Pj=k;Eq+^KPobyfN29TZn6PiK1FCI$+>E5cTq ziKPH_MLMorzw0I^QqQP}Js z&LhKK0LveBY5-u>`gHW^WuoxS=zI#2o*;2xaBv482IPZ+BZY5yXLzlIq~uZ~dnnS< z>D+Nw|BJ)*M4zHrK%f2c>5%I2hVcaM-F@Bd9*%Zd2}M)Cdy4{B*FYt>-5uU|V$tZy zKR)Y+HXENOL*2(86dID=5J44OVl(Yb9Z&^i^27W0NMoJxdpVg)Z@7)7&T!rA9%I9? zhRg=z27~zmXN&uX@;yyb?T5_(#sDo)SAUP%xuc_G_WlcD1*F3uN`)?|5XT0F^NgjO zK(^x-2yN&kZ@Cfb_LcH($Waa5J?r2QR;80gljq77OZG%#-sH9fa{d=GFa)l+Rvz}1 zxtHxR_xJBckFM>x+wNEGN50l>e&oqBXT_bH)|CHpUw_lnVxp5lwh0ms<6e_PIkDxD zYzKhC7NT9k#TD8N7Tc|0wQzp&@bSGF_5^ZmhFM_Lms)y>9h5XwlyR>s{igb=j=g}$ z|4N3U>+EGtNBaFTY}cek`CTUHMIw}e3Zo}N$%9^lL1+}Nougd>PFyR46jS7^!4OJn z#A_f-FQ(PG%$W6QKyLltGy*V`D3Ep(iik(hQuf$dS^Y)9jV*;j z30O6PlpdnX)6d0)d-}tZ9pSZ$mpe{Y9AVOZn|8EMPt+8f2^1jmiQE=B4D(!(90%hS z%3+KpSk*J=jyGi#z6ZL2dX|t@N7*b3&;ML$TBQJ~wZMQYdi}*p=q^rWMbB4aM~|(& z5{bxz)D?HeZFL_v`2H{ziU+0w8ylV(y5282LRS#J2DDW}O3JO}`gSO75?@X?P0Uqn zcAVKEBf-7f>uy2n;LDDVl?y-l)z0Z!85>)hQr*Q&En%zl6JvZKo@Rjk)x91=9Pequ z_o>%-jDKM(l~c&T0Foy7Fo02xuePNe*MC%#c~m})8Pz`Vd+ z`x6%^m|2YHrF^%d9xO|^h%;M|2sP9}sbnmmL6p0Y#2DpmP<(pDOlg1qqM916h<*VL zYfe`CPo-b6(V7fyTT5{O=n?z@xK*j8PWu*bwS;!7^SIz$zI{uH$v2yIZQt~7DF65v zA*Ib-2s;jS5J+YoWE7MJZxO6eN5MvJb0*! zZQ`KsnQ5^Og5Kl?Q9_X_;+B5+WD zr*IbA^neyqc1)N=jGc#s)aCem{Do=S!OC3mu#7zKQL2~$LTTJ~x1L)A>qJRYF0Lmf zfuC8#-@dRR9u7U`c}GCNHzjrO1sKnj+vnQVjE`^2Y;O{Y{{82VB**1{QoFN`j-vpG z0Jo^}V|oR9+-vX?pgtW+x$k8VN%%WpT!7CZAadjamtihdQBp!td>?6&)N9tZyp>=j z|C!jy^Tr^VfTD*_-a!YR`n9W?&v-N2H6h3Ys~Hv^4i*m6E|3E5yCxOFl)O!h??3lM&%A3f?KhcUKr=~DJAM>?> z0Q8apt@QLm*(NYEL7BFUHH&a!s5*h6*TKEo+gpL_OR(akyZZ~M@gaF~hA2($J9t81 zaTt^q{HIMNcy;ywl42lq1>g>42YH}()*ois`3kVcm~4ZK8}T5x-4ak1|Lk%;vcMaU z$}}}Ct2NwieARyAvc!Albzw>mnm zQBrQ4{_@UI!Tndwq}%7kau^aO&M$+#1B0Z+$`TM!6Yps;GkM%V^&6fpGGP$>5iuKk z$)M;^h|oj5XS}cS-m9NN7N?ZdBrH%Jde?8-sUAGEe#MT&#PsX{#;ky3K~-&A=46Pj zwB|$q=p7q{)CVRKINQo#GDO3d#n2W-?Yi;S|9sKc6f|z}-BxW1E|o1Ef_5FqPR8C} z|DKnL)o3f5sc@0>HNM%JWwxzxVzyw*YfdFo@zyL1=sxpkFAP=q~vx@3I zQrow0;_!tx0sl+j;*5Q^2@L4SILBC!f$HE51gSp34FVM*hC&0Gk+yt*=vrv$AhLk2 z1>s-}Tr$L19l!y=YPo^Uf|Vh^mJVC)N0})p<3E2QbcUQE4&?+W%jKmdx=0dw)ZQbS zla%55`vqH_PM;3Is>EA6r+OQo7cKO^VE(>)YC$K%jPg?GX++s1h2%@~(mzZWm^r^q zJ$dS6nMc1YL?(|4Nsp+9=(D~dTktR54WfmS7y$Lkj6R7u2ZMp=h zx*2k0n(5Wm)M{5hBh&>o>ww61fr}#M)!E4b4Ml&GoSJ$OW*!t+Xo>ird`QdO+SfsGWM=$J@TIx$Nq~tCjkgy| z?9_y=$%>3@eyY65UeWs!K?XpSvE4DkRZlDl)dIdqv^{rtEsAX*N4n%WhUk&V(*$uw z#Kp$av9PFM*cZ$nn6HM31JFdw94i46=B}8Ax*B|c>wLPv=Gw;;tqq(Kn?&vC3o>ykN_X6;Tng&?&kn_ zp8rwUcZXBm|NkR#>|@I&Nk&Fik~m3{gpkNgvO-prWRD~i*=1%YMJRh#Dujjxl9Cb% z9U|Yyx%*we>-zrw`MK`T^||kg&N=Vbcs?J`$3Oti*|Wb<#s>xl!e&o7kzjCvrbFLc z&wfTg1QVc2_}&VrrPdbfNnz^t#DK3!<-u!*9r~3P9ggL*OCfn=`+mPc{>VeobUJkq zOCTPNqCjSh3V-Gd1Ph3O#;#p^Km&k*FEsxEqQ(4hN#Hp2YF@sTpYMpzO|+`gq8#%S zWz4nlI00SYMDiC;CWz7M*aAf@43Ip0;~kzR$fiYHn9vG;|i@RW{po>Nd$_c*DpcqU{3_=@3$S7MA$B`&X#7Bj%cP$rh>WX7Zd;zZnRGF@> zE@DwhV%EDFOuV1U$zBEN=|Mzrp)W-*-t)#;3S zHcr5Zqe{xk3+TOqwOa1pz52`?&_+&&%qujT37Q8=8TG>LT&yb%}!SPS5EFXM>A z;3FnxKcGV_sT|DWV1=i3^KbzG$aec4#*RD4AVmG;3X>H-4IAlHs1i8EhOl?xx&ajp z0x6Js2aFlPqgc|GR#qSc-~a^tyxsDSJGbCQc-wI?)h6@)f}FFLFjXGR@NVI!8S*tF^Ay>YjQCN-2i8>i4|2PK>^i&}cKDLi_VU30^h((}}gKWT3_SS$4 z_7EBm$af*OM7C&2?^jg7;9{t%sl`;*faqy|G+|XHbCUw|4x9nUZ|fCoqTI{<#=erj zPJ4Pb7+dxptIw=^_z;7fHJr;h2;YKwfRiKQsHrRuXlgjQFDwop1@P5=;TkSF3}yuc zCTtBci@(MytVE;q6Lkol;}4Wal(0m~xzGO6MR`mF!4XgJ<4_^2Uj$IMb3Wi4xjOFgAgE!I6u#iEuv!z)}3$bnHu;UPO z7Cm z4SSr~JNa`tINi5x&GYnWmPM<%2zHXU!nMaWu>KAePA{03;6Ltrqs<;b0y3i2k?ii< za2%|-U5>cV!;@?6a?5t#)uX#1h|eAqicmHdVa@vO)jIf0B(G8b5esOWW)CEJG#E=A zm3kBqAmaDay*wxpks4qHQuZ;d@4*B;z8x0nqVU44sDQnY2aL4Il5cBVBZw5y8qhkx zGI;S2DLb7w5y2GQF~>?ESfXP4mt2a>MlI*3e6cJfbE7uY9=J6@ft;Nkt+ZD2zU77q z@@y%rt3lqtmw~~@`9LUcQF>DCDY;QV5rLx5M??dE-k>ZYHbqS#VzPC zH9yF#yF#TND5%Ih;nR@2$YKV6*HGzty#hon4|fbHFmFh3u>S&|0uBF&Ij^>FKCW9I zxUZ+_ijP0(42vZRo8XsV4{7c^Eq5AgeQ)aQkUp(}-)j}eX#y^JQ#nB=Oo~PHF>_~lq@+&w$Iv3215^#Gx9&xO%NYipx=y`VY% zlidU7)x(~*xN$L8ZI}B%aOsxR0#mBjN#NthpTB;_3RSPuN7vq|Wy#XYF*#*o8ar%* zdlA*Ci%UsNOb>bs8#A+oXKJHh*`neB85qqUcyASUEy98sEnw*4Km(T)vwzSl3B`yr zg^$rcJHw?P@Bg5FK!<_0gIrJ37h_ckRs-NN3}%1;i7JRSDw2(8G<8P=m^2DltJZCQ z7ejL81!@(phUBB-33`LLQ5udndykW9tqv6r-n(}Xge$s}&lVrbLNDj;F2K#*Wv@`S zUdPZcT5CnAR`8kx-YrJc9rquGwFoIM*u%t^MukRgWK53Fu-?4TqTInYw9dYI;OheB zqUf1WzwWENm+qde;%2h(;;8JAiK})!hqZKkRtq9KzmEQwoh6Jw0DM4<3U z%f-(AJP%fSBaiGWDu$slX5u^|_{DdfaeA^Z_b)P-Wnyd%44sVWJtDP$&;qK&bE9YG zyK}M^Jff&wxPLD~K1EVgT}3zY5eE;@T&O-S{(gTJZnS8ivlJX?n4#VDhoLlh`jFEA z11FulghJ=C;7%os6K`z;HyQomn-3pCz?1;&_kWC@23#o`%LbWGi5i_e;{e=2iEfHba17dAWPjR9En0ssfg@M5+RVQ}@{F z%IBzA)|-Nt@1lVyFE4j^z|5db3+68hwygX(yPiqv&iksKBf4A;B=h&yaETfJIe9o% zo2pI<^4&~doU@>4d#GAlPYAs}<=`OZA&0xHKFj+FDvo2YrRV|L0|XPosy+Bm2x#AD zVTibnrUWf6;GDe#6l~rN$J3Kh&!K^aj~qxC@F@raDhogXj+`I?fjc@2Yy>k#Ks|oI zNS&P}&F&)SNf-lfOgJI22c2))fWI5=a2#=X853h;qNxS~ zEtd!BjlW2@+7bBk8NCNp=D&S#l`i5CqcxJfFuL~wjq;G0!DR97L-h~lu*gvkfHnqt z6=NIoR7+M1kbyIPew}?Uw9rY)K{$#U48xNcnLBShVh!$BS3d?mhSZ|Bb@HS~A3l5l zu!z-xf)>{sHYbRU_;)N3Aj06V>?fe8K%1$D9Fm})v|@-8+kcsF9K2B+1QZrH9Ub1o zB3Sz{((|wTVehfovDJ))uW_%NE^2SO^L7qah%r9o&fDEettUW=)hnQY8c(c1nL>;n zn0IhL!170E)(uh~IOP=9b>9~X&?P6wa*39otGPtF)n9kbg4#1*vKcX%9%C;j)l6M$ zF8+CzNdh9gF-7dPuMZMrfU!xxaMG`%rLlyhszUIsw)*WTLtMr(Tb&$f~B`7Pag=vAj$B+I+L16Ou*zI&=c^&&G@e7o?3`LSbhF_Yk--?5Yhy?DBq>io-Q z8qy?KyP{ zcC((I@Rz-U1&5=15@acjZ&N*)hgeuTN@)LaDHG0vnH+-o@AfMJ1))9*TGcig7Udm%`fpC#2`4Pg=ZG!QGP9@!67rTzEuojia^ zVj=*X7)#aE)$J#|N287-3{PiRYol1_xcA&dG7qK1$ERX5-v=@_xQ}Bh!Sc}#*vt4L zD?+w}FS7NVx_Bh46{>#aUyqsmRrIjtn(v-~#Yh2`vw{~hMQ_%f+qP?_&)+9xe$@b6 zBcAw+%advFM3^YQ_uROmXMBL!HOZ*VWO2XA)^dXUE#|fOvUZ=vwO!4|+I@ePmr>G! z$qj}cs%ne^DFKflG$8dO_gX4ObGY!)*G2Z@O2dH!nC}iQBK*hZy-HcRjCbnuNiF;A z%nY_TyUUc7XcHiG+87jcu0V&1dGo8A-)_fcl0l6mh|TbA)2~c3kdU*w&lRtWo0a8g z2=8@~Jmc3e4#yzUTsl3T}lbIgH$q2zuU%r2@ zIHJo%^-YaTKn=vK=mh>TBFfCL-pX#~H=T@F*Mq~V2#sCCxSY|mah|=iO71EcaGq5ikH1@JY;aG4A>O1rgms>Z43f-^_Z zTf^s~+^$pGUbLubzQlCeS` zgBq*_q;N??)|e9jq%plilZ*&E(3HM_$c5kT1L$|)0L*&nt=?!S95vTDp9%&IP&tQm zBhMVG%BA^v>dFJF%|q(>U|Ze0w@nW`Cp7E%huS`vQ-Yi&R};W>#HYA%7XR z8{?&I1}PfGBZ!;;4=B{Ka5>YF;OHm`kRKZ(81T}Jb|l01Bk*c(irFo_;zW% zFjhnqFRJyckDYM*#loSYuWx<2yz1k`gx9tMA?)mAA37uyS*7 zg(!Bqygrmw^ym*9vZw`I-`p*Vi#vc^Q$tDU;^Pw%aHCl@_)LQA4>pv$o_<5EiVnb6aY#c2tN+)e{Qz$$W>U^ zh?+-54bWH{pNlP-Ep?Y@!C z6sn_zc_4llbPc2e7u>z8Bq<609>Lf^(WBUjwpDXy~8TXe*&*@yNBaG53Fd}Ol2HFL?oVS4UkgANeoM&*TU|-oqNeoUBdj^fJzIeI2{|7N={Udi^tx#fg z=*VsufjQZK{~PxveyIq>C(v>#mddJ)E-0>50fN^ zh3uV%n>V9(D>Cg8XU}Pq;wA)my$zV|5dmpehWpaF3i(_XaMN(W<8dJc_9VO+m2*KnSzV ze|}(VQEFOPgBldItpD9rW>8q!b7jjBDW43F@w!ox&inPzGu;YGQR3wlvb>ByiWaI> zZes}@pxA7?$AsFga;7^4MUjr9L@}c z=t3$wL2U%+h)m%u0;7UCyyA)O)|Zqy9-1|W6F+cWQJhAwMb_5VYO9Xfjmtc{PNySI zcbR+2v%h#qi;7VO{^>yIz_h}WjWmX61G8?|!DK%)-+%{!j{)rrOc77l67{AV4@+95 zd49lB6?;fdRu;kYVAAXaHikP={k+<6s$$a1ZiNubnYQmETics=HB$X3=M12K$OclV znA`Ld0oodv8fd*d-qxWqRvEH|P@^NB3}>&Hj%;A?5m}QV2tFKRvq(i)KekaHRsJAeYhuDt~{t4L2 z@Yi`?e`dq#162N=|M0W0s^mLMy-s%_CBv26-eC_LYUHLUW&DS1swpYK^$I7#4pmhI z&Y>)XI?$*XAhNcZjohS)Kz`fok?xW!R^e~_#YgA+Oll`9S7tV+sAY1_nat~q$(%{( zQER4cYdQJ%;K4q-`a5U77%}Mp8qrK4z$TF@ElytoD+4|L=pBa*q(@MK;84Jo2iCbi+qQ^h1<)ZtCC3dYFDo02 zUJiHyH{(7KMo|SdG%SNnfaH=n;Kg9xV)6pT5CRrEv|MqPpdJ9*LuW~P+csB_ejusA zB%e<+a1PIU0}YL(>~*V3)g3#)BmM?880ME=4i41Lm8k7k$<+XAA+Sd;Ov!tNZ^Ptd z7eL@zYbh?|E9)8NyNl>jO^+PGQL&vT9#sZNNF(Wkw83dtl=OUjl;XS2p$$cAfOp%4NV934@wU``5~d6J`@o8T1>rNK(DVa8{0meH*Zi5YXZI5-ZJQ{b(C}BVzY;M@5aZ(Gt49%i zB!noasNmdKE1}*H(u0+VL;VL<1YRhPY)#=RENt8$fXRTJ956I=sM-EG0-1LNK8CzWQ53!@XdoSULa4)A+q&BBPu;?YYN@4qhm7|Y^X^< zxWMoT%mX+^;RnJj3I-pz74U^)oIHZNaN^@fsNHLDe7oFNM%T{!0akhK@sRe4Mk+85 zK9_D+fSIZ*`7LVv4!TPSguL%uJiZ|y9QG*s5*i_^>YbU-5PE{61|>N&0|V|UxHQ8l z0L9Vz=PWOv8CWViVDQ-Z^4)%FN#5AR^m5d+V5CKue-O=;M>Wv4{*9ERf9EvIhi^FU<6_wApi|CoY^*OS(aEVD zS@Z%Zh5{?zfsb}&EMX|5*IuD!^y5Cye~zYCZoVkk&o;wo%QBSF@2X*vI435a+)TU7 z&YxgmYb(shmkzyMd(hNGM1hI@RLD@P)=# zxQyXVEt@YgL=x5mpaXKu$j%nN=&vcp;adb;E8mZtU>hE-cZ*gggub$B{bn#uO&b`# z#Wt0C)Tynny;u3`pR+^U^{fG?th1g4`1yUB4+Lixm=ASYFPiIeL&*&{pMbXnyQ-6? zPvi6u4J`RF8twpn5NtBp)o+gNC7{GIyUng00jEmsO&x7*4yezdKsyr3ehhQ%=yw|28jl0N7(9pjyyUDVX!*>|IDyXNEAaH-Okg zii~q#@Uu9qxl_bW%|YEto)Gd}@lZ2j;36Kx)CL0No9oMet^voRA-3C&2;BcXMmcuMw|` zjior^U~^?tX+cj*i&5h~U0ndZ!R`kN2FBQ!SBU04#RoN`g^u?1hZ!k6gm3yk#tni} zUrPd6h^5D{Y6N#L_6utGRrF9Fqq=gVk_eSHapjNSpQL%V$$W7zo{^x_8BJ=DWn zoA|$Nq4Bd2UFFhm?Ejk`SkF&iPe1kR-Ua_3nMOq(W`onEzbyVRswi>i%pd9fI&!q+ zZ+^(Yf=g1~#+s13B6pjq#1=r*fIkqT+d=LUgaI|=1rP(_l$aeKM_v;K(@9sazCgo~ zl$1nS$*Os1$j8S^4_?@zIX4BlBOatC$i~>eXxlM^udDlwXOC1p2r>i9{iN6%DVG^s z2eWf>KcCcBTZq6P}(|4mwTI-UFrO(UT{P>YGS}C2Dr5qh=PQ zzb&}u$a8s+my=N8gkRCww-4?dU=bbj@TjN<0qa z4ut-3=KuKdP?6KqQ~9o%UWL-RZss=@SR2jH9kbFmzp{X_e3&kKssa2pr!lB@x&-zR zfL5sVQ2o-(W~jJZ0NuaYN8hp~_I~X2Ee+O7#Q;z71q=C(JE$RW0&bO*G|E(djN2RN zHTn)*v~INzG`4_Mg+V?1i)YaAL_|c0>1v=4NQ{U$l6w%37MUEDyVKv}+JP}nrA16s zlvw0z4^^&EaMB_4gEP*%Ixi9Z)37_(EH_Mpx)epw}DM2b{G*+yDxCxN*DCsW{&htqkk>@=GU* zkC6ts5yFXEuRR8<`s7KFF;Hf1;j+`Cj3!zoWjs{#5`Q~mtYK*YJPeP{K28@tZxjt9 z1elm+g@AT6Tc8VLB+OV>mHDDw|Ja}@F9_7Mm23N6BJBzDhK@MY&=L}~V#=_unCSpJ zV{9MF$8im?t_HMn-<+R?i4HI0F^~Jl^Rx-z@j3i=3=KYt^=4AxF5y>J@~&7bolPQd${Y;jDVas&g7wo|94#>`>6mmF(IQZV*i#E<4&^wk2K2 zb*D$IU8{q>%y*+*--TucXL?ni+YB;^p3#%#U=dKiV<;L5O3Mvf3#$h%U6+>QdDFOf zIjt3<+2Fst<qUNb;?wHMq*>*fm+&o1;6S0n`ULR=Yw~0O2z4#KALg#jksyNgFZjCjv^-Hx_IL6KF*^6N1?m|)BzEo~sb z*ssFR0!;vDPk7qTCw&|&Vul@1e;czsP|Tv;0Hxt84)Or)%MH@0{30SPK9f(NcOK)Y zr`!1GD2dP%IG?ZcYgenH1zKp_3xHx%4K4%+gTdwtG#b)LK;=AKTp%okHb#S3DY5NQ zhiUn+=vG*U1HuPnr>aW#n~IhlR{gOJ?D1VUMSEkWQ#porPh8fX5j`TsQLXOLeR*R4 z6+-V57v)SCIVzvF%BpIX-Y&i3!{=~>_O^tA>qyONW8m7`iO@}kPC17Hp z;Lsk4k`Z-O$oEbbTjE$@;1=fKoNkpe1?G-;&R|&vs$;tjAMT63^?^Sj8c5-XCV-k+ zs;Wz9j&W##)qv6-90X9ZP|^HZ{&ExG0V;a7W0RN}M2~*JDTzwOv~&o%Bp4xrODGaT zZtLuf>=*~Li&8(y$b3T!5B4|?8__58t_c!SCJ80yPyaa=16E>nt&jl!13dg9)5nwZ z-OKfUMb)F0jDXXd?n-}K*aycoCw@kxlJ^8MNdboh^=Od@c=I%p*hSRMzp$Ao_&L-!K?w!K98+i@6`v^D9P)S!tTcw=`!aHM1NT^3T1~re=}@?=mnR#S zu>0oKtG`;-_sQG+`2792c-j$H<)+RzZO~lkghVscTG=F}70+5wI3LDWi(f5=(VSHe zl+b=7rJE1~2gGnE8uP;bo2&d;yplD{WgHo~33JYN-&dT#W z(Tz_%iGTb@`>k2D4SdYqSWF=>nIDmH!(p6SSK(_ks@O$5G;qj#n0An1wUID@_i5*%6=D;PYJVtXg~ zKkL4Ca_KMTW})GSOtA1890)o8NFrBLO@JQlz;YHX1BVYtPD-@(?l^xvN&H?y7-A#995Ed2a z9>84jMm4LZ=H>Eg@|0;ldYsLXb7h0khH<$bjfRrDYA&wF=IveNn>3KT20X>}%cr5+ z<}z`XhMo&!E}Hd={eRacB#o3Et7Ah)M}R(AdMqV8eOi;k#S)!N6c=>qXK>!E0(S?VI;8NcuUDB(7s#T7{9RvXYV;#+>vGDXdUVfRKiMVu9>EUbcZC z1^_QJ@f@>jkHXWJFI6F<(5nmwfn1BF{)Gjwk$*D-{L3XGB@q^*AMCIzrK5t zsiJMg)8{nRSBlNq+U&*kZ@|BRaR>-_*lOfS^{3q%Caut&L&$L_yPSu(w0Bk6_5@w z5tu?k8*G8S4QSOoCvF{Dc`p?6y!4L+X^kc%@Yu08QDuQDG_@O|4>{{~uVty>qcpd* z^&I0gn^<6gNG9l~MEo;h^}sviz5aG#rpFrtq4DRHb!a%Qg>xJT8HgONuCNqIG1%gi zq@AZi7h!Vj7zj;m5~|>h*Pq!88z(6)cs7d?=az#3e(Zzy(k&Q6pj!371G6@O{J~uGM?e_BaalHloTUVDhqOC-0gPJdY?}z8+c+t4;J74^W4chf&u?02E;84xT>Ww-fE<|WV1hM-rVctv zTtxUQa1FLV)d%PoLIE&zTQK4TITdcLxP6#A>W@R$;7e)8ag067-g%^802-t%Teohe zNDXcqOJSvGy1pnxt8ne{C*T=h=VJ=kOvI7hW?^w3PY`N==$IIp)F=3U1fEP>NFmgX zFPz=OP6_z=+C(Evt2b3XM{7$qN*wrjh&A`;Zp_bA++U$w*c*S@BUpPY1cB`jl1V}b zUw3p&;4b!Q2!`@G$ppQKC>-P+9T82X1n(jc4zMf%n*^b@!u3oL3)3dDv!B6d0gweg z;P0P5HkHihuG8gHWZ}gCiXKJFHo0f?KSD)XvVVz zeG7LP%mfhl0O=cASh#2)G#I7{cv%QDTKc{TofbqP++4w`lxJh_?hfdfkAveUrVM~N z59eqsLhuDF3Jn&931`jBhVXLnbkTUAq5#P<1miQ*LgSDJpg;qDIf4lY47G9(j9y&d zT{8{3KgD5y5EU5-G7#dnDRWo+K)|Vx;G(YuVFT<<^hDT$$Rz>?Mp0L3hz1DrP~E^r zJTT(T+f{U9sY`B(>zO-QXi!*!wsJ0zVnuxdNE1eD&`~@?lZe4gBoXKkSf>JsJv*|0 zUe*+zMY|4AACkWNfpZtBIcb&^B8hVxC_E^6k8tZCGufM9IOJ`Jj>{!2+&Aj66Y|9z zC=oTT_$2@-ZYpHw`4{mcLi)vn4hmn3_SS4;ClUGGYkl?#sQNDvF`m3f;c6g41@+4;2HwCa!5~qP z`|{<>KXuW&cN9ST=j6eE>LP+_tH>}mJa!x>m^I^PFe8ra#|MZ8vLEMHtW)ceL|iiu z5LyqC;JbIn>FMbg@@(QS&ag;xZwehKI_vVg`_IZue69{Y#E)W>ZUHbD&M1oCJrdGD zl*&gyqMzU8*jThFFKo9hZmhS)_4DNEQ$Y~q!CAnTE8iiOGimVW+V51W?kcE00K#K4 zV{;mbC!-Ud^2q&7W&l@(;QKsFt%@QOJW@7#1&v32CVko6tNv2Sma-pe-H(E4{P5u} z(xbk<#GVN#FRLvpKJSm4E}EpJcXK8y`&^Fin|ips$ncJX!t}wCCkHnp#1r)`{=qT8 zPI~_QIm$>)-_M4)s^Gd1vhsE7Ovr{)bRKs*tOIrOjIol^z;wHM6%OGLbwm*F*4Dz? zCll}(4lRfZpx}~`mPRlJ)72|v6~Mm`*Q)`KgLW*oi-Oi-=Kv@#Z){w}3}8-4o zES=e2u^V&#Yb*W;6$Uxbo^+?fDseQtXVU!ln#%@pHyCTcmKEj^xGf_2o6}$KUn3T7 z@s9p`Fb?*38{%rAjlyUVi`;%jWrqP6TX2{*C~8;0wC3_N=ZTDn`Xj`&1Jq|lQzQm> z90BGUE70&3mftvGnCnV?Sbn91{w48x(c!&vS{&~^G@|m@fM`;5i4kv2!8ZrNjv@QgrxR+* z%*=U12ICzfd-jjkpXq?{4Z7()f61HUyPybMM6!!IEf~6RF>`4HjD5T%q^Z00^oF)S zQtV(Mf+L~k_1DsXcKex*IKFaL0u?e32Z5QxQJj{h4c28CmDg@!Hi~u&Vmf~d)Ivy% zP@#|&b_g~f96Le%$+FS{{_(A}mN|dLE9a^5H9*b91Ox3Acvbb9_m<}M-M?P#odg$O zuVB1JfJSFdlq4kQR5D~|BfI>IK`q*Wzc%x^y;-8pKy@S*0*qQ9RYBSw%6jzA<6J2I zPy@b&iu}owY24JtXXz=kqaehvPzWE&$DP3Ln{z~A4~eN>K@`OtD;QR$Po{B+A^;E) zcuaSc`5_@`hD)Ist>P>1W1!06z=H{rzSLeqCFV1L{>lDu8hCzVH;50QBH)p2Ni~>% zi80~sXz#JT@qJ$)?Qm&)KILY0>*&3F9sj)Rff@AK#_sYA8rPbe>!m&0DBdTpUY!L5 zgv9}#App>udz-$o#_oq1N+TEy7-2vUcYg8-_ukLi8YR32k#+`fV@!FHSX(B*!V%{L zodkCJ1`7$E_#>vK@EOG+rx3DAMm<6CN5gv&WTn`%X`cdZ2KK?q;KRY+0m?_*Bf!z{ z5*ed#CtwT1X=fMuVC-!7qZ+0AOUmXL)=EvK%?-9_^@W6t&9!XvFfR{jT7RuaXLJQS z0TVUYTjE@$oBTXah~uvmtsg+ujb1To>iTaXHoIzAPa*#k*>`56DKRmu>%@!RH7q;r z4{Fc{bLpEqgj1}7+%j)w!I$QM%CO$6`;lT1IYz~>M{Q&oalT_TqqAy9-Z#fvZ*m$s z72ZV@M(`%KkWK}y%jTXl3rW9V07HYX$_(V2m<=y^#e5s{)C4P4^Z;D_2{9q>x03rQ zh8K8F5XEDrT@P0ap)KDfPn}ayIs)^apJnrEfNH1w#y^HdrZ!;QKqG=77i9|rYlhX{@$Fvy zF$hWphQ=D>3uAP2!0QWxhp`i|HWD%QTmHmNYkk6{5%tnh=h+=qgycDR3gV;PPXqzo7SHdffubB3`(-xHzy{OnJby zM$w1MDVhj*y}qGg4N|4?YW@7a!*dBGFPgMH3En68Zkb9WH$JZP>)Y(?L+&pN|AGO^ zEB|83FV!?o;d{j5Hb1)is_W#}4y6|u6ZEX1Y6AZrv!eJeIMpY;3U|v?^pg#nK13Rp zwwTxod|Y#b;OCldu?0xiWMw_@al6%O;9qd|0wBg)d5-^KpovkUVeufQwZN4ejc*;5 zb8%FTH7L4$?4Di^ZP@;KOt(=XBw~G*4};;gOT51O;IKBs3U@DRI=C)Vowp6Y_n!AHfhnzfz& zMcaOpe00>~Blk!VRQhO(zJK|0)YQ}w zto>92YyduC;oAc)0P`r-k)WU^xGWil-A+m%U{TD?p|t=Afr$iqGz^Nm)W|o4{RY0ID^JPFm_*vo<)n=}(w}%JCh##{M z8yg!C0+8YkPC1CGr<|QXfB!DX&Q1xC!Q5nXq!wjGK`iie)8#Z8o%ZW;dxW))OA{+B zAHFO)u|HXF?=53}r@O*OijcOEODj$)(J4>;*ui}{?19t13tDqUh_R5hyd$cm^%wI@ z*g$50IFFrz*$u_xow9f`ReFsLtJw1521FO^I3s%}wJ^nit2K~?w-3*PKLG=7KxlY0 zQZh0E5bI%71M@5^bbH3eW1l}$Qfbg8;zoNIP(Fzwfsh9aLPTzq{DBVakmx;7Kd^Fl z?%c$@jXWLwr+UoQtb7=E2_y_qE4>H9uNgcxe7?{UXBb-8eWw+)$HCh>Nip6;5rWs4 z5EmDwQTWW1Z8ai=z*xKQdCvKjG`kd^<*8O}rKpcTCcDOcwjRFu-1*+<{i zZK`=57G<&Vk-fOK!Hm}aND=*wdy6V<$X@bqCmvlX(Kf~y&g{lCkG|uSUg$t!it$F5zl>7yFVBP>$u}E1jj-0 zGq90jIb#g#a}2iy*KzdX;=(o7m!+2Y*y-apncLFu(E}oA1+nHgZfIeD;TFXef7eo0 zDI*wATeT&{EEzB-J|E~(B6=rT1ysT7--8%0F#iS#YDiF)mOWk_F!LPzv?x*}F{dpM z&EcnQN5&lfap4N(+pez|6qao?w*CR~2tn)}Un|3ISr(Sx-&&bAs_sZN*o|5nfjp>+ z_lcW;oQ`4*%sZBzg%#1v4?l064)5&h3RCgLP#YLDT)M$WMRK`!!#f0D8$z3n<%_G- z=)eIO3nM%#6U!b3`U5c)JQ&X+NCNE*phXC1p^}DAJUUU4|I{N-kzoOTRPzeDlqO&( zdq))*qi6)o!QP;-L@!;U+=e(kUgqy(!kE!m%AS61uqJl=xJC}1F8)XxL(28*pJ!%R zR6b{|NymQJ8`nBh0rfr|T}aFMvoGsL5&T_v;ZLXdKzgodr17&9{Q_9ygX{BF)iYa& z`=pz*g^BG4ZC^2E^GXZsw-Bg$TNifei2Kbxx$>a=rr58;7<^x0AW2@s z*;j5RjqvUEac>N>Vd4;gEGHPZLgl#p^CaTmIXHkIZ}^adj=!nT4Z{s=YS70(#daSq zOD!naoS?TuO%3E5I;C%8V|OqCL)Ql4Ie?5*SYmA5%FE3?K7WRVKK%@Gk1-L40vc;y zNLcvCj~~$arUS6|Ru{}OCdix>q9>9Afi{4&X({`>uWt|FZk)*!FIW^#c#CGzXG&Y- z8AnnGVnFd_0OEY|X|7hxF&b?=uXbzT)9UO+SWm@pz#HnoV6ktICZO1Z?%&SWd9ewo zD@bnlH1_r`)ehyik8EvP`t=K$4KThrhdDY%)1We8KRYN2>~OwZS62tBFHX|sU@cM! z06Zu%4jn!$0#xbyAU?+xP?_N)w(#>OE^uIvTHx|nS!Kec={~LL?j;B|W`F)lW$Y?W ztvBD6T6kSxMT9NWfv>KJytT%gHAxxHc%$am*)-P0P`Qx2EQemEq@r z5rL_GVqzZ-aTM7*;AVy!10Mqf>mBpP9eTUWt^cDrDrGRIVIz4nLwumJmm>~TMFiOl zK|&Epe0mcl9>|$Ma0?8I;N|NG+4xqXXPo8t;kwzCO6#NY)&XEa`sCd)mCjKJX*@gH z%)ufPnHl)H_R8Ad^^V19G{ zwvaodzoZ?^t@=1@pv6hoq}NqOB?0r5oURzr~}C125VUX$K|s7Nn*`kA}o4w z6*E{cg=`aQz2UN0rI$cj&vVWN(@#l>f^1>sVi#%PM`5(O@Z*b^y zFi!Ahfq8-o420<=8blN;phRI>o3|8n?--kwh!gPRqIMtaq_h~~M>xM_rB4|H=uqCS zj+yWIKPw}zM)SQV+++7_-`y;vMnP=Y!N$5HKJZ={O+M*_3w110ik zNk}{*OrQQI2jIN;7N)B>=*Pdn!WM`BOu0(u>*(<8o0@M-T$MGCCze!JY?$J~DKFZL zAs{7o1S~_iu)w+(aZ-qxg|LN^HLnK-gpTQ1d~zVVp@+hF0bi)Mfkb0Q9)ePpX&qC@ z9g!4oJ9ZKd6Nw8bVDVT%sfOk$?VmhHp9{f5>tLiDkl+Z+gboH)F=W@sEM3W7X_*GW z=P;(~aDGZ2Zw>3r*;T+Rr*RIs<$5yPws)5q2u<4@$`8v;Bf27g6<%!EBj*;SV>-Z@ zSKzu2gVuwG4uL5FLxk^m__#mN_%U}atPuY_-dt8CZ~okF9C_F?@Bkjf^5Ep)Kuy8O z2GvYBNA~PJEBNCPdLv3pzoIh$JqF}{oq8ng#^H!W22w8c=GE0_Fmq&9N-EY)D0$4- z;31uQsb|8bF|ZmlJ=|sJEb)WSdV5cy6ZZC2$T6xa+MRSCX4Zef^uTqEJ`%c>aPOF0@l&wk_43JLyw zW4C~Kp%7IKcOqxFxM080>%oem=$Iwz!lGwCo3q_$qS?lzaH7xgblgE@)5ekzAK$?S zRdDzc5@P}R&aXRC3}P5ve`)kg*o}Yt#^e67?KN0U~eks7Jwfh znB~Ez1&tcf6cO@%LNo0T)(w$wZB`0HGi>0r+qObVK|kj=@BhTOF{=YUGO@Z!M1~f+ zeVb$SU%8xZ}updF(x$KW0Qx=5G(Q9}*ai;`9lM=}+4_ zq7$;z6~A0umwD8ecquk;sYfJOYkj=wd=mc%F`?Afmzm8q#%pM2?o!+ilWZR*s$XwrZG;as{|&cKTr!zzsaLVb{Ur=X+2%*4VH#WubV z5Zkz~a3Z}0fwl(9HW6FI<>HZ@!0@+vY-855m(^Cr<^$*trB*o;^d?YtfQz)gv4FlA zzM1ox4;X}A?V4juBC^p2yMT_3USrAh+ngP&7%%TH7zm{=c~i)!rc|>HtM96T#BxJJ z0X>_=w$u=6>c0{6iNbq85V^v@JXG*hDNLSaq?f^VFt58zgnZGTgXCVyk^d`>bwdr_H1{)Dh+sdRLSje|{2h6$QHnKW0W?SP<7N~SIrwXozQ6}ZN;GAzlTdpB{)jW zvs58318&UAeSs7vNJE>+DJsvca@mV&BLNTM1Vc4QO(|gmpH zy155r2#i-xr`m6z{T>V#!IIZHh6^yrGv09RF@>rVg4+C8MzeLHm;LKP*FiYO{VDTh z?~evsi&jQ8%f{B$=&3XqG<{$G+4F3wcc_pDngMzc%oUcy6SfQbn=mWu^3$G%Mg8xk zCHQ`T)a|77rn6I5l&Bn6`U|DS(c8zt+|affKSZ0Upzz&p_|4&;a|ngt&k=5N+!t|4 zR#i-ji_ziOo2`5J*Q481<-KGs%jHn(i6?i8C)Xt=>dJ;JF3FKfj;(z@Ov8}(@e*U2 zSM&VRJbS#Z#<6OZfD^x>pGR-QMA)qsB*1kP>3ARcgJ|rT896RSRAC6{1KM=t4AYm-pS$50vUMxQ zXI7)9#pb?(pu|yHQ(vfSY)a}};-}G0JtCfJH5a(zd2kJ$!~|LzGr3&uy>RO}a7OWU zh+R^AfkjeTfW{*yr6s$MgrJ9aymDuqRp}5Yad^*K;XMb&t|JTYmG?&8*QWV?`^K)b zo|tt;YgKl*z~%@j42S{>$CSDIU25O}20K^L3u!UpbC2)T+#P{^cR_`0l#cVZkc`|x z7hn;hkNSsnFjjQ(f#Rc{k0z{-y1swv*={j*o)iG~( literal 0 HcmV?d00001 diff --git a/build/doc/html/jpip_protocol.png b/build/doc/html/jpip_protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..bc326d456d6b120e641561faa3ce6e7ec3ae0c6b GIT binary patch literal 6376 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 + + + + + + +OpenJPEG: jpipstream_manager.c File Reference + + + + + + + +
    + +
    +
    jpipstream_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <time.h>
    +#include "jpipstream_manager.h"
    +#include "jp2k_encoder.h"
    +#include "jp2k_decoder.h"
    +#include "ihdrbox_manager.h"
    +#include "j2kheader_manager.h"
    +
    + + + + + + + + + +

    +Functions

    Byte_tupdate_JPIPstream (Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
     
    void save_codestream (Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
     
    Byte_tjpipstream_to_pnm (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
     
    ihdrbox_param_tget_SIZ_from_jpipstream (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
     
    +

    Function Documentation

    + +

    ◆ get_SIZ_from_jpipstream()

    + + + +

    ◆ jpipstream_to_pnm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* jpipstream_to_pnm (Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    Byte8_t csn,
    int fw,
    int fh,
    ihdrbox_param_t ** ihdrbox 
    )
    +
    + +

    References j2k_to_pnm(), opj_free(), and recons_j2k().

    + +

    Referenced by handle_PNMreqMSG().

    + +
    +
    + +

    ◆ save_codestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void save_codestream (Byte_tcodestream,
    OPJ_SIZE_T streamlen,
    const char * fmt 
    )
    +
    + +

    Referenced by handle_clientreq(), and handle_JP2saveMSG().

    + +
    +
    + +

    ◆ update_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* update_JPIPstream (Byte_tnewstream,
    OPJ_SIZE_T newstreamlen,
    Byte_tcache_stream,
    OPJ_SIZE_Tstreamlen 
    )
    +
    + +

    References opj_free(), and opj_malloc().

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jpipstream__manager_8h.html b/build/doc/html/jpipstream__manager_8h.html new file mode 100644 index 000000000..04eb8baa4 --- /dev/null +++ b/build/doc/html/jpipstream__manager_8h.html @@ -0,0 +1,252 @@ + + + + + + + +OpenJPEG: jpipstream_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    jpipstream_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "msgqueue_manager.h"
    +#include "ihdrbox_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Functions

    Byte_tupdate_JPIPstream (Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
     
    void save_codestream (Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
     
    Byte_tjpipstream_to_pnm (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
     
    ihdrbox_param_tget_SIZ_from_jpipstream (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
     
    +

    Function Documentation

    + +

    ◆ get_SIZ_from_jpipstream()

    + + + +

    ◆ jpipstream_to_pnm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* jpipstream_to_pnm (Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    Byte8_t csn,
    int fw,
    int fh,
    ihdrbox_param_t ** ihdrbox 
    )
    +
    + +

    References j2k_to_pnm(), opj_free(), and recons_j2k().

    + +

    Referenced by handle_PNMreqMSG().

    + +
    +
    + +

    ◆ save_codestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void save_codestream (Byte_tcodestream,
    OPJ_SIZE_T streamlen,
    const char * fmt 
    )
    +
    + +

    Referenced by handle_clientreq(), and handle_JP2saveMSG().

    + +
    +
    + +

    ◆ update_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t* update_JPIPstream (Byte_tnewstream,
    OPJ_SIZE_T newstreamlen,
    Byte_tcache_stream,
    OPJ_SIZE_Tstreamlen 
    )
    +
    + +

    References opj_free(), and opj_malloc().

    + +

    Referenced by handle_JPIPstreamMSG().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/jpipstream__manager_8h_source.html b/build/doc/html/jpipstream__manager_8h_source.html new file mode 100644 index 000000000..14a3240cf --- /dev/null +++ b/build/doc/html/jpipstream__manager_8h_source.html @@ -0,0 +1,137 @@ + + + + + + + +OpenJPEG: jpipstream_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    jpipstream_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #include "byte_manager.h"
    +
    32 #include "msgqueue_manager.h"
    +
    33 #include "ihdrbox_manager.h"
    +
    34 
    +
    35 Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen,
    +
    36  Byte_t *cache_stream, OPJ_SIZE_T *streamlen);
    +
    37 
    +
    38 void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt);
    +
    39 
    +
    40 Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue,
    +
    41  Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox);
    +
    42 
    + +
    44  msgqueue_param_t *msgqueue, Byte8_t csn);
    +
    +
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    +
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    +
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    +
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    +
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    +
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    + +
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    +
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    + +
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    + + +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    + + +
    progression order
    Definition: index_manager.h:55
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    + +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    +
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    +
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    +
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    +
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    +
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    + + + + diff --git a/build/doc/html/jquery.js b/build/doc/html/jquery.js new file mode 100644 index 000000000..103c32d79 --- /dev/null +++ b/build/doc/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/build/doc/html/mainpage_8dox.html b/build/doc/html/mainpage_8dox.html new file mode 100644 index 000000000..38e848a8c --- /dev/null +++ b/build/doc/html/mainpage_8dox.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: mainpage.dox File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    mainpage.dox File Reference
    +
    +
    +
    + + + + diff --git a/build/doc/html/manfbox__manager_8c.html b/build/doc/html/manfbox__manager_8c.html new file mode 100644 index 000000000..3dc16d5f0 --- /dev/null +++ b/build/doc/html/manfbox__manager_8c.html @@ -0,0 +1,265 @@ + + + + + + + +OpenJPEG: manfbox_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    manfbox_manager.c File Reference
    +
    +
    +
    #include <stdlib.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include "manfbox_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + +

    +Functions

    manfbox_param_tgene_manfbox (box_param_t *box)
     generate manifest box More...
     
    void delete_manfbox (manfbox_param_t **manf)
     delete manifest box More...
     
    void print_manfbox (manfbox_param_t *manf)
     print manf box parameters More...
     
    boxheader_param_tsearch_boxheader (const char type[], manfbox_param_t *manf)
     search a boxheader by box type from manifest box More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_manfbox()

    + +
    +
    + + + + + + + + +
    void delete_manfbox (manfbox_param_t ** manf)
    +
    + +

    delete manifest box

    +
    Parameters
    + + +
    [in,out]manfaddressof the manfbox pointer
    +
    +
    + +

    References boxheader_param::next.

    + +

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ gene_manfbox()

    + +
    +
    + + + + + + + + +
    manfbox_param_t* gene_manfbox (box_param_tbox)
    +
    + +

    generate manifest box

    +
    Parameters
    + + +
    [in]boxpointer to the reference manf box
    +
    +
    +
    Returns
    generated manfbox
    + +

    References manfbox_param::first, gene_childboxheader(), get_DBoxlen(), boxheader_param::headlen, and boxheader_param::next.

    + +

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ print_manfbox()

    + +
    +
    + + + + + + + + +
    void print_manfbox (manfbox_param_tmanf)
    +
    + +

    print manf box parameters

    +
    Parameters
    + + +
    [in]manfmanf box pointer
    +
    +
    + +

    References manfbox_param::first, boxheader_param::next, and print_boxheader().

    + +
    +
    + +

    ◆ search_boxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* search_boxheader (const char type[],
    manfbox_param_tmanf 
    )
    +
    + +

    search a boxheader by box type from manifest box

    +
    Parameters
    + + + +
    [in]typebox type
    [in]manfmanf box pointer
    +
    +
    +
    Returns
    found box pointer
    + +

    References FCGI_stderr, manfbox_param::first, boxheader_param::next, and boxheader_param::type.

    + +

    Referenced by set_cidxdata(), and set_ppixdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/manfbox__manager_8h.html b/build/doc/html/manfbox__manager_8h.html new file mode 100644 index 000000000..ee86d7210 --- /dev/null +++ b/build/doc/html/manfbox__manager_8h.html @@ -0,0 +1,245 @@ + + + + + + + +OpenJPEG: manfbox_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    manfbox_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "box_manager.h"
    +#include "boxheader_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  manfbox_param
     manifest box parameters More...
     
    + + + + +

    +Typedefs

    typedef struct manfbox_param manfbox_param_t
     manifest box parameters More...
     
    + + + + + + + + + + + + + +

    +Functions

    manfbox_param_tgene_manfbox (box_param_t *box)
     generate manifest box More...
     
    void delete_manfbox (manfbox_param_t **manf)
     delete manifest box More...
     
    void print_manfbox (manfbox_param_t *manf)
     print manf box parameters More...
     
    boxheader_param_tsearch_boxheader (const char type[], manfbox_param_t *manf)
     search a boxheader by box type from manifest box More...
     
    +

    Typedef Documentation

    + +

    ◆ manfbox_param_t

    + +
    +
    + + + + +
    typedef struct manfbox_param manfbox_param_t
    +
    + +

    manifest box parameters

    +

    I.3.2.3 Manifest box

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_manfbox()

    + +
    +
    + + + + + + + + +
    void delete_manfbox (manfbox_param_t ** manf)
    +
    + +

    delete manifest box

    +
    Parameters
    + + +
    [in,out]manfaddressof the manfbox pointer
    +
    +
    + +

    References boxheader_param::next.

    + +

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ gene_manfbox()

    + +
    +
    + + + + + + + + +
    manfbox_param_t* gene_manfbox (box_param_tbox)
    +
    + +

    generate manifest box

    +
    Parameters
    + + +
    [in]boxpointer to the reference manf box
    +
    +
    +
    Returns
    generated manfbox
    + +

    References manfbox_param::first, gene_childboxheader(), get_DBoxlen(), boxheader_param::headlen, and boxheader_param::next.

    + +

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ print_manfbox()

    + +
    +
    + + + + + + + + +
    void print_manfbox (manfbox_param_tmanf)
    +
    + +

    print manf box parameters

    +
    Parameters
    + + +
    [in]manfmanf box pointer
    +
    +
    + +

    References manfbox_param::first, boxheader_param::next, and print_boxheader().

    + +
    +
    + +

    ◆ search_boxheader()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxheader_param_t* search_boxheader (const char type[],
    manfbox_param_tmanf 
    )
    +
    + +

    search a boxheader by box type from manifest box

    +
    Parameters
    + + + +
    [in]typebox type
    [in]manfmanf box pointer
    +
    +
    +
    Returns
    found box pointer
    + +

    References FCGI_stderr, manfbox_param::first, boxheader_param::next, and boxheader_param::type.

    + +

    Referenced by set_cidxdata(), and set_ppixdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/manfbox__manager_8h_source.html b/build/doc/html/manfbox__manager_8h_source.html new file mode 100644 index 000000000..d3049b174 --- /dev/null +++ b/build/doc/html/manfbox__manager_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +OpenJPEG: manfbox_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    manfbox_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef MANFBOX_MANAGER_H_
    +
    32 # define MANFBOX_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "box_manager.h"
    +
    36 #include "boxheader_manager.h"
    +
    37 
    +
    38 
    +
    41 typedef struct manfbox_param {
    + + +
    44 
    +
    45 
    + +
    53 
    +
    54 
    +
    60 void delete_manfbox(manfbox_param_t **manf);
    +
    61 
    +
    62 
    +
    68 void print_manfbox(manfbox_param_t *manf);
    +
    69 
    +
    70 
    +
    78 boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf);
    +
    79 
    +
    80 
    +
    81 #endif /* !MANFBOX_MANAGER_H_ */
    +
    +
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    +
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    +
    box header parameters
    Definition: boxheader_manager.h:39
    + +
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    box parameters
    Definition: box_manager.h:37
    +
    void print_manfbox(manfbox_param_t *manf)
    print manf box parameters
    Definition: manfbox_manager.c:89
    +
    #define FCGI_stderr
    Definition: manfbox_manager.c:41
    +
    manifest box parameters
    Definition: manfbox_manager.h:41
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    +
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    +
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    +
    void print_manfbox(manfbox_param_t *manf)
    print manf box parameters
    Definition: manfbox_manager.c:89
    +
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    +
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    + +
    boxheader_param_t * first
    top of the box header list
    Definition: manfbox_manager.h:42
    +
    struct manfbox_param manfbox_param_t
    manifest box parameters
    +
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    + + +
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    + + + + diff --git a/build/doc/html/marker__manager_8c.html b/build/doc/html/marker__manager_8c.html new file mode 100644 index 000000000..29455e932 --- /dev/null +++ b/build/doc/html/marker__manager_8c.html @@ -0,0 +1,313 @@ + + + + + + + +OpenJPEG: marker_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    marker_manager.c File Reference
    +
    +
    +
    #include "marker_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + +

    +Functions

    marker_param_t set_marker (codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
     set marker parameters from inputs More...
     
    Byte_t fetch_marker1byte (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 1-bytes of data in file stream More...
     
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 4-byte big endian Byte codes in file stream More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ fetch_marker1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_marker1byte (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 1-bytes of data in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream1byte(), and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ fetch_marker2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream2bytebigendian(), and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ fetch_marker4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream4bytebigendian(), and marker_param::offset.

    + +

    Referenced by set_SIZmkrdata().

    + +
    +
    + +

    ◆ set_marker()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    marker_param_t set_marker (codestream_param_t cs,
    Byte2_t code,
    OPJ_OFF_T offset,
    Byte2_t length 
    )
    +
    + +

    set marker parameters from inputs

    +
    Parameters
    + + + + + +
    [in]csmarker code
    [in]codemarker code
    [in]offsetoffset in the codestream
    [in]lengthmarker segment length
    +
    +
    +
    Returns
    structure of generated marker parameters
    + +

    References marker_param::code, marker_param::cs, marker_param::length, and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/marker__manager_8h.html b/build/doc/html/marker__manager_8h.html new file mode 100644 index 000000000..c69a61baf --- /dev/null +++ b/build/doc/html/marker__manager_8h.html @@ -0,0 +1,293 @@ + + + + + + + +OpenJPEG: marker_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    marker_manager.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  marker_param
     Marker parameters. More...
     
    + + + + +

    +Typedefs

    typedef struct marker_param marker_param_t
     Marker parameters. More...
     
    + + + + + + + + + + + + + +

    +Functions

    marker_param_t set_marker (codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
     set marker parameters from inputs More...
     
    Byte_t fetch_marker1byte (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 1-bytes of data in file stream More...
     
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 4-byte big endian Byte codes in file stream More...
     
    +

    Typedef Documentation

    + +

    ◆ marker_param_t

    + +
    +
    + + + + +
    typedef struct marker_param marker_param_t
    +
    + +

    Marker parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ fetch_marker1byte()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t fetch_marker1byte (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 1-bytes of data in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream1byte(), and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ fetch_marker2bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 2-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream2bytebigendian(), and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ fetch_marker4bytebigendian()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    +
    + +

    fetch marker content 4-byte big endian Byte codes in file stream

    +
    Parameters
    + + + +
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    +
    +
    +
    Returns
    fetched code
    + +

    References marker_param::cs, fetch_codestream4bytebigendian(), and marker_param::offset.

    + +

    Referenced by set_SIZmkrdata().

    + +
    +
    + +

    ◆ set_marker()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    marker_param_t set_marker (codestream_param_t cs,
    Byte2_t code,
    OPJ_OFF_T offset,
    Byte2_t length 
    )
    +
    + +

    set marker parameters from inputs

    +
    Parameters
    + + + + + +
    [in]csmarker code
    [in]codemarker code
    [in]offsetoffset in the codestream
    [in]lengthmarker segment length
    +
    +
    +
    Returns
    structure of generated marker parameters
    + +

    References marker_param::code, marker_param::cs, marker_param::length, and marker_param::offset.

    + +

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/marker__manager_8h_source.html b/build/doc/html/marker__manager_8h_source.html new file mode 100644 index 000000000..9bdab6b68 --- /dev/null +++ b/build/doc/html/marker__manager_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +OpenJPEG: marker_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    marker_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef MARKER_MANAGER_H_
    +
    32 # define MARKER_MANAGER_H_
    +
    33 
    +
    34 #include "codestream_manager.h"
    +
    35 
    +
    36 
    +
    38 typedef struct marker_param {
    + + + + + +
    44 
    +
    45 
    + +
    56  Byte2_t length);
    +
    57 
    +
    58 
    + +
    67 
    + +
    76 
    + +
    85 
    +
    86 
    +
    87 #endif /* !MARKER_MANAGER_H_ */
    +
    +
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    +
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    +
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    +
    Byte2_t length
    marker segment length
    Definition: marker_manager.h:42
    +
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    +
    codestream parameters
    Definition: codestream_manager.h:37
    + +
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    +
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    +
    Marker parameters.
    Definition: marker_manager.h:38
    +
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    + +
    OPJ_OFF_T offset
    offset relative to the start of the codestream ( including the length parameter but not the marker it...
    Definition: marker_manager.h:41
    +
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    +
    codestream_param_t cs
    corresponding codestream
    Definition: marker_manager.h:39
    +
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    +
    Byte2_t code
    marker code
    Definition: marker_manager.h:40
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    struct marker_param marker_param_t
    Marker parameters.
    + + + + diff --git a/build/doc/html/mct_8c.html b/build/doc/html/mct_8c.html new file mode 100644 index 000000000..1f46467cd --- /dev/null +++ b/build/doc/html/mct_8c.html @@ -0,0 +1,647 @@ + + + + + + + +OpenJPEG: mct.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    mct.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    const OPJ_FLOAT64opj_mct_get_mct_norms ()
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms_real ()
     FIXME DOC. More...
     
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component transform to an image. More...
     
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
     Get norm of the basis function used for the reversible multi-component transform. More...
     
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component transform to an image. More...
     
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
     Get norm of the basis function used for the irreversible multi-component transform. More...
     
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    void opj_calculate_norms (OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
     FIXME DOC. More...
     
    + + + + + +

    +Variables

    static const OPJ_FLOAT64 opj_mct_norms [3] = { 1.732, .8292, .8292 }
     
    static const OPJ_FLOAT64 opj_mct_norms_real [3] = { 1.732, 1.805, 1.573 }
     
    +

    Function Documentation

    + +

    ◆ opj_calculate_norms()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_calculate_norms (OPJ_FLOAT64pNorms,
    OPJ_UINT32 p_nb_comps,
    OPJ_FLOAT32pMatrix 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + +
    pNormsMCT data
    p_nb_compssize of components
    pMatrixcomponents
    +
    +
    +
    Returns
    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_mct_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply a reversible multi-component inverse transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_decode_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTEpDecodingData,
    OPJ_SIZE_T n,
    OPJ_BYTE ** pData,
    OPJ_UINT32 pNbComp,
    OPJ_UINT32 isSigned 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + + + +
    pDecodingDataMCT data
    nsize of components
    pDatacomponents
    pNbCompnb of components (i.e. size of p_data)
    isSignedtells if the data is signed
    +
    +
    +
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    + +

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_decode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0,
    OPJ_FLOAT32 *OPJ_RESTRICT c1,
    OPJ_FLOAT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply an irreversible multi-component inverse transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply a reversible multi-component transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_encode_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTEp_coding_data,
    OPJ_SIZE_T n,
    OPJ_BYTE ** p_data,
    OPJ_UINT32 p_nb_comp,
    OPJ_UINT32 is_signed 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + + + +
    p_coding_dataMCT data
    nsize of components
    p_datacomponents
    p_nb_compnb of components (i.e. size of p_data)
    is_signedtells if the data is signed
    +
    +
    +
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    + +

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_int_fix_mul(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_encode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply an irreversible multi-component transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    +
    +
    + +

    References opj_int_fix_mul().

    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_get_mct_norms()

    + +
    +
    + + + + + + + +
    const OPJ_FLOAT64* opj_mct_get_mct_norms ()
    +
    + +

    FIXME DOC.

    + +

    References opj_mct_norms.

    + +

    Referenced by opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_mct_get_mct_norms_real()

    + +
    +
    + + + + + + + +
    const OPJ_FLOAT64* opj_mct_get_mct_norms_real ()
    +
    + +

    FIXME DOC.

    + +

    References opj_mct_norms_real.

    + +

    Referenced by opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_mct_getnorm()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
    +
    + +

    Get norm of the basis function used for the reversible multi-component transform.

    +
    Parameters
    + + +
    compnoNumber of the component (0->Y, 1->U, 2->V)
    +
    +
    +
    Returns
    + +

    References opj_mct_norms.

    + +
    +
    + +

    ◆ opj_mct_getnorm_real()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
    +
    + +

    Get norm of the basis function used for the irreversible multi-component transform.

    +
    Parameters
    + + +
    compnoNumber of the component (0->Y, 1->U, 2->V)
    +
    +
    +
    Returns
    + +

    References opj_mct_norms_real.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ opj_mct_norms

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT64 opj_mct_norms[3] = { 1.732, .8292, .8292 }
    +
    +static
    +
    + +

    Referenced by opj_mct_get_mct_norms(), and opj_mct_getnorm().

    + +
    +
    + +

    ◆ opj_mct_norms_real

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_FLOAT64 opj_mct_norms_real[3] = { 1.732, 1.805, 1.573 }
    +
    +static
    +
    +
    +
    + + + + diff --git a/build/doc/html/mct_8h.html b/build/doc/html/mct_8h.html new file mode 100644 index 000000000..77de8deff --- /dev/null +++ b/build/doc/html/mct_8h.html @@ -0,0 +1,598 @@ + + + + + + + +OpenJPEG: mct.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mct.h File Reference
    +
    +
    + +

    Implementation of a multi-component transforms (MCT) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component transform to an image. More...
     
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
     Get norm of the basis function used for the reversible multi-component transform. More...
     
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component transform to an image. More...
     
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
     Get norm of the basis function used for the irreversible multi-component transform. More...
     
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTE *p_coding_data, OPJ_SIZE_T n, OPJ_BYTE **p_data, OPJ_UINT32 p_nb_comp, OPJ_UINT32 is_signed)
     FIXME DOC. More...
     
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    void opj_calculate_norms (OPJ_FLOAT64 *pNorms, OPJ_UINT32 p_nb_comps, OPJ_FLOAT32 *pMatrix)
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms (void)
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms_real (void)
     FIXME DOC. More...
     
    +

    Detailed Description

    +

    Implementation of a multi-component transforms (MCT)

    +

    The functions in MCT.C have for goal to realize reversible and irreversible multicomponent transform. The functions in MCT.C are used by some function in TCD.C.

    +

    Function Documentation

    + +

    ◆ opj_calculate_norms()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_calculate_norms (OPJ_FLOAT64pNorms,
    OPJ_UINT32 p_nb_comps,
    OPJ_FLOAT32pMatrix 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + +
    pNormsMCT data
    p_nb_compssize of components
    pMatrixcomponents
    +
    +
    +
    Returns
    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_mct_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply a reversible multi-component inverse transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_decode_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTEpDecodingData,
    OPJ_SIZE_T n,
    OPJ_BYTE ** pData,
    OPJ_UINT32 pNbComp,
    OPJ_UINT32 isSigned 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + + + +
    pDecodingDataMCT data
    nsize of components
    pDatacomponents
    pNbCompnb of components (i.e. size of p_data)
    isSignedtells if the data is signed
    +
    +
    +
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    + +

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_decode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0,
    OPJ_FLOAT32 *OPJ_RESTRICT c1,
    OPJ_FLOAT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply an irreversible multi-component inverse transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_decode().

    + +
    +
    + +

    ◆ opj_mct_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply a reversible multi-component transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    +
    +
    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_encode_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTEp_coding_data,
    OPJ_SIZE_T n,
    OPJ_BYTE ** p_data,
    OPJ_UINT32 p_nb_comp,
    OPJ_UINT32 is_signed 
    )
    +
    + +

    FIXME DOC.

    +
    Parameters
    + + + + + + +
    p_coding_dataMCT data
    nsize of components
    p_datacomponents
    p_nb_compnb of components (i.e. size of p_data)
    is_signedtells if the data is signed
    +
    +
    +
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    + +

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_int_fix_mul(), opj_malloc(), and OPJ_TRUE.

    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_encode_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    +
    + +

    Apply an irreversible multi-component transform to an image.

    +
    Parameters
    + + + + + +
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    +
    +
    + +

    References opj_int_fix_mul().

    + +

    Referenced by opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ opj_mct_get_mct_norms()

    + +
    +
    + + + + + + + + +
    const OPJ_FLOAT64* opj_mct_get_mct_norms (void )
    +
    + +

    FIXME DOC.

    + +

    References opj_mct_norms.

    + +

    Referenced by opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_mct_get_mct_norms_real()

    + +
    +
    + + + + + + + + +
    const OPJ_FLOAT64* opj_mct_get_mct_norms_real (void )
    +
    + +

    FIXME DOC.

    + +

    References opj_mct_norms_real.

    + +

    Referenced by opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_mct_getnorm()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
    +
    + +

    Get norm of the basis function used for the reversible multi-component transform.

    +
    Parameters
    + + +
    compnoNumber of the component (0->Y, 1->U, 2->V)
    +
    +
    +
    Returns
    + +

    References opj_mct_norms.

    + +
    +
    + +

    ◆ opj_mct_getnorm_real()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
    +
    + +

    Get norm of the basis function used for the irreversible multi-component transform.

    +
    Parameters
    + + +
    compnoNumber of the component (0->Y, 1->U, 2->V)
    +
    +
    +
    Returns
    + +

    References opj_mct_norms_real.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/mct_8h_source.html b/build/doc/html/mct_8h_source.html new file mode 100644 index 000000000..c714a1b6d --- /dev/null +++ b/build/doc/html/mct_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +OpenJPEG: mct.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mct.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    16  * All rights reserved.
    +
    17  *
    +
    18  * Redistribution and use in source and binary forms, with or without
    +
    19  * modification, are permitted provided that the following conditions
    +
    20  * are met:
    +
    21  * 1. Redistributions of source code must retain the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer.
    +
    23  * 2. Redistributions in binary form must reproduce the above copyright
    +
    24  * notice, this list of conditions and the following disclaimer in the
    +
    25  * documentation and/or other materials provided with the distribution.
    +
    26  *
    +
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    37  * POSSIBILITY OF SUCH DAMAGE.
    +
    38  */
    +
    39 
    +
    40 #ifndef OPJ_MCT_H
    +
    41 #define OPJ_MCT_H
    +
    42 
    +
    52 
    +
    55 /* ----------------------------------------------------------------------- */
    + + + + + +
    80 
    + + + + + +
    105 
    + +
    116  OPJ_BYTE * p_coding_data,
    +
    117  OPJ_SIZE_T n,
    +
    118  OPJ_BYTE ** p_data,
    +
    119  OPJ_UINT32 p_nb_comp,
    +
    120  OPJ_UINT32 is_signed);
    + +
    131  OPJ_BYTE * pDecodingData,
    +
    132  OPJ_SIZE_T n,
    +
    133  OPJ_BYTE ** pData,
    +
    134  OPJ_UINT32 pNbComp,
    +
    135  OPJ_UINT32 isSigned);
    +
    143 void opj_calculate_norms(OPJ_FLOAT64 * pNorms,
    +
    144  OPJ_UINT32 p_nb_comps,
    +
    145  OPJ_FLOAT32 * pMatrix);
    +
    149 const OPJ_FLOAT64 * opj_mct_get_mct_norms(void);
    + +
    154 /* ----------------------------------------------------------------------- */
    +
    158 
    +
    159 #endif /* OPJ_MCT_H */
    +
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    OPJ_FLOAT64 opj_mct_getnorm_real(OPJ_UINT32 compno)
    Get norm of the basis function used for the irreversible multi-component transform.
    Definition: mct.c:446
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms()
    FIXME DOC.
    Definition: mct.c:62
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    OPJ_FLOAT64 opj_mct_getnorm_real(OPJ_UINT32 compno)
    Get norm of the basis function used for the irreversible multi-component transform.
    Definition: mct.c:446
    +
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    +
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    +
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    +
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    +
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    +
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *p_coding_data, OPJ_SIZE_T n, OPJ_BYTE **p_data, OPJ_UINT32 p_nb_comp, OPJ_UINT32 is_signed)
    FIXME DOC.
    Definition: mct.c:452
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    OPJ_FLOAT64 opj_mct_getnorm(OPJ_UINT32 compno)
    Get norm of the basis function used for the reversible multi-component transform.
    Definition: mct.c:204
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    +
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    +
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    +
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 p_nb_comps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real()
    FIXME DOC.
    Definition: mct.c:67
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real(void)
    FIXME DOC.
    Definition: mct.c:67
    +
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    +
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    +
    OPJ_FLOAT64 opj_mct_getnorm(OPJ_UINT32 compno)
    Get norm of the basis function used for the reversible multi-component transform.
    Definition: mct.c:204
    +
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    +
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:452
    +
    static const OPJ_FLOAT64 opj_mct_norms_real[3]
    Definition: mct.c:60
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    +
    static const OPJ_FLOAT64 opj_mct_norms[3]
    Definition: mct.c:55
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms(void)
    FIXME DOC.
    Definition: mct.c:62
    + + + + diff --git a/build/doc/html/menu.js b/build/doc/html/menu.js new file mode 100644 index 000000000..433c15b8f --- /dev/null +++ b/build/doc/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/build/doc/html/menudata.js b/build/doc/html/menudata.js new file mode 100644 index 000000000..94ee3cfba --- /dev/null +++ b/build/doc/html/menudata.js @@ -0,0 +1,174 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"f",url:"functions_vars_f.html#index_f"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"j",url:"functions_vars_j.html#index_j"}, +{text:"k",url:"functions_vars_k.html#index_k"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"q",url:"functions_vars_q.html#index_q"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}, +{text:"x",url:"functions_vars_x.html#index_x"}, +{text:"y",url:"functions_vars_y.html#index_y"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"j",url:"globals_j.html#index_j"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"o",url:"globals_o.html#index_o"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"q",url:"globals_q.html#index_q"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}, +{text:"x",url:"globals_x.html#index_x"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"a",url:"globals_func.html#index_a"}, +{text:"b",url:"globals_func_b.html#index_b"}, +{text:"c",url:"globals_func_c.html#index_c"}, +{text:"d",url:"globals_func_d.html#index_d"}, +{text:"e",url:"globals_func_e.html#index_e"}, +{text:"f",url:"globals_func_f.html#index_f"}, +{text:"g",url:"globals_func_g.html#index_g"}, +{text:"h",url:"globals_func_h.html#index_h"}, +{text:"i",url:"globals_func_i.html#index_i"}, +{text:"j",url:"globals_func_j.html#index_j"}, +{text:"m",url:"globals_func_m.html#index_m"}, +{text:"o",url:"globals_func_o.html#index_o"}, +{text:"p",url:"globals_func_p.html#index_p"}, +{text:"r",url:"globals_func_r.html#index_r"}, +{text:"s",url:"globals_func_s.html#index_s"}, +{text:"t",url:"globals_func_t.html#index_t"}, +{text:"u",url:"globals_func_u.html#index_u"}, +{text:"w",url:"globals_func_w.html#index_w"}]}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"a",url:"globals_type.html#index_a"}, +{text:"b",url:"globals_type.html#index_b"}, +{text:"c",url:"globals_type.html#index_c"}, +{text:"d",url:"globals_type.html#index_d"}, +{text:"f",url:"globals_type.html#index_f"}, +{text:"i",url:"globals_type.html#index_i"}, +{text:"j",url:"globals_type.html#index_j"}, +{text:"m",url:"globals_type.html#index_m"}, +{text:"o",url:"globals_type.html#index_o"}, +{text:"p",url:"globals_type.html#index_p"}, +{text:"q",url:"globals_type.html#index_q"}, +{text:"r",url:"globals_type.html#index_r"}, +{text:"s",url:"globals_type.html#index_s"}, +{text:"t",url:"globals_type.html#index_t"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"c",url:"globals_eval.html#index_c"}, +{text:"f",url:"globals_eval.html#index_f"}, +{text:"h",url:"globals_eval.html#index_h"}, +{text:"j",url:"globals_eval.html#index_j"}, +{text:"m",url:"globals_eval.html#index_m"}, +{text:"n",url:"globals_eval.html#index_n"}, +{text:"o",url:"globals_eval.html#index_o"}, +{text:"p",url:"globals_eval.html#index_p"}, +{text:"q",url:"globals_eval.html#index_q"}, +{text:"s",url:"globals_eval.html#index_s"}, +{text:"t",url:"globals_eval.html#index_t"}, +{text:"u",url:"globals_eval.html#index_u"}, +{text:"x",url:"globals_eval.html#index_x"}]}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"b",url:"globals_defs.html#index_b"}, +{text:"d",url:"globals_defs_d.html#index_d"}, +{text:"e",url:"globals_defs_e.html#index_e"}, +{text:"f",url:"globals_defs_f.html#index_f"}, +{text:"i",url:"globals_defs_i.html#index_i"}, +{text:"j",url:"globals_defs_j.html#index_j"}, +{text:"l",url:"globals_defs_l.html#index_l"}, +{text:"m",url:"globals_defs_m.html#index_m"}, +{text:"n",url:"globals_defs_n.html#index_n"}, +{text:"o",url:"globals_defs_o.html#index_o"}, +{text:"p",url:"globals_defs_p.html#index_p"}, +{text:"s",url:"globals_defs_s.html#index_s"}, +{text:"t",url:"globals_defs_t.html#index_t"}, +{text:"u",url:"globals_defs_u.html#index_u"}, +{text:"v",url:"globals_defs_v.html#index_v"}]}]}]}]} diff --git a/build/doc/html/metadata__manager_8c.html b/build/doc/html/metadata__manager_8c.html new file mode 100644 index 000000000..082d7c9d3 --- /dev/null +++ b/build/doc/html/metadata__manager_8c.html @@ -0,0 +1,550 @@ + + + + + + + +OpenJPEG: metadata_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    metadata_manager.c File Reference
    +
    +
    +
    #include "metadata_manager.h"
    +#include "opj_inttypes.h"
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <limits.h>
    +#include <assert.h>
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    metadatalist_param_tgene_metadatalist (void)
     generate a metadata list More...
     
    metadatalist_param_tconst_metadatalist (int fd)
     construct metadata-bin list of JP2 file More...
     
    void delete_metadatalist (metadatalist_param_t **list)
     delete metadata list More...
     
    metadata_param_tgene_metadata (Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
     generate a metadata bin More...
     
    void delete_metadata (metadata_param_t **metadata)
     delete a metadata bin More...
     
    void insert_metadata_into_list (metadata_param_t *metabin, metadatalist_param_t *metadatalist)
     insert a metadata-bin into list More...
     
    void print_metadata (metadata_param_t *metadata)
     print metadata-bin parameters More...
     
    void print_allmetadata (metadatalist_param_t *list)
     print all metadata parameters More...
     
    boxcontents_param_tgene_boxcontents (OPJ_OFF_T offset, OPJ_SIZE_T length)
     generate box contents More...
     
    metadata_param_tsearch_metadata (Byte8_t idx, metadatalist_param_t *list)
     search a metadata bin by index More...
     
    Byte8_t search_metadataidx (char boxtype[4], metadatalist_param_t *list)
     search a metadata index by box-type More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ const_metadatalist()

    + +
    +
    + + + + + + + + +
    metadatalist_param_t* const_metadatalist (int fd)
    +
    + +

    construct metadata-bin list of JP2 file

    +
    Parameters
    + + +
    [in]fdfile descriptor
    +
    +
    +
    Returns
    pointer to the generated metadata-bin list
    + +

    References delete_box_in_list(), FCGI_stderr, box_param::fd, boxlist_param::first, gene_boxcontents(), gene_metadata(), gene_metadatalist(), gene_placeholder(), gene_placeholderlist(), get_boxstructure(), get_DBoxlen(), get_DBoxoff(), get_filesize(), insert_metadata_into_list(), insert_placeholder_into_list(), box_param::next, and box_param::type.

    + +

    Referenced by parse_jp2file().

    + +
    +
    + +

    ◆ delete_metadata()

    + +
    +
    + + + + + + + + +
    void delete_metadata (metadata_param_t ** metadata)
    +
    + +

    delete a metadata bin

    +
    Parameters
    + + +
    [in,out]metadataaddress of the deleting metadata bin pointer
    +
    +
    + +

    References delete_boxlist(), and delete_placeholderlist().

    + +

    Referenced by delete_metadatalist().

    + +
    +
    + +

    ◆ delete_metadatalist()

    + +
    +
    + + + + + + + + +
    void delete_metadatalist (metadatalist_param_t ** list)
    +
    + +

    delete metadata list

    +
    Parameters
    + + +
    [in,out]listaddress of the metadata list pointer
    +
    +
    + +

    References delete_metadata(), and metadata_param::next.

    + +

    Referenced by delete_cache(), delete_index(), destroy_jpipdecoder(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ gene_boxcontents()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxcontents_param_t* gene_boxcontents (OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    generate box contents

    +
    Returns
    pointer to the box contents
    + +

    References boxcontents_param::length, and boxcontents_param::offset.

    + +

    Referenced by const_metadatalist(), and parse_metadata().

    + +
    +
    + +

    ◆ gene_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    metadata_param_t* gene_metadata (Byte8_t idx,
    boxlist_param_tboxlist,
    placeholderlist_param_tphldlist,
    boxcontents_param_tboxcontents 
    )
    +
    + +

    generate a metadata bin

    +
    Parameters
    + + + + + +
    [in]idxmetadata-bin index
    [in]boxlistbox list pointer
    [in]phldlistplaceholder list pointer
    [in]boxcontentsboxcontents pointer
    +
    +
    +
    Returns
    pointer to the generated metadata bin
    + +

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, metadata_param::next, and metadata_param::placeholderlist.

    + +

    Referenced by const_metadatalist(), and parse_metamsg().

    + +
    +
    + +

    ◆ gene_metadatalist()

    + +
    +
    + + + + + + + + +
    metadatalist_param_t* gene_metadatalist (void )
    +
    + +

    generate a metadata list

    +
    Returns
    pointer to the generated metadata list
    + +

    References metadatalist_param::first, and metadatalist_param::last.

    + +

    Referenced by const_metadatalist(), gene_cache(), handle_JPIPstreamMSG(), and init_jpipdecoder().

    + +
    +
    + +

    ◆ insert_metadata_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_metadata_into_list (metadata_param_tmetabin,
    metadatalist_param_tmetadatalist 
    )
    +
    + +

    insert a metadata-bin into list

    +
    Parameters
    + + + +
    [in]metabinmetadata-bin pointer
    [in]metadatalistmetadata list pointer
    +
    +
    + +

    References metadatalist_param::first, metadatalist_param::last, and metadata_param::next.

    + +

    Referenced by const_metadatalist(), and parse_metamsg().

    + +
    +
    + +

    ◆ print_allmetadata()

    + +
    +
    + + + + + + + + +
    void print_allmetadata (metadatalist_param_tlist)
    +
    + +

    print all metadata parameters

    +
    Parameters
    + + +
    [in]listmetadata list pointer
    +
    +
    + +

    References metadatalist_param::first, logstream, metadata_param::next, and print_metadata().

    + +

    Referenced by output_log(), and print_index().

    + +
    +
    + +

    ◆ print_metadata()

    + +
    +
    + + + + + + + + +
    void print_metadata (metadata_param_tmetadata)
    +
    + +

    print metadata-bin parameters

    +
    Parameters
    + + +
    [in]metadatametadata-bin pointer
    +
    +
    + +

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, boxcontents_param::length, logstream, boxcontents_param::offset, metadata_param::placeholderlist, print_allbox(), and print_allplaceholder().

    + +

    Referenced by print_allmetadata().

    + +
    +
    + +

    ◆ search_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    metadata_param_t* search_metadata (Byte8_t idx,
    metadatalist_param_tlist 
    )
    +
    + +

    search a metadata bin by index

    +
    Parameters
    + + + +
    [in]idxindex
    [in]listmetadata-bin list pointer
    +
    +
    +
    Returns
    found metadata-bin pointer
    + +

    References metadatalist_param::first, metadata_param::idx, and metadata_param::next.

    + +

    Referenced by enqueue_metadata().

    + +
    +
    + +

    ◆ search_metadataidx()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t search_metadataidx (char boxtype[4],
    metadatalist_param_tlist 
    )
    +
    + +

    search a metadata index by box-type

    +
    Parameters
    + + + +
    [in]boxtypebox-type
    [in]listmetadata-bin list pointer
    +
    +
    +
    Returns
    found metadata-bin index, if not found, -1
    + +

    References metadata_param::boxlist, boxlist_param::first, metadatalist_param::first, placeholderlist_param::first, metadata_param::idx, box_param::next, metadata_param::next, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigID, metadata_param::placeholderlist, and box_param::type.

    + +

    Referenced by enqueue_metabins().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/metadata__manager_8h.html b/build/doc/html/metadata__manager_8h.html new file mode 100644 index 000000000..d558c01ad --- /dev/null +++ b/build/doc/html/metadata__manager_8h.html @@ -0,0 +1,565 @@ + + + + + + + +OpenJPEG: metadata_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    metadata_manager.h File Reference
    +
    +
    +
    #include "box_manager.h"
    +#include "placeholder_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Data Structures

    struct  boxcontents_param
     
    struct  metadata_param
     metadata-bin parameters More...
     
    struct  metadatalist_param
     metadata-bin list parameters More...
     
    + + + + + + + + + +

    +Typedefs

    typedef struct boxcontents_param boxcontents_param_t
     
    typedef struct metadata_param metadata_param_t
     metadata-bin parameters More...
     
    typedef struct metadatalist_param metadatalist_param_t
     metadata-bin list parameters More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    metadatalist_param_tgene_metadatalist (void)
     generate a metadata list More...
     
    metadatalist_param_tconst_metadatalist (int fd)
     construct metadata-bin list of JP2 file More...
     
    void delete_metadatalist (metadatalist_param_t **list)
     delete metadata list More...
     
    metadata_param_tgene_metadata (Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
     generate a metadata bin More...
     
    void delete_metadata (metadata_param_t **metadata)
     delete a metadata bin More...
     
    boxcontents_param_tgene_boxcontents (OPJ_OFF_T offset, OPJ_SIZE_T length)
     generate box contents More...
     
    void print_metadata (metadata_param_t *metadata)
     print metadata-bin parameters More...
     
    void print_allmetadata (metadatalist_param_t *list)
     print all metadata parameters More...
     
    metadata_param_tsearch_metadata (Byte8_t idx, metadatalist_param_t *list)
     search a metadata bin by index More...
     
    Byte8_t search_metadataidx (char boxtype[4], metadatalist_param_t *list)
     search a metadata index by box-type More...
     
    void insert_metadata_into_list (metadata_param_t *metabin, metadatalist_param_t *metadatalist)
     insert a metadata-bin into list More...
     
    +

    Typedef Documentation

    + +

    ◆ boxcontents_param_t

    + +
    +
    + + + + +
    typedef struct boxcontents_param boxcontents_param_t
    +
    + +
    +
    + +

    ◆ metadata_param_t

    + +
    +
    + + + + +
    typedef struct metadata_param metadata_param_t
    +
    + +

    metadata-bin parameters

    + +
    +
    + +

    ◆ metadatalist_param_t

    + +
    +
    + + + + +
    typedef struct metadatalist_param metadatalist_param_t
    +
    + +

    metadata-bin list parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ const_metadatalist()

    + +
    +
    + + + + + + + + +
    metadatalist_param_t* const_metadatalist (int fd)
    +
    + +

    construct metadata-bin list of JP2 file

    +
    Parameters
    + + +
    [in]fdfile descriptor
    +
    +
    +
    Returns
    pointer to the generated metadata-bin list
    + +

    References delete_box_in_list(), FCGI_stderr, box_param::fd, boxlist_param::first, gene_boxcontents(), gene_metadata(), gene_metadatalist(), gene_placeholder(), gene_placeholderlist(), get_boxstructure(), get_DBoxlen(), get_DBoxoff(), get_filesize(), insert_metadata_into_list(), insert_placeholder_into_list(), box_param::next, and box_param::type.

    + +

    Referenced by parse_jp2file().

    + +
    +
    + +

    ◆ delete_metadata()

    + +
    +
    + + + + + + + + +
    void delete_metadata (metadata_param_t ** metadata)
    +
    + +

    delete a metadata bin

    +
    Parameters
    + + +
    [in,out]metadataaddress of the deleting metadata bin pointer
    +
    +
    + +

    References delete_boxlist(), and delete_placeholderlist().

    + +

    Referenced by delete_metadatalist().

    + +
    +
    + +

    ◆ delete_metadatalist()

    + +
    +
    + + + + + + + + +
    void delete_metadatalist (metadatalist_param_t ** list)
    +
    + +

    delete metadata list

    +
    Parameters
    + + +
    [in,out]listaddress of the metadata list pointer
    +
    +
    + +

    References delete_metadata(), and metadata_param::next.

    + +

    Referenced by delete_cache(), delete_index(), destroy_jpipdecoder(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ gene_boxcontents()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    boxcontents_param_t* gene_boxcontents (OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    +
    + +

    generate box contents

    +
    Returns
    pointer to the box contents
    + +

    References boxcontents_param::length, and boxcontents_param::offset.

    + +

    Referenced by const_metadatalist(), and parse_metadata().

    + +
    +
    + +

    ◆ gene_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    metadata_param_t* gene_metadata (Byte8_t idx,
    boxlist_param_tboxlist,
    placeholderlist_param_tphldlist,
    boxcontents_param_tboxcontents 
    )
    +
    + +

    generate a metadata bin

    +
    Parameters
    + + + + + +
    [in]idxmetadata-bin index
    [in]boxlistbox list pointer
    [in]phldlistplaceholder list pointer
    [in]boxcontentsboxcontents pointer
    +
    +
    +
    Returns
    pointer to the generated metadata bin
    + +

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, metadata_param::next, and metadata_param::placeholderlist.

    + +

    Referenced by const_metadatalist(), and parse_metamsg().

    + +
    +
    + +

    ◆ gene_metadatalist()

    + +
    +
    + + + + + + + + +
    metadatalist_param_t* gene_metadatalist (void )
    +
    + +

    generate a metadata list

    +
    Returns
    pointer to the generated metadata list
    + +

    References metadatalist_param::first, and metadatalist_param::last.

    + +

    Referenced by const_metadatalist(), gene_cache(), handle_JPIPstreamMSG(), and init_jpipdecoder().

    + +
    +
    + +

    ◆ insert_metadata_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_metadata_into_list (metadata_param_tmetabin,
    metadatalist_param_tmetadatalist 
    )
    +
    + +

    insert a metadata-bin into list

    +
    Parameters
    + + + +
    [in]metabinmetadata-bin pointer
    [in]metadatalistmetadata list pointer
    +
    +
    + +

    References metadatalist_param::first, metadatalist_param::last, and metadata_param::next.

    + +

    Referenced by const_metadatalist(), and parse_metamsg().

    + +
    +
    + +

    ◆ print_allmetadata()

    + +
    +
    + + + + + + + + +
    void print_allmetadata (metadatalist_param_tlist)
    +
    + +

    print all metadata parameters

    +
    Parameters
    + + +
    [in]listmetadata list pointer
    +
    +
    + +

    References metadatalist_param::first, logstream, metadata_param::next, and print_metadata().

    + +

    Referenced by output_log(), and print_index().

    + +
    +
    + +

    ◆ print_metadata()

    + +
    +
    + + + + + + + + +
    void print_metadata (metadata_param_tmetadata)
    +
    + +

    print metadata-bin parameters

    +
    Parameters
    + + +
    [in]metadatametadata-bin pointer
    +
    +
    + +

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, boxcontents_param::length, logstream, boxcontents_param::offset, metadata_param::placeholderlist, print_allbox(), and print_allplaceholder().

    + +

    Referenced by print_allmetadata().

    + +
    +
    + +

    ◆ search_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    metadata_param_t* search_metadata (Byte8_t idx,
    metadatalist_param_tlist 
    )
    +
    + +

    search a metadata bin by index

    +
    Parameters
    + + + +
    [in]idxindex
    [in]listmetadata-bin list pointer
    +
    +
    +
    Returns
    found metadata-bin pointer
    + +

    References metadatalist_param::first, metadata_param::idx, and metadata_param::next.

    + +

    Referenced by enqueue_metadata().

    + +
    +
    + +

    ◆ search_metadataidx()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte8_t search_metadataidx (char boxtype[4],
    metadatalist_param_tlist 
    )
    +
    + +

    search a metadata index by box-type

    +
    Parameters
    + + + +
    [in]boxtypebox-type
    [in]listmetadata-bin list pointer
    +
    +
    +
    Returns
    found metadata-bin index, if not found, -1
    + +

    References metadata_param::boxlist, boxlist_param::first, metadatalist_param::first, placeholderlist_param::first, metadata_param::idx, box_param::next, metadata_param::next, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigID, metadata_param::placeholderlist, and box_param::type.

    + +

    Referenced by enqueue_metabins().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/metadata__manager_8h_source.html b/build/doc/html/metadata__manager_8h_source.html new file mode 100644 index 000000000..f134ffdb0 --- /dev/null +++ b/build/doc/html/metadata__manager_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +OpenJPEG: metadata_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    metadata_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef METADATA_MANAGER_H_
    +
    32 #define METADATA_MANAGER_H_
    +
    33 
    +
    34 #include "box_manager.h"
    +
    35 #include "placeholder_manager.h"
    +
    36 
    +
    37 typedef struct boxcontents_param {
    + + + +
    41 
    +
    43 typedef struct metadata_param {
    + + + + + + +
    50  *next;
    + +
    52 
    +
    54 typedef struct metadatalist_param {
    + + + +
    58 
    +
    59 
    + +
    66 
    +
    67 
    + +
    75 
    +
    76 
    + +
    83 
    +
    84 
    + +
    95  placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents);
    +
    96 
    +
    102 void delete_metadata(metadata_param_t **metadata);
    +
    103 
    + +
    110 
    +
    116 void print_metadata(metadata_param_t *metadata);
    +
    117 
    + +
    124 
    +
    125 
    + +
    134 
    +
    135 
    +
    143 Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list);
    +
    144 
    +
    145 
    + +
    153  metadatalist_param_t *metadatalist);
    +
    154 
    +
    155 #endif /* !METADATA_MANAGER_H_ */
    +
    +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    +
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    +
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    +
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    +
    placeholderlist_param_t * placeholderlist
    placeholder box list
    Definition: metadata_manager.h:46
    +
    struct boxcontents_param boxcontents_param_t
    +
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    +
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    + +
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    +
    box parameters
    Definition: box_manager.h:37
    +
    metadata_param_t * first
    first metadata-bin pointer of the list
    Definition: metadata_manager.h:55
    +
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    +
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    +
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    +
    #define logstream
    Definition: metadata_manager.c:45
    +
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    +
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    +
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    +
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    struct metadata_param * next
    pointer to the next metadata-bin
    Definition: metadata_manager.h:49
    + +
    void delete_metadata(metadata_param_t **metadata)
    delete a metadata bin
    Definition: metadata_manager.c:143
    +
    Definition: metadata_manager.h:37
    +
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    +
    void print_metadata(metadata_param_t *metadata)
    print metadata-bin parameters
    Definition: metadata_manager.c:167
    +
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    +
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    +
    metadata-bin parameters
    Definition: metadata_manager.h:43
    +
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    +
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    +
    void delete_metadata(metadata_param_t **metadata)
    delete a metadata bin
    Definition: metadata_manager.c:143
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    +
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    +
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    +
    char type[4]
    type of information in the DBox
    Definition: box_manager.h:42
    +
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    +
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    +
    struct metadatalist_param metadatalist_param_t
    metadata-bin list parameters
    +
    Byte8_t idx
    index number
    Definition: metadata_manager.h:44
    +
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    +
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    +
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    +
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    +
    metadata_param_t * last
    last metadata-bin pointer of the list
    Definition: metadata_manager.h:56
    +
    Box list parameters.
    Definition: box_manager.h:48
    +
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    +
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    + +
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    +
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    +
    #define FCGI_stderr
    Definition: metadata_manager.c:44
    + +
    int fd
    file descriptor
    Definition: box_manager.h:38
    +
    void print_metadata(metadata_param_t *metadata)
    print metadata-bin parameters
    Definition: metadata_manager.c:167
    +
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    +
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    +
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    +
    struct metadata_param metadata_param_t
    metadata-bin parameters
    + + + + diff --git a/build/doc/html/mhixbox__manager_8c.html b/build/doc/html/mhixbox__manager_8c.html new file mode 100644 index 000000000..7be8c32e2 --- /dev/null +++ b/build/doc/html/mhixbox__manager_8c.html @@ -0,0 +1,298 @@ + + + + + + + +OpenJPEG: mhixbox_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    mhixbox_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include "mhixbox_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + +

    +Functions

    mhixbox_param_tgene_mhixbox (box_param_t *box)
     generate mhix box More...
     
    markeridx_param_tsearch_markeridx (Byte2_t code, mhixbox_param_t *mhix)
     search a marker index by marker code from mhix box More...
     
    void print_mhixbox (mhixbox_param_t *mhix)
     print mhix box parameters More...
     
    void print_markeridx (markeridx_param_t *markeridx)
     print marker index parameters More...
     
    void delete_mhixbox (mhixbox_param_t **mhix)
     delete mhix box More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_mhixbox()

    + +
    +
    + + + + + + + + +
    void delete_mhixbox (mhixbox_param_t ** mhix)
    +
    + +

    delete mhix box

    +
    Parameters
    + + +
    [in,out]mhixaddress of the mhix box pointer
    +
    +
    + +

    References markeridx_param::next.

    + +

    Referenced by delete_index(), and set_mainmhixdata().

    + +
    +
    + +

    ◆ gene_mhixbox()

    + +
    +
    + + + + + + + + +
    mhixbox_param_t* gene_mhixbox (box_param_tbox)
    +
    + +

    generate mhix box

    +
    Parameters
    + + +
    [in]boxpointer to the reference mhix box
    +
    +
    +
    Returns
    generated mhixbox pointer
    + +

    References markeridx_param::code, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), mhixbox_param::first, get_DBoxlen(), markeridx_param::length, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    + +

    Referenced by set_mainmhixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ print_markeridx()

    + +
    +
    + + + + + + + + +
    void print_markeridx (markeridx_param_tmarkeridx)
    +
    + +

    print marker index parameters

    +
    Parameters
    + + +
    [in]markeridxmarker index pointer
    +
    +
    + +

    References markeridx_param::code, markeridx_param::length, logstream, markeridx_param::num_remain, and markeridx_param::offset.

    + +
    +
    + +

    ◆ print_mhixbox()

    + +
    +
    + + + + + + + + +
    void print_mhixbox (mhixbox_param_tmhix)
    +
    + +

    print mhix box parameters

    +
    Parameters
    + + +
    [in]mhixmhix box pointer
    +
    +
    + +

    References markeridx_param::code, mhixbox_param::first, markeridx_param::length, logstream, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    + +

    Referenced by print_index().

    + +
    +
    + +

    ◆ search_markeridx()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    markeridx_param_t* search_markeridx (Byte2_t code,
    mhixbox_param_tmhix 
    )
    +
    + +

    search a marker index by marker code from mhix box

    +
    Parameters
    + + + +
    [in]codemarker code
    [in]mhixmhix box pointer
    +
    +
    +
    Returns
    found marker index pointer
    + +

    References markeridx_param::code, FCGI_stderr, mhixbox_param::first, and markeridx_param::next.

    + +

    Referenced by set_mainmhixdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/mhixbox__manager_8h.html b/build/doc/html/mhixbox__manager_8h.html new file mode 100644 index 000000000..1298716ae --- /dev/null +++ b/build/doc/html/mhixbox__manager_8h.html @@ -0,0 +1,299 @@ + + + + + + + +OpenJPEG: mhixbox_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    mhixbox_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "box_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  markeridx_param
     Marker index parameters. More...
     
    struct  mhixbox_param
     header index table box parameters More...
     
    + + + + + + + +

    +Typedefs

    typedef struct markeridx_param markeridx_param_t
     Marker index parameters. More...
     
    typedef struct mhixbox_param mhixbox_param_t
     header index table box parameters More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    mhixbox_param_tgene_mhixbox (box_param_t *box)
     generate mhix box More...
     
    markeridx_param_tsearch_markeridx (Byte2_t code, mhixbox_param_t *mhix)
     search a marker index by marker code from mhix box More...
     
    void print_mhixbox (mhixbox_param_t *mhix)
     print mhix box parameters More...
     
    void print_markeridx (markeridx_param_t *markeridx)
     print marker index parameters More...
     
    void delete_mhixbox (mhixbox_param_t **mhix)
     delete mhix box More...
     
    +

    Typedef Documentation

    + +

    ◆ markeridx_param_t

    + +
    +
    + + + + +
    typedef struct markeridx_param markeridx_param_t
    +
    + +

    Marker index parameters.

    + +
    +
    + +

    ◆ mhixbox_param_t

    + +
    +
    + + + + +
    typedef struct mhixbox_param mhixbox_param_t
    +
    + +

    header index table box parameters

    +

    I.3.2.4.3 Header Index Table box

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_mhixbox()

    + +
    +
    + + + + + + + + +
    void delete_mhixbox (mhixbox_param_t ** mhix)
    +
    + +

    delete mhix box

    +
    Parameters
    + + +
    [in,out]mhixaddress of the mhix box pointer
    +
    +
    + +

    References markeridx_param::next.

    + +

    Referenced by delete_index(), and set_mainmhixdata().

    + +
    +
    + +

    ◆ gene_mhixbox()

    + +
    +
    + + + + + + + + +
    mhixbox_param_t* gene_mhixbox (box_param_tbox)
    +
    + +

    generate mhix box

    +
    Parameters
    + + +
    [in]boxpointer to the reference mhix box
    +
    +
    +
    Returns
    generated mhixbox pointer
    + +

    References markeridx_param::code, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), mhixbox_param::first, get_DBoxlen(), markeridx_param::length, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    + +

    Referenced by set_mainmhixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ print_markeridx()

    + +
    +
    + + + + + + + + +
    void print_markeridx (markeridx_param_tmarkeridx)
    +
    + +

    print marker index parameters

    +
    Parameters
    + + +
    [in]markeridxmarker index pointer
    +
    +
    + +

    References markeridx_param::code, markeridx_param::length, logstream, markeridx_param::num_remain, and markeridx_param::offset.

    + +
    +
    + +

    ◆ print_mhixbox()

    + +
    +
    + + + + + + + + +
    void print_mhixbox (mhixbox_param_tmhix)
    +
    + +

    print mhix box parameters

    +
    Parameters
    + + +
    [in]mhixmhix box pointer
    +
    +
    + +

    References markeridx_param::code, mhixbox_param::first, markeridx_param::length, logstream, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    + +

    Referenced by print_index().

    + +
    +
    + +

    ◆ search_markeridx()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    markeridx_param_t* search_markeridx (Byte2_t code,
    mhixbox_param_tmhix 
    )
    +
    + +

    search a marker index by marker code from mhix box

    +
    Parameters
    + + + +
    [in]codemarker code
    [in]mhixmhix box pointer
    +
    +
    +
    Returns
    found marker index pointer
    + +

    References markeridx_param::code, FCGI_stderr, mhixbox_param::first, and markeridx_param::next.

    + +

    Referenced by set_mainmhixdata().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/mhixbox__manager_8h_source.html b/build/doc/html/mhixbox__manager_8h_source.html new file mode 100644 index 000000000..ee6aa7174 --- /dev/null +++ b/build/doc/html/mhixbox__manager_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +OpenJPEG: mhixbox_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mhixbox_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef MHIXBOX_MANAGER_H_
    +
    32 # define MHIXBOX_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "box_manager.h"
    +
    36 
    +
    38 typedef struct markeridx_param {
    + + + + + + +
    47 
    +
    48 
    +
    49 
    +
    52 typedef struct mhixbox_param {
    + + + +
    57 
    +
    58 
    +
    59 
    + +
    67 
    +
    68 
    + +
    77 
    +
    78 
    +
    84 void print_mhixbox(mhixbox_param_t *mhix);
    +
    85 
    +
    86 
    +
    92 void print_markeridx(markeridx_param_t *markeridx);
    +
    93 
    +
    94 
    +
    100 void delete_mhixbox(mhixbox_param_t **mhix);
    +
    101 
    +
    102 #endif /* !MHIXBOX_MANAGER_H_ */
    +
    +
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    +
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    +
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    + +
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    box parameters
    Definition: box_manager.h:37
    +
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    +
    void print_markeridx(markeridx_param_t *markeridx)
    print marker index parameters
    Definition: mhixbox_manager.c:117
    +
    Byte2_t length
    codestream ( including the length
    Definition: mhixbox_manager.h:44
    +
    #define FCGI_stderr
    Definition: mhixbox_manager.c:42
    +
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    void print_markeridx(markeridx_param_t *markeridx)
    print marker index parameters
    Definition: mhixbox_manager.c:117
    +
    struct markeridx_param * next
    pointer to the next markeridx
    Definition: mhixbox_manager.h:45
    +
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    +
    Byte2_t num_remain
    remining number of the same marker index segments listed immediately
    Definition: mhixbox_manager.h:40
    +
    OPJ_OFF_T offset
    offset relative to the start of the
    Definition: mhixbox_manager.h:41
    + +
    Byte8_t tlen
    length ( total length of the main
    Definition: mhixbox_manager.h:53
    +
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    +
    Byte2_t code
    marker code
    Definition: mhixbox_manager.h:39
    +
    #define logstream
    Definition: mhixbox_manager.c:43
    +
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    +
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    +
    header index table box parameters
    Definition: mhixbox_manager.h:52
    + +
    struct mhixbox_param mhixbox_param_t
    header index table box parameters
    + +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    struct markeridx_param markeridx_param_t
    Marker index parameters.
    +
    markeridx_param_t * first
    header or of the first tile-part header)
    Definition: mhixbox_manager.h:55
    +
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    +
    Marker index parameters.
    Definition: mhixbox_manager.h:38
    +
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    + + + + diff --git a/build/doc/html/modules.html b/build/doc/html/modules.html new file mode 100644 index 000000000..adc12e0be --- /dev/null +++ b/build/doc/html/modules.html @@ -0,0 +1,78 @@ + + + + + + + +OpenJPEG: Modules + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    Modules
    +
    + + + + + diff --git a/build/doc/html/mqc_8c.html b/build/doc/html/mqc_8c.html new file mode 100644 index 000000000..bcaf73877 --- /dev/null +++ b/build/doc/html/mqc_8c.html @@ -0,0 +1,1063 @@ + + + + + + + +OpenJPEG: mqc.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mqc.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include <assert.h>
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    #define BYPASS_CT_INIT   0xDEADBEEF
     
    static const opj_mqc_state_t mqc_states [47 *2]
     
    static void opj_mqc_byteout (opj_mqc_t *mqc)
     Output a byte, doing bit-stuffing if necessary. More...
     
    static void opj_mqc_renorme (opj_mqc_t *mqc)
     Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000. More...
     
    static void opj_mqc_codemps (opj_mqc_t *mqc)
     Encode the most probable symbol. More...
     
    static void opj_mqc_codelps (opj_mqc_t *mqc)
     Encode the most least symbol. More...
     
    static void opj_mqc_setbits (opj_mqc_t *mqc)
     Fill mqc->c with 1's for flushing. More...
     
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_t *mqc)
     Return the number of bytes written/read since initialisation. More...
     
    void opj_mqc_init_enc (opj_mqc_t *mqc, OPJ_BYTE *bp)
     Initialize the encoder. More...
     
    void opj_mqc_encode (opj_mqc_t *mqc, OPJ_UINT32 d)
     Encode a symbol using the MQ-coder. More...
     
    void opj_mqc_flush (opj_mqc_t *mqc)
     Flush the encoder, so that all remaining data is written. More...
     
    void opj_mqc_bypass_init_enc (opj_mqc_t *mqc)
     BYPASS mode switch, initialization operation. More...
     
    void opj_mqc_bypass_enc (opj_mqc_t *mqc, OPJ_UINT32 d)
     BYPASS mode switch, coding operation. More...
     
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_t *mqc, OPJ_BOOL erterm)
     Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass. More...
     
    void opj_mqc_bypass_flush_enc (opj_mqc_t *mqc, OPJ_BOOL erterm)
     BYPASS mode switch, flush operation. More...
     
    void opj_mqc_reset_enc (opj_mqc_t *mqc)
     RESET mode switch. More...
     
    void opj_mqc_restart_init_enc (opj_mqc_t *mqc)
     RESTART mode switch (TERMALL) reinitialisation. More...
     
    void opj_mqc_erterm_enc (opj_mqc_t *mqc)
     ERTERM mode switch (PTERM) More...
     
    void opj_mqc_segmark_enc (opj_mqc_t *mqc)
     SEGMARK mode switch (SEGSYM) More...
     
    static void opj_mqc_init_dec_common (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     
    void opj_mqc_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for MQ decoding. More...
     
    void opj_mqc_raw_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for RAW decoding. More...
     
    void opq_mqc_finish_dec (opj_mqc_t *mqc)
     Terminate RAW/MQC decoding. More...
     
    void opj_mqc_resetstates (opj_mqc_t *mqc)
     Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable) More...
     
    void opj_mqc_setstate (opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
     Set the state of a particular context. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ BYPASS_CT_INIT

    + +
    +
    + + + + +
    #define BYPASS_CT_INIT   0xDEADBEEF
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_mqc_bypass_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_bypass_enc (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    +
    + +

    BYPASS mode switch, coding operation.

    +

    JPEG 2000 p 505.

    Parameters
    + + + +
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    +
    +
    + +

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, and opj_mqc::ct.

    + +

    Referenced by opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_mqc_bypass_flush_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_bypass_flush_enc (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    +
    + +

    BYPASS mode switch, flush operation.

    +
    Parameters
    + + + +
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_bypass_get_extra_bytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    +
    + +

    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass.

    +
    Parameters
    + + + +
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    +
    +
    + +

    References opj_mqc::bp, and opj_mqc::ct.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_bypass_init_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_bypass_init_enc (opj_mqc_tmqc)
    +
    + +

    BYPASS mode switch, initialization operation.

    +

    JPEG 2000 p 505.

    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_byteout()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_mqc_byteout (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Output a byte, doing bit-stuffing if necessary.

    +

    After a 0xff byte, the next byte must be smaller than 0x90.

    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    + +

    Referenced by opj_mqc_erterm_enc(), opj_mqc_flush(), and opj_mqc_renorme().

    + +
    +
    + +

    ◆ opj_mqc_codelps()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_mqc_codelps (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Encode the most least symbol.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and opj_mqc_renorme().

    + +

    Referenced by opj_mqc_encode().

    + +
    +
    + +

    ◆ opj_mqc_codemps()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_mqc_codemps (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Encode the most probable symbol.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and opj_mqc_renorme().

    + +

    Referenced by opj_mqc_encode().

    + +
    +
    + +

    ◆ opj_mqc_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_encode (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    +
    + +

    Encode a symbol using the MQ-coder.

    +
    Parameters
    + + + +
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    +
    +
    + +

    References opj_mqc::curctx, opj_mqc_codelps(), and opj_mqc_codemps().

    + +

    Referenced by opj_mqc_segmark_enc(), opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_mqc_erterm_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_erterm_enc (opj_mqc_tmqc)
    +
    + +

    ERTERM mode switch (PTERM)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_flush()

    + +
    +
    + + + + + + + + +
    void opj_mqc_flush (opj_mqc_tmqc)
    +
    + +

    Flush the encoder, so that all remaining data is written.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc_byteout(), and opj_mqc_setbits().

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    +
    + +

    Initialize the decoder for MQ decoding.

    +

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_bytein(), opj_mqc_init_dec_common(), and opj_mqc_setcurctx.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_init_dec_common()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_mqc_init_dec_common (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_mqc_init_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_init_enc (opj_mqc_tmqc,
    OPJ_BYTEbp 
    )
    +
    + +

    Initialize the encoder.

    +
    Parameters
    + + + +
    mqcMQC handle
    bpPointer to the start of the buffer where the bytes will be written
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_setcurctx, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_numbytes()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_tmqc)
    +
    + +

    Return the number of bytes written/read since initialisation.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    +
    Returns
    Returns the number of bytes already encoded
    + +

    References opj_mqc::bp, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_raw_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_raw_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    +
    + +

    Initialize the decoder for RAW decoding.

    +

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    +
    +
    + +

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_init_dec_common().

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_renorme()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_mqc_renorme (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    + +

    Referenced by opj_mqc_codelps(), and opj_mqc_codemps().

    + +
    +
    + +

    ◆ opj_mqc_reset_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_reset_enc (opj_mqc_tmqc)
    +
    + +

    RESET mode switch.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc_resetstates(), opj_mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_resetstates()

    + +
    +
    + + + + + + + + +
    void opj_mqc_resetstates (opj_mqc_tmqc)
    +
    + +

    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::ctxs, MQC_NUMCTXS, and mqc_states.

    + +

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_restart_init_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_restart_init_enc (opj_mqc_tmqc)
    +
    + +

    RESTART mode switch (TERMALL) reinitialisation.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_segmark_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_segmark_enc (opj_mqc_tmqc)
    +
    + +

    SEGMARK mode switch (SEGSYM)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc_encode(), and opj_mqc_setcurctx.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_setbits()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_mqc_setbits (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Fill mqc->c with 1's for flushing.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, and opj_mqc::c.

    + +

    Referenced by opj_mqc_flush().

    + +
    +
    + +

    ◆ opj_mqc_setstate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_setstate (opj_mqc_tmqc,
    OPJ_UINT32 ctxno,
    OPJ_UINT32 msb,
    OPJ_INT32 prob 
    )
    +
    + +

    Set the state of a particular context.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    ctxnoNumber that identifies the context
    msbThe MSB of the new state of the context
    probNumber that identifies the probability of the symbols for the new state of the context
    +
    +
    + +

    References opj_mqc::ctxs, and mqc_states.

    + +

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opq_mqc_finish_dec()

    + +
    +
    + + + + + + + + +
    void opq_mqc_finish_dec (opj_mqc_tmqc)
    +
    + +

    Terminate RAW/MQC decoding.

    +

    This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ opj_mqc_raw_init_dec()

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::backup, opj_mqc::end, and OPJ_COMMON_CBLK_DATA_EXTRA.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ mqc_states

    + +
    +
    + + + + + +
    + + + + +
    const opj_mqc_state_t mqc_states[47 *2]
    +
    +static
    +
    + +

    Referenced by opj_mqc_resetstates(), and opj_mqc_setstate().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/mqc_8h.html b/build/doc/html/mqc_8h.html new file mode 100644 index 000000000..bb4a576c7 --- /dev/null +++ b/build/doc/html/mqc_8h.html @@ -0,0 +1,883 @@ + + + + + + + +OpenJPEG: mqc.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    mqc.h File Reference
    +
    +
    + +

    Implementation of an MQ-Coder (MQC) +More...

    +
    #include "opj_common.h"
    +#include "mqc_inl.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  opj_mqc_state
     This struct defines the state of a context. More...
     
    struct  opj_mqc
     MQ coder. More...
     
    + + + +

    +Macros

    #define MQC_NUMCTXS   19
     
    + + + + + + + +

    +Typedefs

    typedef struct opj_mqc_state opj_mqc_state_t
     This struct defines the state of a context. More...
     
    typedef struct opj_mqc opj_mqc_t
     MQ coder. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Exported functions

    #define opj_mqc_setcurctx(mqc, ctxno)   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
     Set the current context used for coding/decoding. More...
     
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_t *mqc)
     Return the number of bytes written/read since initialisation. More...
     
    void opj_mqc_resetstates (opj_mqc_t *mqc)
     Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable) More...
     
    void opj_mqc_setstate (opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
     Set the state of a particular context. More...
     
    void opj_mqc_init_enc (opj_mqc_t *mqc, OPJ_BYTE *bp)
     Initialize the encoder. More...
     
    void opj_mqc_encode (opj_mqc_t *mqc, OPJ_UINT32 d)
     Encode a symbol using the MQ-coder. More...
     
    void opj_mqc_flush (opj_mqc_t *mqc)
     Flush the encoder, so that all remaining data is written. More...
     
    void opj_mqc_bypass_init_enc (opj_mqc_t *mqc)
     BYPASS mode switch, initialization operation. More...
     
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_t *mqc, OPJ_BOOL erterm)
     Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass. More...
     
    void opj_mqc_bypass_enc (opj_mqc_t *mqc, OPJ_UINT32 d)
     BYPASS mode switch, coding operation. More...
     
    void opj_mqc_bypass_flush_enc (opj_mqc_t *mqc, OPJ_BOOL erterm)
     BYPASS mode switch, flush operation. More...
     
    void opj_mqc_reset_enc (opj_mqc_t *mqc)
     RESET mode switch. More...
     
    void opj_mqc_restart_init_enc (opj_mqc_t *mqc)
     RESTART mode switch (TERMALL) reinitialisation. More...
     
    void opj_mqc_erterm_enc (opj_mqc_t *mqc)
     ERTERM mode switch (PTERM) More...
     
    void opj_mqc_segmark_enc (opj_mqc_t *mqc)
     SEGMARK mode switch (SEGSYM) More...
     
    void opj_mqc_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for MQ decoding. More...
     
    void opj_mqc_raw_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for RAW decoding. More...
     
    void opq_mqc_finish_dec (opj_mqc_t *mqc)
     Terminate RAW/MQC decoding. More...
     
    +

    Detailed Description

    +

    Implementation of an MQ-Coder (MQC)

    +

    The functions in MQC.C have for goal to realize the MQ-coder operations. The functions in MQC.C are used by some function in T1.C.

    +

    Macro Definition Documentation

    + +

    ◆ MQC_NUMCTXS

    + +
    +
    + + + + +
    #define MQC_NUMCTXS   19
    +
    + +
    +
    + +

    ◆ opj_mqc_setcurctx

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_setcurctx( mqc,
     ctxno 
    )   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    +
    + +

    Set the current context used for coding/decoding.

    +
    Parameters
    + + + +
    mqcMQC handle
    ctxnoNumber that identifies the context
    +
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ opj_mqc_state_t

    + +
    +
    + + + + +
    typedef struct opj_mqc_state opj_mqc_state_t
    +
    + +

    This struct defines the state of a context.

    + +
    +
    + +

    ◆ opj_mqc_t

    + +
    +
    + + + + +
    typedef struct opj_mqc opj_mqc_t
    +
    + +

    MQ coder.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_mqc_bypass_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_bypass_enc (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    +
    + +

    BYPASS mode switch, coding operation.

    +

    JPEG 2000 p 505.

    Parameters
    + + + +
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    +
    +
    + +

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, and opj_mqc::ct.

    + +

    Referenced by opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_mqc_bypass_flush_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_bypass_flush_enc (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    +
    + +

    BYPASS mode switch, flush operation.

    +
    Parameters
    + + + +
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_bypass_get_extra_bytes()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    +
    + +

    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass.

    +
    Parameters
    + + + +
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    +
    +
    + +

    References opj_mqc::bp, and opj_mqc::ct.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_bypass_init_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_bypass_init_enc (opj_mqc_tmqc)
    +
    + +

    BYPASS mode switch, initialization operation.

    +

    JPEG 2000 p 505.

    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_encode (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    +
    + +

    Encode a symbol using the MQ-coder.

    +
    Parameters
    + + + +
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    +
    +
    + +

    References opj_mqc::curctx, opj_mqc_codelps(), and opj_mqc_codemps().

    + +

    Referenced by opj_mqc_segmark_enc(), opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_mqc_erterm_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_erterm_enc (opj_mqc_tmqc)
    +
    + +

    ERTERM mode switch (PTERM)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_flush()

    + +
    +
    + + + + + + + + +
    void opj_mqc_flush (opj_mqc_tmqc)
    +
    + +

    Flush the encoder, so that all remaining data is written.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc_byteout(), and opj_mqc_setbits().

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    +
    + +

    Initialize the decoder for MQ decoding.

    +

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_bytein(), opj_mqc_init_dec_common(), and opj_mqc_setcurctx.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_init_enc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_mqc_init_enc (opj_mqc_tmqc,
    OPJ_BYTEbp 
    )
    +
    + +

    Initialize the encoder.

    +
    Parameters
    + + + +
    mqcMQC handle
    bpPointer to the start of the buffer where the bytes will be written
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_setcurctx, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_numbytes()

    + +
    +
    + + + + + + + + +
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_tmqc)
    +
    + +

    Return the number of bytes written/read since initialisation.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    +
    Returns
    Returns the number of bytes already encoded
    + +

    References opj_mqc::bp, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_raw_init_dec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_raw_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    +
    + +

    Initialize the decoder for RAW decoding.

    +

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    +
    +
    + +

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_init_dec_common().

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_reset_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_reset_enc (opj_mqc_tmqc)
    +
    + +

    RESET mode switch.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc_resetstates(), opj_mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_resetstates()

    + +
    +
    + + + + + + + + +
    void opj_mqc_resetstates (opj_mqc_tmqc)
    +
    + +

    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::ctxs, MQC_NUMCTXS, and mqc_states.

    + +

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_restart_init_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_restart_init_enc (opj_mqc_tmqc)
    +
    + +

    RESTART mode switch (TERMALL) reinitialisation.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_segmark_enc()

    + +
    +
    + + + + + + + + +
    void opj_mqc_segmark_enc (opj_mqc_tmqc)
    +
    + +

    SEGMARK mode switch (SEGSYM)

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc_encode(), and opj_mqc_setcurctx.

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_mqc_setstate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_mqc_setstate (opj_mqc_tmqc,
    OPJ_UINT32 ctxno,
    OPJ_UINT32 msb,
    OPJ_INT32 prob 
    )
    +
    + +

    Set the state of a particular context.

    +
    Parameters
    + + + + + +
    mqcMQC handle
    ctxnoNumber that identifies the context
    msbThe MSB of the new state of the context
    probNumber that identifies the probability of the symbols for the new state of the context
    +
    +
    + +

    References opj_mqc::ctxs, and mqc_states.

    + +

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opq_mqc_finish_dec()

    + +
    +
    + + + + + + + + +
    void opq_mqc_finish_dec (opj_mqc_tmqc)
    +
    + +

    Terminate RAW/MQC decoding.

    +

    This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ opj_mqc_raw_init_dec()

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::backup, opj_mqc::end, and OPJ_COMMON_CBLK_DATA_EXTRA.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/mqc_8h_source.html b/build/doc/html/mqc_8h_source.html new file mode 100644 index 000000000..fca21dfbe --- /dev/null +++ b/build/doc/html/mqc_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +OpenJPEG: mqc.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mqc.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    15  * All rights reserved.
    +
    16  *
    +
    17  * Redistribution and use in source and binary forms, with or without
    +
    18  * modification, are permitted provided that the following conditions
    +
    19  * are met:
    +
    20  * 1. Redistributions of source code must retain the above copyright
    +
    21  * notice, this list of conditions and the following disclaimer.
    +
    22  * 2. Redistributions in binary form must reproduce the above copyright
    +
    23  * notice, this list of conditions and the following disclaimer in the
    +
    24  * documentation and/or other materials provided with the distribution.
    +
    25  *
    +
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    27  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    29  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    36  * POSSIBILITY OF SUCH DAMAGE.
    +
    37  */
    +
    38 
    +
    39 #ifndef OPJ_MQC_H
    +
    40 #define OPJ_MQC_H
    +
    41 
    +
    42 #include "opj_common.h"
    +
    43 
    +
    54 
    +
    58 typedef struct opj_mqc_state {
    + + +
    64  const struct opj_mqc_state *nmps;
    +
    66  const struct opj_mqc_state *nlps;
    + +
    68 
    +
    69 #define MQC_NUMCTXS 19
    +
    70 
    +
    74 typedef struct opj_mqc {
    + + + +
    81  /* only used by decoder, to count the number of times a terminating 0xFF >0x8F marker is read */
    + + + + + + +
    93  /* lut_ctxno_zc shifted by (1 << 9) * bandno */
    + + +
    97 } opj_mqc_t;
    +
    98 
    +
    99 #include "mqc_inl.h"
    +
    100 
    +
    103 /* ----------------------------------------------------------------------- */
    +
    104 
    + +
    116 void opj_mqc_resetstates(opj_mqc_t *mqc);
    +
    124 void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb,
    +
    125  OPJ_INT32 prob);
    +
    131 void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp);
    +
    137 #define opj_mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    +
    138 
    +
    143 void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d);
    +
    148 void opj_mqc_flush(opj_mqc_t *mqc);
    + +
    155 
    + +
    162 
    + +
    175 void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm);
    +
    180 void opj_mqc_reset_enc(opj_mqc_t *mqc);
    +
    181 
    +
    182 #ifdef notdef
    +
    183 
    +
    188 OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc);
    +
    189 #endif
    +
    190 
    + +
    200 void opj_mqc_erterm_enc(opj_mqc_t *mqc);
    +
    205 void opj_mqc_segmark_enc(opj_mqc_t *mqc);
    +
    206 
    +
    225 void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len,
    +
    226  OPJ_UINT32 extra_writable_bytes);
    +
    227 
    + +
    247  OPJ_UINT32 extra_writable_bytes);
    +
    248 
    +
    249 
    +
    258 void opq_mqc_finish_dec(opj_mqc_t *mqc);
    +
    259 
    +
    265 /*static INLINE OPJ_UINT32 opj_mqc_decode(opj_mqc_t * const mqc);*/
    +
    266 /* ----------------------------------------------------------------------- */
    +
    270 
    +
    271 #endif /* OPJ_MQC_H */
    +
    +
    struct opj_mqc_state opj_mqc_state_t
    This struct defines the state of a context.
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    + +
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    +
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    +
    MQ coder.
    Definition: mqc.h:74
    +
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    +
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    +
    const opj_mqc_state_t ** curctx
    Active context.
    Definition: mqc.h:92
    +
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    +
    #define T1_CTXNO_UNI
    Definition: t1.h:65
    +
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    +
    static void opj_mqc_codemps(opj_mqc_t *mqc)
    Encode the most probable symbol.
    Definition: mqc.c:231
    +
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    +
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    +
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    +
    #define T1_CTXNO_AGG
    Definition: t1.h:64
    + +
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    +
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    +
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    +
    const struct opj_mqc_state * nmps
    next state if the next encoded symbol is the MPS
    Definition: mqc.h:64
    +
    OPJ_UINT32 mps
    the Most Probable Symbol (0 or 1)
    Definition: mqc.h:62
    +
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    +
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    +
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    +
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    +
    OPJ_UINT32 a
    only used by MQ decoder
    Definition: mqc.h:78
    +
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    +
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    +
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    static void opj_mqc_codelps(opj_mqc_t *mqc)
    Encode the most least symbol.
    Definition: mqc.c:247
    +
    const opj_mqc_state_t * ctxs[MQC_NUMCTXS]
    Array of contexts.
    Definition: mqc.h:90
    +
    static const opj_mqc_state_t mqc_states[47 *2]
    Definition: mqc.c:82
    + +
    #define BYPASS_CT_INIT
    Definition: mqc.c:332
    +
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    +
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    +
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    +
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    +
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: mqc.h:88
    +
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    #define opj_mqc_setcurctx(mqc, ctxno)
    Set the current context used for coding/decoding.
    Definition: mqc.h:137
    +
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    +
    const struct opj_mqc_state * nlps
    next state if the next encoded symbol is the LPS
    Definition: mqc.h:66
    +
    static void opj_mqc_byteout(opj_mqc_t *mqc)
    Output a byte, doing bit-stuffing if necessary.
    Definition: mqc.c:185
    +
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: mqc.h:86
    +
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    +
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    +
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    +
    OPJ_UINT32 qeval
    the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff)
    Definition: mqc.h:60
    +
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    +
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    +
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    +
    static void opj_mqc_init_dec_common(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Definition: mqc.c:488
    +
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    +
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    +
    This struct defines the state of a context.
    Definition: mqc.h:58
    +
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    +
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    +
    OPJ_BYTE backup[OPJ_COMMON_CBLK_DATA_EXTRA]
    Original value of the 2 bytes at end[0] and end[1].
    Definition: mqc.h:96
    +
    static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    Input a byte.
    Definition: mqc_inl.h:175
    +
    static void opj_mqc_setbits(opj_mqc_t *mqc)
    Fill mqc->c with 1's for flushing.
    Definition: mqc.c:259
    +
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    +
    struct opj_mqc opj_mqc_t
    MQ coder.
    +
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    +
    static void opj_mqc_renorme(opj_mqc_t *mqc)
    Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.
    Definition: mqc.c:219
    +
    #define MQC_NUMCTXS
    Definition: mqc.h:69
    +
    OPJ_UINT32 end_of_byte_stream_counter
    Definition: mqc.h:82
    +
    const OPJ_BYTE * lut_ctxno_zc_orient
    Definition: mqc.h:94
    + + + + diff --git a/build/doc/html/mqc__inl_8h.html b/build/doc/html/mqc__inl_8h.html new file mode 100644 index 000000000..7ae13cbc2 --- /dev/null +++ b/build/doc/html/mqc__inl_8h.html @@ -0,0 +1,605 @@ + + + + + + + +OpenJPEG: mqc_inl.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    mqc_inl.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define opj_mqc_mpsexchange_macro(d, curctx, a)
     
    #define opj_mqc_lpsexchange_macro(d, curctx, a)
     
    #define opj_mqc_bytein_macro(mqc, c, ct)
     
    #define opj_mqc_renormd_macro(mqc, a, c, ct)
     
    #define opj_mqc_decode_macro(d, mqc, curctx, a, c, ct)
     
    #define DOWNLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct)
     
    #define UPLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct)
     
    #define opj_mqc_renormd(mqc)   opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
     Renormalize mqc->a and mqc->c while decoding. More...
     
    #define opj_mqc_decode(d, mqc)   opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
     Decode a symbol. More...
     
    + + + + + + + +

    +Functions

    static INLINE OPJ_UINT32 opj_mqc_raw_decode (opj_mqc_t *mqc)
     Decode a symbol using raw-decoder. More...
     
    static INLINE void opj_mqc_bytein (opj_mqc_t *const mqc)
     Input a byte. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ DOWNLOAD_MQC_VARIABLES

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define DOWNLOAD_MQC_VARIABLES( mqc,
     curctx,
     c,
     a,
     ct 
    )
    +
    +Value:
    register const opj_mqc_state_t **curctx = mqc->curctx; \
    +
    register OPJ_UINT32 c = mqc->c; \
    +
    register OPJ_UINT32 a = mqc->a; \
    +
    register OPJ_UINT32 ct = mqc->ct
    +
    +
    +
    + +

    ◆ opj_mqc_bytein_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_bytein_macro( mqc,
     c,
     ct 
    )
    +
    +Value:
    { \
    +
    OPJ_UINT32 l_c; \
    +
    /* Given opj_mqc_init_dec() we know that at some point we will */ \
    +
    /* have a 0xFF 0xFF artificial marker */ \
    +
    l_c = *(mqc->bp + 1); \
    +
    if (*mqc->bp == 0xff) { \
    +
    if (l_c > 0x8f) { \
    +
    c += 0xff00; \
    +
    ct = 8; \
    +
    mqc->end_of_byte_stream_counter ++; \
    +
    } else { \
    +
    mqc->bp++; \
    +
    c += l_c << 9; \
    +
    ct = 7; \
    +
    } \
    +
    } else { \
    +
    mqc->bp++; \
    +
    c += l_c << 8; \
    +
    ct = 8; \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_mqc_decode

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_decode( d,
     mqc 
    )   opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
    +
    + +

    Decode a symbol.

    +
    Parameters
    + + + +
    dOPJ_UINT32 value where to store the decoded symbol
    mqcMQC handle
    +
    +
    +
    Returns
    Returns the decoded symbol (0 or 1) in d
    + +
    +
    + +

    ◆ opj_mqc_decode_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_decode_macro( d,
     mqc,
     curctx,
     a,
     c,
     ct 
    )
    +
    +Value:
    { \
    +
    /* Implements ISO 15444-1 C.3.2 Decoding a decision (DECODE) */ \
    +
    /* Note: alternate "J.2 - Decoding an MPS or an LPS in the */ \
    +
    /* software-conventions decoder" has been tried, but does not bring any */ \
    +
    /* improvement. See https://github.com/uclouvain/openjpeg/issues/921 */ \
    +
    a -= (*curctx)->qeval; \
    +
    if ((c >> 16) < (*curctx)->qeval) { \
    +
    opj_mqc_lpsexchange_macro(d, curctx, a); \
    +
    opj_mqc_renormd_macro(mqc, a, c, ct); \
    +
    } else { \
    +
    c -= (*curctx)->qeval << 16; \
    +
    if ((a & 0x8000) == 0) { \
    +
    opj_mqc_mpsexchange_macro(d, curctx, a); \
    +
    opj_mqc_renormd_macro(mqc, a, c, ct); \
    +
    } else { \
    +
    d = (*curctx)->mps; \
    +
    } \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_mqc_lpsexchange_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_lpsexchange_macro( d,
     curctx,
     
    )
    +
    +Value:
    { \
    +
    if (a < (*curctx)->qeval) { \
    +
    a = (*curctx)->qeval; \
    +
    d = (*curctx)->mps; \
    +
    *curctx = (*curctx)->nmps; \
    +
    } else { \
    +
    a = (*curctx)->qeval; \
    +
    d = !((*curctx)->mps); \
    +
    *curctx = (*curctx)->nlps; \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_mqc_mpsexchange_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_mpsexchange_macro( d,
     curctx,
     
    )
    +
    +Value:
    { \
    +
    if (a < (*curctx)->qeval) { \
    +
    d = !((*curctx)->mps); \
    +
    *curctx = (*curctx)->nlps; \
    +
    } else { \
    +
    d = (*curctx)->mps; \
    +
    *curctx = (*curctx)->nmps; \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_mqc_renormd

    + +
    +
    + + + + + + + + +
    #define opj_mqc_renormd( mqc)   opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
    +
    + +

    Renormalize mqc->a and mqc->c while decoding.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +
    +
    + +

    ◆ opj_mqc_renormd_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_mqc_renormd_macro( mqc,
     a,
     c,
     ct 
    )
    +
    +Value:
    { \
    +
    do { \
    +
    if (ct == 0) { \
    +
    opj_mqc_bytein_macro(mqc, c, ct); \
    +
    } \
    +
    a <<= 1; \
    +
    c <<= 1; \
    +
    ct--; \
    +
    } while (a < 0x8000); \
    +
    }
    +
    +
    +
    + +

    ◆ UPLOAD_MQC_VARIABLES

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define UPLOAD_MQC_VARIABLES( mqc,
     curctx,
     c,
     a,
     ct 
    )
    +
    +Value:
    mqc->curctx = curctx; \
    +
    mqc->c = c; \
    +
    mqc->a = a; \
    +
    mqc->ct = ct;
    +
    +
    +
    +

    Function Documentation

    + +

    ◆ opj_mqc_bytein()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE void opj_mqc_bytein (opj_mqc_t *const mqc)
    +
    +static
    +
    + +

    Input a byte.

    +
    Parameters
    + + +
    mqcMQC handle
    +
    +
    + +

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_bytein_macro.

    + +

    Referenced by opj_mqc_init_dec().

    + +
    +
    + +

    ◆ opj_mqc_raw_decode()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_UINT32 opj_mqc_raw_decode (opj_mqc_tmqc)
    +
    +static
    +
    + +

    Decode a symbol using raw-decoder.

    +

    Cfr p.506 TAUBMAN

    Parameters
    + + +
    mqcMQC handle
    +
    +
    +
    Returns
    Returns the decoded symbol (0 or 1)
    + +

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    + +

    Referenced by opj_t1_dec_refpass_step_raw(), and opj_t1_dec_sigpass_step_raw().

    + +
    +
    +
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    This struct defines the state of a context.
    Definition: mqc.h:58
    + + + + diff --git a/build/doc/html/mqc__inl_8h_source.html b/build/doc/html/mqc__inl_8h_source.html new file mode 100644 index 000000000..a9e106b4f --- /dev/null +++ b/build/doc/html/mqc__inl_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +OpenJPEG: mqc_inl.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    mqc_inl.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    15  * All rights reserved.
    +
    16  *
    +
    17  * Redistribution and use in source and binary forms, with or without
    +
    18  * modification, are permitted provided that the following conditions
    +
    19  * are met:
    +
    20  * 1. Redistributions of source code must retain the above copyright
    +
    21  * notice, this list of conditions and the following disclaimer.
    +
    22  * 2. Redistributions in binary form must reproduce the above copyright
    +
    23  * notice, this list of conditions and the following disclaimer in the
    +
    24  * documentation and/or other materials provided with the distribution.
    +
    25  *
    +
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    27  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    29  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    36  * POSSIBILITY OF SUCH DAMAGE.
    +
    37  */
    +
    38 
    +
    39 #ifndef OPJ_MQC_INL_H
    +
    40 #define OPJ_MQC_INL_H
    +
    41 
    +
    42 /* For internal use of opj_mqc_decode_macro() */
    +
    43 #define opj_mqc_mpsexchange_macro(d, curctx, a) \
    +
    44 { \
    +
    45  if (a < (*curctx)->qeval) { \
    +
    46  d = !((*curctx)->mps); \
    +
    47  *curctx = (*curctx)->nlps; \
    +
    48  } else { \
    +
    49  d = (*curctx)->mps; \
    +
    50  *curctx = (*curctx)->nmps; \
    +
    51  } \
    +
    52 }
    +
    53 
    +
    54 /* For internal use of opj_mqc_decode_macro() */
    +
    55 #define opj_mqc_lpsexchange_macro(d, curctx, a) \
    +
    56 { \
    +
    57  if (a < (*curctx)->qeval) { \
    +
    58  a = (*curctx)->qeval; \
    +
    59  d = (*curctx)->mps; \
    +
    60  *curctx = (*curctx)->nmps; \
    +
    61  } else { \
    +
    62  a = (*curctx)->qeval; \
    +
    63  d = !((*curctx)->mps); \
    +
    64  *curctx = (*curctx)->nlps; \
    +
    65  } \
    +
    66 }
    +
    67 
    +
    68 
    + +
    75 {
    +
    76  OPJ_UINT32 d;
    +
    77  if (mqc->ct == 0) {
    +
    78  /* Given opj_mqc_raw_init_dec() we know that at some point we will */
    +
    79  /* have a 0xFF 0xFF artificial marker */
    +
    80  if (mqc->c == 0xff) {
    +
    81  if (*mqc->bp > 0x8f) {
    +
    82  mqc->c = 0xff;
    +
    83  mqc->ct = 8;
    +
    84  } else {
    +
    85  mqc->c = *mqc->bp;
    +
    86  mqc->bp ++;
    +
    87  mqc->ct = 7;
    +
    88  }
    +
    89  } else {
    +
    90  mqc->c = *mqc->bp;
    +
    91  mqc->bp ++;
    +
    92  mqc->ct = 8;
    +
    93  }
    +
    94  }
    +
    95  mqc->ct--;
    +
    96  d = ((OPJ_UINT32)mqc->c >> mqc->ct) & 0x01U;
    +
    97 
    +
    98  return d;
    +
    99 }
    +
    100 
    +
    101 
    +
    102 #define opj_mqc_bytein_macro(mqc, c, ct) \
    +
    103 { \
    +
    104  OPJ_UINT32 l_c; \
    +
    105  /* Given opj_mqc_init_dec() we know that at some point we will */ \
    +
    106  /* have a 0xFF 0xFF artificial marker */ \
    +
    107  l_c = *(mqc->bp + 1); \
    +
    108  if (*mqc->bp == 0xff) { \
    +
    109  if (l_c > 0x8f) { \
    +
    110  c += 0xff00; \
    +
    111  ct = 8; \
    +
    112  mqc->end_of_byte_stream_counter ++; \
    +
    113  } else { \
    +
    114  mqc->bp++; \
    +
    115  c += l_c << 9; \
    +
    116  ct = 7; \
    +
    117  } \
    +
    118  } else { \
    +
    119  mqc->bp++; \
    +
    120  c += l_c << 8; \
    +
    121  ct = 8; \
    +
    122  } \
    +
    123 }
    +
    124 
    +
    125 /* For internal use of opj_mqc_decode_macro() */
    +
    126 #define opj_mqc_renormd_macro(mqc, a, c, ct) \
    +
    127 { \
    +
    128  do { \
    +
    129  if (ct == 0) { \
    +
    130  opj_mqc_bytein_macro(mqc, c, ct); \
    +
    131  } \
    +
    132  a <<= 1; \
    +
    133  c <<= 1; \
    +
    134  ct--; \
    +
    135  } while (a < 0x8000); \
    +
    136 }
    +
    137 
    +
    138 #define opj_mqc_decode_macro(d, mqc, curctx, a, c, ct) \
    +
    139 { \
    +
    140  /* Implements ISO 15444-1 C.3.2 Decoding a decision (DECODE) */ \
    +
    141  /* Note: alternate "J.2 - Decoding an MPS or an LPS in the */ \
    +
    142  /* software-conventions decoder" has been tried, but does not bring any */ \
    +
    143  /* improvement. See https://github.com/uclouvain/openjpeg/issues/921 */ \
    +
    144  a -= (*curctx)->qeval; \
    +
    145  if ((c >> 16) < (*curctx)->qeval) { \
    +
    146  opj_mqc_lpsexchange_macro(d, curctx, a); \
    +
    147  opj_mqc_renormd_macro(mqc, a, c, ct); \
    +
    148  } else { \
    +
    149  c -= (*curctx)->qeval << 16; \
    +
    150  if ((a & 0x8000) == 0) { \
    +
    151  opj_mqc_mpsexchange_macro(d, curctx, a); \
    +
    152  opj_mqc_renormd_macro(mqc, a, c, ct); \
    +
    153  } else { \
    +
    154  d = (*curctx)->mps; \
    +
    155  } \
    +
    156  } \
    +
    157 }
    +
    158 
    +
    159 #define DOWNLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct) \
    +
    160  register const opj_mqc_state_t **curctx = mqc->curctx; \
    +
    161  register OPJ_UINT32 c = mqc->c; \
    +
    162  register OPJ_UINT32 a = mqc->a; \
    +
    163  register OPJ_UINT32 ct = mqc->ct
    +
    164 
    +
    165 #define UPLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct) \
    +
    166  mqc->curctx = curctx; \
    +
    167  mqc->c = c; \
    +
    168  mqc->a = a; \
    +
    169  mqc->ct = ct;
    +
    170 
    +
    175 static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    +
    176 {
    +
    177  opj_mqc_bytein_macro(mqc, mqc->c, mqc->ct);
    +
    178 }
    +
    179 
    +
    184 #define opj_mqc_renormd(mqc) \
    +
    185  opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
    +
    186 
    +
    193 #define opj_mqc_decode(d, mqc) \
    +
    194  opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
    +
    195 
    +
    196 #endif /* OPJ_MQC_INL_H */
    +
    +
    MQ coder.
    Definition: mqc.h:74
    +
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    static INLINE OPJ_UINT32 opj_mqc_raw_decode(opj_mqc_t *mqc)
    Decode a symbol using raw-decoder.
    Definition: mqc_inl.h:74
    +
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    Input a byte.
    Definition: mqc_inl.h:175
    +
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    +
    #define opj_mqc_bytein_macro(mqc, c, ct)
    Definition: mqc_inl.h:102
    + + + + diff --git a/build/doc/html/msgqueue__manager_8c.html b/build/doc/html/msgqueue__manager_8c.html new file mode 100644 index 000000000..c34ad5be7 --- /dev/null +++ b/build/doc/html/msgqueue__manager_8c.html @@ -0,0 +1,1387 @@ + + + + + + + +OpenJPEG: msgqueue_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    msgqueue_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <sys/types.h>
    +#include <sys/stat.h>
    +#include <string.h>
    +#include <ctype.h>
    +#include <assert.h>
    +#include <limits.h>
    +#include <unistd.h>
    +#include "msgqueue_manager.h"
    +#include "metadata_manager.h"
    +#include "index_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    msgqueue_param_tgene_msgqueue (OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
     generate message queue More...
     
    void delete_msgqueue (msgqueue_param_t **msgqueue)
     delete message queue More...
     
    void print_msgqueue (msgqueue_param_t *msgqueue)
     print message queue More...
     
    void enqueue_message (message_param_t *msg, msgqueue_param_t *msgqueue)
     
    void enqueue_mainheader (msgqueue_param_t *msgqueue)
     enqueue main header data-bin into message queue More...
     
    void enqueue_tileheader (int tile_id, msgqueue_param_t *msgqueue)
     enqueue tile headers data-bin into message queue More...
     
    void enqueue_tile (Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
     enqueue tile data-bin into message queue More...
     
    void enqueue_precinct (int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bin into message queue More...
     
    Byte8_t comp_precinct_id (int t, int c, int s, int num_components, int num_tiles)
     compute precinct ID A.3.2.1 More...
     
    void enqueue_box (Byte8_t meta_id, boxlist_param_t *boxlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_phld (Byte8_t meta_id, placeholderlist_param_t *phldlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_boxcontents (Byte8_t meta_id, boxcontents_param_t *boxcontents, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_metadata (Byte8_t meta_id, msgqueue_param_t *msgqueue)
     enqueue Metadata-bin into message queue More...
     
    message_param_tgene_metamsg (Byte8_t meta_id, Byte8_t binoffset, Byte8_t length, OPJ_OFF_T res_offset, placeholder_param_t *phld, Byte8_t csn)
     
    void add_bin_id_vbas_stream (Byte_t bb, Byte_t c, Byte8_t in_class_id, int tmpfd)
     
    void add_vbas_stream (Byte8_t code, int tmpfd)
     
    void add_body_stream (message_param_t *msg, int fd, int tmpfd)
     
    void add_placeholder_stream (placeholder_param_t *phld, int tmpfd)
     
    void recons_stream_from_msgqueue (msgqueue_param_t *msgqueue, int tmpfd)
     reconstruct JPT/JPP-stream from message queue More...
     
    void add_vbas_with_bytelen_stream (Byte8_t code, int bytelength, int tmpfd)
     
    void print_binarycode (Byte8_t n, int segmentlen)
     
    void add_bigendian_bytestream (Byte8_t code, int bytelength, int tmpfd)
     
    Byte_tparse_bin_id_vbas (Byte_t *streamptr, Byte_t *bb, Byte_t *c, Byte8_t *in_class_id)
     
    Byte_tparse_vbas (Byte_t *streamptr, Byte8_t *elem)
     
    void parse_JPIPstream (Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
     parse JPT- JPP- stream to message queue More...
     
    void parse_metadata (metadata_param_t *metadata, message_param_t *msg, Byte_t *stream)
     
    void parse_metamsg (msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
     parse JPT- JPP- stream to message queue More...
     
    placeholder_param_tparse_phld (Byte_t *datastream, Byte8_t metalength)
     
    void delete_message_in_msgqueue (message_param_t **msg, msgqueue_param_t *msgqueue)
     delete a message in msgqueue More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ add_bigendian_bytestream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void add_bigendian_bytestream (Byte8_t code,
    int bytelength,
    int tmpfd 
    )
    +
    + +

    References FCGI_stderr.

    + +

    Referenced by add_placeholder_stream().

    + +
    +
    + +

    ◆ add_bin_id_vbas_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void add_bin_id_vbas_stream (Byte_t bb,
    Byte_t c,
    Byte8_t in_class_id,
    int tmpfd 
    )
    +
    +
    + +

    ◆ add_body_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void add_body_stream (message_param_tmsg,
    int fd,
    int tmpfd 
    )
    +
    +
    + +

    ◆ add_placeholder_stream()

    + + + +

    ◆ add_vbas_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void add_vbas_stream (Byte8_t code,
    int tmpfd 
    )
    +
    +
    + +

    ◆ add_vbas_with_bytelen_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void add_vbas_with_bytelen_stream (Byte8_t code,
    int bytelength,
    int tmpfd 
    )
    +
    + +

    References FCGI_stderr.

    + +

    Referenced by add_bin_id_vbas_stream(), and add_vbas_stream().

    + +
    +
    + +

    ◆ comp_precinct_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t comp_precinct_id (int t,
    int c,
    int s,
    int num_components,
    int num_tiles 
    )
    +
    + +

    compute precinct ID A.3.2.1

    +
    Parameters
    + + + + + + +
    [in]ttile index
    [in]ccomponent index
    [in]ssequence number
    [in]num_componentstotal number of components
    [in]num_tilestotal number of tiles
    +
    +
    +
    Returns
    precicnt id
    + +

    Referenced by enqueue_precinct(), recons_packet(), and recons_precinct().

    + +
    +
    + +

    ◆ delete_message_in_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_message_in_msgqueue (message_param_t ** message,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    delete a message in msgqueue

    +
    Parameters
    + + + +
    [in]messageaddress of the deleting message pointer
    [in]msgqueuemessage queue pointer
    +
    +
    + +

    References msgqueue_param::first, msgqueue_param::last, message_param::next, and opj_free().

    + +
    +
    + +

    ◆ delete_msgqueue()

    + +
    +
    + + + + + + + + +
    void delete_msgqueue (msgqueue_param_t ** msgqueue)
    +
    + +

    delete message queue

    +
    Parameters
    + + +
    [in]msgqueueaddress of the message queue pointer
    +
    +
    + +

    References delete_cachemodel(), message_param::next, and opj_free().

    + +

    Referenced by destroy_jpipdecoder(), and terminate_dec_server().

    + +
    +
    + +

    ◆ enqueue_box()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_box (Byte8_t meta_id,
    boxlist_param_tboxlist,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    +
    +
    + +

    ◆ enqueue_boxcontents()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_boxcontents (Byte8_t meta_id,
    boxcontents_param_tboxcontents,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    +
    +
    + +

    ◆ enqueue_mainheader()

    + + + +

    ◆ enqueue_message()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void enqueue_message (message_param_tmsg,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void enqueue_metadata (Byte8_t meta_id,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_phld()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_phld (Byte8_t meta_id,
    placeholderlist_param_tphldlist,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    +
    +
    + +

    ◆ enqueue_precinct()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_precinct (int seq_id,
    int tile_id,
    int comp_id,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_tile (Byte4_t tile_id,
    int level,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_tileheader()

    + + + +

    ◆ gene_metamsg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    message_param_t * gene_metamsg (Byte8_t meta_id,
    Byte8_t binoffset,
    Byte8_t length,
    OPJ_OFF_T res_offset,
    placeholder_param_tphld,
    Byte8_t csn 
    )
    +
    +
    + +

    ◆ gene_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    msgqueue_param_t* gene_msgqueue (OPJ_BOOL stateless,
    cachemodel_param_tcachemodel 
    )
    +
    + +

    generate message queue

    +
    Parameters
    + + + +
    [in]statelessif this is a stateless message queue
    [in]cachemodelcachemodel pointer
    +
    +
    +
    Returns
    generated message queue pointer
    + +

    References msgqueue_param::cachemodel, msgqueue_param::first, msgqueue_param::last, opj_malloc(), and msgqueue_param::stateless.

    + +

    Referenced by gene_JPIPstream(), init_dec_server(), and init_jpipdecoder().

    + +
    +
    + +

    ◆ parse_bin_id_vbas()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte_t * parse_bin_id_vbas (Byte_tstreamptr,
    Byte_tbb,
    Byte_tc,
    Byte8_tin_class_id 
    )
    +
    + +

    Referenced by parse_JPIPstream().

    + +
    +
    + +

    ◆ parse_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void parse_JPIPstream (Byte_tJPIPstream,
    Byte8_t streamlen,
    OPJ_OFF_T offset,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    parse JPT- JPP- stream to message queue

    +
    Parameters
    + + + + + +
    [in]JPIPstreamJPT- JPP- stream data pointer
    [in]streamlenJPIPstream length
    [in]offsetoffset of the stream from the whole beginning
    [in,out]msgqueueadding message queue pointer
    +
    +
    + +

    References message_param::aux, message_param::bin_offset, message_param::class_id, message_param::csn, msgqueue_param::first, message_param::in_class_id, msgqueue_param::last, message_param::last_byte, message_param::length, message_param::next, OPJ_FALSE, opj_malloc(), OPJ_TRUE, parse_bin_id_vbas(), parse_vbas(), message_param::phld, and message_param::res_offset.

    + +

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ parse_metadata()

    + + + +

    ◆ parse_metamsg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void parse_metamsg (msgqueue_param_tmsgqueue,
    Byte_tstream,
    Byte8_t streamlen,
    metadatalist_param_tmetadatalist 
    )
    +
    + +

    parse JPT- JPP- stream to message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuereference message queue pointer
    [in]streamstream data pointer
    [in]streamlenstream length
    [in]metadatalistadding metadata list pointer
    +
    +
    + +

    References message_param::class_id, msgqueue_param::first, gene_metadata(), message_param::in_class_id, insert_metadata_into_list(), METADATA_MSG, message_param::next, parse_metadata(), and message_param::res_offset.

    + +

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ parse_phld()

    + + + +

    ◆ parse_vbas()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Byte_t * parse_vbas (Byte_tstreamptr,
    Byte8_telem 
    )
    +
    + +

    Referenced by parse_JPIPstream().

    + +
    +
    + +

    ◆ print_binarycode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void print_binarycode (Byte8_t n,
    int segmentlen 
    )
    +
    + +
    +
    + +

    ◆ print_msgqueue()

    + +
    +
    + + + + + + + + +
    void print_msgqueue (msgqueue_param_tmsgqueue)
    +
    +
    + +

    ◆ recons_stream_from_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void recons_stream_from_msgqueue (msgqueue_param_tmsgqueue,
    int tmpfd 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/msgqueue__manager_8h.html b/build/doc/html/msgqueue__manager_8h.html new file mode 100644 index 000000000..5ed516bf3 --- /dev/null +++ b/build/doc/html/msgqueue__manager_8h.html @@ -0,0 +1,852 @@ + + + + + + + +OpenJPEG: msgqueue_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    msgqueue_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "cachemodel_manager.h"
    +#include "placeholder_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  message_param
     message parameters More...
     
    struct  msgqueue_param
     message queue parameters More...
     
    + + + + + + + + + + + + + + + +

    +Macros

    #define PRECINCT_MSG   0
     
    #define EXT_PRECINCT_MSG   1
     
    #define TILE_HEADER_MSG   2
     
    #define TILE_MSG   4
     
    #define EXT_TILE_MSG   5
     
    #define MAINHEADER_MSG   6
     
    #define METADATA_MSG   8
     
    + + + + + + + +

    +Typedefs

    typedef struct message_param message_param_t
     message parameters More...
     
    typedef struct msgqueue_param msgqueue_param_t
     message queue parameters More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    msgqueue_param_tgene_msgqueue (OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
     generate message queue More...
     
    void delete_msgqueue (msgqueue_param_t **msgqueue)
     delete message queue More...
     
    void delete_message_in_msgqueue (message_param_t **message, msgqueue_param_t *msgqueue)
     delete a message in msgqueue More...
     
    void print_msgqueue (msgqueue_param_t *msgqueue)
     print message queue More...
     
    void enqueue_mainheader (msgqueue_param_t *msgqueue)
     enqueue main header data-bin into message queue More...
     
    void enqueue_tileheader (int tile_id, msgqueue_param_t *msgqueue)
     enqueue tile headers data-bin into message queue More...
     
    void enqueue_tile (Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
     enqueue tile data-bin into message queue More...
     
    void enqueue_precinct (int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bin into message queue More...
     
    void enqueue_metadata (Byte8_t meta_id, msgqueue_param_t *msgqueue)
     enqueue Metadata-bin into message queue More...
     
    void recons_stream_from_msgqueue (msgqueue_param_t *msgqueue, int tmpfd)
     reconstruct JPT/JPP-stream from message queue More...
     
    void parse_JPIPstream (Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
     parse JPT- JPP- stream to message queue More...
     
    void parse_metamsg (msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
     parse JPT- JPP- stream to message queue More...
     
    Byte8_t comp_precinct_id (int t, int c, int s, int num_components, int num_tiles)
     compute precinct ID A.3.2.1 More...
     
    +

    Macro Definition Documentation

    + +

    ◆ EXT_PRECINCT_MSG

    + +
    +
    + + + + +
    #define EXT_PRECINCT_MSG   1
    +
    + +
    +
    + +

    ◆ EXT_TILE_MSG

    + +
    +
    + + + + +
    #define EXT_TILE_MSG   5
    +
    + +
    +
    + +

    ◆ MAINHEADER_MSG

    + +
    +
    + + + + +
    #define MAINHEADER_MSG   6
    +
    + +
    +
    + +

    ◆ METADATA_MSG

    + +
    +
    + + + + +
    #define METADATA_MSG   8
    +
    + +
    +
    + +

    ◆ PRECINCT_MSG

    + +
    +
    + + + + +
    #define PRECINCT_MSG   0
    +
    + +
    +
    + +

    ◆ TILE_HEADER_MSG

    + +
    +
    + + + + +
    #define TILE_HEADER_MSG   2
    +
    + +
    +
    + +

    ◆ TILE_MSG

    + +
    +
    + + + + +
    #define TILE_MSG   4
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ message_param_t

    + +
    +
    + + + + +
    typedef struct message_param message_param_t
    +
    + +

    message parameters

    + +
    +
    + +

    ◆ msgqueue_param_t

    + +
    +
    + + + + +
    typedef struct msgqueue_param msgqueue_param_t
    +
    + +

    message queue parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ comp_precinct_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Byte8_t comp_precinct_id (int t,
    int c,
    int s,
    int num_components,
    int num_tiles 
    )
    +
    + +

    compute precinct ID A.3.2.1

    +
    Parameters
    + + + + + + +
    [in]ttile index
    [in]ccomponent index
    [in]ssequence number
    [in]num_componentstotal number of components
    [in]num_tilestotal number of tiles
    +
    +
    +
    Returns
    precicnt id
    + +

    Referenced by enqueue_precinct(), recons_packet(), and recons_precinct().

    + +
    +
    + +

    ◆ delete_message_in_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_message_in_msgqueue (message_param_t ** message,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    delete a message in msgqueue

    +
    Parameters
    + + + +
    [in]messageaddress of the deleting message pointer
    [in]msgqueuemessage queue pointer
    +
    +
    + +

    References msgqueue_param::first, msgqueue_param::last, message_param::next, and opj_free().

    + +
    +
    + +

    ◆ delete_msgqueue()

    + +
    +
    + + + + + + + + +
    void delete_msgqueue (msgqueue_param_t ** msgqueue)
    +
    + +

    delete message queue

    +
    Parameters
    + + +
    [in]msgqueueaddress of the message queue pointer
    +
    +
    + +

    References delete_cachemodel(), message_param::next, and opj_free().

    + +

    Referenced by destroy_jpipdecoder(), and terminate_dec_server().

    + +
    +
    + +

    ◆ enqueue_mainheader()

    + + + +

    ◆ enqueue_metadata()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void enqueue_metadata (Byte8_t meta_id,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_precinct()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_precinct (int seq_id,
    int tile_id,
    int comp_id,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void enqueue_tile (Byte4_t tile_id,
    int level,
    msgqueue_param_tmsgqueue 
    )
    +
    +
    + +

    ◆ enqueue_tileheader()

    + + + +

    ◆ gene_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    msgqueue_param_t* gene_msgqueue (OPJ_BOOL stateless,
    cachemodel_param_tcachemodel 
    )
    +
    + +

    generate message queue

    +
    Parameters
    + + + +
    [in]statelessif this is a stateless message queue
    [in]cachemodelcachemodel pointer
    +
    +
    +
    Returns
    generated message queue pointer
    + +

    References msgqueue_param::cachemodel, msgqueue_param::first, msgqueue_param::last, opj_malloc(), and msgqueue_param::stateless.

    + +

    Referenced by gene_JPIPstream(), init_dec_server(), and init_jpipdecoder().

    + +
    +
    + +

    ◆ parse_JPIPstream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void parse_JPIPstream (Byte_tJPIPstream,
    Byte8_t streamlen,
    OPJ_OFF_T offset,
    msgqueue_param_tmsgqueue 
    )
    +
    + +

    parse JPT- JPP- stream to message queue

    +
    Parameters
    + + + + + +
    [in]JPIPstreamJPT- JPP- stream data pointer
    [in]streamlenJPIPstream length
    [in]offsetoffset of the stream from the whole beginning
    [in,out]msgqueueadding message queue pointer
    +
    +
    + +

    References message_param::aux, message_param::bin_offset, message_param::class_id, message_param::csn, msgqueue_param::first, message_param::in_class_id, msgqueue_param::last, message_param::last_byte, message_param::length, message_param::next, OPJ_FALSE, opj_malloc(), OPJ_TRUE, parse_bin_id_vbas(), parse_vbas(), message_param::phld, and message_param::res_offset.

    + +

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ parse_metamsg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void parse_metamsg (msgqueue_param_tmsgqueue,
    Byte_tstream,
    Byte8_t streamlen,
    metadatalist_param_tmetadatalist 
    )
    +
    + +

    parse JPT- JPP- stream to message queue

    +
    Parameters
    + + + + + +
    [in]msgqueuereference message queue pointer
    [in]streamstream data pointer
    [in]streamlenstream length
    [in]metadatalistadding metadata list pointer
    +
    +
    + +

    References message_param::class_id, msgqueue_param::first, gene_metadata(), message_param::in_class_id, insert_metadata_into_list(), METADATA_MSG, message_param::next, parse_metadata(), and message_param::res_offset.

    + +

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    + +
    +
    + +

    ◆ print_msgqueue()

    + +
    +
    + + + + + + + + +
    void print_msgqueue (msgqueue_param_tmsgqueue)
    +
    +
    + +

    ◆ recons_stream_from_msgqueue()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void recons_stream_from_msgqueue (msgqueue_param_tmsgqueue,
    int tmpfd 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/msgqueue__manager_8h_source.html b/build/doc/html/msgqueue__manager_8h_source.html new file mode 100644 index 000000000..e7e45c4f7 --- /dev/null +++ b/build/doc/html/msgqueue__manager_8h_source.html @@ -0,0 +1,313 @@ + + + + + + + +OpenJPEG: msgqueue_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    msgqueue_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef MSGQUEUE_MANAGER_H_
    +
    33 # define MSGQUEUE_MANAGER_H_
    +
    34 
    +
    35 #include "byte_manager.h"
    +
    36 #include "cachemodel_manager.h"
    +
    37 #include "placeholder_manager.h"
    +
    38 
    +
    39 #define PRECINCT_MSG 0
    +
    40 #define EXT_PRECINCT_MSG 1
    +
    41 #define TILE_HEADER_MSG 2
    +
    42 #define TILE_MSG 4
    +
    43 #define EXT_TILE_MSG 5
    +
    44 #define MAINHEADER_MSG 6
    +
    45 #define METADATA_MSG 8
    +
    46 
    +
    48 typedef struct message_param {
    +
    49  OPJ_BOOL
    + + + + + + + + + +
    59  struct message_param *next;
    + +
    61 
    +
    63 typedef struct msgqueue_param {
    + + + + + +
    69 
    + +
    78  cachemodel_param_t *cachemodel);
    +
    79 
    +
    85 void delete_msgqueue(msgqueue_param_t **msgqueue);
    +
    86 
    + +
    94  msgqueue_param_t *msgqueue);
    +
    95 
    +
    101 void print_msgqueue(msgqueue_param_t *msgqueue);
    +
    102 
    +
    103 
    +
    109 void enqueue_mainheader(msgqueue_param_t *msgqueue);
    +
    110 
    +
    117 void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue);
    +
    118 
    +
    126 void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue);
    +
    127 
    +
    137 void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers,
    +
    138  msgqueue_param_t *msgqueue);
    +
    139 
    +
    140 
    +
    147 void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue);
    +
    148 
    +
    149 
    +
    156 void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd);
    +
    157 
    +
    158 
    +
    167 void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset,
    +
    168  msgqueue_param_t *msgqueue);
    +
    169 
    +
    178 void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream,
    +
    179  Byte8_t streamlen, metadatalist_param_t *metadatalist);
    +
    180 
    +
    191 Byte8_t comp_precinct_id(int t, int c, int s, int num_components,
    +
    192  int num_tiles);
    +
    193 
    +
    194 #endif /* !MSGQUEUE_MANAGER_H_ */
    +
    +
    #define METADATA_MSG
    Definition: msgqueue_manager.h:45
    +
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    +
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    +
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    +
    OPJ_BOOL ** pp_model
    dynamic array pointer of precint packet model
    Definition: cachemodel_manager.h:43
    +
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    +
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    +
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    +
    #define TILE_MSG
    Definition: msgqueue_manager.h:42
    +
    void add_bigendian_bytestream(Byte8_t code, int bytelength, int tmpfd)
    Definition: msgqueue_manager.c:589
    +
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    +
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    +
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    +
    void delete_message_in_msgqueue(message_param_t **message, msgqueue_param_t *msgqueue)
    delete a message in msgqueue
    Definition: msgqueue_manager.c:795
    +
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    +
    placeholderlist_param_t * placeholderlist
    placeholder box list
    Definition: metadata_manager.h:46
    +
    void delete_message_in_msgqueue(message_param_t **msg, msgqueue_param_t *msgqueue)
    delete a message in msgqueue
    Definition: msgqueue_manager.c:795
    +
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    +
    int csn
    codestream number
    Definition: target_manager.h:47
    +
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    +
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    +
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    +
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    +
    #define logstream
    Definition: msgqueue_manager.c:56
    +
    #define EXT_TILE_MSG
    Definition: msgqueue_manager.h:43
    + +
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    +
    OPJ_OFF_T offset
    codestream offset
    Definition: index_manager.h:88
    +
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    +
    OPJ_BOOL stateless
    if this is a stateless message queue
    Definition: msgqueue_manager.h:66
    +
    #define PRECINCT_MSG
    Definition: msgqueue_manager.h:39
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    +
    box parameters
    Definition: box_manager.h:37
    +
    index parameters
    Definition: index_manager.h:86
    +
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    +
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    +
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    +
    void add_vbas_stream(Byte8_t code, int tmpfd)
    Definition: msgqueue_manager.c:521
    +
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    +
    void enqueue_box(Byte8_t meta_id, boxlist_param_t *boxlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:356
    +
    void add_body_stream(message_param_t *msg, int fd, int tmpfd)
    Definition: msgqueue_manager.c:554
    +
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    +
    void add_placeholder_stream(placeholder_param_t *phld, int tmpfd)
    Definition: msgqueue_manager.c:573
    +
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    +
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    +
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    +
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    OPJ_BOOL last_byte
    if message contains the last byte of the data-bin
    Definition: msgqueue_manager.h:50
    +
    Byte8_t length
    message byte length
    Definition: msgqueue_manager.h:55
    +
    void enqueue_message(message_param_t *msg, msgqueue_param_t *msgqueue)
    Definition: msgqueue_manager.c:426
    +
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    +
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    +
    #define FCGI_stderr
    Definition: msgqueue_manager.c:55
    +
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    +
    Byte8_t bin_offset
    offset of the data in this message from the start of the data-bin
    Definition: msgqueue_manager.h:54
    +
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    +
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    + +
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    +
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    +
    message parameters
    Definition: msgqueue_manager.h:48
    +
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    +
    Byte_t * parse_vbas(Byte_t *streamptr, Byte8_t *elem)
    Definition: msgqueue_manager.c:780
    +
    void enqueue_boxcontents(Byte8_t meta_id, boxcontents_param_t *boxcontents, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:392
    +
    Definition: metadata_manager.h:37
    +
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    +
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    +
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    + +
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    +
    void enqueue_phld(Byte8_t meta_id, placeholderlist_param_t *phldlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:374
    +
    metadata-bin parameters
    Definition: metadata_manager.h:43
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    struct message_param * next
    pointer to the next message
    Definition: msgqueue_manager.h:59
    +
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    +
    cachemodel_param_t * cachemodel
    reference cachemodel pointer
    Definition: msgqueue_manager.h:67
    +
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    +
    mhixbox_param_t ** tileheader
    dynamic array of tile header information from thix box
    Definition: index_manager.h:95
    +
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    +
    void add_bin_id_vbas_stream(Byte_t bb, Byte_t c, Byte8_t in_class_id, int tmpfd)
    Definition: msgqueue_manager.c:501
    +
    OPJ_OFF_T res_offset
    offset in the resource
    Definition: msgqueue_manager.h:57
    +
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    +
    OPJ_BOOL * tp_model
    dynamic array pointer of tile part model, if sent, 1, else 0
    Definition: cachemodel_manager.h:41
    +
    placeholder_param_t * parse_phld(Byte_t *datastream, Byte8_t metalength)
    Definition: msgqueue_manager.c:741
    +
    OPJ_BOOL * th_model
    dynamic array pointer of tile header model
    Definition: cachemodel_manager.h:42
    +
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    +
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    +
    Byte8_t in_class_id
    in-class identifier A.2.3
    Definition: msgqueue_manager.h:51
    +
    Byte8_t aux
    Definition: msgqueue_manager.h:56
    +
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    +
    message_param_t * last
    last message pointer of the list
    Definition: msgqueue_manager.h:65
    +
    char TBox[4]
    Definition: placeholder_manager.h:41
    +
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    +
    struct message_param message_param_t
    message parameters
    +
    void parse_metadata(metadata_param_t *metadata, message_param_t *msg, Byte_t *stream)
    Definition: msgqueue_manager.c:710
    +
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    +
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    +
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    +
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    +
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    +
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    +
    Byte4_t LBox
    Definition: placeholder_manager.h:40
    +
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    +
    void print_binarycode(Byte8_t n, int segmentlen)
    Definition: msgqueue_manager.c:605
    +
    #define MAINHEADER_MSG
    Definition: msgqueue_manager.h:44
    + +
    Byte8_t tlen
    length ( total length of the main
    Definition: mhixbox_manager.h:53
    +
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    +
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    +
    Byte_t * parse_bin_id_vbas(Byte_t *streamptr, Byte_t *bb, Byte_t *c, Byte8_t *in_class_id)
    Definition: msgqueue_manager.c:759
    +
    Byte8_t class_id
    class identifiers
    Definition: msgqueue_manager.h:52
    +
    struct msgqueue_param msgqueue_param_t
    message queue parameters
    +
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    +
    int fd
    file descriptor
    Definition: target_manager.h:43
    +
    target parameters
    Definition: target_manager.h:40
    +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    +
    Box list parameters.
    Definition: box_manager.h:48
    +
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    +
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    + +
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    +
    placeholder_param_t * phld
    placeholder pointer in index
    Definition: msgqueue_manager.h:58
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    + + +
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    +
    Byte8_t mhead_length
    main header length
    Definition: index_manager.h:90
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte4_t Flags
    Definition: placeholder_manager.h:42
    +
    #define TILE_HEADER_MSG
    Definition: msgqueue_manager.h:41
    +
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    +
    message_param_t * gene_metamsg(Byte8_t meta_id, Byte8_t binoffset, Byte8_t length, OPJ_OFF_T res_offset, placeholder_param_t *phld, Byte8_t csn)
    Definition: msgqueue_manager.c:405
    +
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    +
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    +
    void add_vbas_with_bytelen_stream(Byte8_t code, int bytelength, int tmpfd)
    Definition: msgqueue_manager.c:535
    +
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    + + + + diff --git a/build/doc/html/nav_f.png b/build/doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/build/doc/html/nav_g.png b/build/doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +OpenJPEG: openjpeg.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    openjpeg.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the info handler use by openjpeg. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the warning handler use by openjpeg. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the error handler use by openjpeg. More...
     
    static OPJ_SIZE_T opj_read_from_file (void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
     
    static OPJ_UINT64 opj_get_data_length_from_file (FILE *p_file)
     
    static OPJ_SIZE_T opj_write_from_file (void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
     
    static OPJ_OFF_T opj_skip_from_file (OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
     
    static OPJ_BOOL opj_seek_from_file (OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
     
    const char *OPJ_CALLCONV opj_version (void)
     
    opj_codec_t *OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT p_format)
     Creates a J2K/JP2 decompression structure. More...
     
    void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_t *parameters)
     Set decoding parameters to default values. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_t *p_codec, int num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_t *p_codec, opj_dparameters_t *parameters)
     Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
     Decodes an image header. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
     Restrict the number of components to decode. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
     Reads a tile header. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Reads a tile data. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
     Get the decoded tile from the codec. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_t *p_codec, OPJ_UINT32 res_factor)
     Set the resolution factor of the decoded image. More...
     
    opj_codec_t *OPJ_CALLCONV opj_create_compress (OPJ_CODEC_FORMAT p_format)
     Creates a J2K/JP2 compression structure. More...
     
    void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_t *parameters)
     Set encoding parameters to default values, that means : More...
     
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *p_image)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_t *p_codec, const char *const *options)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
     Start to compress the current image. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_t *p_info, opj_stream_t *p_stream)
     Encode an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     End to compress the current image. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Read after the codestream if necessary. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
     Sets the MCT matrix to use. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Writes a tile with the given data. More...
     
    void OPJ_CALLCONV opj_destroy_codec (opj_codec_t *p_codec)
     Destroy a decompressor handle. More...
     
    void OPJ_CALLCONV opj_dump_codec (opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     Dump the codec information into the output stream. More...
     
    opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info (opj_codec_t *p_codec)
     Get the codestream information from the codec. More...
     
    void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t **cstr_info)
     Destroy Codestream information after compression or decompression. More...
     
    opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index (opj_codec_t *p_codec)
     Get the codestream index from the codec. More...
     
    void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t **p_cstr_index)
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream (const char *fname, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with default parameters (helper function) More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream (const char *fname, OPJ_SIZE_T p_size, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with a specific buffer size. More...
     
    void *OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
     Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free. More...
     
    void OPJ_CALLCONV opj_image_data_free (void *ptr)
     Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc. More...
     
    +

    Function Documentation

    + +

    ◆ opj_codec_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_tp_codec,
    int num_threads 
    )
    +
    + +

    Allocates worker threads for the compressor/decompressor.

    +

    By default, only the main thread is used. If this function is not used, but the OPJ_NUM_THREADS environment variable is set, its value will be used to initialize the number of threads. The value can be either an integer number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is called, this function will override the behaviour of the environment variable.

    +

    Currently this function must be called after opj_setup_decoder() and before opj_read_header().

    +

    Note: currently only has effect on the decompressor.

    +
    Parameters
    + + + +
    p_codecdecompressor handler
    num_threadsnumber of threads.
    +
    +
    +
    Returns
    OPJ_TRUE if the decoder is correctly set
    + +

    References opj_codec_private::m_codec, OPJ_FALSE, and opj_codec_private::opj_set_threads.

    + +
    +
    + +

    ◆ opj_create_compress()

    + + + +

    ◆ opj_create_decompress()

    + +
    +
    + + + + + + + + +
    opj_codec_t* OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
    +
    +
    + +

    ◆ opj_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_tp_decompressor,
    opj_stream_tp_stream,
    opj_image_tp_image 
    )
    +
    + +

    Decode an image from a JPEG-2000 codestream.

    +
    Parameters
    + + + + +
    p_decompressordecompressor handle
    p_streamInput buffer stream
    p_imagethe decoded image
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_decode_tile_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    +
    + +

    Reads a tile data.

    +

    This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    +

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    +
    Parameters
    + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile being decoded, this should be the value set by opj_read_tile_header.
    p_datapointer to a memory block that will hold the decoded data.
    p_data_sizesize of p_data. p_data_size should be bigger or equal to the value set by opj_read_tile_header.
    p_streamthe stream to decode.
    +
    +
    +
    Returns
    true if the data could be decoded.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_destroy_codec()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_destroy_codec (opj_codec_tp_codec)
    +
    + +

    Destroy a decompressor handle.

    +
    Parameters
    + + +
    p_codecdecompressor handle to destroy
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_decompression, and opj_free().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_destroy_cstr_index()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t ** p_cstr_index)
    +
    + +

    References j2k_destroy_cstr_index().

    + +
    +
    + +

    ◆ opj_destroy_cstr_info()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t ** cstr_info)
    +
    + +

    Destroy Codestream information after compression or decompression.

    +
    Parameters
    + + +
    cstr_infoCodestream information structure
    +
    +
    + +

    References opj_free().

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ opj_dump_codec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV opj_dump_codec (opj_codec_tp_codec,
    OPJ_INT32 info_flag,
    FILE * output_stream 
    )
    +
    + +

    Dump the codec information into the output stream.

    +
    Parameters
    + + + + +
    p_codecthe jpeg2000 codec.
    info_flagtype of information dump.
    output_streamoutput stream where dump the information gotten from the codec.
    +
    +
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_dump_codec.

    + +
    +
    + +

    ◆ opj_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    Encode an image into a JPEG-2000 codestream.

    +
    Parameters
    + + + +
    p_codeccompressor handle
    p_streamOutput buffer stream
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_tp_codec,
    const char *const * p_options 
    )
    +
    + +

    Specify extra options for the encoder.

    +

    This may be called after opj_setup_encoder() and before opj_start_compress()

    +

    This is the way to add new options in a fully ABI compatible way, without extending the opj_cparameters_t structure.

    +

    Currently supported options are:

      +
    • +PLT=YES/NO. Defaults to NO. If set to YES, PLT marker segments, indicating the length of each packet in the tile-part header, will be written. Since 2.3.2
    • +
    +
    Parameters
    + + + +
    p_codecCompressor handle
    p_optionsCompression options. This should be a NULL terminated array of strings. Each string is of the form KEY=VALUE.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    +
    Since
    2.3.2
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    End to compress the current image.

    +
    Parameters
    + + + +
    p_codecCompressor handle
    p_streamInput stgream
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    Read after the codestream if necessary.

    +
    Parameters
    + + + +
    p_codecthe JPEG2000 codec to read.
    p_streamthe JPEG2000 stream.
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_get_cstr_index()

    + +
    +
    + + + + + + + + +
    opj_codestream_index_t* OPJ_CALLCONV opj_get_cstr_index (opj_codec_tp_codec)
    +
    + +

    Get the codestream index from the codec.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a codestream index structure.
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_index.

    + +
    +
    + +

    ◆ opj_get_cstr_info()

    + +
    +
    + + + + + + + + +
    opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info (opj_codec_tp_codec)
    +
    + +

    Get the codestream information from the codec.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a codestream information structure.
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_info.

    + +
    +
    + +

    ◆ opj_get_data_length_from_file()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT64 opj_get_data_length_from_file (FILE * p_file)
    +
    +static
    +
    + +

    References OPJ_FSEEK, and OPJ_FTELL.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_get_decoded_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_tp_codec,
    opj_stream_tp_stream,
    opj_image_tp_image,
    OPJ_UINT32 tile_index 
    )
    +
    + +

    Get the decoded tile from the codec.

    +
    Parameters
    + + + + + +
    p_codecthe jpeg2000 codec.
    p_streaminput streamm
    p_imageoutput image
    tile_indexindex of the tile which will be decode
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_image_data_alloc()

    + +
    +
    + + + + + + + + +
    void* OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
    +
    + +

    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.

    +
    Parameters
    + + +
    sizenumber of bytes to allocate
    +
    +
    +
    Returns
    a new pointer if successful, NULL otherwise.
    +
    Since
    2.2.0
    + +

    References opj_aligned_malloc().

    + +

    Referenced by opj_alloc_tile_component_data(), opj_image_create(), opj_j2k_update_image_data(), opj_jp2_apply_pclr(), and opj_tcd_decode_tile().

    + +
    +
    + +

    ◆ opj_image_data_free()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_image_data_free (void * ptr)
    +
    + +

    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.

    +
    Parameters
    + + +
    ptrPointer to free
    +
    +
    +
    Since
    2.2.0
    + +

    References opj_aligned_free().

    + +

    Referenced by opj_alloc_tile_component_data(), opj_copy_image_header(), opj_image_destroy(), opj_j2k_decode_tiles(), opj_j2k_get_tile(), opj_j2k_move_data_from_codec_to_output_image(), opj_jp2_apply_pclr(), opj_tcd_decode_tile(), opj_tcd_free_tile(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_read_from_file()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_SIZE_T opj_read_from_file (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    FILE * p_file 
    )
    +
    +static
    +
    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_tp_stream,
    opj_codec_tp_codec,
    opj_image_t ** p_image 
    )
    +
    + +

    Decodes an image header.

    +
    Parameters
    + + + + +
    p_streamthe jpeg2000 stream.
    p_codecthe jpeg2000 codec to read.
    p_imagethe image structure initialized with the characteristics of encoded image.
    +
    +
    +
    Returns
    true if the main header of the codestream and the JP2 header is correctly read.
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_tp_codec,
    opj_stream_tp_stream,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_should_go_on 
    )
    +
    + +

    Reads a tile header.

    +

    This function is compulsory and allows one to know the size of the tile that will be decoded. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    +
    Parameters
    + + + + + + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexpointer to a value that will hold the index of the tile being decoded, in case of success.
    p_data_sizepointer to a value that will hold the maximum size of the decoded data, in case of success. In case of truncated codestreams, the actual number of bytes decoded may be lower. The computation of the size is the same as depicted in opj_write_tile.
    p_tile_x0pointer to a value that will hold the x0 pos of the tile (in the image).
    p_tile_y0pointer to a value that will hold the y0 pos of the tile (in the image).
    p_tile_x1pointer to a value that will hold the x1 pos of the tile (in the image).
    p_tile_y1pointer to a value that will hold the y1 pos of the tile (in the image).
    p_nb_compspointer to a value that will hold the number of components in the tile.
    p_should_go_onpointer to a boolean that will hold the fact that the decoding should go on. In case the codestream is over at the time of the call, the value will be set to false. The user should then stop the decoding.
    p_streamthe stream to decode.
    +
    +
    +
    Returns
    true if the tile header could be decoded. In case the decoding should end, the returned value is still true. returning false may be the result of a shortage of memory or an internal error.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_seek_from_file()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_seek_from_file (OPJ_OFF_T p_nb_bytes,
    FILE * p_user_data 
    )
    +
    +static
    +
    + +

    References OPJ_FALSE, OPJ_FSEEK, and OPJ_TRUE.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_tp_codec,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +

    The coordinates passed to this function should be expressed in the reference grid, that is to say at the highest resolution level, even if requesting the image at lower resolution levels.

    +

    Generally opj_set_decode_area() should be followed by opj_decode(), and the codec cannot be re-used. In the particular case of an image made of a single tile, several sequences of calls to opoj_set_decode_area() and opj_decode() are allowed, and will bring performance improvements when reading an image by chunks.

    +
    Parameters
    + + + + + + + +
    p_codecthe jpeg2000 codec.
    p_imagethe decoded image previously set by opj_read_header
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_tp_codec,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    OPJ_BOOL apply_color_transforms 
    )
    +
    + +

    Restrict the number of components to decode.

    +

    This function should be called after opj_read_header().

    +

    This function enables to restrict the set of decoded components to the specified indices. Note that the current implementation (apply_color_transforms == OPJ_FALSE) is such that neither the multi-component transform at codestream level, nor JP2 channel transformations will be applied. Consequently the indices are relative to the codestream.

    +

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    +
    Parameters
    + + + + + +
    p_codecthe jpeg2000 codec to read.
    numcompsSize of the comps_indices array.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0)
    apply_color_transformsWhether multi-component transform at codestream level or JP2 channel transformations should be applied. Currently this parameter should be set to OPJ_FALSE. Setting it to OPJ_TRUE will result in an error.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_set_decoded_resolution_factor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_tp_codec,
    OPJ_UINT32 res_factor 
    )
    +
    + +

    Set the resolution factor of the decoded image.

    +
    Parameters
    + + + +
    p_codecthe jpeg2000 codec.
    res_factorresolution factor to set
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_set_default_decoder_parameters()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_tparameters)
    +
    +
    + +

    ◆ opj_set_default_encoder_parameters()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_tparameters)
    +
    + +

    Set encoding parameters to default values, that means :

    +
      +
    • +Lossless
    • +
    • +1 tile
    • +
    • +Size of precinct : 2^15 x 2^15 (means 1 precinct)
    • +
    • +Size of code-block : 64 x 64
    • +
    • +Number of resolutions: 6
    • +
    • +No SOP marker in the codestream
    • +
    • +No EPH marker in the codestream
    • +
    • +No sub-sampling in x or y direction
    • +
    • +No mode switch activated
    • +
    • +Progression order: LRCP
    • +
    • +No index file
    • +
    • +No ROI upshifted
    • +
    • +No offset of the origin of the image
    • +
    • +No offset of the origin of the tiles
    • +
    • +Reversible DWT 5-3
    • +
    +
    Parameters
    + + +
    parametersCompression parameters
    +
    +
    + +

    References opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cparameters::cod_format, opj_cparameters::cp_cinema, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_rsiz, opj_cparameters::decod_format, opj_cparameters::jpip_on, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_cparameters::max_comp_size, opj_cparameters::numresolution, OPJ_COMP_PARAM_DEFAULT_CBLOCKH, OPJ_COMP_PARAM_DEFAULT_CBLOCKW, OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION, OPJ_COMP_PARAM_DEFAULT_PROG_ORDER, OPJ_FALSE, OPJ_OFF, OPJ_PROFILE_NONE, OPJ_STD_RSIZ, opj_cparameters::prog_order, opj_cparameters::roi_compno, opj_cparameters::rsiz, opj_cparameters::subsampling_dx, opj_cparameters::subsampling_dy, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, and opj_cparameters::tp_on.

    + +
    +
    + +

    ◆ opj_set_error_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the error handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_event_mgr::error_handler, opj_event_mgr::m_error_data, opj_codec_private::m_event_mgr, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_info_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the info handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_event_mgr::info_handler, opj_codec_private::m_event_mgr, opj_event_mgr::m_info_data, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_MCT()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_tparameters,
    OPJ_FLOAT32pEncodingMatrix,
    OPJ_INT32p_dc_shift,
    OPJ_UINT32 pNbComp 
    )
    +
    + +

    Sets the MCT matrix to use.

    +
    Parameters
    + + + + + +
    parametersthe parameters to change.
    pEncodingMatrixthe encoding matrix.
    p_dc_shiftthe dc shift coefficients to use.
    pNbCompthe number of components of the image.
    +
    +
    +
    Returns
    true if the parameters could be set.
    + +

    References opj_cparameters::irreversible, opj_cparameters::mct_data, OPJ_EXTENSION_MCT, OPJ_FALSE, OPJ_IS_PART2, opj_malloc(), OPJ_PROFILE_PART2, OPJ_TRUE, opj_cparameters::rsiz, and opj_cparameters::tcp_mct.

    + +
    +
    + +

    ◆ opj_set_warning_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the warning handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_codec_private::m_event_mgr, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_tp_codec,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user.

    +
    Parameters
    + + + +
    p_codecdecompressor handler
    parametersdecompression parameters
    +
    +
    +
    Returns
    true if the decoder is correctly set
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_tp_codec,
    opj_cparameters_tparameters,
    opj_image_timage 
    )
    +
    + +

    Setup the encoder parameters using the current image and using user parameters.

    +
    Parameters
    + + + + +
    p_codecCompressor handle
    parametersCompression parameters
    imageInput filled image
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_skip_from_file()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_OFF_T opj_skip_from_file (OPJ_OFF_T p_nb_bytes,
    FILE * p_user_data 
    )
    +
    +static
    +
    + +

    References OPJ_FSEEK.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_tp_codec,
    opj_image_tp_image,
    opj_stream_tp_stream 
    )
    +
    + +

    Start to compress the current image.

    +
    Parameters
    + + + + +
    p_codecCompressor handle
    p_imageInput filled image
    p_streamInput stgream
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_stream_create_default_file_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (const char * fname,
    OPJ_BOOL p_is_read_stream 
    )
    +
    + +

    Create a stream from a file identified with its filename with default parameters (helper function)

    +
    Parameters
    + + + +
    fnamethe filename of the file to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    +
    +
    + +

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create_file_stream().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_stream_create_file_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (const char * fname,
    OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_read_stream 
    )
    +
    + +

    Create a stream from a file identified with its filename with a specific buffer size.

    +
    Parameters
    + + + + +
    fnamethe filename of the file to stream
    p_buffer_sizesize of the chunk used to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    +
    +
    + +

    References opj_get_data_length_from_file(), opj_read_from_file(), opj_seek_from_file(), opj_skip_from_file(), opj_stream_create(), opj_stream_set_read_function(), opj_stream_set_seek_function(), opj_stream_set_skip_function(), opj_stream_set_user_data(), opj_stream_set_user_data_length(), opj_stream_set_write_function(), and opj_write_from_file().

    + +

    Referenced by opj_stream_create_default_file_stream().

    + +
    +
    + +

    ◆ opj_version()

    + +
    +
    + + + + + + + + +
    const char* OPJ_CALLCONV opj_version (void )
    +
    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_write_from_file()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_SIZE_T opj_write_from_file (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    FILE * p_file 
    )
    +
    +static
    +
    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    +
    + +

    Writes a tile with the given data.

    +
    Parameters
    + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
    p_datapointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
    p_data_sizethis value os used to make sure the data being written is correct. The size must be equal to the sum for each component of tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
    p_streamthe stream to write data to.
    +
    +
    +
    Returns
    true if the data could be written.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/openjpeg_8h.html b/build/doc/html/openjpeg_8h.html new file mode 100644 index 000000000..447fc3150 --- /dev/null +++ b/build/doc/html/openjpeg_8h.html @@ -0,0 +1,5071 @@ + + + + + + + +OpenJPEG: openjpeg.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    openjpeg.h File Reference
    +
    +
    +
    #include "opj_stdint.h"
    +#include <stdio.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  opj_poc
     Progression order changes. More...
     
    struct  opj_cparameters
     Compression parameters. More...
     
    struct  opj_dparameters
     Decompression parameters. More...
     
    struct  opj_image_comp
     Defines a single image component. More...
     
    struct  opj_image
     Defines image data and characteristics. More...
     
    struct  opj_image_comptparm
     Component parameters structure used by the opj_image_create function. More...
     
    struct  opj_packet_info
     Index structure : Information concerning a packet inside tile. More...
     
    struct  opj_marker_info
     Marker structure. More...
     
    struct  opj_tp_info
     Index structure : Information concerning tile-parts. More...
     
    struct  opj_tile_info
     Index structure : information regarding tiles. More...
     
    struct  opj_codestream_info
     Index structure of the codestream. More...
     
    struct  opj_tccp_info
     Tile-component coding parameters information. More...
     
    struct  opj_tile_v2_info
     Tile coding parameters information. More...
     
    struct  opj_codestream_info_v2
     Information structure about the codestream (FIXME should be expand and enhance) More...
     
    struct  opj_tp_index
     Index structure about a tile part. More...
     
    struct  opj_tile_index
     Index structure about a tile. More...
     
    struct  opj_codestream_index
     Index structure of the codestream (FIXME should be expand and enhance) More...
     
    struct  opj_jp2_metadata
     Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    struct  opj_jp2_index
     Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define INLINE
     
    #define OPJ_DEPRECATED(func)   func
     
    #define OPJ_API
     
    #define OPJ_LOCAL
     
    #define OPJ_CALLCONV
     
    #define OPJ_TRUE   1
     
    #define OPJ_FALSE   0
     
    #define OPJ_ARG_NOT_USED(x)   (void)(x)
     
    #define OPJ_PATH_LEN   4096
     Maximum allowed size for filenames. More...
     
    #define OPJ_J2K_MAXRLVLS   33
     Number of maximum resolution level authorized. More...
     
    #define OPJ_J2K_MAXBANDS   (3*OPJ_J2K_MAXRLVLS-2)
     Number of maximum sub-band linked to number of resolution level. More...
     
    #define OPJ_J2K_DEFAULT_NB_SEGS   10
     
    #define OPJ_J2K_STREAM_CHUNK_SIZE   0x100000 /** 1 mega by default */
     
    #define OPJ_J2K_DEFAULT_HEADER_SIZE   1000
     
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS   10
     
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS   10
     
    #define JPWL_MAX_NO_TILESPECS   16
     Maximum number of tile parts expected by JPWL: increase at your will. More...
     
    #define JPWL_MAX_NO_PACKSPECS   16
     Maximum number of packet parts expected by JPWL: increase at your will. More...
     
    #define JPWL_MAX_NO_MARKERS   512
     Maximum number of JPWL markers: increase at your will. More...
     
    #define JPWL_PRIVATEINDEX_NAME   "jpwl_index_privatefilename"
     index file name used when JPWL is on More...
     
    #define JPWL_EXPECTED_COMPONENTS   3
     Expect this number of components, so you'll find better the first EPB. More...
     
    #define JPWL_MAXIMUM_TILES   8192
     Expect this maximum number of tiles, to avoid some crashes. More...
     
    #define JPWL_MAXIMUM_HAMMING   2
     Expect this maximum number of bit errors in marker id's. More...
     
    #define JPWL_MAXIMUM_EPB_ROOM   65450
     Expect this maximum number of bytes for composition of EPBs. More...
     
    #define OPJ_IMG_INFO   1
     EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump. More...
     
    #define OPJ_J2K_MH_INFO   2
     Codestream information based only on the main header. More...
     
    #define OPJ_J2K_TH_INFO   4
     Tile information based on the current tile header. More...
     
    #define OPJ_J2K_TCH_INFO   8
     Tile/Component information of all tiles. More...
     
    #define OPJ_J2K_MH_IND   16
     Codestream index based only on the main header. More...
     
    #define OPJ_J2K_TH_IND   32
     Tile index based on the current tile. More...
     
    #define OPJ_JP2_INFO   128
     <
    + More...
     
    #define OPJ_JP2_IND   256
     JP2 file index. More...
     
    #define OPJ_PROFILE_NONE   0x0000 /** no profile, conform to 15444-1 */
     JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing the RSIZ value for the J2K codestream. More...
     
    #define OPJ_PROFILE_0   0x0001 /** Profile 0 as described in 15444-1,Table A.45 */
     
    #define OPJ_PROFILE_1   0x0002 /** Profile 1 as described in 15444-1,Table A.45 */
     
    #define OPJ_PROFILE_PART2   0x8000 /** At least 1 extension defined in 15444-2 (Part-2) */
     
    #define OPJ_PROFILE_CINEMA_2K   0x0003 /** 2K cinema profile defined in 15444-1 AMD1 */
     
    #define OPJ_PROFILE_CINEMA_4K   0x0004 /** 4K cinema profile defined in 15444-1 AMD1 */
     
    #define OPJ_PROFILE_CINEMA_S2K   0x0005 /** Scalable 2K cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_CINEMA_S4K   0x0006 /** Scalable 4K cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_CINEMA_LTS   0x0007 /** Long term storage cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_BC_SINGLE   0x0100 /** Single Tile Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_BC_MULTI   0x0200 /** Multi Tile Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_BC_MULTI_R   0x0300 /** Multi Tile Reversible Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_IMF_2K   0x0400 /** 2K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_4K   0x0500 /** 4K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_8K   0x0600 /** 8K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_2K_R   0x0700 /** 2K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_4K_R   0x0800 /** 4K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_8K_R   0x0900 /** 8K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_EXTENSION_NONE   0x0000 /** No Part-2 extension */
     JPEG 2000 Part-2 extensions. More...
     
    #define OPJ_EXTENSION_MCT   0x0100 /** Custom MCT support */
     
    #define OPJ_IS_CINEMA(v)   (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
     JPEG 2000 profile macros. More...
     
    #define OPJ_IS_STORAGE(v)   ((v) == OPJ_PROFILE_CINEMA_LTS)
     
    #define OPJ_IS_BROADCAST(v)   (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
     
    #define OPJ_IS_IMF(v)   (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
     
    #define OPJ_IS_PART2(v)   ((v) & OPJ_PROFILE_PART2)
     
    #define OPJ_GET_IMF_PROFILE(v)   ((v) & 0xff00) /** Extract IMF profile without mainlevel/sublevel */
     
    #define OPJ_GET_IMF_MAINLEVEL(v)   ((v) & 0xf) /** Extract IMF main level */
     
    #define OPJ_GET_IMF_SUBLEVEL(v)   (((v) >> 4) & 0xf) /** Extract IMF sub level */
     
    #define OPJ_IMF_MAINLEVEL_MAX   11 /** Maximum main level */
     
    #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC   65 /** MSamples/sec for IMF main level 1 */
     Max. More...
     
    #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC   130 /** MSamples/sec for IMF main level 2 */
     
    #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC   195 /** MSamples/sec for IMF main level 3 */
     
    #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC   260 /** MSamples/sec for IMF main level 4 */
     
    #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC   520 /** MSamples/sec for IMF main level 5 */
     
    #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC   1200 /** MSamples/sec for IMF main level 6 */
     
    #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC   2400 /** MSamples/sec for IMF main level 7 */
     
    #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC   4800 /** MSamples/sec for IMF main level 8 */
     
    #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC   9600 /** MSamples/sec for IMF main level 9 */
     
    #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC   19200 /** MSamples/sec for IMF main level 10 */
     
    #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC   38400 /** MSamples/sec for IMF main level 11 */
     
    #define OPJ_IMF_SUBLEVEL_1_MBITSSEC   200 /** Mbits/s for IMF sub level 1 */
     Max. More...
     
    #define OPJ_IMF_SUBLEVEL_2_MBITSSEC   400 /** Mbits/s for IMF sub level 2 */
     
    #define OPJ_IMF_SUBLEVEL_3_MBITSSEC   800 /** Mbits/s for IMF sub level 3 */
     
    #define OPJ_IMF_SUBLEVEL_4_MBITSSEC   1600 /** Mbits/s for IMF sub level 4 */
     
    #define OPJ_IMF_SUBLEVEL_5_MBITSSEC   3200 /** Mbits/s for IMF sub level 5 */
     
    #define OPJ_IMF_SUBLEVEL_6_MBITSSEC   6400 /** Mbits/s for IMF sub level 6 */
     
    #define OPJ_IMF_SUBLEVEL_7_MBITSSEC   12800 /** Mbits/s for IMF sub level 7 */
     
    #define OPJ_IMF_SUBLEVEL_8_MBITSSEC   25600 /** Mbits/s for IMF sub level 8 */
     
    #define OPJ_IMF_SUBLEVEL_9_MBITSSEC   51200 /** Mbits/s for IMF sub level 9 */
     
    #define OPJ_CINEMA_24_CS   1302083 /** Maximum codestream length for 24fps */
     JPEG 2000 codestream and component size limits in cinema profiles. More...
     
    #define OPJ_CINEMA_48_CS   651041 /** Maximum codestream length for 48fps */
     
    #define OPJ_CINEMA_24_COMP   1041666 /** Maximum size per color component for 2K & 4K @ 24fps */
     
    #define OPJ_CINEMA_48_COMP   520833 /** Maximum size per color component for 2K @ 48fps */
     
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_INT32
     
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG   0x0001
     
    #define OPJ_DPARAMETERS_DUMP_FLAG   0x0002
     
    #define OPJ_STREAM_READ   OPJ_TRUE
     Stream open flags. More...
     
    #define OPJ_STREAM_WRITE   OPJ_FALSE
     The stream was opened for writing. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef int OPJ_BOOL
     
    typedef char OPJ_CHAR
     
    typedef float OPJ_FLOAT32
     
    typedef double OPJ_FLOAT64
     
    typedef unsigned char OPJ_BYTE
     
    typedef int8_t OPJ_INT8
     
    typedef uint8_t OPJ_UINT8
     
    typedef int16_t OPJ_INT16
     
    typedef uint16_t OPJ_UINT16
     
    typedef int32_t OPJ_INT32
     
    typedef uint32_t OPJ_UINT32
     
    typedef int64_t OPJ_INT64
     
    typedef uint64_t OPJ_UINT64
     
    typedef int64_t OPJ_OFF_T
     
    typedef size_t OPJ_SIZE_T
     
    typedef enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities. More...
     
    typedef enum CINEMA_MODE OPJ_CINEMA_MODE
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode. More...
     
    typedef enum PROG_ORDER OPJ_PROG_ORDER
     Progression order. More...
     
    typedef enum COLOR_SPACE OPJ_COLOR_SPACE
     Supported image color spaces. More...
     
    typedef enum CODEC_FORMAT OPJ_CODEC_FORMAT
     Supported codec. More...
     
    typedef void(* opj_msg_callback) (const char *msg, void *client_data)
     Callback function prototype for events. More...
     
    typedef struct opj_poc opj_poc_t
     Progression order changes. More...
     
    typedef struct opj_cparameters opj_cparameters_t
     Compression parameters. More...
     
    typedef struct opj_dparameters opj_dparameters_t
     Decompression parameters. More...
     
    typedef void * opj_codec_t
     JPEG2000 codec V2. More...
     
    typedef OPJ_SIZE_T(* opj_stream_read_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_SIZE_T(* opj_stream_write_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_OFF_T(* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_BOOL(* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     
    typedef void(* opj_stream_free_user_data_fn) (void *p_user_data)
     
    typedef void * opj_stream_t
     
    typedef struct opj_image_comp opj_image_comp_t
     Defines a single image component. More...
     
    typedef struct opj_image opj_image_t
     Defines image data and characteristics. More...
     
    typedef struct opj_image_comptparm opj_image_cmptparm_t
     Component parameters structure used by the opj_image_create function. More...
     
    typedef struct opj_packet_info opj_packet_info_t
     Index structure : Information concerning a packet inside tile. More...
     
    typedef struct opj_marker_info opj_marker_info_t
     Marker structure. More...
     
    typedef struct opj_tp_info opj_tp_info_t
     Index structure : Information concerning tile-parts. More...
     
    typedef struct opj_tile_info opj_tile_info_t
     Index structure : information regarding tiles. More...
     
    typedef struct opj_codestream_info opj_codestream_info_t
     Index structure of the codestream. More...
     
    typedef struct opj_tccp_info opj_tccp_info_t
     Tile-component coding parameters information. More...
     
    typedef struct opj_tile_v2_info opj_tile_info_v2_t
     Tile coding parameters information. More...
     
    typedef struct opj_codestream_info_v2 opj_codestream_info_v2_t
     Information structure about the codestream (FIXME should be expand and enhance) More...
     
    typedef struct opj_tp_index opj_tp_index_t
     Index structure about a tile part. More...
     
    typedef struct opj_tile_index opj_tile_index_t
     Index structure about a tile. More...
     
    typedef struct opj_codestream_index opj_codestream_index_t
     Index structure of the codestream (FIXME should be expand and enhance) More...
     
    typedef struct opj_jp2_metadata opj_jp2_metadata_t
     Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    typedef struct opj_jp2_index opj_jp2_index_t
     Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    + + + + + + + + + + + + + + + + +

    +Enumerations

    enum  RSIZ_CAPABILITIES { OPJ_STD_RSIZ = 0, +OPJ_CINEMA2K = 3, +OPJ_CINEMA4K = 4, +OPJ_MCT = 0x8100 + }
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities. More...
     
    enum  CINEMA_MODE { OPJ_OFF = 0, +OPJ_CINEMA2K_24 = 1, +OPJ_CINEMA2K_48 = 2, +OPJ_CINEMA4K_24 = 3 + }
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode. More...
     
    enum  PROG_ORDER {
    +  OPJ_PROG_UNKNOWN = -1, +OPJ_LRCP = 0, +OPJ_RLCP = 1, +OPJ_RPCL = 2, +
    +  OPJ_PCRL = 3, +OPJ_CPRL = 4 +
    + }
     Progression order. More...
     
    enum  COLOR_SPACE {
    +  OPJ_CLRSPC_UNKNOWN = -1, +OPJ_CLRSPC_UNSPECIFIED = 0, +OPJ_CLRSPC_SRGB = 1, +OPJ_CLRSPC_GRAY = 2, +
    +  OPJ_CLRSPC_SYCC = 3, +OPJ_CLRSPC_EYCC = 4, +OPJ_CLRSPC_CMYK = 5 +
    + }
     Supported image color spaces. More...
     
    enum  CODEC_FORMAT {
    +  OPJ_CODEC_UNKNOWN = -1, +OPJ_CODEC_J2K = 0, +OPJ_CODEC_JPT = 1, +OPJ_CODEC_JP2 = 2, +
    +  OPJ_CODEC_JPP = 3, +OPJ_CODEC_JPX = 4 +
    + }
     Supported codec. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    const OPJ_API char *OPJ_CALLCONV opj_version (void)
     
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Create an image. More...
     
    OPJ_API void OPJ_CALLCONV opj_image_destroy (opj_image_t *image)
     Deallocate any resources associated with an image. More...
     
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Creates an image without allocating memory for the image (used in the new version of the library). More...
     
    OPJ_API void *OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
     Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free. More...
     
    OPJ_API void OPJ_CALLCONV opj_image_data_free (void *ptr)
     Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
     Creates an abstract stream. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_input)
     Creates an abstract stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_destroy (opj_stream_t *p_stream)
     Destroys a stream created by opj_create_stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_t *p_stream, opj_stream_read_fn p_function)
     Sets the given function to be used as a read function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_t *p_stream, opj_stream_write_fn p_function)
     Sets the given function to be used as a write function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_t *p_stream, opj_stream_skip_fn p_function)
     Sets the given function to be used as a skip function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_t *p_stream, opj_stream_seek_fn p_function)
     Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
     Sets the given data to be used as a user data for the stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_t *p_stream, OPJ_UINT64 data_length)
     Sets the length of the user data for the stream. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream (const char *fname, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with default parameters (helper function) More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream (const char *fname, OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with a specific buffer size. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the info handler use by openjpeg. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the warning handler use by openjpeg. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the error handler use by openjpeg. More...
     
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
     Creates a J2K/JP2 decompression structure. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_codec (opj_codec_t *p_codec)
     Destroy a decompressor handle. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Read after the codestream if necessary. More...
     
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_t *parameters)
     Set decoding parameters to default values. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_t *p_codec, opj_dparameters_t *parameters)
     Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_t *p_codec, int num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
     Decodes an image header. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
     Restrict the number of components to decode. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
     Sets the given area to be decoded. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_t *p_decompressor, opj_stream_t *p_stream, opj_image_t *p_image)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
     Get the decoded tile from the codec. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_t *p_codec, OPJ_UINT32 res_factor)
     Set the resolution factor of the decoded image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Writes a tile with the given data. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
     Reads a tile header. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Reads a tile data. More...
     
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_compress (OPJ_CODEC_FORMAT format)
     Creates a J2K/JP2 compression structure. More...
     
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_t *parameters)
     Set encoding parameters to default values, that means : More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *image)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_t *p_codec, const char *const *p_options)
     Specify extra options for the encoder. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
     Start to compress the current image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     End to compress the current image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Encode an image into a JPEG-2000 codestream. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t **cstr_info)
     Destroy Codestream information after compression or decompression. More...
     
    OPJ_API void OPJ_CALLCONV opj_dump_codec (opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     Dump the codec information into the output stream. More...
     
    OPJ_API opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info (opj_codec_t *p_codec)
     Get the codestream information from the codec. More...
     
    OPJ_API opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index (opj_codec_t *p_codec)
     Get the codestream index from the codec. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t **p_cstr_index)
     
    OPJ_API opj_jp2_metadata_t *OPJ_CALLCONV opj_get_jp2_metadata (opj_codec_t *p_codec)
     Get the JP2 file information from the codec FIXME. More...
     
    OPJ_API opj_jp2_index_t *OPJ_CALLCONV opj_get_jp2_index (opj_codec_t *p_codec)
     Get the JP2 file index from the codec FIXME. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
     Sets the MCT matrix to use. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void)
     Returns if the library is built with thread support. More...
     
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus (void)
     Return the number of virtual CPUs. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ INLINE

    + +
    +
    + + + + +
    #define INLINE
    +
    + +
    +
    + +

    ◆ JPWL_EXPECTED_COMPONENTS

    + +
    +
    + + + + +
    #define JPWL_EXPECTED_COMPONENTS   3
    +
    + +

    Expect this number of components, so you'll find better the first EPB.

    + +
    +
    + +

    ◆ JPWL_MAX_NO_MARKERS

    + +
    +
    + + + + +
    #define JPWL_MAX_NO_MARKERS   512
    +
    + +

    Maximum number of JPWL markers: increase at your will.

    + +
    +
    + +

    ◆ JPWL_MAX_NO_PACKSPECS

    + +
    +
    + + + + +
    #define JPWL_MAX_NO_PACKSPECS   16
    +
    + +

    Maximum number of packet parts expected by JPWL: increase at your will.

    + +
    +
    + +

    ◆ JPWL_MAX_NO_TILESPECS

    + +
    +
    + + + + +
    #define JPWL_MAX_NO_TILESPECS   16
    +
    + +

    Maximum number of tile parts expected by JPWL: increase at your will.

    + +
    +
    + +

    ◆ JPWL_MAXIMUM_EPB_ROOM

    + +
    +
    + + + + +
    #define JPWL_MAXIMUM_EPB_ROOM   65450
    +
    + +

    Expect this maximum number of bytes for composition of EPBs.

    + +
    +
    + +

    ◆ JPWL_MAXIMUM_HAMMING

    + +
    +
    + + + + +
    #define JPWL_MAXIMUM_HAMMING   2
    +
    + +

    Expect this maximum number of bit errors in marker id's.

    + +
    +
    + +

    ◆ JPWL_MAXIMUM_TILES

    + +
    +
    + + + + +
    #define JPWL_MAXIMUM_TILES   8192
    +
    + +

    Expect this maximum number of tiles, to avoid some crashes.

    + +
    +
    + +

    ◆ JPWL_PRIVATEINDEX_NAME

    + +
    +
    + + + + +
    #define JPWL_PRIVATEINDEX_NAME   "jpwl_index_privatefilename"
    +
    + +

    index file name used when JPWL is on

    + +
    +
    + +

    ◆ OPJ_API

    + +
    +
    + + + + +
    #define OPJ_API
    +
    + +
    +
    + +

    ◆ OPJ_ARG_NOT_USED

    + +
    +
    + + + + + + + + +
    #define OPJ_ARG_NOT_USED( x)   (void)(x)
    +
    + +
    +
    + +

    ◆ OPJ_CALLCONV

    + +
    +
    + + + + +
    #define OPJ_CALLCONV
    +
    + +
    +
    + +

    ◆ OPJ_CINEMA_24_COMP

    + +
    +
    + + + + +
    #define OPJ_CINEMA_24_COMP   1041666 /** Maximum size per color component for 2K & 4K @ 24fps */
    +
    + +
    +
    + +

    ◆ OPJ_CINEMA_24_CS

    + +
    +
    + + + + +
    #define OPJ_CINEMA_24_CS   1302083 /** Maximum codestream length for 24fps */
    +
    + +

    JPEG 2000 codestream and component size limits in cinema profiles.

    + +
    +
    + +

    ◆ OPJ_CINEMA_48_COMP

    + +
    +
    + + + + +
    #define OPJ_CINEMA_48_COMP   520833 /** Maximum size per color component for 2K @ 48fps */
    +
    + +
    +
    + +

    ◆ OPJ_CINEMA_48_CS

    + +
    +
    + + + + +
    #define OPJ_CINEMA_48_CS   651041 /** Maximum codestream length for 48fps */
    +
    + +
    +
    + +

    ◆ OPJ_DEPRECATED

    + +
    +
    + + + + + + + + +
    #define OPJ_DEPRECATED( func)   func
    +
    + +
    +
    + +

    ◆ OPJ_DPARAMETERS_DUMP_FLAG

    + +
    +
    + + + + +
    #define OPJ_DPARAMETERS_DUMP_FLAG   0x0002
    +
    + +
    +
    + +

    ◆ OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG

    + +
    +
    + + + + +
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG   0x0001
    +
    + +
    +
    + +

    ◆ OPJ_EXTENSION_MCT

    + +
    +
    + + + + +
    #define OPJ_EXTENSION_MCT   0x0100 /** Custom MCT support */
    +
    + +
    +
    + +

    ◆ OPJ_EXTENSION_NONE

    + +
    +
    + + + + +
    #define OPJ_EXTENSION_NONE   0x0000 /** No Part-2 extension */
    +
    + +

    JPEG 2000 Part-2 extensions.

    + +
    +
    + +

    ◆ OPJ_FALSE

    + +
    +
    + + + + +
    #define OPJ_FALSE   0
    +
    + +
    +
    + +

    ◆ OPJ_GET_IMF_MAINLEVEL

    + +
    +
    + + + + + + + + +
    #define OPJ_GET_IMF_MAINLEVEL( v)   ((v) & 0xf) /** Extract IMF main level */
    +
    + +
    +
    + +

    ◆ OPJ_GET_IMF_PROFILE

    + +
    +
    + + + + + + + + +
    #define OPJ_GET_IMF_PROFILE( v)   ((v) & 0xff00) /** Extract IMF profile without mainlevel/sublevel */
    +
    + +
    +
    + +

    ◆ OPJ_GET_IMF_SUBLEVEL

    + +
    +
    + + + + + + + + +
    #define OPJ_GET_IMF_SUBLEVEL( v)   (((v) >> 4) & 0xf) /** Extract IMF sub level */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_10_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC   19200 /** MSamples/sec for IMF main level 10 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_11_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC   38400 /** MSamples/sec for IMF main level 11 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_1_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC   65 /** MSamples/sec for IMF main level 1 */
    +
    + +

    Max.

    +

    Components Sampling Rate (MSamples/sec) per IMF main level

    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_2_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC   130 /** MSamples/sec for IMF main level 2 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_3_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC   195 /** MSamples/sec for IMF main level 3 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_4_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC   260 /** MSamples/sec for IMF main level 4 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_5_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC   520 /** MSamples/sec for IMF main level 5 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_6_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC   1200 /** MSamples/sec for IMF main level 6 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_7_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC   2400 /** MSamples/sec for IMF main level 7 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_8_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC   4800 /** MSamples/sec for IMF main level 8 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_9_MSAMPLESEC

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC   9600 /** MSamples/sec for IMF main level 9 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_MAINLEVEL_MAX

    + +
    +
    + + + + +
    #define OPJ_IMF_MAINLEVEL_MAX   11 /** Maximum main level */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_1_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_1_MBITSSEC   200 /** Mbits/s for IMF sub level 1 */
    +
    + +

    Max.

    +

    compressed Bit Rate (Mbits/s) per IMF sub level

    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_2_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_2_MBITSSEC   400 /** Mbits/s for IMF sub level 2 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_3_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_3_MBITSSEC   800 /** Mbits/s for IMF sub level 3 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_4_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_4_MBITSSEC   1600 /** Mbits/s for IMF sub level 4 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_5_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_5_MBITSSEC   3200 /** Mbits/s for IMF sub level 5 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_6_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_6_MBITSSEC   6400 /** Mbits/s for IMF sub level 6 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_7_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_7_MBITSSEC   12800 /** Mbits/s for IMF sub level 7 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_8_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_8_MBITSSEC   25600 /** Mbits/s for IMF sub level 8 */
    +
    + +
    +
    + +

    ◆ OPJ_IMF_SUBLEVEL_9_MBITSSEC

    + +
    +
    + + + + +
    #define OPJ_IMF_SUBLEVEL_9_MBITSSEC   51200 /** Mbits/s for IMF sub level 9 */
    +
    + +
    +
    + +

    ◆ OPJ_IMG_INFO

    + +
    +
    + + + + +
    #define OPJ_IMG_INFO   1
    +
    + +

    EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump.

    +

    Basic image information provided to the user

    + +
    +
    + +

    ◆ OPJ_IS_BROADCAST

    + +
    +
    + + + + + + + + +
    #define OPJ_IS_BROADCAST( v)   (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
    +
    + +
    +
    + +

    ◆ OPJ_IS_CINEMA

    + +
    +
    + + + + + + + + +
    #define OPJ_IS_CINEMA( v)   (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
    +
    + +

    JPEG 2000 profile macros.

    + +
    +
    + +

    ◆ OPJ_IS_IMF

    + +
    +
    + + + + + + + + +
    #define OPJ_IS_IMF( v)   (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
    +
    + +
    +
    + +

    ◆ OPJ_IS_PART2

    + +
    +
    + + + + + + + + +
    #define OPJ_IS_PART2( v)   ((v) & OPJ_PROFILE_PART2)
    +
    + +
    +
    + +

    ◆ OPJ_IS_STORAGE

    + +
    +
    + + + + + + + + +
    #define OPJ_IS_STORAGE( v)   ((v) == OPJ_PROFILE_CINEMA_LTS)
    +
    + +
    +
    + +

    ◆ OPJ_J2K_DEFAULT_HEADER_SIZE

    + +
    +
    + + + + +
    #define OPJ_J2K_DEFAULT_HEADER_SIZE   1000
    +
    + +
    +
    + +

    ◆ OPJ_J2K_DEFAULT_NB_SEGS

    + +
    +
    + + + + +
    #define OPJ_J2K_DEFAULT_NB_SEGS   10
    +
    + +
    +
    + +

    ◆ OPJ_J2K_MAXBANDS

    + +
    +
    + + + + +
    #define OPJ_J2K_MAXBANDS   (3*OPJ_J2K_MAXRLVLS-2)
    +
    + +

    Number of maximum sub-band linked to number of resolution level.

    + +
    +
    + +

    ◆ OPJ_J2K_MAXRLVLS

    + +
    +
    + + + + +
    #define OPJ_J2K_MAXRLVLS   33
    +
    + +

    Number of maximum resolution level authorized.

    + +
    +
    + +

    ◆ OPJ_J2K_MCC_DEFAULT_NB_RECORDS

    + +
    +
    + + + + +
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS   10
    +
    + +
    +
    + +

    ◆ OPJ_J2K_MCT_DEFAULT_NB_RECORDS

    + +
    +
    + + + + +
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS   10
    +
    + +
    +
    + +

    ◆ OPJ_J2K_MH_IND

    + +
    +
    + + + + +
    #define OPJ_J2K_MH_IND   16
    +
    + +

    Codestream index based only on the main header.

    + +
    +
    + +

    ◆ OPJ_J2K_MH_INFO

    + +
    +
    + + + + +
    #define OPJ_J2K_MH_INFO   2
    +
    + +

    Codestream information based only on the main header.

    + +
    +
    + +

    ◆ OPJ_J2K_STREAM_CHUNK_SIZE

    + +
    +
    + + + + +
    #define OPJ_J2K_STREAM_CHUNK_SIZE   0x100000 /** 1 mega by default */
    +
    + +
    +
    + +

    ◆ OPJ_J2K_TCH_INFO

    + +
    +
    + + + + +
    #define OPJ_J2K_TCH_INFO   8
    +
    + +

    Tile/Component information of all tiles.

    + +
    +
    + +

    ◆ OPJ_J2K_TH_IND

    + +
    +
    + + + + +
    #define OPJ_J2K_TH_IND   32
    +
    + +

    Tile index based on the current tile.

    + +
    +
    + +

    ◆ OPJ_J2K_TH_INFO

    + +
    +
    + + + + +
    #define OPJ_J2K_TH_INFO   4
    +
    + +

    Tile information based on the current tile header.

    + +
    +
    + +

    ◆ OPJ_JP2_IND

    + +
    +
    + + + + +
    #define OPJ_JP2_IND   256
    +
    + +

    JP2 file index.

    + +
    +
    + +

    ◆ OPJ_JP2_INFO

    + +
    +
    + + + + +
    #define OPJ_JP2_INFO   128
    +
    + +

    <
    +

    +

    JP2 file information

    + +
    +
    + +

    ◆ OPJ_LOCAL

    + +
    +
    + + + + +
    #define OPJ_LOCAL
    +
    + +
    +
    + +

    ◆ OPJ_PATH_LEN

    + +
    +
    + + + + +
    #define OPJ_PATH_LEN   4096
    +
    + +

    Maximum allowed size for filenames.

    + +
    +
    + +

    ◆ OPJ_PROFILE_0

    + +
    +
    + + + + +
    #define OPJ_PROFILE_0   0x0001 /** Profile 0 as described in 15444-1,Table A.45 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_1

    + +
    +
    + + + + +
    #define OPJ_PROFILE_1   0x0002 /** Profile 1 as described in 15444-1,Table A.45 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_BC_MULTI

    + +
    +
    + + + + +
    #define OPJ_PROFILE_BC_MULTI   0x0200 /** Multi Tile Broadcast profile defined in 15444-1 AMD3 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_BC_MULTI_R

    + +
    +
    + + + + +
    #define OPJ_PROFILE_BC_MULTI_R   0x0300 /** Multi Tile Reversible Broadcast profile defined in 15444-1 AMD3 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_BC_SINGLE

    + +
    +
    + + + + +
    #define OPJ_PROFILE_BC_SINGLE   0x0100 /** Single Tile Broadcast profile defined in 15444-1 AMD3 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_CINEMA_2K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_CINEMA_2K   0x0003 /** 2K cinema profile defined in 15444-1 AMD1 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_CINEMA_4K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_CINEMA_4K   0x0004 /** 4K cinema profile defined in 15444-1 AMD1 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_CINEMA_LTS

    + +
    +
    + + + + +
    #define OPJ_PROFILE_CINEMA_LTS   0x0007 /** Long term storage cinema profile defined in 15444-1 AMD2 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_CINEMA_S2K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_CINEMA_S2K   0x0005 /** Scalable 2K cinema profile defined in 15444-1 AMD2 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_CINEMA_S4K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_CINEMA_S4K   0x0006 /** Scalable 4K cinema profile defined in 15444-1 AMD2 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_2K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_2K   0x0400 /** 2K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_2K_R

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_2K_R   0x0700 /** 2K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_4K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_4K   0x0500 /** 4K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_4K_R

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_4K_R   0x0800 /** 4K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_8K

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_8K   0x0600 /** 8K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_IMF_8K_R

    + +
    +
    + + + + +
    #define OPJ_PROFILE_IMF_8K_R   0x0900 /** 8K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    +
    + +
    +
    + +

    ◆ OPJ_PROFILE_NONE

    + +
    +
    + + + + +
    #define OPJ_PROFILE_NONE   0x0000 /** no profile, conform to 15444-1 */
    +
    + +

    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing the RSIZ value for the J2K codestream.

    +

    The RSIZ value triggers various encoding options, as detailed in Table A.10. If OPJ_PROFILE_PART2 is chosen, it has to be combined with one or more extensions described hereunder. Example: rsiz = OPJ_PROFILE_PART2 | OPJ_EXTENSION_MCT; For broadcast profiles, the OPJ_PROFILE value has to be combined with the targeted mainlevel (3-0 LSB, value between 0 and 11): Example: rsiz = OPJ_PROFILE_BC_MULTI | 0x0005; (here mainlevel 5) For IMF profiles, the OPJ_PROFILE value has to be combined with the targeted mainlevel (3-0 LSB, value between 0 and 11) and sublevel (7-4 LSB, value between 0 and 9): Example: rsiz = OPJ_PROFILE_IMF_2K | 0x0040 | 0x0005; (here main 5 and sublevel 4)

    + +
    +
    + +

    ◆ OPJ_PROFILE_PART2

    + +
    +
    + + + + +
    #define OPJ_PROFILE_PART2   0x8000 /** At least 1 extension defined in 15444-2 (Part-2) */
    +
    + +
    +
    + +

    ◆ OPJ_STREAM_READ

    + +
    +
    + + + + +
    #define OPJ_STREAM_READ   OPJ_TRUE
    +
    + +

    Stream open flags.

    +

    The stream was opened for reading.

    + +
    +
    + +

    ◆ OPJ_STREAM_WRITE

    + +
    +
    + + + + +
    #define OPJ_STREAM_WRITE   OPJ_FALSE
    +
    + +

    The stream was opened for writing.

    + +
    +
    + +

    ◆ OPJ_TRUE

    + +
    +
    + + + + +
    #define OPJ_TRUE   1
    +
    + +
    +
    + +

    ◆ OPJ_UINT32_SEMANTICALLY_BUT_INT32

    + +
    +
    + + + + +
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_INT32
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ OPJ_BOOL

    + +
    +
    + + + + +
    typedef int OPJ_BOOL
    +
    + +
    +
    + +

    ◆ OPJ_BYTE

    + +
    +
    + + + + +
    typedef unsigned char OPJ_BYTE
    +
    + +
    +
    + +

    ◆ OPJ_CHAR

    + +
    +
    + + + + +
    typedef char OPJ_CHAR
    +
    + +
    +
    + +

    ◆ OPJ_CINEMA_MODE

    + +
    +
    + + + + +
    typedef enum CINEMA_MODE OPJ_CINEMA_MODE
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.

    + +
    +
    + +

    ◆ OPJ_CODEC_FORMAT

    + +
    +
    + + + + +
    typedef enum CODEC_FORMAT OPJ_CODEC_FORMAT
    +
    + +

    Supported codec.

    + +
    +
    + +

    ◆ opj_codec_t

    + +
    +
    + + + + +
    typedef void* opj_codec_t
    +
    + +

    JPEG2000 codec V2.

    + +
    +
    + +

    ◆ opj_codestream_index_t

    + +
    +
    + + + + +
    typedef struct opj_codestream_index opj_codestream_index_t
    +
    + +

    Index structure of the codestream (FIXME should be expand and enhance)

    + +
    +
    + +

    ◆ opj_codestream_info_t

    + +
    +
    + + + + +
    typedef struct opj_codestream_info opj_codestream_info_t
    +
    + +

    Index structure of the codestream.

    + +
    +
    + +

    ◆ opj_codestream_info_v2_t

    + +
    +
    + +

    Information structure about the codestream (FIXME should be expand and enhance)

    + +
    +
    + +

    ◆ OPJ_COLOR_SPACE

    + +
    +
    + + + + +
    typedef enum COLOR_SPACE OPJ_COLOR_SPACE
    +
    + +

    Supported image color spaces.

    + +
    +
    + +

    ◆ opj_cparameters_t

    + +
    +
    + + + + +
    typedef struct opj_cparameters opj_cparameters_t
    +
    + +

    Compression parameters.

    + +
    +
    + +

    ◆ opj_dparameters_t

    + +
    +
    + + + + +
    typedef struct opj_dparameters opj_dparameters_t
    +
    + +

    Decompression parameters.

    + +
    +
    + +

    ◆ OPJ_FLOAT32

    + +
    +
    + + + + +
    typedef float OPJ_FLOAT32
    +
    + +
    +
    + +

    ◆ OPJ_FLOAT64

    + +
    +
    + + + + +
    typedef double OPJ_FLOAT64
    +
    + +
    +
    + +

    ◆ opj_image_cmptparm_t

    + +
    +
    + + + + +
    typedef struct opj_image_comptparm opj_image_cmptparm_t
    +
    + +

    Component parameters structure used by the opj_image_create function.

    + +
    +
    + +

    ◆ opj_image_comp_t

    + +
    +
    + + + + +
    typedef struct opj_image_comp opj_image_comp_t
    +
    + +

    Defines a single image component.

    + +
    +
    + +

    ◆ opj_image_t

    + +
    +
    + + + + +
    typedef struct opj_image opj_image_t
    +
    + +

    Defines image data and characteristics.

    + +
    +
    + +

    ◆ OPJ_INT16

    + +
    +
    + + + + +
    typedef int16_t OPJ_INT16
    +
    + +
    +
    + +

    ◆ OPJ_INT32

    + +
    +
    + + + + +
    typedef int32_t OPJ_INT32
    +
    + +
    +
    + +

    ◆ OPJ_INT64

    + +
    +
    + + + + +
    typedef int64_t OPJ_INT64
    +
    + +
    +
    + +

    ◆ OPJ_INT8

    + +
    +
    + + + + +
    typedef int8_t OPJ_INT8
    +
    + +
    +
    + +

    ◆ opj_jp2_index_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_index opj_jp2_index_t
    +
    + +

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    + +
    +
    + +

    ◆ opj_jp2_metadata_t

    + +
    +
    + + + + +
    typedef struct opj_jp2_metadata opj_jp2_metadata_t
    +
    + +

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    + +
    +
    + +

    ◆ opj_marker_info_t

    + +
    +
    + + + + +
    typedef struct opj_marker_info opj_marker_info_t
    +
    + +

    Marker structure.

    + +
    +
    + +

    ◆ opj_msg_callback

    + +
    +
    + + + + +
    typedef void(* opj_msg_callback) (const char *msg, void *client_data)
    +
    + +

    Callback function prototype for events.

    +
    Parameters
    + + + +
    msgEvent message
    client_dataClient object where will be return the event message
    +
    +
    + +
    +
    + +

    ◆ OPJ_OFF_T

    + +
    +
    + + + + +
    typedef int64_t OPJ_OFF_T
    +
    + +
    +
    + +

    ◆ opj_packet_info_t

    + +
    +
    + + + + +
    typedef struct opj_packet_info opj_packet_info_t
    +
    + +

    Index structure : Information concerning a packet inside tile.

    + +
    +
    + +

    ◆ opj_poc_t

    + +
    +
    + + + + +
    typedef struct opj_poc opj_poc_t
    +
    + +

    Progression order changes.

    + +
    +
    + +

    ◆ OPJ_PROG_ORDER

    + +
    +
    + + + + +
    typedef enum PROG_ORDER OPJ_PROG_ORDER
    +
    + +

    Progression order.

    + +
    +
    + +

    ◆ OPJ_RSIZ_CAPABILITIES

    + +
    +
    + + + + +
    typedef enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.

    + +
    +
    + +

    ◆ OPJ_SIZE_T

    + +
    +
    + + + + +
    typedef size_t OPJ_SIZE_T
    +
    + +
    +
    + +

    ◆ opj_stream_free_user_data_fn

    + +
    +
    + + + + +
    typedef void(* opj_stream_free_user_data_fn) (void *p_user_data)
    +
    + +
    +
    + +

    ◆ opj_stream_read_fn

    + +
    +
    + + + + +
    typedef OPJ_SIZE_T(* opj_stream_read_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    +
    + +
    +
    + +

    ◆ opj_stream_seek_fn

    + +
    +
    + + + + +
    typedef OPJ_BOOL(* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
    +
    + +
    +
    + +

    ◆ opj_stream_skip_fn

    + +
    +
    + + + + +
    typedef OPJ_OFF_T(* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
    +
    + +
    +
    + +

    ◆ opj_stream_t

    + +
    +
    + + + + +
    typedef void* opj_stream_t
    +
    + +
    +
    + +

    ◆ opj_stream_write_fn

    + +
    +
    + + + + +
    typedef OPJ_SIZE_T(* opj_stream_write_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    +
    + +
    +
    + +

    ◆ opj_tccp_info_t

    + +
    +
    + + + + +
    typedef struct opj_tccp_info opj_tccp_info_t
    +
    + +

    Tile-component coding parameters information.

    + +
    +
    + +

    ◆ opj_tile_index_t

    + +
    +
    + + + + +
    typedef struct opj_tile_index opj_tile_index_t
    +
    + +

    Index structure about a tile.

    + +
    +
    + +

    ◆ opj_tile_info_t

    + +
    +
    + + + + +
    typedef struct opj_tile_info opj_tile_info_t
    +
    + +

    Index structure : information regarding tiles.

    + +
    +
    + +

    ◆ opj_tile_info_v2_t

    + +
    +
    + + + + +
    typedef struct opj_tile_v2_info opj_tile_info_v2_t
    +
    + +

    Tile coding parameters information.

    + +
    +
    + +

    ◆ opj_tp_index_t

    + +
    +
    + + + + +
    typedef struct opj_tp_index opj_tp_index_t
    +
    + +

    Index structure about a tile part.

    + +
    +
    + +

    ◆ opj_tp_info_t

    + +
    +
    + + + + +
    typedef struct opj_tp_info opj_tp_info_t
    +
    + +

    Index structure : Information concerning tile-parts.

    + +
    +
    + +

    ◆ OPJ_UINT16

    + +
    +
    + + + + +
    typedef uint16_t OPJ_UINT16
    +
    + +
    +
    + +

    ◆ OPJ_UINT32

    + +
    +
    + + + + +
    typedef uint32_t OPJ_UINT32
    +
    + +
    +
    + +

    ◆ OPJ_UINT64

    + +
    +
    + + + + +
    typedef uint64_t OPJ_UINT64
    +
    + +
    +
    + +

    ◆ OPJ_UINT8

    + +
    +
    + + + + +
    typedef uint8_t OPJ_UINT8
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ CINEMA_MODE

    + +
    +
    + + + + +
    enum CINEMA_MODE
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.

    + + + + + +
    Enumerator
    OPJ_OFF 
    OPJ_CINEMA2K_24 

    Not Digital Cinema.

    +
    OPJ_CINEMA2K_48 

    2K Digital Cinema at 24 fps

    +
    OPJ_CINEMA4K_24 

    2K Digital Cinema at 48 fps

    +
    + +
    +
    + +

    ◆ CODEC_FORMAT

    + +
    +
    + + + + +
    enum CODEC_FORMAT
    +
    + +

    Supported codec.

    + + + + + + + +
    Enumerator
    OPJ_CODEC_UNKNOWN 

    place-holder

    +
    OPJ_CODEC_J2K 

    JPEG-2000 codestream : read/write.

    +
    OPJ_CODEC_JPT 

    JPT-stream (JPEG 2000, JPIP) : read only.

    +
    OPJ_CODEC_JP2 

    JP2 file format : read/write.

    +
    OPJ_CODEC_JPP 

    JPP-stream (JPEG 2000, JPIP) : to be coded.

    +
    OPJ_CODEC_JPX 

    JPX file format (JPEG 2000 Part-2) : to be coded.

    +
    + +
    +
    + +

    ◆ COLOR_SPACE

    + +
    +
    + + + + +
    enum COLOR_SPACE
    +
    + +

    Supported image color spaces.

    + + + + + + + + +
    Enumerator
    OPJ_CLRSPC_UNKNOWN 

    not supported by the library

    +
    OPJ_CLRSPC_UNSPECIFIED 

    not specified in the codestream

    +
    OPJ_CLRSPC_SRGB 

    sRGB

    +
    OPJ_CLRSPC_GRAY 

    grayscale

    +
    OPJ_CLRSPC_SYCC 

    YUV.

    +
    OPJ_CLRSPC_EYCC 

    e-YCC

    +
    OPJ_CLRSPC_CMYK 

    CMYK.

    +
    + +
    +
    + +

    ◆ PROG_ORDER

    + +
    +
    + + + + +
    enum PROG_ORDER
    +
    + +

    Progression order.

    + + + + + + + +
    Enumerator
    OPJ_PROG_UNKNOWN 

    place-holder

    +
    OPJ_LRCP 

    layer-resolution-component-precinct order

    +
    OPJ_RLCP 

    resolution-layer-component-precinct order

    +
    OPJ_RPCL 

    resolution-precinct-component-layer order

    +
    OPJ_PCRL 

    precinct-component-resolution-layer order

    +
    OPJ_CPRL 

    component-precinct-resolution-layer order

    +
    + +
    +
    + +

    ◆ RSIZ_CAPABILITIES

    + +
    +
    + + + + +
    enum RSIZ_CAPABILITIES
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.

    + + + + + +
    Enumerator
    OPJ_STD_RSIZ 
    OPJ_CINEMA2K 

    Standard JPEG2000 profile.

    +
    OPJ_CINEMA4K 

    Profile name for a 2K image.

    +
    OPJ_MCT 

    Profile name for a 4K image.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_codec_set_threads()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_tp_codec,
    int num_threads 
    )
    +
    + +

    Allocates worker threads for the compressor/decompressor.

    +

    By default, only the main thread is used. If this function is not used, but the OPJ_NUM_THREADS environment variable is set, its value will be used to initialize the number of threads. The value can be either an integer number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is called, this function will override the behaviour of the environment variable.

    +

    Currently this function must be called after opj_setup_decoder() and before opj_read_header().

    +

    Note: currently only has effect on the decompressor.

    +
    Parameters
    + + + +
    p_codecdecompressor handler
    num_threadsnumber of threads.
    +
    +
    +
    Returns
    OPJ_TRUE if the decoder is correctly set
    + +

    References opj_codec_private::m_codec, OPJ_FALSE, and opj_codec_private::opj_set_threads.

    + +
    +
    + +

    ◆ opj_create_compress()

    + + + +

    ◆ opj_create_decompress()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
    +
    +
    + +

    ◆ opj_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_tp_decompressor,
    opj_stream_tp_stream,
    opj_image_tp_image 
    )
    +
    + +

    Decode an image from a JPEG-2000 codestream.

    +
    Parameters
    + + + + +
    p_decompressordecompressor handle
    p_streamInput buffer stream
    p_imagethe decoded image
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_decode_tile_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    +
    + +

    Reads a tile data.

    +

    This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    +

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    +
    Parameters
    + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile being decoded, this should be the value set by opj_read_tile_header.
    p_datapointer to a memory block that will hold the decoded data.
    p_data_sizesize of p_data. p_data_size should be bigger or equal to the value set by opj_read_tile_header.
    p_streamthe stream to decode.
    +
    +
    +
    Returns
    true if the data could be decoded.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_destroy_codec()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_destroy_codec (opj_codec_tp_codec)
    +
    + +

    Destroy a decompressor handle.

    +
    Parameters
    + + +
    p_codecdecompressor handle to destroy
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_decompression, and opj_free().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_destroy_cstr_index()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t ** p_cstr_index)
    +
    + +

    References j2k_destroy_cstr_index().

    + +
    +
    + +

    ◆ opj_destroy_cstr_info()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t ** cstr_info)
    +
    + +

    Destroy Codestream information after compression or decompression.

    +
    Parameters
    + + +
    cstr_infoCodestream information structure
    +
    +
    + +

    References opj_free().

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ opj_dump_codec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_dump_codec (opj_codec_tp_codec,
    OPJ_INT32 info_flag,
    FILE * output_stream 
    )
    +
    + +

    Dump the codec information into the output stream.

    +
    Parameters
    + + + + +
    p_codecthe jpeg2000 codec.
    info_flagtype of information dump.
    output_streamoutput stream where dump the information gotten from the codec.
    +
    +
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_dump_codec.

    + +
    +
    + +

    ◆ opj_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    Encode an image into a JPEG-2000 codestream.

    +
    Parameters
    + + + +
    p_codeccompressor handle
    p_streamOutput buffer stream
    +
    +
    +
    Returns
    Returns true if successful, returns false otherwise
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_encoder_set_extra_options()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_tp_codec,
    const char *const * p_options 
    )
    +
    + +

    Specify extra options for the encoder.

    +

    This may be called after opj_setup_encoder() and before opj_start_compress()

    +

    This is the way to add new options in a fully ABI compatible way, without extending the opj_cparameters_t structure.

    +

    Currently supported options are:

      +
    • +PLT=YES/NO. Defaults to NO. If set to YES, PLT marker segments, indicating the length of each packet in the tile-part header, will be written. Since 2.3.2
    • +
    +
    Parameters
    + + + +
    p_codecCompressor handle
    p_optionsCompression options. This should be a NULL terminated array of strings. Each string is of the form KEY=VALUE.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    +
    Since
    2.3.2
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_end_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    End to compress the current image.

    +
    Parameters
    + + + +
    p_codecCompressor handle
    p_streamInput stgream
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_end_decompress()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    +
    + +

    Read after the codestream if necessary.

    +
    Parameters
    + + + +
    p_codecthe JPEG2000 codec to read.
    p_streamthe JPEG2000 stream.
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_get_cstr_index()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_codestream_index_t* OPJ_CALLCONV opj_get_cstr_index (opj_codec_tp_codec)
    +
    + +

    Get the codestream index from the codec.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a codestream index structure.
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_index.

    + +
    +
    + +

    ◆ opj_get_cstr_info()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info (opj_codec_tp_codec)
    +
    + +

    Get the codestream information from the codec.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a codestream information structure.
    + +

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_info.

    + +
    +
    + +

    ◆ opj_get_decoded_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_tp_codec,
    opj_stream_tp_stream,
    opj_image_tp_image,
    OPJ_UINT32 tile_index 
    )
    +
    + +

    Get the decoded tile from the codec.

    +
    Parameters
    + + + + + +
    p_codecthe jpeg2000 codec.
    p_streaminput streamm
    p_imageoutput image
    tile_indexindex of the tile which will be decode
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_get_jp2_index()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index (opj_codec_tp_codec)
    +
    + +

    Get the JP2 file index from the codec FIXME.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a JP2 index structure.
    + +
    +
    + +

    ◆ opj_get_jp2_metadata()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata (opj_codec_tp_codec)
    +
    + +

    Get the JP2 file information from the codec FIXME.

    +
    Parameters
    + + +
    p_codecthe jpeg2000 codec.
    +
    +
    +
    Returns
    a pointer to a JP2 metadata structure.
    + +
    +
    + +

    ◆ opj_get_num_cpus()

    + +
    +
    + + + + + + + + +
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus (void )
    +
    + +

    Return the number of virtual CPUs.

    + +

    Referenced by opj_j2k_get_default_thread_count().

    + +
    +
    + +

    ◆ opj_has_thread_support()

    + +
    +
    + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void )
    +
    + +

    Returns if the library is built with thread support.

    +

    OPJ_TRUE if mutex, condition, thread, thread pool are available.

    + +

    References OPJ_FALSE.

    + +

    Referenced by opj_j2k_get_default_thread_count(), and opj_j2k_set_threads().

    + +
    +
    + +

    ◆ opj_image_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    +
    +
    + +

    ◆ opj_image_data_alloc()

    + +
    +
    + + + + + + + + +
    OPJ_API void* OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
    +
    + +

    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.

    +
    Parameters
    + + +
    sizenumber of bytes to allocate
    +
    +
    +
    Returns
    a new pointer if successful, NULL otherwise.
    +
    Since
    2.2.0
    + +

    References opj_aligned_malloc().

    + +

    Referenced by opj_alloc_tile_component_data(), opj_image_create(), opj_j2k_update_image_data(), opj_jp2_apply_pclr(), and opj_tcd_decode_tile().

    + +
    +
    + +

    ◆ opj_image_data_free()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_image_data_free (void * ptr)
    +
    + +

    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.

    +
    Parameters
    + + +
    ptrPointer to free
    +
    +
    +
    Since
    2.2.0
    + +

    References opj_aligned_free().

    + +

    Referenced by opj_alloc_tile_component_data(), opj_copy_image_header(), opj_image_destroy(), opj_j2k_decode_tiles(), opj_j2k_get_tile(), opj_j2k_move_data_from_codec_to_output_image(), opj_jp2_apply_pclr(), opj_tcd_decode_tile(), opj_tcd_free_tile(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_image_destroy()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_image_destroy (opj_image_timage)
    +
    +
    + +

    ◆ opj_image_tile_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    +
    + +

    Creates an image without allocating memory for the image (used in the new version of the library).

    +
    Parameters
    + + + + +
    numcmptsthe number of components
    cmptparmsthe components parameters
    clrspcthe image color space
    +
    +
    +
    Returns
    a new image structure if successful, NULL otherwise.
    + +

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image_comp::dx, opj_image_comptparm::dx, opj_image_comp::dy, opj_image_comptparm::dy, opj_image_comp::h, opj_image_comptparm::h, opj_image::numcomps, opj_calloc(), opj_image_destroy(), opj_image_comp::prec, opj_image_comptparm::prec, opj_image_comp::sgnd, opj_image_comptparm::sgnd, opj_image_comp::w, opj_image_comptparm::w, opj_image_comp::x0, opj_image_comptparm::x0, opj_image_comp::y0, and opj_image_comptparm::y0.

    + +
    +
    + +

    ◆ opj_read_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_tp_stream,
    opj_codec_tp_codec,
    opj_image_t ** p_image 
    )
    +
    + +

    Decodes an image header.

    +
    Parameters
    + + + + +
    p_streamthe jpeg2000 stream.
    p_codecthe jpeg2000 codec to read.
    p_imagethe image structure initialized with the characteristics of encoded image.
    +
    +
    +
    Returns
    true if the main header of the codestream and the JP2 header is correctly read.
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_read_tile_header()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_tp_codec,
    opj_stream_tp_stream,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_should_go_on 
    )
    +
    + +

    Reads a tile header.

    +

    This function is compulsory and allows one to know the size of the tile that will be decoded. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    +
    Parameters
    + + + + + + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexpointer to a value that will hold the index of the tile being decoded, in case of success.
    p_data_sizepointer to a value that will hold the maximum size of the decoded data, in case of success. In case of truncated codestreams, the actual number of bytes decoded may be lower. The computation of the size is the same as depicted in opj_write_tile.
    p_tile_x0pointer to a value that will hold the x0 pos of the tile (in the image).
    p_tile_y0pointer to a value that will hold the y0 pos of the tile (in the image).
    p_tile_x1pointer to a value that will hold the x1 pos of the tile (in the image).
    p_tile_y1pointer to a value that will hold the y1 pos of the tile (in the image).
    p_nb_compspointer to a value that will hold the number of components in the tile.
    p_should_go_onpointer to a boolean that will hold the fact that the decoding should go on. In case the codestream is over at the time of the call, the value will be set to false. The user should then stop the decoding.
    p_streamthe stream to decode.
    +
    +
    +
    Returns
    true if the tile header could be decoded. In case the decoding should end, the returned value is still true. returning false may be the result of a shortage of memory or an internal error.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_set_decode_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_tp_codec,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y 
    )
    +
    + +

    Sets the given area to be decoded.

    +

    This function should be called right after opj_read_header and before any tile header reading.

    +

    The coordinates passed to this function should be expressed in the reference grid, that is to say at the highest resolution level, even if requesting the image at lower resolution levels.

    +

    Generally opj_set_decode_area() should be followed by opj_decode(), and the codec cannot be re-used. In the particular case of an image made of a single tile, several sequences of calls to opoj_set_decode_area() and opj_decode() are allowed, and will bring performance improvements when reading an image by chunks.

    +
    Parameters
    + + + + + + + +
    p_codecthe jpeg2000 codec.
    p_imagethe decoded image previously set by opj_read_header
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    +
    +
    +
    Returns
    true if the area could be set.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_decoded_components()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_tp_codec,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    OPJ_BOOL apply_color_transforms 
    )
    +
    + +

    Restrict the number of components to decode.

    +

    This function should be called after opj_read_header().

    +

    This function enables to restrict the set of decoded components to the specified indices. Note that the current implementation (apply_color_transforms == OPJ_FALSE) is such that neither the multi-component transform at codestream level, nor JP2 channel transformations will be applied. Consequently the indices are relative to the codestream.

    +

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    +
    Parameters
    + + + + + +
    p_codecthe jpeg2000 codec to read.
    numcompsSize of the comps_indices array.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0)
    apply_color_transformsWhether multi-component transform at codestream level or JP2 channel transformations should be applied. Currently this parameter should be set to OPJ_FALSE. Setting it to OPJ_TRUE will result in an error.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_set_decoded_resolution_factor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_tp_codec,
    OPJ_UINT32 res_factor 
    )
    +
    + +

    Set the resolution factor of the decoded image.

    +
    Parameters
    + + + +
    p_codecthe jpeg2000 codec.
    res_factorresolution factor to set
    +
    +
    +
    Returns
    true if success, otherwise false
    + +

    References opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_set_default_decoder_parameters()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_tparameters)
    +
    +
    + +

    ◆ opj_set_default_encoder_parameters()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_tparameters)
    +
    + +

    Set encoding parameters to default values, that means :

    +
      +
    • +Lossless
    • +
    • +1 tile
    • +
    • +Size of precinct : 2^15 x 2^15 (means 1 precinct)
    • +
    • +Size of code-block : 64 x 64
    • +
    • +Number of resolutions: 6
    • +
    • +No SOP marker in the codestream
    • +
    • +No EPH marker in the codestream
    • +
    • +No sub-sampling in x or y direction
    • +
    • +No mode switch activated
    • +
    • +Progression order: LRCP
    • +
    • +No index file
    • +
    • +No ROI upshifted
    • +
    • +No offset of the origin of the image
    • +
    • +No offset of the origin of the tiles
    • +
    • +Reversible DWT 5-3
    • +
    +
    Parameters
    + + +
    parametersCompression parameters
    +
    +
    + +

    References opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cparameters::cod_format, opj_cparameters::cp_cinema, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_rsiz, opj_cparameters::decod_format, opj_cparameters::jpip_on, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_cparameters::max_comp_size, opj_cparameters::numresolution, OPJ_COMP_PARAM_DEFAULT_CBLOCKH, OPJ_COMP_PARAM_DEFAULT_CBLOCKW, OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION, OPJ_COMP_PARAM_DEFAULT_PROG_ORDER, OPJ_FALSE, OPJ_OFF, OPJ_PROFILE_NONE, OPJ_STD_RSIZ, opj_cparameters::prog_order, opj_cparameters::roi_compno, opj_cparameters::rsiz, opj_cparameters::subsampling_dx, opj_cparameters::subsampling_dy, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, and opj_cparameters::tp_on.

    + +
    +
    + +

    ◆ opj_set_error_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the error handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_event_mgr::error_handler, opj_event_mgr::m_error_data, opj_codec_private::m_event_mgr, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_info_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the info handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_event_mgr::info_handler, opj_codec_private::m_event_mgr, opj_event_mgr::m_info_data, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_set_MCT()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_tparameters,
    OPJ_FLOAT32pEncodingMatrix,
    OPJ_INT32p_dc_shift,
    OPJ_UINT32 pNbComp 
    )
    +
    + +

    Sets the MCT matrix to use.

    +
    Parameters
    + + + + + +
    parametersthe parameters to change.
    pEncodingMatrixthe encoding matrix.
    p_dc_shiftthe dc shift coefficients to use.
    pNbCompthe number of components of the image.
    +
    +
    +
    Returns
    true if the parameters could be set.
    + +

    References opj_cparameters::irreversible, opj_cparameters::mct_data, OPJ_EXTENSION_MCT, OPJ_FALSE, OPJ_IS_PART2, opj_malloc(), OPJ_PROFILE_PART2, OPJ_TRUE, opj_cparameters::rsiz, and opj_cparameters::tcp_mct.

    + +
    +
    + +

    ◆ opj_set_warning_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    +
    + +

    Set the warning handler use by openjpeg.

    +
    Parameters
    + + + + +
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    +
    +
    + +

    References opj_codec_private::m_event_mgr, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_setup_decoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_tp_codec,
    opj_dparameters_tparameters 
    )
    +
    + +

    Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user.

    +
    Parameters
    + + + +
    p_codecdecompressor handler
    parametersdecompression parameters
    +
    +
    +
    Returns
    true if the decoder is correctly set
    + +

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_setup_encoder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_tp_codec,
    opj_cparameters_tparameters,
    opj_image_timage 
    )
    +
    + +

    Setup the encoder parameters using the current image and using user parameters.

    +
    Parameters
    + + + + +
    p_codecCompressor handle
    parametersCompression parameters
    imageInput filled image
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_start_compress()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_tp_codec,
    opj_image_tp_image,
    opj_stream_tp_stream 
    )
    +
    + +

    Start to compress the current image.

    +
    Parameters
    + + + + +
    p_codecCompressor handle
    p_imageInput filled image
    p_streamInput stgream
    +
    +
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    + +

    ◆ opj_stream_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_input 
    )
    +
    +
    + +

    ◆ opj_stream_create_default_file_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (const char * fname,
    OPJ_BOOL p_is_read_stream 
    )
    +
    + +

    Create a stream from a file identified with its filename with default parameters (helper function)

    +
    Parameters
    + + + +
    fnamethe filename of the file to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    +
    +
    + +

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create_file_stream().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_stream_create_file_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (const char * fname,
    OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_read_stream 
    )
    +
    + +

    Create a stream from a file identified with its filename with a specific buffer size.

    +
    Parameters
    + + + + +
    fnamethe filename of the file to stream
    p_buffer_sizesize of the chunk used to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    +
    +
    + +

    References opj_get_data_length_from_file(), opj_read_from_file(), opj_seek_from_file(), opj_skip_from_file(), opj_stream_create(), opj_stream_set_read_function(), opj_stream_set_seek_function(), opj_stream_set_skip_function(), opj_stream_set_user_data(), opj_stream_set_user_data_length(), opj_stream_set_write_function(), and opj_write_from_file().

    + +

    Referenced by opj_stream_create_default_file_stream().

    + +
    +
    + +

    ◆ opj_stream_default_create()

    + +
    +
    + + + + + + + + +
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
    +
    + +

    Creates an abstract stream.

    +

    This function does nothing except allocating memory and initializing the abstract stream.

    +
    Parameters
    + + +
    p_is_inputif set to true then the stream will be an input stream, an output stream else.
    +
    +
    +
    Returns
    a stream object.
    + +

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create().

    + +
    +
    + +

    ◆ opj_stream_destroy()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_destroy (opj_stream_tp_stream)
    +
    + +

    Destroys a stream created by opj_create_stream.

    +

    This function does NOT close the abstract stream. If needed the user must close its own implementation of the stream.

    +
    Parameters
    + + +
    p_streamthe stream to destroy.
    +
    +
    + +

    References opj_stream_private::m_free_user_data_fn, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, and opj_free().

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ opj_stream_set_read_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_tp_stream,
    opj_stream_read_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a read function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a read function.
    +
    +
    + +

    References opj_stream_private::m_read_fn, opj_stream_private::m_status, and OPJ_STREAM_STATUS_INPUT.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_seek_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_tp_stream,
    opj_stream_seek_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    +
    +
    + +

    References opj_stream_private::m_seek_fn.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_skip_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_tp_stream,
    opj_stream_skip_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a skip function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    +
    +
    + +

    References opj_stream_private::m_skip_fn.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_user_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_tp_stream,
    void * p_data,
    opj_stream_free_user_data_fn p_function 
    )
    +
    + +

    Sets the given data to be used as a user data for the stream.

    +
    Parameters
    + + + + +
    p_streamthe stream to modify
    p_datathe data to set.
    p_functionthe function to free p_data when opj_stream_destroy() is called.
    +
    +
    + +

    References opj_stream_private::m_free_user_data_fn, and opj_stream_private::m_user_data.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_user_data_length()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_tp_stream,
    OPJ_UINT64 data_length 
    )
    +
    + +

    Sets the length of the user data for the stream.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    data_lengthlength of the user_data.
    +
    +
    + +

    References opj_stream_private::m_user_data_length.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_stream_set_write_function()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_tp_stream,
    opj_stream_write_fn p_function 
    )
    +
    + +

    Sets the given function to be used as a write function.

    +
    Parameters
    + + + +
    p_streamthe stream to modify
    p_functionthe function to use a write function.
    +
    +
    + +

    References opj_stream_private::m_status, opj_stream_private::m_write_fn, and OPJ_STREAM_STATUS_OUTPUT.

    + +

    Referenced by opj_stream_create_file_stream().

    + +
    +
    + +

    ◆ opj_version()

    + +
    +
    + + + + + + + + +
    const OPJ_API char* OPJ_CALLCONV opj_version (void )
    +
    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ opj_write_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    +
    + +

    Writes a tile with the given data.

    +
    Parameters
    + + + + + + +
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
    p_datapointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
    p_data_sizethis value os used to make sure the data being written is correct. The size must be equal to the sum for each component of tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
    p_streamthe stream to write data to.
    +
    +
    +
    Returns
    true if the data could be written.
    + +

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/openjpeg_8h_source.html b/build/doc/html/openjpeg_8h_source.html new file mode 100644 index 000000000..a4cc089fc --- /dev/null +++ b/build/doc/html/openjpeg_8h_source.html @@ -0,0 +1,1535 @@ + + + + + + + +OpenJPEG: openjpeg.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    openjpeg.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2 * The copyright in this software is being made available under the 2-clauses
    +
    3 * BSD License, included below. This software may be subject to other third
    +
    4 * party and contributor rights, including patent rights, and no such rights
    +
    5 * are granted under this license.
    +
    6 *
    +
    7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8 * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9 * Copyright (c) 2001-2003, David Janssens
    +
    10 * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11 * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12 * Copyright (c) 2003-2014, Antonin Descampe
    +
    13 * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14 * Copyright (c) 2006-2007, Parvatha Elangovan
    +
    15 * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    16 * Copyright (c) 2010-2011, Kaori Hagihara
    +
    17 * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    +
    18 * Copyright (c) 2012, CS Systemes d'Information, France
    +
    19 * All rights reserved.
    +
    20 *
    +
    21 * Redistribution and use in source and binary forms, with or without
    +
    22 * modification, are permitted provided that the following conditions
    +
    23 * are met:
    +
    24 * 1. Redistributions of source code must retain the above copyright
    +
    25 * notice, this list of conditions and the following disclaimer.
    +
    26 * 2. Redistributions in binary form must reproduce the above copyright
    +
    27 * notice, this list of conditions and the following disclaimer in the
    +
    28 * documentation and/or other materials provided with the distribution.
    +
    29 *
    +
    30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    31 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    33 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    34 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    35 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    36 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    37 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    38 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    39 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    40 * POSSIBILITY OF SUCH DAMAGE.
    +
    41 */
    +
    42 #ifndef OPENJPEG_H
    +
    43 #define OPENJPEG_H
    +
    44 
    +
    45 
    +
    46 /*
    +
    47 ==========================================================
    +
    48  Compiler directives
    +
    49 ==========================================================
    +
    50 */
    +
    51 
    +
    52 /*
    +
    53 The inline keyword is supported by C99 but not by C90.
    +
    54 Most compilers implement their own version of this keyword ...
    +
    55 */
    +
    56 #ifndef INLINE
    +
    57 #if defined(_MSC_VER)
    +
    58 #define INLINE __forceinline
    +
    59 #elif defined(__GNUC__)
    +
    60 #define INLINE __inline__
    +
    61 #elif defined(__MWERKS__)
    +
    62 #define INLINE inline
    +
    63 #else
    +
    64 /* add other compilers here ... */
    +
    65 #define INLINE
    +
    66 #endif /* defined(<Compiler>) */
    +
    67 #endif /* INLINE */
    +
    68 
    +
    69 /* deprecated attribute */
    +
    70 #ifdef __GNUC__
    +
    71 #define OPJ_DEPRECATED(func) func __attribute__ ((deprecated))
    +
    72 #elif defined(_MSC_VER)
    +
    73 #define OPJ_DEPRECATED(func) __declspec(deprecated) func
    +
    74 #else
    +
    75 #pragma message("WARNING: You need to implement DEPRECATED for this compiler")
    +
    76 #define OPJ_DEPRECATED(func) func
    +
    77 #endif
    +
    78 
    +
    79 #if defined(OPJ_STATIC) || !defined(_WIN32)
    +
    80 /* http://gcc.gnu.org/wiki/Visibility */
    +
    81 # if __GNUC__ >= 4
    +
    82 # if defined(OPJ_STATIC) /* static library uses "hidden" */
    +
    83 # define OPJ_API __attribute__ ((visibility ("hidden")))
    +
    84 # else
    +
    85 # define OPJ_API __attribute__ ((visibility ("default")))
    +
    86 # endif
    +
    87 # define OPJ_LOCAL __attribute__ ((visibility ("hidden")))
    +
    88 # else
    +
    89 # define OPJ_API
    +
    90 # define OPJ_LOCAL
    +
    91 # endif
    +
    92 # define OPJ_CALLCONV
    +
    93 #else
    +
    94 # define OPJ_CALLCONV __stdcall
    +
    95 /*
    +
    96 The following ifdef block is the standard way of creating macros which make exporting
    +
    97 from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
    +
    98 symbol defined on the command line. this symbol should not be defined on any project
    +
    99 that uses this DLL. This way any other project whose source files include this file see
    +
    100 OPJ_API functions as being imported from a DLL, whereas this DLL sees symbols
    +
    101 defined with this macro as being exported.
    +
    102 */
    +
    103 # if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
    +
    104 # define OPJ_API __declspec(dllexport)
    +
    105 # else
    +
    106 # define OPJ_API __declspec(dllimport)
    +
    107 # endif /* OPJ_EXPORTS */
    +
    108 #endif /* !OPJ_STATIC || !_WIN32 */
    +
    109 
    +
    110 typedef int OPJ_BOOL;
    +
    111 #define OPJ_TRUE 1
    +
    112 #define OPJ_FALSE 0
    +
    113 
    +
    114 typedef char OPJ_CHAR;
    +
    115 typedef float OPJ_FLOAT32;
    +
    116 typedef double OPJ_FLOAT64;
    +
    117 typedef unsigned char OPJ_BYTE;
    +
    118 
    +
    119 #include "opj_stdint.h"
    +
    120 
    +
    121 typedef int8_t OPJ_INT8;
    +
    122 typedef uint8_t OPJ_UINT8;
    +
    123 typedef int16_t OPJ_INT16;
    +
    124 typedef uint16_t OPJ_UINT16;
    +
    125 typedef int32_t OPJ_INT32;
    +
    126 typedef uint32_t OPJ_UINT32;
    +
    127 typedef int64_t OPJ_INT64;
    +
    128 typedef uint64_t OPJ_UINT64;
    +
    129 
    +
    130 typedef int64_t OPJ_OFF_T; /* 64-bit file offset type */
    +
    131 
    +
    132 #include <stdio.h>
    +
    133 typedef size_t OPJ_SIZE_T;
    +
    134 
    +
    135 /* Avoid compile-time warning because parameter is not used */
    +
    136 #define OPJ_ARG_NOT_USED(x) (void)(x)
    +
    137 
    +
    138 /*
    +
    139 ==========================================================
    +
    140  Useful constant definitions
    +
    141 ==========================================================
    +
    142 */
    +
    143 
    +
    144 #define OPJ_PATH_LEN 4096
    +
    146 #define OPJ_J2K_MAXRLVLS 33
    +
    147 #define OPJ_J2K_MAXBANDS (3*OPJ_J2K_MAXRLVLS-2)
    +
    149 #define OPJ_J2K_DEFAULT_NB_SEGS 10
    +
    150 #define OPJ_J2K_STREAM_CHUNK_SIZE 0x100000
    +
    151 #define OPJ_J2K_DEFAULT_HEADER_SIZE 1000
    +
    152 #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS 10
    +
    153 #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS 10
    +
    154 
    +
    155 /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    +
    156 #define JPWL_MAX_NO_TILESPECS 16
    +
    157 #define JPWL_MAX_NO_PACKSPECS 16
    +
    158 #define JPWL_MAX_NO_MARKERS 512
    +
    159 #define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename"
    +
    160 #define JPWL_EXPECTED_COMPONENTS 3
    +
    161 #define JPWL_MAXIMUM_TILES 8192
    +
    162 #define JPWL_MAXIMUM_HAMMING 2
    +
    163 #define JPWL_MAXIMUM_EPB_ROOM 65450
    +
    164 /* <<UniPG */
    +
    165 
    +
    170 #define OPJ_IMG_INFO 1
    +
    171 #define OPJ_J2K_MH_INFO 2
    +
    172 #define OPJ_J2K_TH_INFO 4
    +
    173 #define OPJ_J2K_TCH_INFO 8
    +
    174 #define OPJ_J2K_MH_IND 16
    +
    175 #define OPJ_J2K_TH_IND 32
    +
    176 /*FIXME #define OPJ_J2K_CSTR_IND 48*/
    +
    177 #define OPJ_JP2_INFO 128
    +
    178 #define OPJ_JP2_IND 256
    +
    194 #define OPJ_PROFILE_NONE 0x0000
    +
    195 #define OPJ_PROFILE_0 0x0001
    +
    196 #define OPJ_PROFILE_1 0x0002
    +
    197 #define OPJ_PROFILE_PART2 0x8000
    +
    198 #define OPJ_PROFILE_CINEMA_2K 0x0003
    +
    199 #define OPJ_PROFILE_CINEMA_4K 0x0004
    +
    200 #define OPJ_PROFILE_CINEMA_S2K 0x0005
    +
    201 #define OPJ_PROFILE_CINEMA_S4K 0x0006
    +
    202 #define OPJ_PROFILE_CINEMA_LTS 0x0007
    +
    203 #define OPJ_PROFILE_BC_SINGLE 0x0100
    +
    204 #define OPJ_PROFILE_BC_MULTI 0x0200
    +
    205 #define OPJ_PROFILE_BC_MULTI_R 0x0300
    +
    206 #define OPJ_PROFILE_IMF_2K 0x0400
    +
    207 #define OPJ_PROFILE_IMF_4K 0x0500
    +
    208 #define OPJ_PROFILE_IMF_8K 0x0600
    +
    209 #define OPJ_PROFILE_IMF_2K_R 0x0700
    +
    210 #define OPJ_PROFILE_IMF_4K_R 0x0800
    +
    211 #define OPJ_PROFILE_IMF_8K_R 0x0900
    +
    216 #define OPJ_EXTENSION_NONE 0x0000
    +
    217 #define OPJ_EXTENSION_MCT 0x0100
    +
    222 #define OPJ_IS_CINEMA(v) (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
    +
    223 #define OPJ_IS_STORAGE(v) ((v) == OPJ_PROFILE_CINEMA_LTS)
    +
    224 #define OPJ_IS_BROADCAST(v) (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
    +
    225 #define OPJ_IS_IMF(v) (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
    +
    226 #define OPJ_IS_PART2(v) ((v) & OPJ_PROFILE_PART2)
    +
    227 
    +
    228 #define OPJ_GET_IMF_PROFILE(v) ((v) & 0xff00)
    +
    229 #define OPJ_GET_IMF_MAINLEVEL(v) ((v) & 0xf)
    +
    230 #define OPJ_GET_IMF_SUBLEVEL(v) (((v) >> 4) & 0xf)
    +
    232 #define OPJ_IMF_MAINLEVEL_MAX 11
    +
    235 #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC 65
    +
    236 #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC 130
    +
    237 #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC 195
    +
    238 #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC 260
    +
    239 #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC 520
    +
    240 #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC 1200
    +
    241 #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC 2400
    +
    242 #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC 4800
    +
    243 #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC 9600
    +
    244 #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC 19200
    +
    245 #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC 38400
    +
    248 #define OPJ_IMF_SUBLEVEL_1_MBITSSEC 200
    +
    249 #define OPJ_IMF_SUBLEVEL_2_MBITSSEC 400
    +
    250 #define OPJ_IMF_SUBLEVEL_3_MBITSSEC 800
    +
    251 #define OPJ_IMF_SUBLEVEL_4_MBITSSEC 1600
    +
    252 #define OPJ_IMF_SUBLEVEL_5_MBITSSEC 3200
    +
    253 #define OPJ_IMF_SUBLEVEL_6_MBITSSEC 6400
    +
    254 #define OPJ_IMF_SUBLEVEL_7_MBITSSEC 12800
    +
    255 #define OPJ_IMF_SUBLEVEL_8_MBITSSEC 25600
    +
    256 #define OPJ_IMF_SUBLEVEL_9_MBITSSEC 51200
    +
    261 #define OPJ_CINEMA_24_CS 1302083
    +
    262 #define OPJ_CINEMA_48_CS 651041
    +
    263 #define OPJ_CINEMA_24_COMP 1041666
    +
    264 #define OPJ_CINEMA_48_COMP 520833
    +
    266 /*
    +
    267 ==========================================================
    +
    268  enum definitions
    +
    269 ==========================================================
    +
    270 */
    +
    271 
    +
    276 typedef enum RSIZ_CAPABILITIES {
    + + + +
    280  OPJ_MCT = 0x8100
    + +
    282 
    +
    287 typedef enum CINEMA_MODE {
    +
    288  OPJ_OFF = 0,
    + + + + +
    293 
    +
    297 typedef enum PROG_ORDER {
    + +
    299  OPJ_LRCP = 0,
    +
    300  OPJ_RLCP = 1,
    +
    301  OPJ_RPCL = 2,
    +
    302  OPJ_PCRL = 3,
    +
    303  OPJ_CPRL = 4
    + +
    305 
    +
    309 typedef enum COLOR_SPACE {
    + + + + + + + + +
    318 
    +
    322 typedef enum CODEC_FORMAT {
    + + + + + + + +
    330 
    +
    331 
    +
    332 /*
    +
    333 ==========================================================
    +
    334  event manager typedef definitions
    +
    335 ==========================================================
    +
    336 */
    +
    337 
    +
    343 typedef void (*opj_msg_callback)(const char *msg, void *client_data);
    +
    344 
    +
    345 /*
    +
    346 ==========================================================
    +
    347  codec typedef definitions
    +
    348 ==========================================================
    +
    349 */
    +
    350 
    +
    351 #ifndef OPJ_UINT32_SEMANTICALLY_BUT_INT32
    +
    352 #define OPJ_UINT32_SEMANTICALLY_BUT_INT32 OPJ_INT32
    +
    353 #endif
    +
    354 
    +
    359 typedef struct opj_poc {
    + + + + + + + + + + + +
    382 } opj_poc_t;
    +
    383 
    +
    387 typedef struct opj_cparameters {
    + +
    391  int cp_tx0;
    +
    393  int cp_ty0;
    +
    395  int cp_tdx;
    +
    397  int cp_tdy;
    + + + + +
    407  char *cp_comment;
    +
    409  int csty;
    + + + + +
    421  float tcp_rates[100];
    +
    424  float tcp_distoratio[100];
    + + + +
    432  int mode;
    + + + +
    439  /* number of precinct size specifications */
    +
    440  int res_spec;
    + + +
    445 
    + + +
    453  int index_on;
    + + + + + + + +
    470  /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    + + + + + + + + + + + + + +
    500  /* <<UniPG */
    +
    501 
    + + + +
    518  char tp_on;
    +
    520  char tp_flag;
    +
    522  char tcp_mct;
    + +
    527  void * mct_data;
    + + + +
    539 
    +
    540 #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG 0x0001
    +
    541 #define OPJ_DPARAMETERS_DUMP_FLAG 0x0002
    +
    542 
    +
    546 typedef struct opj_dparameters {
    + + +
    562 
    + + + + +
    573 
    + + + + + +
    584 
    + + +
    589 
    +
    592  /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    + + + +
    602  /* <<UniPG */
    +
    603 
    +
    604  unsigned int flags;
    +
    605 
    + +
    607 
    +
    608 
    +
    612 typedef void * opj_codec_t;
    +
    613 
    +
    614 /*
    +
    615 ==========================================================
    +
    616  I/O stream typedef definitions
    +
    617 ==========================================================
    +
    618 */
    +
    619 
    +
    624 #define OPJ_STREAM_READ OPJ_TRUE
    +
    625 
    +
    626 #define OPJ_STREAM_WRITE OPJ_FALSE
    +
    627 
    +
    628 /*
    +
    629  * Callback function prototype for read function
    +
    630  */
    +
    631 typedef OPJ_SIZE_T(* opj_stream_read_fn)(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    +
    632  void * p_user_data) ;
    +
    633 
    +
    634 /*
    +
    635  * Callback function prototype for write function
    +
    636  */
    +
    637 typedef OPJ_SIZE_T(* opj_stream_write_fn)(void * p_buffer,
    +
    638  OPJ_SIZE_T p_nb_bytes, void * p_user_data) ;
    +
    639 
    +
    640 /*
    +
    641  * Callback function prototype for skip function
    +
    642  */
    +
    643 typedef OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes,
    +
    644  void * p_user_data) ;
    +
    645 
    +
    646 /*
    +
    647  * Callback function prototype for seek function
    +
    648  */
    +
    649 typedef OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes,
    +
    650  void * p_user_data) ;
    +
    651 
    +
    652 /*
    +
    653  * Callback function prototype for free user data function
    +
    654  */
    +
    655 typedef void (* opj_stream_free_user_data_fn)(void * p_user_data) ;
    +
    656 
    +
    657 /*
    +
    658  * JPEG2000 Stream.
    +
    659  */
    +
    660 typedef void * opj_stream_t;
    +
    661 
    +
    662 /*
    +
    663 ==========================================================
    +
    664  image typedef definitions
    +
    665 ==========================================================
    +
    666 */
    +
    667 
    +
    671 typedef struct opj_image_comp {
    + + + + + + + + + + + + + + +
    699 
    +
    703 typedef struct opj_image {
    + + + + + + + + + +
    722 } opj_image_t;
    +
    723 
    +
    724 
    +
    728 typedef struct opj_image_comptparm {
    + + + + + + + + + + +
    748 
    +
    749 
    +
    750 /*
    +
    751 ==========================================================
    +
    752  Information on the JPEG 2000 codestream
    +
    753 ==========================================================
    +
    754 */
    +
    755 /* QUITE EXPERIMENTAL FOR THE MOMENT */
    +
    756 
    +
    760 typedef struct opj_packet_info {
    + + + +
    768  double disto;
    + +
    770 
    +
    771 
    +
    772 /* UniPG>> */
    +
    776 typedef struct opj_marker_info {
    +
    778  unsigned short int type;
    + +
    782  int len;
    + +
    784 /* <<UniPG */
    +
    785 
    +
    789 typedef struct opj_tp_info {
    + + + + + +
    800 } opj_tp_info_t;
    +
    801 
    +
    805 typedef struct opj_tile_info {
    +
    807  double *thresh;
    +
    809  int tileno;
    + + +
    815  int end_pos;
    +
    817  int pw[33];
    +
    819  int ph[33];
    +
    821  int pdx[33];
    +
    823  int pdy[33];
    + +
    827  int numpix;
    +
    829  double distotile;
    +
    831  int marknum;
    + + +
    837  int num_tps;
    + + +
    841 
    +
    845 typedef struct opj_codestream_info {
    +
    847  double D_max;
    +
    849  int packno;
    + +
    853  int image_w;
    +
    855  int image_h;
    + +
    859  int tile_x;
    +
    861  int tile_y;
    +
    863  int tile_Ox;
    +
    865  int tile_Oy;
    +
    867  int tw;
    +
    869  int th;
    +
    871  int numcomps;
    + + +
    876  /* UniPG>> */
    +
    878  int marknum;
    + + +
    883  /* <<UniPG */
    + + + + + +
    893 
    +
    894 /* <----------------------------------------------------------- */
    +
    895 /* new output management of the codestream information and index */
    +
    896 
    +
    900 typedef struct opj_tccp_info {
    + + + + + + + + + + + + + + +
    929 }
    + +
    931 
    +
    935 typedef struct opj_tile_v2_info {
    +
    936 
    +
    938  int tileno;
    + + + + +
    947 
    + +
    950 
    + +
    952 
    +
    956 typedef struct opj_codestream_info_v2 {
    +
    957  /* Tile info */
    + + + + + + +
    970 
    + +
    973 
    + +
    976 
    +
    978  opj_tile_info_v2_t *tile_info; /* FIXME not used for the moment */
    +
    979 
    + +
    981 
    +
    982 
    +
    986 typedef struct opj_tp_index {
    + + + +
    993 
    + +
    995 
    +
    999 typedef struct opj_tile_index {
    + +
    1002 
    + + + + +
    1011 
    +
    1012  /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
    + + + +
    1019  /* <<UniPG */
    +
    1020 
    + + +
    1025 
    + +
    1027 
    +
    1031 typedef struct opj_codestream_index {
    + + +
    1036 
    + +
    1039 
    +
    1040  /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
    + + + +
    1047  /* <<UniPG */
    +
    1048 
    + +
    1052  opj_tile_index_t *tile_index; /* FIXME not used for the moment */
    +
    1053 
    + +
    1055 /* -----------------------------------------------------------> */
    +
    1056 
    +
    1057 /*
    +
    1058 ==========================================================
    +
    1059  Metadata from the JP2file
    +
    1060 ==========================================================
    +
    1061 */
    +
    1062 
    +
    1067 typedef struct opj_jp2_metadata {
    + +
    1070 
    + +
    1072 
    +
    1077 typedef struct opj_jp2_index {
    + +
    1080 
    +
    1081 } opj_jp2_index_t;
    +
    1082 
    +
    1083 
    +
    1084 #ifdef __cplusplus
    +
    1085 extern "C" {
    +
    1086 #endif
    +
    1087 
    +
    1088 
    +
    1089 /*
    +
    1090 ==========================================================
    +
    1091  openjpeg version
    +
    1092 ==========================================================
    +
    1093 */
    +
    1094 
    +
    1095 /* Get the version of the openjpeg library*/
    +
    1096 OPJ_API const char * OPJ_CALLCONV opj_version(void);
    +
    1097 
    +
    1098 /*
    +
    1099 ==========================================================
    +
    1100  image functions definitions
    +
    1101 ==========================================================
    +
    1102 */
    +
    1103 
    + +
    1113  opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
    +
    1114 
    + +
    1121 
    + +
    1132  opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
    +
    1133 
    + +
    1144 
    +
    1153 OPJ_API void OPJ_CALLCONV opj_image_data_free(void* ptr);
    +
    1154 
    +
    1155 /*
    +
    1156 ==========================================================
    +
    1157  stream functions definitions
    +
    1158 ==========================================================
    +
    1159 */
    +
    1160 
    + +
    1169  OPJ_BOOL p_is_input);
    +
    1170 
    + +
    1180  OPJ_BOOL p_is_input);
    +
    1181 
    + +
    1189 
    + +
    1196  opj_stream_read_fn p_function);
    +
    1197 
    + +
    1204  opj_stream_write_fn p_function);
    +
    1205 
    + +
    1212  opj_stream_skip_fn p_function);
    +
    1213 
    + +
    1221  opj_stream_seek_fn p_function);
    +
    1222 
    + +
    1230  void * p_data, opj_stream_free_user_data_fn p_function);
    +
    1231 
    + +
    1239  opj_stream_t* p_stream, OPJ_UINT64 data_length);
    +
    1240 
    + +
    1247  const char *fname, OPJ_BOOL p_is_read_stream);
    +
    1248 
    + +
    1255  const char *fname,
    +
    1256  OPJ_SIZE_T p_buffer_size,
    +
    1257  OPJ_BOOL p_is_read_stream);
    +
    1258 
    +
    1259 /*
    +
    1260 ==========================================================
    +
    1261  event manager functions definitions
    +
    1262 ==========================================================
    +
    1263 */
    + +
    1271  opj_msg_callback p_callback,
    +
    1272  void * p_user_data);
    + +
    1280  opj_msg_callback p_callback,
    +
    1281  void * p_user_data);
    + +
    1289  opj_msg_callback p_callback,
    +
    1290  void * p_user_data);
    +
    1291 
    +
    1292 /*
    +
    1293 ==========================================================
    +
    1294  codec functions definitions
    +
    1295 ==========================================================
    +
    1296 */
    +
    1297 
    + +
    1305  OPJ_CODEC_FORMAT format);
    +
    1306 
    + +
    1313 
    + +
    1320  opj_stream_t *p_stream);
    +
    1321 
    +
    1322 
    + +
    1328  opj_dparameters_t *parameters);
    +
    1329 
    + +
    1340  opj_dparameters_t *parameters);
    +
    1341 
    + +
    1362  int num_threads);
    +
    1363 
    + +
    1374  opj_codec_t *p_codec,
    +
    1375  opj_image_t **p_image);
    +
    1376 
    +
    1377 
    + +
    1404  OPJ_UINT32 numcomps,
    +
    1405  const OPJ_UINT32* comps_indices,
    +
    1406  OPJ_BOOL apply_color_transforms);
    +
    1407 
    + +
    1431  opj_image_t* p_image,
    +
    1432  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    +
    1433  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y);
    +
    1434 
    + +
    1444  opj_stream_t *p_stream,
    +
    1445  opj_image_t *p_image);
    +
    1446 
    + +
    1458  opj_stream_t *p_stream,
    +
    1459  opj_image_t *p_image,
    +
    1460  OPJ_UINT32 tile_index);
    +
    1461 
    + +
    1470  opj_codec_t *p_codec, OPJ_UINT32 res_factor);
    +
    1471 
    + +
    1485  OPJ_UINT32 p_tile_index,
    +
    1486  OPJ_BYTE * p_data,
    +
    1487  OPJ_UINT32 p_data_size,
    +
    1488  opj_stream_t *p_stream);
    +
    1489 
    + +
    1512  opj_stream_t * p_stream,
    +
    1513  OPJ_UINT32 * p_tile_index,
    +
    1514  OPJ_UINT32 * p_data_size,
    +
    1515  OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
    +
    1516  OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
    +
    1517  OPJ_UINT32 * p_nb_comps,
    +
    1518  OPJ_BOOL * p_should_go_on);
    +
    1519 
    + +
    1535  OPJ_UINT32 p_tile_index,
    +
    1536  OPJ_BYTE * p_data,
    +
    1537  OPJ_UINT32 p_data_size,
    +
    1538  opj_stream_t *p_stream);
    +
    1539 
    +
    1540 /* COMPRESSION FUNCTIONS*/
    +
    1541 
    + +
    1548 
    + +
    1571  opj_cparameters_t *parameters);
    +
    1572 
    + +
    1580  opj_cparameters_t *parameters,
    +
    1581  opj_image_t *image);
    +
    1582 
    +
    1583 
    + +
    1607  opj_codec_t *p_codec,
    +
    1608  const char* const* p_options);
    +
    1609 
    + +
    1617  opj_image_t * p_image,
    +
    1618  opj_stream_t *p_stream);
    +
    1619 
    + +
    1626  opj_stream_t *p_stream);
    +
    1627 
    + +
    1636  opj_stream_t *p_stream);
    +
    1637 /*
    +
    1638 ==========================================================
    +
    1639  codec output functions definitions
    +
    1640 ==========================================================
    +
    1641 */
    +
    1642 /* EXPERIMENTAL FUNCTIONS FOR NOW, USED ONLY IN J2K_DUMP*/
    +
    1643 
    + +
    1649  **cstr_info);
    +
    1650 
    +
    1651 
    + +
    1661  OPJ_INT32 info_flag,
    +
    1662  FILE* output_stream);
    +
    1663 
    + +
    1673  opj_codec_t *p_codec);
    +
    1674 
    + +
    1684  opj_codec_t *p_codec);
    +
    1685 
    + +
    1687  **p_cstr_index);
    +
    1688 
    +
    1689 
    + +
    1699  opj_codec_t *p_codec);
    +
    1700 
    + +
    1710 
    +
    1711 
    +
    1712 /*
    +
    1713 ==========================================================
    +
    1714  MCT functions
    +
    1715 ==========================================================
    +
    1716 */
    +
    1717 
    + +
    1729  OPJ_FLOAT32 * pEncodingMatrix,
    +
    1730  OPJ_INT32 * p_dc_shift,
    +
    1731  OPJ_UINT32 pNbComp);
    +
    1732 
    +
    1733 /*
    +
    1734 ==========================================================
    +
    1735  Thread functions
    +
    1736 ==========================================================
    +
    1737 */
    +
    1738 
    + +
    1743 
    + +
    1746 
    +
    1747 
    +
    1748 #ifdef __cplusplus
    +
    1749 }
    +
    1750 #endif
    +
    1751 
    +
    1752 #endif /* OPENJPEG_H */
    +
    +
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    +
    struct opj_codestream_index opj_codestream_index_t
    Index structure of the codestream (FIXME should be expand and enhance)
    +
    struct opj_dparameters opj_dparameters_t
    Decompression parameters.
    +
    OPJ_UINT32 cblkw
    log2 of code-blocks width
    Definition: openjpeg.h:908
    +
    struct opj_image_comptparm opj_image_cmptparm_t
    Component parameters structure used by the opj_image_create function.
    +
    opj_msg_callback warning_handler
    Warning message callback if available, NULL otherwise.
    Definition: event.h:60
    +
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    +
    OPJ_SIZE_T(* opj_stream_read_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:631
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    End to compress the current image.
    Definition: openjpeg.c:858
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    +
    void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    struct opj_jp2_index opj_jp2_index_t
    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
    Definition: openjpeg.h:373
    +
    OPJ_BOOL jpwl_correct
    activates the JPWL correction capabilities
    Definition: openjpeg.h:596
    +
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER
    Definition: opj_common.h:44
    +
    OPJ_UINT32 compS
    Definition: openjpeg.h:375
    +
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    +
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    enum CODEC_FORMAT OPJ_CODEC_FORMAT
    Supported codec.
    +
    OPJ_API opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
    Get the codestream index from the codec.
    Definition: openjpeg.c:1014
    +
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    +
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    +
    void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters)
    Set encoding parameters to default values, that means :
    Definition: openjpeg.c:722
    +
    opj_codestream_info_v2_t *(* opj_get_codec_info)(void *p_codec)
    Definition: opj_codec.h:166
    +
    #define JPWL_MAXIMUM_TILES
    Expect this maximum number of tiles, to avoid some crashes.
    Definition: openjpeg.h:161
    +
    float tcp_rates[100]
    rates of layers - might be subsequently limited by the max_cs_size field.
    Definition: openjpeg.h:421
    +
    @ OPJ_CLRSPC_EYCC
    e-YCC
    Definition: openjpeg.h:315
    +
    OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:649
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:833
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    OPJ_UINT32 nb_of_tiles
    Definition: openjpeg.h:1050
    +
    struct opj_image opj_image_t
    Defines image data and characteristics.
    +
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    +
    int decod_format
    input file format 0: PGX, 1: PxM, 2: BMP 3:TIF
    Definition: openjpeg.h:465
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec, OPJ_UINT32 res_factor)
    Set the resolution factor of the decoded image.
    Definition: openjpeg.c:596
    +
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    +
    struct opj_codec_private::@2::opj_decompression m_decompression
    +
    OPJ_UINT32 precno0
    Definition: openjpeg.h:365
    +
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL p_is_input)
    Creates an abstract stream.
    Definition: cio.c:194
    +
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
    Get the decoded tile from the codec.
    Definition: openjpeg.c:572
    +
    int image_w
    image width
    Definition: openjpeg.h:853
    +
    OPJ_OFF_T main_head_start
    main header start position (SOC position)
    Definition: openjpeg.h:1033
    +
    double distotile
    add fixed_quality
    Definition: openjpeg.h:829
    +
    struct opj_image_comp opj_image_comp_t
    Defines a single image component.
    +
    OPJ_API opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec)
    Get the codestream information from the codec.
    Definition: openjpeg.c:986
    +
    OPJ_UINT32 tyS
    Definition: openjpeg.h:379
    +
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    +
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    +
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    +
    OPJ_UINT32 res_t
    Definition: openjpeg.h:381
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    +
    double D_max
    maximum distortion reduction on the whole image (add for Marcela)
    Definition: openjpeg.h:847
    +
    @ OPJ_CINEMA2K_48
    2K Digital Cinema at 24 fps
    Definition: openjpeg.h:290
    +
    char index[OPJ_PATH_LEN]
    DEPRECATED.
    Definition: openjpeg.h:455
    +
    OPJ_UINT32 lay_t
    Temporary values for Tile parts, initialised in pi_create_encode.
    Definition: openjpeg.h:381
    +
    int cp_tx0
    XTOsiz.
    Definition: openjpeg.h:391
    +
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    +
    int tp_end_header
    end position of tile part header
    Definition: openjpeg.h:793
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    int tcp_numlayers
    number of layers
    Definition: openjpeg.h:417
    +
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    +
    #define OPJ_PROFILE_NONE
    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing t...
    Definition: openjpeg.h:194
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT(opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
    Sets the MCT matrix to use.
    Definition: openjpeg.c:895
    +
    OPJ_UINT32 DA_y1
    Decoding area bottom boundary.
    Definition: openjpeg.h:581
    +
    OPJ_UINT32 qntsty
    quantisation style
    Definition: openjpeg.h:916
    +
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    void(* opj_dump_codec)(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Definition: opj_codec.h:164
    +
    OPJ_UINT32 current_nb_tps
    current nb of tile part (allocated)
    Definition: openjpeg.h:1006
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    + +
    OPJ_OFF_T end_pos
    end position
    Definition: openjpeg.h:992
    +
    int subsampling_dy
    subsampling value for dy
    Definition: openjpeg.h:463
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    +
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    +
    float tcp_distoratio[100]
    different psnr for successive layers.
    Definition: openjpeg.h:424
    +
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    +
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    +
    @ OPJ_CODEC_JPX
    JPX file format (JPEG 2000 Part-2) : to be coded.
    Definition: openjpeg.h:328
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    int image_h
    image height
    Definition: openjpeg.h:855
    +
    int maxmarknum
    actual size of markers array
    Definition: openjpeg.h:882
    +
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    +
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    +
    struct opj_poc opj_poc_t
    Progression order changes.
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec)
    Get the codestream information from the codec.
    Definition: openjpeg.c:986
    +
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    +
    OPJ_UINT32 compno
    component index
    Definition: openjpeg.h:902
    +
    #define OPJ_API
    Definition: openjpeg.h:89
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    +
    int cblockh_init
    initial code block height, default to 64
    Definition: openjpeg.h:430
    +
    OPJ_UINT32 txE
    Definition: openjpeg.h:379
    +
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options(opj_codec_t *p_codec, const char *const *p_options)
    Specify extra options for the encoder.
    Definition: openjpeg.c:803
    +
    int cod_format
    output file format 0: J2K, 1: JP2, 2: JPT
    Definition: openjpeg.h:467
    +
    @ OPJ_CINEMA4K
    Profile name for a 2K image.
    Definition: openjpeg.h:279
    +
    OPJ_UINT16 rsiz
    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.
    Definition: openjpeg.h:537
    +
    double disto
    packet distorsion
    Definition: openjpeg.h:768
    +
    OPJ_BOOL jpip_on
    Enable JPIP indexing.
    Definition: openjpeg.h:524
    +
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1018
    +
    OPJ_INT32 not_used
    Definition: openjpeg.h:1079
    +
    void(* opj_stream_free_user_data_fn)(void *p_user_data)
    Definition: openjpeg.h:655
    +
    int res_spec
    Definition: openjpeg.h:440
    +
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *p_image)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: openjpeg.c:783
    +
    @ OPJ_CINEMA2K
    Standard JPEG2000 profile.
    Definition: openjpeg.h:278
    +
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    +
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    +
    int cp_fixed_quality
    add fixed_quality
    Definition: openjpeg.h:403
    +
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    #define OPJ_FTELL(stream)
    Definition: opj_includes.h:87
    +
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    +
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
    Reads a tile header.
    Definition: openjpeg.c:515
    +
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    +
    Component parameters structure used by the opj_image_create function.
    Definition: openjpeg.h:728
    +
    OPJ_UINT32 layno0
    Layer num start,Precinct num start, Precinct num end.
    Definition: openjpeg.h:365
    +
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_CHAR progorder[5]
    Progression order string.
    Definition: openjpeg.h:369
    +
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index)
    Definition: openjpeg.c:1025
    +
    int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: openjpeg.h:496
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    int main_head_start
    main header position
    Definition: openjpeg.h:885
    +
    Message handler object used for.
    Definition: event.h:50
    +
    opj_tccp_info_t * tccp_info
    information concerning tile component parameters
    Definition: openjpeg.h:949
    +
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:744
    +
    int pdy[33]
    precinct size (in power of 2), in Y for each resolution level
    Definition: openjpeg.h:823
    +
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    +
    OPJ_UINT32 nb_tile_to_decode
    Nb of tile to decode.
    Definition: openjpeg.h:588
    +
    @ OPJ_STD_RSIZ
    Definition: openjpeg.h:277
    +
    OPJ_UINT32 cp_layer
    Set the maximum number of quality layers to decode.
    Definition: openjpeg.h:561
    +
    void * opj_stream_t
    Definition: openjpeg.h:660
    +
    opj_packet_info_t * packet_index
    information concerning packets inside tile
    Definition: openjpeg.h:1024
    +
    OPJ_UINT32 ty0_t
    Definition: openjpeg.h:381
    +
    char * cp_comment
    comment for coding
    Definition: openjpeg.h:407
    +
    struct opj_tccp_info opj_tccp_info_t
    Tile-component coding parameters information.
    +
    int jpwl_sens_size
    enables writing of ESD, (0=no/1/2 bytes)
    Definition: openjpeg.h:488
    +
    OPJ_PROG_ORDER prog_order
    progression order (default OPJ_LRCP)
    Definition: openjpeg.h:411
    +
    OPJ_INT32 not_used
    Definition: openjpeg.h:1069
    +
    void * opj_codec_t
    JPEG2000 codec V2.
    Definition: openjpeg.h:612
    +
    int tileno
    number (index) of tile
    Definition: openjpeg.h:938
    +
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:740
    +
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    +
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    int start_pos
    start position
    Definition: openjpeg.h:811
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    +
    char infile[OPJ_PATH_LEN]
    input file name
    Definition: openjpeg.h:449
    +
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format)
    Creates a J2K/JP2 compression structure.
    Definition: openjpeg.c:614
    +
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    +
    OPJ_OFF_T main_head_end
    main header end position (first SOT position)
    Definition: openjpeg.h:1035
    +
    opj_codec_t *OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 compression structure.
    Definition: openjpeg.c:614
    +
    @ OPJ_CLRSPC_GRAY
    grayscale
    Definition: openjpeg.h:313
    +
    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    Definition: openjpeg.h:1067
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components(opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
    Restrict the number of components to decode.
    Definition: openjpeg.c:442
    +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW
    Definition: opj_common.h:42
    +
    #define OPJ_J2K_MAXBANDS
    Number of maximum sub-band linked to number of resolution level.
    Definition: openjpeg.h:147
    +
    OPJ_OFF_T end_header
    end position of the header
    Definition: openjpeg.h:990
    +
    @ OPJ_CLRSPC_CMYK
    CMYK.
    Definition: openjpeg.h:316
    +
    int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: openjpeg.h:482
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible
    Definition: openjpeg.h:914
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    OPJ_UINT32 nb_packet
    packet number
    Definition: openjpeg.h:1022
    +
    Index structure about a tile.
    Definition: openjpeg.h:999
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: openjpeg.h:912
    +
    int maxmarknum
    actual size of markers array
    Definition: openjpeg.h:835
    +
    int numresolution
    number of resolutions
    Definition: openjpeg.h:426
    +
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    +
    int jpwl_exp_comps
    expected number of components
    Definition: openjpeg.h:598
    +
    Compression parameters.
    Definition: openjpeg.h:387
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec, OPJ_UINT32 res_factor)
    Set the resolution factor of the decoded image.
    Definition: openjpeg.c:596
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_decompressor, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    +
    OPJ_PROG_ORDER prg
    progression order
    Definition: openjpeg.h:942
    +
    void OPJ_CALLCONV opj_dump_codec(opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Dump the codec information into the output stream.
    Definition: openjpeg.c:970
    +
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec, int num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: openjpeg.c:387
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    +
    void(* opj_msg_callback)(const char *msg, void *client_data)
    Callback function prototype for events.
    Definition: openjpeg.h:343
    +
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    +
    @ OPJ_CINEMA2K_24
    Not Digital Cinema.
    Definition: openjpeg.h:289
    +
    @ OPJ_CLRSPC_UNKNOWN
    not supported by the library
    Definition: openjpeg.h:310
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    +
    int cp_tdx
    XTsiz.
    Definition: openjpeg.h:395
    +
    struct opj_codestream_info opj_codestream_info_t
    Index structure of the codestream.
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1016
    +
    int irreversible
    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
    Definition: openjpeg.h:434
    +
    int index_on
    DEPRECATED.
    Definition: openjpeg.h:453
    +
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    +
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    +
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT(opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
    Sets the MCT matrix to use.
    Definition: openjpeg.c:895
    +
    OPJ_UINT32 precno1
    Definition: openjpeg.h:365
    +
    CODEC_FORMAT
    Supported codec.
    Definition: openjpeg.h:322
    +
    @ OPJ_CLRSPC_SRGB
    sRGB
    Definition: openjpeg.h:312
    +
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    +
    enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.
    +
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: openjpeg.h:926
    +
    struct opj_packet_info opj_packet_info_t
    Index structure : Information concerning a packet inside tile.
    +
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    +
    int cp_ty0
    YTOsiz.
    Definition: openjpeg.h:393
    +
    OPJ_CINEMA_MODE cp_cinema
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not complia...
    Definition: openjpeg.h:506
    +
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1046
    +
    int end_header
    end position of the header
    Definition: openjpeg.h:813
    +
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: openjpeg.h:922
    +
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1042
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    OPJ_UINT32 cp_reduce
    Set the number of highest resolution levels to be discarded.
    Definition: openjpeg.h:554
    +
    OPJ_UINT32 ty0
    tile origin in y = YTOsiz
    Definition: openjpeg.h:961
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    unsigned int flags
    Definition: openjpeg.h:604
    +
    static OPJ_SIZE_T opj_read_from_file(void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
    Definition: openjpeg.c:91
    +
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    +
    OPJ_UINT32 dy
    Definition: openjpeg.h:379
    +
    void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    +
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:904
    +
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    + +
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    +
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    +
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    +
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    +
    OPJ_BOOL(* opj_set_threads)(void *p_codec, OPJ_UINT32 num_threads)
    Set number of threads.
    Definition: opj_codec.h:170
    +
    OPJ_API void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Writes a tile with the given data.
    Definition: openjpeg.c:925
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:880
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    +
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Creates an image without allocating memory for the image (used in the new version of the library).
    Definition: image.c:228
    +
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    +
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    +
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    +
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    +
    #define OPJ_PROFILE_PART2
    Definition: openjpeg.h:197
    +
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    +
    #define OPJ_FSEEK(stream, offset, whence)
    Definition: opj_includes.h:85
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
    Definition: openjpeg.h:373
    +
    const OPJ_API char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
    Get the decoded tile from the codec.
    Definition: openjpeg.c:572
    +
    char OPJ_CHAR
    Definition: openjpeg.h:114
    +
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:738
    +
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    +
    OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_info, opj_stream_t *p_stream)
    Encode an image into a JPEG-2000 codestream.
    Definition: openjpeg.c:841
    +
    #define OPJ_PATH_LEN
    Maximum allowed size for filenames.
    Definition: openjpeg.h:144
    +
    int len
    length, marker val included
    Definition: openjpeg.h:782
    +
    OPJ_UINT32 tw
    number of tiles in X
    Definition: openjpeg.h:967
    +
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    +
    opj_msg_callback info_handler
    Debug message callback if available, NULL otherwise.
    Definition: event.h:62
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    OPJ_UINT32 DA_x0
    Decoding area left boundary.
    Definition: openjpeg.h:575
    +
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    +
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Create an image.
    Definition: image.c:40
    +
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    +
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    +
    void * m_info_data
    Data to call the event manager upon.
    Definition: event.h:56
    +
    struct opj_codec_private::@2::opj_compression m_compression
    +
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: openjpeg.h:928
    +
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    +
    OPJ_UINT32 nb_tps
    number of tile parts
    Definition: openjpeg.h:1004
    +
    OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:918
    +
    OPJ_API void OPJ_CALLCONV opj_dump_codec(opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Dump the codec information into the output stream.
    Definition: openjpeg.c:970
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    +
    OPJ_BOOL tile_size_on
    size of tile: tile_size_on = false (not in argument) or = true (in argument)
    Definition: openjpeg.h:389
    +
    static OPJ_OFF_T opj_skip_from_file(OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
    Definition: openjpeg.c:115
    +
    opj_tile_info_v2_t * tile_info
    information regarding tiles inside image
    Definition: openjpeg.h:978
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    +
    char tp_flag
    Flag for Tile part generation.
    Definition: openjpeg.h:520
    +
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    +
    OPJ_BOOL m_verbose
    Verbose mode.
    Definition: openjpeg.h:583
    +
    #define OPJ_IS_PART2(v)
    Definition: openjpeg.h:226
    +
    const char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Reads a tile data.
    Definition: openjpeg.c:546
    +
    int jpwl_sens_range
    sensitivity range (0-3)
    Definition: openjpeg.h:492
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    int image_offset_y0
    subimage encoding: origin image offset in y direction
    Definition: openjpeg.h:459
    +
    int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1=no,0-7)
    Definition: openjpeg.h:498
    +
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    +
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    +
    int pdx[33]
    precinct size (in power of 2), in X for each resolution level
    Definition: openjpeg.h:821
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *image)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: openjpeg.c:783
    +
    static OPJ_UINT64 opj_get_data_length_from_file(FILE *p_file)
    Definition: openjpeg.c:98
    +
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Reads a tile data.
    Definition: openjpeg.c:546
    +
    int jpwl_sens_MH
    sensitivity method for MH (-1=no,0-7)
    Definition: openjpeg.h:494
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    struct opj_tp_info opj_tp_info_t
    Index structure : Information concerning tile-parts.
    +
    int tileno
    number of tile
    Definition: openjpeg.h:809
    +
    int subsampling_dx
    subsampling value for dx
    Definition: openjpeg.h:461
    +
    OPJ_UINT32 current_tpsno
    current tile-part index
    Definition: openjpeg.h:1008
    +
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    +
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    +
    int num_tps
    number of tile parts
    Definition: openjpeg.h:837
    +
    @ OPJ_CLRSPC_SYCC
    YUV.
    Definition: openjpeg.h:314
    +
    void * m_codec
    FIXME DOC.
    Definition: opj_codec.h:159
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    +
    Tile-component coding parameters information.
    Definition: openjpeg.h:900
    +
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec, int num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: openjpeg.c:387
    +
    int packno
    packet number
    Definition: openjpeg.h:849
    +
    int tile_Ox
    Definition: openjpeg.h:863
    +
    OPJ_UINT32 tx0
    tile origin in x = XTOsiz
    Definition: openjpeg.h:959
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    +
    int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: openjpeg.h:486
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    int jpwl_sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: openjpeg.h:490
    +
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    +
    int roi_compno
    region of interest: affected component in [0..3], -1 means no ROI
    Definition: openjpeg.h:436
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components(opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
    Restrict the number of components to decode.
    Definition: openjpeg.c:442
    +
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: openjpeg.h:924
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_UINT32 nbcomps
    number of components
    Definition: openjpeg.h:972
    +
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options(opj_codec_t *p_codec, const char *const *options)
    Specify extra options for the encoder.
    Definition: openjpeg.c:803
    +
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    +
    opj_poc_t POC[32]
    progression order changes
    Definition: openjpeg.h:413
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    +
    Tile coding parameters information.
    Definition: openjpeg.h:935
    +
    OPJ_API void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:746
    +
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    +
    OPJ_API void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    OPJ_UINT32 prcS
    Definition: openjpeg.h:375
    +
    int cod_format
    output file format 0: PGX, 1: PxM, 2: BMP
    Definition: openjpeg.h:572
    +
    char tcp_mct
    MCT (multiple component transform)
    Definition: openjpeg.h:522
    +
    void * m_error_data
    Data to call the event manager upon.
    Definition: event.h:52
    +
    Main codec handler used for compression or decompression.
    Definition: opj_codec.h:42
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    int cp_fixed_alloc
    allocation by fixed layer
    Definition: openjpeg.h:401
    +
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    +
    char outfile[OPJ_PATH_LEN]
    output file name
    Definition: openjpeg.h:568
    +
    OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    +
    int max_cs_size
    Maximum size (in bytes) for the whole codestream.
    Definition: openjpeg.h:534
    +
    void * mct_data
    Naive implementation of MCT restricted to a single reversible array based encoding without offset con...
    Definition: openjpeg.h:527
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: openjpeg.h:478
    +
    COLOR_SPACE
    Supported image color spaces.
    Definition: openjpeg.h:309
    +
    OPJ_BOOL is_decompressor
    Flag to indicate if the codec is used to decode or encode.
    Definition: opj_codec.h:163
    +
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    +
    OPJ_UINT16 alpha
    alpha channel
    Definition: openjpeg.h:697
    +
    int prch_init[OPJ_J2K_MAXRLVLS]
    initial precinct height
    Definition: openjpeg.h:444
    +
    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    Definition: openjpeg.h:1077
    +
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    +
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    +
    OPJ_BOOL OPJ_CALLCONV opj_end_compress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    End to compress the current image.
    Definition: openjpeg.c:858
    +
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    +
    int numpix
    add fixed_quality
    Definition: openjpeg.h:827
    +
    @ OPJ_CODEC_UNKNOWN
    place-holder
    Definition: openjpeg.h:323
    +
    OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    +
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    +
    char infile[OPJ_PATH_LEN]
    input file name
    Definition: openjpeg.h:566
    +
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
    Definition: openjpeg.h:373
    +
    OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:920
    +
    int main_head_end
    main header position
    Definition: openjpeg.h:887
    +
    RSIZ_CAPABILITIES
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.
    Definition: openjpeg.h:276
    +
    struct opj_tile_index opj_tile_index_t
    Index structure about a tile.
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:734
    +
    void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index)
    Definition: openjpeg.c:1025
    +
    OPJ_UINT32 comp_t
    Definition: openjpeg.h:381
    +
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    +
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    +
    OPJ_UINT32 tdy
    tile size in y = YTsiz
    Definition: openjpeg.h:965
    +
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    +
    struct opj_tile_v2_info opj_tile_info_v2_t
    Tile coding parameters information.
    +
    @ OPJ_OFF
    Definition: openjpeg.h:288
    +
    int8_t OPJ_INT8
    Definition: openjpeg.h:121
    +
    int cp_disto_alloc
    allocation by rate/distortion
    Definition: openjpeg.h:399
    +
    OPJ_UINT32 txS
    Start and end values of Tile width and height, initialised in pi_initialise_encode.
    Definition: openjpeg.h:379
    +
    @ OPJ_CINEMA4K_24
    2K Digital Cinema at 48 fps
    Definition: openjpeg.h:291
    +
    void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    +
    enum CINEMA_MODE OPJ_CINEMA_MODE
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.
    +
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    +
    void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    +
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    +
    OPJ_OFF_T start_pos
    start position
    Definition: openjpeg.h:988
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    +
    int roi_shift
    region of interest: upshift value
    Definition: openjpeg.h:438
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
    Reads a tile header.
    Definition: openjpeg.c:515
    +
    struct opj_tp_index opj_tp_index_t
    Index structure about a tile part.
    +
    int cblockw_init
    initial code block width, default to 64
    Definition: openjpeg.h:428
    +
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream(const char *fname, OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with a specific buffer size.
    Definition: openjpeg.c:1040
    +
    int marknum
    number of markers
    Definition: openjpeg.h:831
    +
    enum COLOR_SPACE OPJ_COLOR_SPACE
    Supported image color spaces.
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    @ OPJ_CODEC_JPP
    JPP-stream (JPEG 2000, JPIP) : to be coded.
    Definition: openjpeg.h:327
    +
    @ OPJ_MCT
    Profile name for a 4K image.
    Definition: openjpeg.h:280
    +
    OPJ_BOOL OPJ_CALLCONV opj_write_tile(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Writes a tile with the given data.
    Definition: openjpeg.c:925
    +
    Decompression parameters.
    Definition: openjpeg.h:546
    +
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    +
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    +
    struct opj_codestream_info_v2 opj_codestream_info_v2_t
    Information structure about the codestream (FIXME should be expand and enhance)
    +
    opj_tile_info_v2_t m_default_tile_info
    Default information regarding tiles inside image.
    Definition: openjpeg.h:975
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    +
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1044
    +
    PROG_ORDER
    Progression order.
    Definition: openjpeg.h:297
    +
    double * thresh
    value of thresh for each layer by tile cfr.
    Definition: openjpeg.h:807
    +
    OPJ_UINT32 tyE
    Definition: openjpeg.h:379
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    +
    static OPJ_BOOL opj_seek_from_file(OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
    Definition: openjpeg.c:124
    +
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    +
    OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:643
    +
    #define JPWL_MAX_NO_PACKSPECS
    Maximum number of packet parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:157
    +
    CINEMA_MODE
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.
    Definition: openjpeg.h:287
    +
    @ OPJ_CLRSPC_UNSPECIFIED
    not specified in the codestream
    Definition: openjpeg.h:311
    +
    #define JPWL_MAX_NO_TILESPECS
    Maximum number of tile parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:156
    +
    int tile_Oy
    Definition: openjpeg.h:865
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    +
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
    Start and end values for Tile width and height.
    Definition: openjpeg.h:373
    +
    OPJ_UINT32 numlayers
    number of layers
    Definition: openjpeg.h:944
    +
    static OPJ_SIZE_T opj_write_from_file(void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
    Definition: openjpeg.c:109
    +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH
    Definition: opj_common.h:43
    +
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    +
    OPJ_UINT32 tileno
    tile index
    Definition: openjpeg.h:1001
    +
    union opj_codec_private::@2 m_codec_data
    FIXME DOC.
    +
    int jpwl_max_tiles
    maximum number of tiles
    Definition: openjpeg.h:600
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    struct opj_marker_info opj_marker_info_t
    Marker structure.
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    +
    opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    +
    int image_offset_x0
    subimage encoding: origin image offset in x direction
    Definition: openjpeg.h:457
    +
    OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    +
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    char tp_on
    Tile part generation.
    Definition: openjpeg.h:518
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Encode an image into a JPEG-2000 codestream.
    Definition: openjpeg.c:841
    +
    int mode
    mode switch (cblk_style)
    Definition: openjpeg.h:432
    +
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    OPJ_BOOL OPJ_CALLCONV opj_start_compress(opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
    Start to compress the current image.
    Definition: openjpeg.c:822
    +
    OPJ_UINT32 tile_index
    tile number of the decoded tile
    Definition: openjpeg.h:586
    +
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    +
    int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: openjpeg.h:484
    +
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    +
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION
    Definition: opj_common.h:45
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:730
    +
    #define OPJ_J2K_STREAM_CHUNK_SIZE
    Definition: openjpeg.h:150
    +
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32
    Definition: openjpeg.h:352
    +
    OPJ_UINT64 codestream_size
    codestream's size
    Definition: openjpeg.h:1038
    +
    opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream(const char *fname, OPJ_SIZE_T p_size, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with a specific buffer size.
    Definition: openjpeg.c:1040
    +
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:940
    +
    int cp_tdy
    YTsiz.
    Definition: openjpeg.h:397
    +
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: openjpeg.h:946
    +
    opj_tp_index_t * tp_index
    information concerning tile parts
    Definition: openjpeg.h:1010
    +
    OPJ_UINT32 prc_t
    Definition: openjpeg.h:381
    +
    int csty
    csty : coding style
    Definition: openjpeg.h:409
    +
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    +
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:736
    +
    OPJ_SIZE_T(* opj_stream_write_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:637
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_UINT32 th
    number of tiles in Y
    Definition: openjpeg.h:969
    +
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    +
    Index structure about a tile part.
    Definition: openjpeg.h:986
    +
    int tile_y
    tile size in y
    Definition: openjpeg.h:861
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress(opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
    Start to compress the current image.
    Definition: openjpeg.c:822
    +
    opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
    Get the codestream index from the codec.
    Definition: openjpeg.c:1014
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    int decod_format
    input file format 0: J2K, 1: JP2, 2: JPT
    Definition: openjpeg.h:570
    +
    OPJ_RSIZ_CAPABILITIES cp_rsiz
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.
    Definition: openjpeg.h:516
    +
    @ OPJ_CODEC_JPT
    JPT-stream (JPEG 2000, JPIP) : read only.
    Definition: openjpeg.h:325
    +
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    +
    struct opj_jp2_metadata opj_jp2_metadata_t
    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    +
    opj_codestream_index_t *(* opj_get_codec_index)(void *p_codec)
    Definition: opj_codec.h:167
    +
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    +
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    +
    OPJ_UINT32 tx0_t
    Definition: openjpeg.h:381
    +
    OPJ_UINT32 resS
    Definition: openjpeg.h:375
    +
    OPJ_API opj_jp2_index_t *OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_codec)
    Get the JP2 file index from the codec FIXME.
    +
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    +
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    +
    #define OPJ_EXTENSION_MCT
    Definition: openjpeg.h:217
    +
    OPJ_UINT32 tile
    Tile number (starting at 1)
    Definition: openjpeg.h:371
    +
    #define JPWL_EXPECTED_COMPONENTS
    Expect this number of components, so you'll find better the first EPB.
    Definition: openjpeg.h:160
    +
    OPJ_UINT32 DA_y0
    Decoding area up boundary.
    Definition: openjpeg.h:579
    +
    void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    +
    OPJ_UINT32 cblkh
    log2 of code-blocks height
    Definition: openjpeg.h:910
    +
    OPJ_API opj_jp2_metadata_t *OPJ_CALLCONV opj_get_jp2_metadata(opj_codec_t *p_codec)
    Get the JP2 file information from the codec FIXME.
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:742
    +
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    +
    opj_event_mgr_t m_event_mgr
    Event handler.
    Definition: opj_codec.h:161
    +
    @ OPJ_CODEC_JP2
    JP2 file format : read/write.
    Definition: openjpeg.h:326
    +
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters)
    Set encoding parameters to default values, that means :
    Definition: openjpeg.c:722
    +
    int prcw_init[OPJ_J2K_MAXRLVLS]
    initial precinct width
    Definition: openjpeg.h:442
    +
    OPJ_UINT32 numpocs
    number of progression order changes (POC), default to 0
    Definition: openjpeg.h:415
    +
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    +
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    +
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    +
    void * m_warning_data
    Data to call the event manager upon.
    Definition: event.h:54
    +
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:732
    +
    char outfile[OPJ_PATH_LEN]
    output file name
    Definition: openjpeg.h:451
    +
    OPJ_UINT32 DA_x1
    Decoding area right boundary.
    Definition: openjpeg.h:577
    +
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1014
    +
    int tp_end_pos
    end position of tile part
    Definition: openjpeg.h:795
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: openjpeg.h:480
    +
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    +
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    +
    @ OPJ_CODEC_J2K
    JPEG-2000 codestream : read/write.
    Definition: openjpeg.h:324
    +
    OPJ_BOOL jpwl_epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: openjpeg.h:474
    +
    int jpwl_hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: openjpeg.h:476
    +
    Progression order changes.
    Definition: openjpeg.h:359
    +
    void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    +
    Marker structure.
    Definition: openjpeg.h:776
    +
    int tp_numpacks
    number of packets of tile part
    Definition: openjpeg.h:799
    +
    struct opj_tile_info opj_tile_info_t
    Index structure : information regarding tiles.
    +
    int tile_x
    tile size in x
    Definition: openjpeg.h:859
    +
    int * cp_matrice
    fixed layer
    Definition: openjpeg.h:405
    +
    OPJ_UINT32 tdx
    tile size in x = XTsiz
    Definition: openjpeg.h:963
    +
    OPJ_UINT32 layS
    Start value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:375
    +
    OPJ_UINT32 dx
    Definition: openjpeg.h:379
    +
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    +
    opj_msg_callback error_handler
    Error message callback if available, NULL otherwise.
    Definition: event.h:58
    +
    int marknum
    number of markers
    Definition: openjpeg.h:878
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: openjpeg.h:906
    +
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    +
    int max_comp_size
    Maximum size (in bytes) for each component.
    Definition: openjpeg.h:511
    +
    int tp_start_pack
    start packet of tile part
    Definition: openjpeg.h:797
    +
    void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    +
    int end_pos
    end position
    Definition: openjpeg.h:815
    +
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    +
    struct opj_cparameters opj_cparameters_t
    Compression parameters.
    +
    int codestream_size
    codestream's size
    Definition: openjpeg.h:889
    + + + + diff --git a/build/doc/html/openjpip_8c.html b/build/doc/html/openjpip_8c.html new file mode 100644 index 000000000..f9916e9a9 --- /dev/null +++ b/build/doc/html/openjpip_8c.html @@ -0,0 +1,547 @@ + + + + + + + +OpenJPEG: openjpip.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    openjpip.c File Reference
    +
    +
    +
    #include <stdlib.h>
    +#include "openjpip.h"
    +#include "jpip_parser.h"
    +#include "channel_manager.h"
    +#include "byte_manager.h"
    +#include <unistd.h>
    +#include <stdio.h>
    +#include "dec_clientmsg_handler.h"
    +#include "jpipstream_manager.h"
    +#include <string.h>
    +#include <sys/types.h>
    +#include <sys/stat.h>
    +#include <fcntl.h>
    +#include "jp2k_encoder.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    dec_server_record_t *OPJ_CALLCONV init_dec_server (int port)
     Initialize the image decoding server. More...
     
    void OPJ_CALLCONV terminate_dec_server (dec_server_record_t **rec)
     Terminate the image decoding server. More...
     
    client_t OPJ_CALLCONV accept_connection (dec_server_record_t *rec)
     Accept client connection. More...
     
    OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client, dec_server_record_t *rec)
     Handle client request. More...
     
    jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
     Initialize jpip decoder. More...
     
    OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[], jpip_dec_param_t *dec)
     Read jpip codestream from a file. More...
     
    void OPJ_CALLCONV decode_jpip (jpip_dec_param_t *dec)
     Decode jpip codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[], jpip_dec_param_t *dec)
     Write J2K/JP2 codestream to a file. More...
     
    void OPJ_CALLCONV output_log (OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
     Option; print out parameter values to stderr. More...
     
    void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t **dec)
     Destroy jpip decoding parameters. More...
     
    index_t *OPJ_CALLCONV get_index_from_JP2file (int fd)
     Parse JP2 file and get index information from cidx box inside. More...
     
    void OPJ_CALLCONV destroy_index (index_t **idx)
     Destroy index parameters. More...
     
    void OPJ_CALLCONV output_index (index_t *index)
     print index parameters More...
     
    +

    Function Documentation

    + +

    ◆ accept_connection()

    + +
    +
    + + + + + + + + +
    client_t OPJ_CALLCONV accept_connection (dec_server_record_trec)
    +
    + +

    Accept client connection.

    +
    Parameters
    + + +
    [in]recdecoding server static record pointer
    +
    +
    +
    Returns
    client socket ID, -1 if failed
    + +

    References accept_socket(), and dec_server_record::listening_socket.

    + +
    +
    + +

    ◆ decode_jpip()

    + + + +

    ◆ destroy_index()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV destroy_index (index_t ** idx)
    +
    + +

    Destroy index parameters.

    +
    Parameters
    + + +
    [in,out]idxaddressof the index pointer
    +
    +
    + +

    References delete_index().

    + +
    +
    + +

    ◆ destroy_jpipdecoder()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t ** dec)
    +
    + +

    Destroy jpip decoding parameters.

    +
    Parameters
    + + +
    [in]decaddress of JPIP decoding parameters pointer
    +
    +
    + +

    References delete_metadatalist(), delete_msgqueue(), and opj_free().

    + +
    +
    + +

    ◆ fread_jpip()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[],
    jpip_dec_param_tdec 
    )
    +
    + +

    Read jpip codestream from a file.

    +
    Parameters
    + + + +
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    +
    +
    +
    Returns
    true if succeed
    + +

    References get_filesize(), jpip_dec_param::jpiplen, jpip_dec_param::jpipstream, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ fwrite_jp2k()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[],
    jpip_dec_param_tdec 
    )
    +
    + +

    Write J2K/JP2 codestream to a file.

    +
    Parameters
    + + + +
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    +
    +
    +
    Returns
    true if succeed
    + +

    References jpip_dec_param::jp2klen, jpip_dec_param::jp2kstream, OPJ_FALSE, and OPJ_TRUE.

    + +
    +
    + +

    ◆ get_index_from_JP2file()

    + +
    +
    + + + + + + + + +
    index_t* OPJ_CALLCONV get_index_from_JP2file (int fd)
    +
    + +

    Parse JP2 file and get index information from cidx box inside.

    +
    Parameters
    + + +
    [in]fdfile descriptor of the JP2 file
    +
    +
    +
    Returns
    pointer to the generated structure of index parameters
    + +

    References opj_free(), opj_malloc(), and parse_jp2file().

    + +
    +
    + +

    ◆ handle_clientreq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client,
    dec_server_record_trec 
    )
    +
    +
    + +

    ◆ init_dec_server()

    + +
    +
    + + + + + + + + +
    dec_server_record_t* OPJ_CALLCONV init_dec_server (int port)
    +
    + +

    Initialize the image decoding server.

    +
    Parameters
    + + +
    [in]portopening tcp port (valid No. 49152-65535)
    +
    +
    +
    Returns
    initialized decoding server record pointer
    + +

    References dec_server_record::cachelist, gene_cachelist(), gene_msgqueue(), dec_server_record::jpipstream, dec_server_record::jpipstreamlen, dec_server_record::listening_socket, dec_server_record::msgqueue, open_listeningsocket(), opj_malloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ init_jpipdecoder()

    + +
    +
    + + + + + + + + +
    jpip_dec_param_t* OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
    +
    + +

    Initialize jpip decoder.

    +
    Parameters
    + + +
    [in]jp2true in case of jp2 file encoding, else j2k file encoding
    +
    +
    +
    Returns
    JPIP decoding parameters pointer
    + +

    References gene_metadatalist(), gene_msgqueue(), jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, opj_calloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ output_index()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV output_index (index_tindex)
    +
    + +

    print index parameters

    +
    Parameters
    + + +
    [in]indexindex parameters
    +
    +
    + +

    References print_index().

    + +
    +
    + +

    ◆ output_log()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void OPJ_CALLCONV output_log (OPJ_BOOL messages,
    OPJ_BOOL metadata,
    OPJ_BOOL ihdrbox,
    jpip_dec_param_tdec 
    )
    +
    + +

    Option; print out parameter values to stderr.

    +
    Parameters
    + + + + + +
    [in]messagestrue if queue of messages is to be printed out
    [in]metadatatrue if metadata is to be printed out
    [in]ihdrboxtrue if image header data is to be printed out
    [in]decJPIP decoding parameters pointer
    +
    +
    + +

    References ihdrbox_param::bpc, ihdrbox_param::height, jpip_dec_param::ihdrbox, jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, ihdrbox_param::nc, print_allmetadata(), print_msgqueue(), and ihdrbox_param::width.

    + +
    +
    + +

    ◆ terminate_dec_server()

    + +
    +
    + + + + + + + + +
    void OPJ_CALLCONV terminate_dec_server (dec_server_record_t ** rec)
    +
    + +

    Terminate the image decoding server.

    +
    Parameters
    + + +
    [in]recaddress of deleting decoding server static record pointer
    +
    +
    + +

    References close_socket(), delete_cachelist(), delete_msgqueue(), and opj_free().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/openjpip_8dox.html b/build/doc/html/openjpip_8dox.html new file mode 100644 index 000000000..15ed228a6 --- /dev/null +++ b/build/doc/html/openjpip_8dox.html @@ -0,0 +1,54 @@ + + + + + + + +OpenJPEG: openjpip.dox File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    openjpip.dox File Reference
    +
    +
    +
    + + + + diff --git a/build/doc/html/openjpip_8h.html b/build/doc/html/openjpip_8h.html new file mode 100644 index 000000000..bad0e7388 --- /dev/null +++ b/build/doc/html/openjpip_8h.html @@ -0,0 +1,691 @@ + + + + + + + +OpenJPEG: openjpip.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    openjpip.h File Reference
    +
    +
    +
    #include "session_manager.h"
    +#include "target_manager.h"
    +#include "query_parser.h"
    +#include "msgqueue_manager.h"
    +#include "sock_manager.h"
    +#include "auxtrans_manager.h"
    +#include "cache_manager.h"
    +#include "byte_manager.h"
    +#include "imgsock_manager.h"
    +#include "metadata_manager.h"
    +#include "ihdrbox_manager.h"
    +#include "index_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  dec_server_record
     Decoding server static records. More...
     
    struct  jpip_dec_param
     JPIP decoding parameters. More...
     
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + +

    +Typedefs

    typedef struct dec_server_record dec_server_record_t
     Decoding server static records. More...
     
    typedef SOCKET client_t
     Client socket identifier. More...
     
    typedef struct jpip_dec_param jpip_dec_param_t
     JPIP decoding parameters. More...
     
    typedef index_param_t index_t
     Redefinition of index parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_API dec_server_record_t *OPJ_CALLCONV init_dec_server (int port)
     Initialize the image decoding server. More...
     
    OPJ_API void OPJ_CALLCONV terminate_dec_server (dec_server_record_t **rec)
     Terminate the image decoding server. More...
     
    OPJ_API client_t OPJ_CALLCONV accept_connection (dec_server_record_t *rec)
     Accept client connection. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client, dec_server_record_t *rec)
     Handle client request. More...
     
    OPJ_API jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
     Initialize jpip decoder. More...
     
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t **dec)
     Destroy jpip decoding parameters. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[], jpip_dec_param_t *dec)
     Read jpip codestream from a file. More...
     
    OPJ_API void OPJ_CALLCONV decode_jpip (jpip_dec_param_t *dec)
     Decode jpip codestream. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[], jpip_dec_param_t *dec)
     Write J2K/JP2 codestream to a file. More...
     
    OPJ_API void OPJ_CALLCONV output_log (OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
     Option; print out parameter values to stderr. More...
     
    OPJ_API index_t *OPJ_CALLCONV get_index_from_JP2file (int fd)
     Parse JP2 file and get index information from cidx box inside. More...
     
    OPJ_API void OPJ_CALLCONV destroy_index (index_t **idx)
     Destroy index parameters. More...
     
    OPJ_API void OPJ_CALLCONV output_index (index_t *index)
     print index parameters More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ client_t

    + +
    +
    + + + + +
    typedef SOCKET client_t
    +
    + +

    Client socket identifier.

    + +
    +
    + +

    ◆ dec_server_record_t

    + +
    +
    + + + + +
    typedef struct dec_server_record dec_server_record_t
    +
    + +

    Decoding server static records.

    + +
    +
    + +

    ◆ index_t

    + +
    +
    + + + + +
    typedef index_param_t index_t
    +
    + +

    Redefinition of index parameters.

    + +
    +
    + +

    ◆ jpip_dec_param_t

    + +
    +
    + + + + +
    typedef struct jpip_dec_param jpip_dec_param_t
    +
    + +

    JPIP decoding parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ accept_connection()

    + +
    +
    + + + + + + + + +
    OPJ_API client_t OPJ_CALLCONV accept_connection (dec_server_record_trec)
    +
    + +

    Accept client connection.

    +
    Parameters
    + + +
    [in]recdecoding server static record pointer
    +
    +
    +
    Returns
    client socket ID, -1 if failed
    + +

    References accept_socket(), and dec_server_record::listening_socket.

    + +
    +
    + +

    ◆ decode_jpip()

    + + + +

    ◆ destroy_index()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV destroy_index (index_t ** idx)
    +
    + +

    Destroy index parameters.

    +
    Parameters
    + + +
    [in,out]idxaddressof the index pointer
    +
    +
    + +

    References delete_index().

    + +
    +
    + +

    ◆ destroy_jpipdecoder()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t ** dec)
    +
    + +

    Destroy jpip decoding parameters.

    +
    Parameters
    + + +
    [in]decaddress of JPIP decoding parameters pointer
    +
    +
    + +

    References delete_metadatalist(), delete_msgqueue(), and opj_free().

    + +
    +
    + +

    ◆ fread_jpip()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[],
    jpip_dec_param_tdec 
    )
    +
    + +

    Read jpip codestream from a file.

    +
    Parameters
    + + + +
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    +
    +
    +
    Returns
    true if succeed
    + +

    References get_filesize(), jpip_dec_param::jpiplen, jpip_dec_param::jpipstream, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ fwrite_jp2k()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[],
    jpip_dec_param_tdec 
    )
    +
    + +

    Write J2K/JP2 codestream to a file.

    +
    Parameters
    + + + +
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    +
    +
    +
    Returns
    true if succeed
    + +

    References jpip_dec_param::jp2klen, jpip_dec_param::jp2kstream, OPJ_FALSE, and OPJ_TRUE.

    + +
    +
    + +

    ◆ get_index_from_JP2file()

    + +
    +
    + + + + + + + + +
    OPJ_API index_t* OPJ_CALLCONV get_index_from_JP2file (int fd)
    +
    + +

    Parse JP2 file and get index information from cidx box inside.

    +
    Parameters
    + + +
    [in]fdfile descriptor of the JP2 file
    +
    +
    +
    Returns
    pointer to the generated structure of index parameters
    + +

    References opj_free(), opj_malloc(), and parse_jp2file().

    + +
    +
    + +

    ◆ handle_clientreq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client,
    dec_server_record_trec 
    )
    +
    +
    + +

    ◆ init_dec_server()

    + +
    +
    + + + + + + + + +
    OPJ_API dec_server_record_t* OPJ_CALLCONV init_dec_server (int port)
    +
    + +

    Initialize the image decoding server.

    +
    Parameters
    + + +
    [in]portopening tcp port (valid No. 49152-65535)
    +
    +
    +
    Returns
    initialized decoding server record pointer
    + +

    References dec_server_record::cachelist, gene_cachelist(), gene_msgqueue(), dec_server_record::jpipstream, dec_server_record::jpipstreamlen, dec_server_record::listening_socket, dec_server_record::msgqueue, open_listeningsocket(), opj_malloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ init_jpipdecoder()

    + +
    +
    + + + + + + + + +
    OPJ_API jpip_dec_param_t* OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
    +
    + +

    Initialize jpip decoder.

    +
    Parameters
    + + +
    [in]jp2true in case of jp2 file encoding, else j2k file encoding
    +
    +
    +
    Returns
    JPIP decoding parameters pointer
    + +

    References gene_metadatalist(), gene_msgqueue(), jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, opj_calloc(), and OPJ_TRUE.

    + +
    +
    + +

    ◆ output_index()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV output_index (index_tindex)
    +
    + +

    print index parameters

    +
    Parameters
    + + +
    [in]indexindex parameters
    +
    +
    + +

    References print_index().

    + +
    +
    + +

    ◆ output_log()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_API void OPJ_CALLCONV output_log (OPJ_BOOL messages,
    OPJ_BOOL metadata,
    OPJ_BOOL ihdrbox,
    jpip_dec_param_tdec 
    )
    +
    + +

    Option; print out parameter values to stderr.

    +
    Parameters
    + + + + + +
    [in]messagestrue if queue of messages is to be printed out
    [in]metadatatrue if metadata is to be printed out
    [in]ihdrboxtrue if image header data is to be printed out
    [in]decJPIP decoding parameters pointer
    +
    +
    + +

    References ihdrbox_param::bpc, ihdrbox_param::height, jpip_dec_param::ihdrbox, jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, ihdrbox_param::nc, print_allmetadata(), print_msgqueue(), and ihdrbox_param::width.

    + +
    +
    + +

    ◆ terminate_dec_server()

    + +
    +
    + + + + + + + + +
    OPJ_API void OPJ_CALLCONV terminate_dec_server (dec_server_record_t ** rec)
    +
    + +

    Terminate the image decoding server.

    +
    Parameters
    + + +
    [in]recaddress of deleting decoding server static record pointer
    +
    +
    + +

    References close_socket(), delete_cachelist(), delete_msgqueue(), and opj_free().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/openjpip_8h_source.html b/build/doc/html/openjpip_8h_source.html new file mode 100644 index 000000000..2fb1e67d8 --- /dev/null +++ b/build/doc/html/openjpip_8h_source.html @@ -0,0 +1,397 @@ + + + + + + + +OpenJPEG: openjpip.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    openjpip.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef OPENJPIP_H_
    +
    32 # define OPENJPIP_H_
    +
    33 
    +
    34 #include "session_manager.h"
    +
    35 #include "target_manager.h"
    +
    36 #include "query_parser.h"
    +
    37 #include "msgqueue_manager.h"
    +
    38 #include "sock_manager.h"
    +
    39 #include "auxtrans_manager.h"
    +
    40 
    +
    41 #ifdef SERVER
    +
    42 
    +
    43 #include "fcgi_stdio.h"
    +
    44 #define logstream FCGI_stdout
    +
    45 
    +
    46 #else
    +
    47 
    +
    48 #define FCGI_stdout stdout
    +
    49 #define FCGI_stderr stderr
    +
    50 #define logstream stderr
    +
    51 
    +
    52 #include "cache_manager.h"
    +
    53 #include "byte_manager.h"
    +
    54 #include "imgsock_manager.h"
    +
    55 
    +
    56 #include "metadata_manager.h"
    +
    57 #include "ihdrbox_manager.h"
    +
    58 #include "index_manager.h"
    +
    59 
    +
    60 #endif /*SERVER*/
    +
    61 
    +
    62 /*
    +
    63  *==========================================================
    +
    64  * JPIP server API
    +
    65  *==========================================================
    +
    66  */
    +
    67 
    +
    68 #ifdef SERVER
    +
    69 
    +
    71 typedef struct server_record {
    +
    72  sessionlist_param_t *sessionlist;
    +
    73  targetlist_param_t *targetlist;
    +
    74  auxtrans_param_t auxtrans;
    +
    75 } server_record_t;
    +
    76 
    +
    78 typedef struct QR {
    +
    79  query_param_t *query;
    +
    80  msgqueue_param_t *msgqueue;
    +
    81  channel_param_t *channel;
    +
    82 } QR_t;
    +
    83 
    +
    91 server_record_t * init_JPIPserver(int tcp_auxport, int udp_auxport);
    +
    92 
    +
    98 void terminate_JPIPserver(server_record_t **rec);
    +
    99 
    +
    106 QR_t * parse_querystring(const char *query_string);
    +
    107 
    +
    115 OPJ_BOOL process_JPIPrequest(server_record_t *rec, QR_t *qr);
    +
    116 
    +
    123 void send_responsedata(server_record_t *rec, QR_t *qr);
    +
    124 
    +
    131 void end_QRprocess(server_record_t *rec, QR_t **qr);
    +
    132 
    +
    143 void local_log(OPJ_BOOL query, OPJ_BOOL messages, OPJ_BOOL sessions,
    +
    144  OPJ_BOOL targets, QR_t *qr, server_record_t *rec);
    +
    145 
    +
    146 #endif /*SERVER*/
    +
    147 
    +
    148 /*
    +
    149  *==========================================================
    +
    150  * JPIP decoding server API
    +
    151  *==========================================================
    +
    152  */
    +
    153 
    +
    154 #ifndef SERVER
    +
    155 
    +
    157 typedef struct dec_server_record {
    + + + + + + +
    164 
    +
    165 
    +
    167 typedef SOCKET client_t;
    +
    168 
    + +
    176 
    + +
    183 
    + +
    191 
    + +
    200  dec_server_record_t *rec);
    +
    201 
    +
    202 #endif /*SERVER*/
    +
    203 
    +
    204 /*
    +
    205  *==========================================================
    +
    206  * JPIP tool API
    +
    207  *==========================================================
    +
    208  */
    +
    209 
    +
    210 #ifndef SERVER
    +
    211 
    +
    212 /*
    +
    213  * jpip to JP2 or J2K
    +
    214  */
    +
    215 
    +
    217 typedef struct jpip_dec_param {
    + + + + + + + + +
    226 
    + +
    234 
    + +
    241 
    +
    249 OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[],
    +
    250  jpip_dec_param_t *dec);
    +
    251 
    + +
    258 
    +
    266 OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[],
    +
    267  jpip_dec_param_t *dec);
    +
    268 
    +
    277 OPJ_API void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata,
    +
    278  OPJ_BOOL ihdrbox, jpip_dec_param_t *dec);
    +
    279 
    +
    280 /*
    +
    281  * test the format of index (cidx) box in JP2 file
    +
    282  */
    +
    283 
    + +
    286 
    + +
    294 
    + +
    301 
    +
    302 
    + +
    309 
    +
    310 #endif /*SERVER*/
    +
    311 
    +
    312 #endif /* !OPENJPIP_H_ */
    +
    +
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    +
    OPJ_API void OPJ_CALLCONV output_index(index_t *index)
    print index parameters
    Definition: openjpip.c:481
    +
    @ CIDDST
    Definition: imgsock_manager.h:39
    +
    index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
    Parse JP2 file and get index information from cidx box inside.
    Definition: openjpip.c:448
    +
    @ CIDREQ
    Definition: imgsock_manager.h:39
    +
    Session parameters.
    Definition: session_manager.h:38
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    +
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    +
    ihdrbox_param_t * ihdrbox
    ihdr box going into JP2 file
    Definition: openjpip.h:222
    +
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    +
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    +
    SOCKET listening_socket
    listenning socket
    Definition: openjpip.h:162
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
    Write J2K/JP2 codestream to a file.
    Definition: openjpip.c:396
    +
    @ SIZREQ
    Definition: imgsock_manager.h:39
    + +
    OPJ_API dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
    Initialize the image decoding server.
    Definition: openjpip.c:230
    +
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    +
    dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
    Initialize the image decoding server.
    Definition: openjpip.c:230
    +
    void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
    Decode jpip codestream.
    Definition: openjpip.c:378
    +
    SOCKET client_t
    Client socket identifier.
    Definition: openjpip.h:167
    +
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    +
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    + +
    Byte_t * jpipstream
    JPT/JPP stream.
    Definition: openjpip.h:159
    +
    void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
    Terminate the image decoding server.
    Definition: openjpip.c:244
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    + +
    #define OPJ_API
    Definition: openjpeg.h:89
    + +
    #define FCGI_stdout
    Definition: auxtrans_manager.c:46
    +
    Session list parameters.
    Definition: session_manager.h:45
    +
    Byte8_t jp2klen
    length of j2kstream or JP2 file
    Definition: openjpip.h:224
    +
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    +
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    +
    @ tcp
    Definition: query_parser.h:41
    + + +
    OPJ_API jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
    Initialize jpip decoder.
    Definition: openjpip.c:334
    +
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    +
    void OPJ_CALLCONV destroy_index(index_t **idx)
    Destroy index parameters.
    Definition: openjpip.c:476
    +
    OPJ_API void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
    Option; print out parameter values to stderr.
    Definition: openjpip.c:418
    +
    index parameters
    Definition: index_manager.h:86
    +
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    +
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    +
    #define FCGI_stderr
    Definition: auxtrans_manager.c:47
    +
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    +
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    +
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    +
    struct dec_server_record dec_server_record_t
    Decoding server static records.
    +
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    +
    void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
    Option; print out parameter values to stderr.
    Definition: openjpip.c:418
    +
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    +
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    +
    Byte_t * jp2kstream
    J2K codestream or JP2 file codestream.
    Definition: openjpip.h:223
    +
    void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
    Destroy jpip decoding parameters.
    Definition: openjpip.c:435
    +
    OPJ_API client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
    Accept client connection.
    Definition: openjpip.c:260
    +
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    +
    @ QUIT
    Definition: imgsock_manager.h:39
    +
    int SOCKET
    Definition: sock_manager.h:40
    +
    Byte_t * jpipstream
    JPT/JPP-stream.
    Definition: openjpip.h:218
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    +
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    +
    @ JP2SAVE
    Definition: imgsock_manager.h:39
    +
    @ non
    Definition: query_parser.h:41
    +
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    +
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    +
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    +
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    + +
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    +
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    +
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    +
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
    Write J2K/JP2 codestream to a file.
    Definition: openjpip.c:396
    + +
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    +
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    +
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    +
    OPJ_API void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
    Decode jpip codestream.
    Definition: openjpip.c:378
    +
    Decoding server static records.
    Definition: openjpip.h:157
    +
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    +
    @ udp
    Definition: query_parser.h:41
    + +
    client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
    Accept client connection.
    Definition: openjpip.c:260
    +
    @ TIDREQ
    Definition: imgsock_manager.h:39
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    + +
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    +
    OPJ_API void OPJ_CALLCONV destroy_index(index_t **idx)
    Destroy index parameters.
    Definition: openjpip.c:476
    +
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    + +
    msgqueue_param_t * msgqueue
    message queue
    Definition: openjpip.h:220
    +
    struct jpip_dec_param jpip_dec_param_t
    JPIP decoding parameters.
    +
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    +
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    +
    OPJ_API index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
    Parse JP2 file and get index information from cidx box inside.
    Definition: openjpip.c:448
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
    Handle client request.
    Definition: openjpip.c:272
    +
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    +
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    +
    cachelist_param_t * cachelist
    cache list
    Definition: openjpip.h:158
    +
    OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
    Handle client request.
    Definition: openjpip.c:272
    +
    @ XMLREQ
    Definition: imgsock_manager.h:39
    +
    void OPJ_CALLCONV output_index(index_t *index)
    print index parameters
    Definition: openjpip.c:481
    +
    OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
    Read jpip codestream from a file.
    Definition: openjpip.c:350
    +
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    +
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    +
    Target list parameters.
    Definition: target_manager.h:59
    + +
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    +
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
    Read jpip codestream from a file.
    Definition: openjpip.c:350
    +
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    +
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    +
    JPIP decoding parameters.
    Definition: openjpip.h:217
    +
    @ PNMREQ
    Definition: imgsock_manager.h:39
    +
    OPJ_API void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
    Terminate the image decoding server.
    Definition: openjpip.c:244
    +
    target parameters
    Definition: target_manager.h:40
    +
    Query parameters.
    Definition: query_parser.h:47
    +
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    +
    message queue parameters
    Definition: msgqueue_manager.h:63
    +
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    +
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
    Destroy jpip decoding parameters.
    Definition: openjpip.c:435
    +
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    +
    Definition: cache_manager.h:50
    +
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    +
    OPJ_SIZE_T jpipstreamlen
    length of jpipstream
    Definition: openjpip.h:160
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    +
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    +
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    +
    index_param_t index_t
    Redefinition of index parameters.
    Definition: openjpip.h:285
    +
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    + +
    Byte8_t jpiplen
    length of jpipstream
    Definition: openjpip.h:219
    +
    Channel parameters.
    Definition: channel_manager.h:43
    +
    enum eMSGTYPE msgtype_t
    + +
    @ MSGERROR
    Definition: imgsock_manager.h:39
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    +
    msgqueue_param_t * msgqueue
    parsed message queue of jpipstream
    Definition: openjpip.h:161
    +
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    +
    metadatalist_param_t * metadatalist
    metadata list going into JP2 file
    Definition: openjpip.h:221
    + +
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    +
    @ JPIPSTREAM
    Definition: imgsock_manager.h:39
    + +
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    +
    jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
    Initialize jpip decoder.
    Definition: openjpip.c:334
    +
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    + +
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    + + + + diff --git a/build/doc/html/openjpippage.html b/build/doc/html/openjpippage.html new file mode 100644 index 000000000..6ec0133ce --- /dev/null +++ b/build/doc/html/openjpippage.html @@ -0,0 +1,107 @@ + + + + + + + +OpenJPEG: OpenJPIP v2.3.1 Documentation + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    OpenJPIP v2.3.1 Documentation
    +
    +
    +

    +Introduction

    +

    This manual documents the low-level OpenJPIP C API.
    +OpenJPIP software is an implementation of JPEG 2000 Part9: Interactivity tools, APIs and protocols (JPIP).
    +( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html)
    + This whole documents covers the following six programs.
    +

      +
    • opj_server.c JPIP server supporting HTTP connection and JPT/JPP-stream
    • +
    • opj_dec_server.c Server to decode JPT/JPP-stream and communicate locally with JPIP client, which is coded in java
    • +
    • opj_jpip_addxml.c To Embed metadata into JP2 file
    • +
    • opj_jpip_transcode.c To Convert JPT/JPP-stream to JP2 or J2K
    • +
    • opj_jpip_test.c To test index code format of a JP2 file
    • +
    +

    +License

    +

    This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.
    +The only restriction is to retain the copyright in the sources or the binaries documentation.
    +Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage.

    +

    +Required libraries

    +
      +
    • OpenJPEG library
    • +
    • FastCGI development kit (C libraries) at server (http://www.fastcgi.com)
    • +
    • libcURL library
    • +
    +

    We tested this software with a virtual server running on the same Linux machine as the clients.

    +

    +Compiling Notes

    +

    When you are making opj_server, set anything (e.g. yes) to the parameter jpipserver to define itself in the Makefile, which enables to make it in server mode.
    +Otherwise do not define (or do not set to) the parameter jpipserver.
    +Be sure that any object files and library file libopenjpip.a are not reused to compile in the two different mode (server mode and non server mode).
    +In other words, do make clean before making new targets which are in different modes as previous make.
    +

    +

    +System Architecture

    +

    JPIP protocol is implemented between the JPIP server program (opj_server) and the JPIP client java program (opj_viewer).
    +Figure below represents the overview of our system architecture.
    +The JPIP server parses JPIP query and sends corresponding JPT/JPP-stream. The JPIP client viewer is an image viewer with GUI to publish JPIP requests and receive JPT/JPP-stream.
    +Particularly, our system has the image decoding module implemented on a server (opj_dec_server, Image decoding Server). Image decoding Server and JPIP client viewer communicate closely. This specific architecture enables sharing cache of image codestream data among all viewers connected to the same Image decoding Server not only locally but also remotely.

    +
    + +
    +OpenJPIP system architecture
    +

    JPIP server follows up the client cache during a session.
    +Concretely, the JPIP server models cache in each session, to which Channel IDs are associated. A Channel ID identifies a JPIP client viewer. And, new viewers can belong to a session by referring to one of its channel ID. The Image decoding Server maintains the association between channel IDs and targets, and provides a reference channel ID to a Viewer on demand.
    + Typical requests and replies among JPIP server, JPIP client, and Image decoding server is presented below.
    +The JPIP server parses HTTP query and sends corresponding JPT/JPP-stream back to the JPIP client (Viewer). JPT/JPP-stream is unreadable by JPIP client, and it is directly passed to Image decoding Server, and which provides the image in raw format (PGM or PPM) to the JPIP client. The Image decoding Server handles the decoding and caching of JPT/JPP-stream. JPIP client can read PGM and PPM images natively. Before connecting to the JPIP server, every JPIP client checks local cache data of the requesting image with the image decoding server. If its cache exists, the image decoding server provides ChannelID (CID), which identifies the image and its cache model on the JPIP server, and the whole system can continue the session using the CID.

    +
    + +
    +Message Sequence Chart of OpenJPIP implementation
    +
    Author
    Kaori Hagihara UCL/SST/ICTM/ELEN
    +
    +
    + + + + diff --git a/build/doc/html/opj__clock_8c.html b/build/doc/html/opj__clock_8c.html new file mode 100644 index 000000000..5200e9237 --- /dev/null +++ b/build/doc/html/opj__clock_8c.html @@ -0,0 +1,93 @@ + + + + + + + +OpenJPEG: opj_clock.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    opj_clock.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include <sys/time.h>
    +#include <sys/resource.h>
    +#include <sys/times.h>
    +
    + + + + +

    +Functions

    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    +

    Function Documentation

    + +

    ◆ opj_clock()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_clock (void )
    +
    + +

    Difference in successive opj_clock() calls tells you the elapsed time.

    +
    Returns
    Returns time in seconds
    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__clock_8h.html b/build/doc/html/opj__clock_8h.html new file mode 100644 index 000000000..a010b5efa --- /dev/null +++ b/build/doc/html/opj__clock_8h.html @@ -0,0 +1,98 @@ + + + + + + + +OpenJPEG: opj_clock.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_clock.h File Reference
    +
    +
    + +

    Internal function for timing. +More...

    + +

    Go to the source code of this file.

    + + + + + + +

    +Functions

    Exported functions
    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    +

    Detailed Description

    +

    Internal function for timing.

    +

    The functions in OPJ_CLOCK.C are internal utilities mainly used for timing.

    +

    Function Documentation

    + +

    ◆ opj_clock()

    + +
    +
    + + + + + + + + +
    OPJ_FLOAT64 opj_clock (void )
    +
    + +

    Difference in successive opj_clock() calls tells you the elapsed time.

    +
    Returns
    Returns time in seconds
    + +

    Referenced by main().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__clock_8h_source.html b/build/doc/html/opj__clock_8h_source.html new file mode 100644 index 000000000..b42a2b6bc --- /dev/null +++ b/build/doc/html/opj__clock_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +OpenJPEG: opj_clock.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_clock.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 #ifndef OPJ_CLOCK_H
    +
    32 #define OPJ_CLOCK_H
    +
    33 
    +
    42 
    +
    45 /* ----------------------------------------------------------------------- */
    +
    46 
    + +
    52 
    +
    53 /* ----------------------------------------------------------------------- */
    +
    57 
    +
    58 #endif /* OPJ_CLOCK_H */
    +
    59 
    +
    +
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: opj_clock.c:42
    +
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: bench_dwt.c:108
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    + + + + + diff --git a/build/doc/html/opj__codec_8h.html b/build/doc/html/opj__codec_8h.html new file mode 100644 index 000000000..6059d725e --- /dev/null +++ b/build/doc/html/opj__codec_8h.html @@ -0,0 +1,93 @@ + + + + + + + +OpenJPEG: opj_codec.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    opj_codec.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_codec_private
     Main codec handler used for compression or decompression. More...
     
    + + + + +

    +Typedefs

    typedef struct opj_codec_private opj_codec_private_t
     Main codec handler used for compression or decompression. More...
     
    +

    Typedef Documentation

    + +

    ◆ opj_codec_private_t

    + +
    +
    + + + + +
    typedef struct opj_codec_private opj_codec_private_t
    +
    + +

    Main codec handler used for compression or decompression.

    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__codec_8h_source.html b/build/doc/html/opj__codec_8h_source.html new file mode 100644 index 000000000..b96bffe72 --- /dev/null +++ b/build/doc/html/opj__codec_8h_source.html @@ -0,0 +1,243 @@ + + + + + + + +OpenJPEG: opj_codec.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_codec.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * All rights reserved.
    +
    10  *
    +
    11  * Redistribution and use in source and binary forms, with or without
    +
    12  * modification, are permitted provided that the following conditions
    +
    13  * are met:
    +
    14  * 1. Redistributions of source code must retain the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer.
    +
    16  * 2. Redistributions in binary form must reproduce the above copyright
    +
    17  * notice, this list of conditions and the following disclaimer in the
    +
    18  * documentation and/or other materials provided with the distribution.
    +
    19  *
    +
    20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    30  * POSSIBILITY OF SUCH DAMAGE.
    +
    31  */
    +
    32 #ifndef OPJ_CODEC_H
    +
    33 #define OPJ_CODEC_H
    +
    34 
    +
    42 typedef struct opj_codec_private {
    +
    44  union {
    +
    48  struct opj_decompression {
    + +
    51  void * p_codec,
    +
    52  opj_image_t **p_image,
    +
    53  struct opj_event_mgr * p_manager);
    +
    54 
    +
    56  OPJ_BOOL(*opj_decode)(void * p_codec,
    +
    57  struct opj_stream_private * p_cio,
    +
    58  opj_image_t * p_image,
    +
    59  struct opj_event_mgr * p_manager);
    +
    60 
    +
    62  OPJ_BOOL(*opj_read_tile_header)(void * p_codec,
    +
    63  OPJ_UINT32 * p_tile_index,
    +
    64  OPJ_UINT32 * p_data_size,
    +
    65  OPJ_INT32 * p_tile_x0,
    +
    66  OPJ_INT32 * p_tile_y0,
    +
    67  OPJ_INT32 * p_tile_x1,
    +
    68  OPJ_INT32 * p_tile_y1,
    +
    69  OPJ_UINT32 * p_nb_comps,
    +
    70  OPJ_BOOL * p_should_go_on,
    +
    71  struct opj_stream_private * p_cio,
    +
    72  struct opj_event_mgr * p_manager);
    +
    73 
    +
    75  OPJ_BOOL(*opj_decode_tile_data)(void * p_codec,
    +
    76  OPJ_UINT32 p_tile_index,
    +
    77  OPJ_BYTE * p_data,
    +
    78  OPJ_UINT32 p_data_size,
    +
    79  struct opj_stream_private * p_cio,
    +
    80  struct opj_event_mgr * p_manager);
    +
    81 
    +
    83  OPJ_BOOL(* opj_end_decompress)(void *p_codec,
    +
    84  struct opj_stream_private * cio,
    +
    85  struct opj_event_mgr * p_manager);
    +
    86 
    +
    88  void (*opj_destroy)(void * p_codec);
    +
    89 
    +
    91  void (*opj_setup_decoder)(void * p_codec, opj_dparameters_t * p_param);
    +
    92 
    +
    94  OPJ_BOOL(*opj_set_decode_area)(void * p_codec,
    +
    95  opj_image_t * p_image,
    +
    96  OPJ_INT32 p_start_x,
    +
    97  OPJ_INT32 p_end_x,
    +
    98  OPJ_INT32 p_start_y,
    +
    99  OPJ_INT32 p_end_y,
    +
    100  struct opj_event_mgr * p_manager);
    +
    101 
    + +
    104  opj_stream_private_t * p_cio,
    +
    105  opj_image_t *p_image,
    +
    106  struct opj_event_mgr * p_manager,
    +
    107  OPJ_UINT32 tile_index);
    +
    108 
    + +
    111  OPJ_UINT32 res_factor,
    +
    112  opj_event_mgr_t * p_manager);
    +
    113 
    + +
    116  OPJ_UINT32 num_comps,
    +
    117  const OPJ_UINT32* comps_indices,
    +
    118  opj_event_mgr_t * p_manager);
    +
    119  } m_decompression;
    +
    120 
    +
    124  struct opj_compression {
    +
    125  OPJ_BOOL(* opj_start_compress)(void *p_codec,
    +
    126  struct opj_stream_private * cio,
    +
    127  struct opj_image * p_image,
    +
    128  struct opj_event_mgr * p_manager);
    +
    129 
    +
    130  OPJ_BOOL(* opj_encode)(void * p_codec,
    +
    131  struct opj_stream_private *p_cio,
    +
    132  struct opj_event_mgr * p_manager);
    +
    133 
    +
    134  OPJ_BOOL(* opj_write_tile)(void * p_codec,
    +
    135  OPJ_UINT32 p_tile_index,
    +
    136  OPJ_BYTE * p_data,
    +
    137  OPJ_UINT32 p_data_size,
    +
    138  struct opj_stream_private * p_cio,
    +
    139  struct opj_event_mgr * p_manager);
    +
    140 
    +
    141  OPJ_BOOL(* opj_end_compress)(void * p_codec,
    +
    142  struct opj_stream_private * p_cio,
    +
    143  struct opj_event_mgr * p_manager);
    +
    144 
    +
    145  void (* opj_destroy)(void * p_codec);
    +
    146 
    +
    147  OPJ_BOOL(* opj_setup_encoder)(void * p_codec,
    +
    148  opj_cparameters_t * p_param,
    +
    149  struct opj_image * p_image,
    +
    150  struct opj_event_mgr * p_manager);
    +
    151 
    + +
    153  const char* const* p_options,
    +
    154  struct opj_event_mgr * p_manager);
    +
    155 
    +
    156  } m_compression;
    +
    157  } m_codec_data;
    +
    159  void * m_codec;
    + + +
    164  void (*opj_dump_codec)(void * p_codec, OPJ_INT32 info_flag,
    +
    165  FILE* output_stream);
    +
    166  opj_codestream_info_v2_t* (*opj_get_codec_info)(void* p_codec);
    +
    167  opj_codestream_index_t* (*opj_get_codec_index)(void* p_codec);
    +
    168 
    +
    170  OPJ_BOOL(*opj_set_threads)(void * p_codec, OPJ_UINT32 num_threads);
    +
    171 }
    + +
    173 
    +
    174 
    +
    175 #endif /* OPJ_CODEC_H */
    +
    176 
    +
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    OPJ_BOOL(* opj_set_decode_area)(void *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_end_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_y, struct opj_event_mgr *p_manager)
    Set decode area function handler.
    Definition: opj_codec.h:94
    +
    struct opj_codec_private::@2::opj_decompression m_decompression
    +
    OPJ_BOOL(* opj_decode_tile_data)(void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    FIXME DOC.
    Definition: opj_codec.h:75
    +
    void(* opj_dump_codec)(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Definition: opj_codec.h:164
    +
    OPJ_BOOL(* opj_read_tile_header)(void *p_codec, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    FIXME DOC.
    Definition: opj_codec.h:62
    +
    OPJ_BOOL(* opj_set_decoded_resolution_factor)(void *p_codec, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Set the decoded resolution factor.
    Definition: opj_codec.h:110
    +
    OPJ_BOOL(* opj_end_decompress)(void *p_codec, struct opj_stream_private *cio, struct opj_event_mgr *p_manager)
    Reading function used after codestream if necessary.
    Definition: opj_codec.h:83
    +
    Message handler object used for.
    Definition: event.h:50
    +
    OPJ_BOOL(* opj_set_decoded_components)(void *p_codec, OPJ_UINT32 num_comps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Set the decoded components.
    Definition: opj_codec.h:115
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    Compression parameters.
    Definition: openjpeg.h:387
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    OPJ_BOOL(* opj_set_threads)(void *p_codec, OPJ_UINT32 num_threads)
    Set number of threads.
    Definition: opj_codec.h:170
    +
    void(* opj_setup_decoder)(void *p_codec, opj_dparameters_t *p_param)
    Setup decoder function handler.
    Definition: opj_codec.h:91
    +
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    struct opj_codec_private::@2::opj_compression m_compression
    +
    void * m_codec
    FIXME DOC.
    Definition: opj_codec.h:159
    +
    OPJ_BOOL(* opj_decode)(void *p_codec, struct opj_stream_private *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager)
    Decoding function.
    Definition: opj_codec.h:56
    +
    OPJ_BOOL(* opj_get_decoded_tile)(void *p_codec, opj_stream_private_t *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager, OPJ_UINT32 tile_index)
    Get tile function.
    Definition: opj_codec.h:103
    +
    OPJ_BOOL(* opj_read_header)(struct opj_stream_private *cio, void *p_codec, opj_image_t **p_image, struct opj_event_mgr *p_manager)
    Main header reading function handler.
    Definition: opj_codec.h:50
    +
    Main codec handler used for compression or decompression.
    Definition: opj_codec.h:42
    +
    OPJ_BOOL(* opj_encoder_set_extra_options)(void *p_codec, const char *const *p_options, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:152
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    OPJ_BOOL is_decompressor
    Flag to indicate if the codec is used to decode or encode.
    Definition: opj_codec.h:163
    +
    Decompression parameters.
    Definition: openjpeg.h:546
    +
    OPJ_BOOL(* opj_encode)(void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:130
    +
    union opj_codec_private::@2 m_codec_data
    FIXME DOC.
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    void(* opj_destroy)(void *p_codec)
    Codec destroy function handler.
    Definition: opj_codec.h:88
    +
    opj_event_mgr_t m_event_mgr
    Event handler.
    Definition: opj_codec.h:161
    +
    struct opj_codec_private opj_codec_private_t
    Main codec handler used for compression or decompression.
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    OPJ_BOOL(* opj_start_compress)(void *p_codec, struct opj_stream_private *cio, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:125
    +
    OPJ_BOOL(* opj_setup_encoder)(void *p_codec, opj_cparameters_t *p_param, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:147
    +
    OPJ_BOOL(* opj_write_tile)(void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:134
    +
    OPJ_BOOL(* opj_end_compress)(void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:141
    + + + + diff --git a/build/doc/html/opj__common_8h.html b/build/doc/html/opj__common_8h.html new file mode 100644 index 000000000..b3bc8bebf --- /dev/null +++ b/build/doc/html/opj__common_8h.html @@ -0,0 +1,150 @@ + + + + + + + +OpenJPEG: opj_common.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    opj_common.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + +

    +Macros

    #define OPJ_COMMON_CBLK_DATA_EXTRA   2
     Margin for a fake FFFF marker. More...
     
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW   64
     
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH   64
     
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER   OPJ_LRCP
     
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION   6
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_COMMON_CBLK_DATA_EXTRA

    + +
    +
    + + + + +
    #define OPJ_COMMON_CBLK_DATA_EXTRA   2
    +
    + +

    Margin for a fake FFFF marker.

    + +
    +
    + +

    ◆ OPJ_COMP_PARAM_DEFAULT_CBLOCKH

    + +
    +
    + + + + +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH   64
    +
    + +
    +
    + +

    ◆ OPJ_COMP_PARAM_DEFAULT_CBLOCKW

    + +
    +
    + + + + +
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW   64
    +
    + +
    +
    + +

    ◆ OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION

    + +
    +
    + + + + +
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION   6
    +
    + +
    +
    + +

    ◆ OPJ_COMP_PARAM_DEFAULT_PROG_ORDER

    + +
    +
    + + + + +
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER   OPJ_LRCP
    +
    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__common_8h_source.html b/build/doc/html/opj__common_8h_source.html new file mode 100644 index 000000000..d83951c25 --- /dev/null +++ b/build/doc/html/opj__common_8h_source.html @@ -0,0 +1,103 @@ + + + + + + + +OpenJPEG: opj_common.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_common.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 #ifndef OPJ_COMMMON_H
    +
    32 #define OPJ_COMMMON_H
    +
    33 
    +
    34 /*
    +
    35  ==========================================================
    +
    36  Common constants shared among several modules
    +
    37  ==========================================================
    +
    38 */
    +
    39 #define OPJ_COMMON_CBLK_DATA_EXTRA 2
    +
    42 #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW 64
    +
    43 #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH 64
    +
    44 #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER OPJ_LRCP
    +
    45 #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION 6
    +
    46 
    +
    47 #endif /* OPJ_COMMMON_H */
    +
    + + + + diff --git a/build/doc/html/opj__includes_8h.html b/build/doc/html/opj__includes_8h.html new file mode 100644 index 000000000..3d93537ef --- /dev/null +++ b/build/doc/html/opj__includes_8h.html @@ -0,0 +1,349 @@ + + + + + + + +OpenJPEG: opj_includes.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    opj_includes.h File Reference
    +
    +
    +
    #include "opj_config_private.h"
    +#include <memory.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <math.h>
    +#include <float.h>
    +#include <time.h>
    +#include <stdio.h>
    +#include <stdarg.h>
    +#include <ctype.h>
    +#include <assert.h>
    +#include <limits.h>
    +#include "openjpeg.h"
    +#include "opj_inttypes.h"
    +#include "opj_clock.h"
    +#include "opj_malloc.h"
    +#include "event.h"
    +#include "function_list.h"
    +#include "bio.h"
    +#include "cio.h"
    +#include "thread.h"
    +#include "tls_keys.h"
    +#include "image.h"
    +#include "invert.h"
    +#include "j2k.h"
    +#include "jp2.h"
    +#include "mqc.h"
    +#include "pi.h"
    +#include "tgt.h"
    +#include "tcd.h"
    +#include "t1.h"
    +#include "dwt.h"
    +#include "t2.h"
    +#include "mct.h"
    +#include "opj_intmath.h"
    +#include "sparse_array.h"
    +#include "openjpwl/jpwl.h"
    +#include "opj_codec.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + +

    +Macros

    #define OPJ_FSEEK(stream, offset, whence)   fseek(stream,offset,whence)
     
    #define OPJ_FSTAT(fildes, stat_buff)   fstat(fildes,stat_buff)
     
    #define OPJ_FTELL(stream)   ftell(stream)
     
    #define OPJ_STAT_STRUCT_T   struct stat
     
    #define OPJ_STAT(path, stat_buff)   stat(path,stat_buff)
     
    #define OPJ_RESTRICT   /* restrict */
     
    #define OPJ_NOSANITIZE(kind)
     
    #define OPJ_UNUSED(x)   (void)x
     
    + + + +

    +Typedefs

    typedef unsigned int OPJ_BITFIELD
     
    + + + +

    +Functions

    static INLINE long opj_lrintf (float f)
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_FSEEK

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define OPJ_FSEEK( stream,
     offset,
     whence 
    )   fseek(stream,offset,whence)
    +
    + +
    +
    + +

    ◆ OPJ_FSTAT

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_FSTAT( fildes,
     stat_buff 
    )   fstat(fildes,stat_buff)
    +
    + +
    +
    + +

    ◆ OPJ_FTELL

    + +
    +
    + + + + + + + + +
    #define OPJ_FTELL( stream)   ftell(stream)
    +
    + +
    +
    + +

    ◆ OPJ_NOSANITIZE

    + +
    +
    + + + + + + + + +
    #define OPJ_NOSANITIZE( kind)
    +
    + +
    +
    + +

    ◆ OPJ_RESTRICT

    + +
    +
    + + + + +
    #define OPJ_RESTRICT   /* restrict */
    +
    + +
    +
    + +

    ◆ OPJ_STAT

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define OPJ_STAT( path,
     stat_buff 
    )   stat(path,stat_buff)
    +
    + +
    +
    + +

    ◆ OPJ_STAT_STRUCT_T

    + +
    +
    + + + + +
    #define OPJ_STAT_STRUCT_T   struct stat
    +
    + +
    +
    + +

    ◆ OPJ_UNUSED

    + +
    +
    + + + + + + + + +
    #define OPJ_UNUSED( x)   (void)x
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ OPJ_BITFIELD

    + +
    +
    + + + + +
    typedef unsigned int OPJ_BITFIELD
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_lrintf()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE long opj_lrintf (float f)
    +
    +static
    +
    + +

    Referenced by opj_tcd_dc_level_shift_decode().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__includes_8h_source.html b/build/doc/html/opj__includes_8h_source.html new file mode 100644 index 000000000..1dfb3999f --- /dev/null +++ b/build/doc/html/opj__includes_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +OpenJPEG: opj_includes.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_includes.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    8  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    9  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    10  * All rights reserved.
    +
    11  *
    +
    12  * Redistribution and use in source and binary forms, with or without
    +
    13  * modification, are permitted provided that the following conditions
    +
    14  * are met:
    +
    15  * 1. Redistributions of source code must retain the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer.
    +
    17  * 2. Redistributions in binary form must reproduce the above copyright
    +
    18  * notice, this list of conditions and the following disclaimer in the
    +
    19  * documentation and/or other materials provided with the distribution.
    +
    20  *
    +
    21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    31  * POSSIBILITY OF SUCH DAMAGE.
    +
    32  */
    +
    33 #ifndef OPJ_INCLUDES_H
    +
    34 #define OPJ_INCLUDES_H
    +
    35 
    +
    36 /*
    +
    37  * This must be included before any system headers,
    +
    38  * since they can react to macro defined there
    +
    39  */
    +
    40 #include "opj_config_private.h"
    +
    41 
    +
    42 /*
    +
    43  ==========================================================
    +
    44  Standard includes used by the library
    +
    45  ==========================================================
    +
    46 */
    +
    47 #include <memory.h>
    +
    48 #include <stdlib.h>
    +
    49 #include <string.h>
    +
    50 #include <math.h>
    +
    51 #include <float.h>
    +
    52 #include <time.h>
    +
    53 #include <stdio.h>
    +
    54 #include <stdarg.h>
    +
    55 #include <ctype.h>
    +
    56 #include <assert.h>
    +
    57 #include <limits.h>
    +
    58 
    +
    59 /*
    +
    60  Use fseeko() and ftello() if they are available since they use
    +
    61  'off_t' rather than 'long'. It is wrong to use fseeko() and
    +
    62  ftello() only on systems with special LFS support since some systems
    +
    63  (e.g. FreeBSD) support a 64-bit off_t by default.
    +
    64 */
    +
    65 #if defined(OPJ_HAVE_FSEEKO) && !defined(fseek)
    +
    66 # define fseek fseeko
    +
    67 # define ftell ftello
    +
    68 #endif
    +
    69 
    +
    70 
    +
    71 #if defined(WIN32) && !defined(Windows95) && !defined(__BORLANDC__) && \
    +
    72  !(defined(_MSC_VER) && _MSC_VER < 1400) && \
    +
    73  !(defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x800)
    +
    74 /*
    +
    75  Windows '95 and Borland C do not support _lseeki64
    +
    76  Visual Studio does not support _fseeki64 and _ftelli64 until the 2005 release.
    +
    77  Without these interfaces, files over 2GB in size are not supported for Windows.
    +
    78 */
    +
    79 # define OPJ_FSEEK(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence)
    +
    80 # define OPJ_FSTAT(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff)
    +
    81 # define OPJ_FTELL(stream) /* __int64 */ _ftelli64(stream)
    +
    82 # define OPJ_STAT_STRUCT_T struct _stati64
    +
    83 # define OPJ_STAT(path,stat_buff) _stati64(path,/* struct _stati64 */ stat_buff)
    +
    84 #else
    +
    85 # define OPJ_FSEEK(stream,offset,whence) fseek(stream,offset,whence)
    +
    86 # define OPJ_FSTAT(fildes,stat_buff) fstat(fildes,stat_buff)
    +
    87 # define OPJ_FTELL(stream) ftell(stream)
    +
    88 # define OPJ_STAT_STRUCT_T struct stat
    +
    89 # define OPJ_STAT(path,stat_buff) stat(path,stat_buff)
    +
    90 #endif
    +
    91 
    +
    92 
    +
    93 /*
    +
    94  ==========================================================
    +
    95  OpenJPEG interface
    +
    96  ==========================================================
    +
    97  */
    +
    98 #include "openjpeg.h"
    +
    99 
    +
    100 /*
    +
    101  ==========================================================
    +
    102  OpenJPEG modules
    +
    103  ==========================================================
    +
    104 */
    +
    105 
    +
    106 /* Are restricted pointers available? (C99) */
    +
    107 #if (__STDC_VERSION__ >= 199901L)
    +
    108 #define OPJ_RESTRICT restrict
    +
    109 #else
    +
    110 /* Not a C99 compiler */
    +
    111 #if defined(__GNUC__)
    +
    112 #define OPJ_RESTRICT __restrict__
    +
    113 
    +
    114 /*
    +
    115  vc14 (2015) outputs wrong results.
    +
    116  Need to check OPJ_RESTRICT usage (or a bug in vc14)
    +
    117  #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
    +
    118  #define OPJ_RESTRICT __restrict
    +
    119 */
    +
    120 #else
    +
    121 #define OPJ_RESTRICT /* restrict */
    +
    122 #endif
    +
    123 #endif
    +
    124 
    +
    125 #ifdef __has_attribute
    +
    126 #if __has_attribute(no_sanitize)
    +
    127 #define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind)))
    +
    128 #endif
    +
    129 #endif
    +
    130 #ifndef OPJ_NOSANITIZE
    +
    131 #define OPJ_NOSANITIZE(kind)
    +
    132 #endif
    +
    133 
    +
    134 
    +
    135 /* MSVC before 2013 and Borland C do not have lrintf */
    +
    136 #if defined(_MSC_VER)
    +
    137 #include <intrin.h>
    +
    138 static INLINE long opj_lrintf(float f)
    +
    139 {
    +
    140 #ifdef _M_X64
    +
    141  return _mm_cvt_ss2si(_mm_load_ss(&f));
    +
    142 
    +
    143  /* commented out line breaks many tests */
    +
    144  /* return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f)); */
    +
    145 #elif defined(_M_IX86)
    +
    146  int i;
    +
    147  _asm{
    +
    148  fld f
    +
    149  fistp i
    +
    150  };
    +
    151 
    +
    152  return i;
    +
    153 #else
    +
    154  return (long)((f>0.0f) ? (f + 0.5f) : (f - 0.5f));
    +
    155 #endif
    +
    156 }
    +
    157 #elif defined(__BORLANDC__)
    +
    158 static INLINE long opj_lrintf(float f)
    +
    159 {
    +
    160 #ifdef _M_X64
    +
    161  return (long)((f > 0.0f) ? (f + 0.5f) : (f - 0.5f));
    +
    162 #else
    +
    163  int i;
    +
    164 
    +
    165  _asm {
    +
    166  fld f
    +
    167  fistp i
    +
    168  };
    +
    169 
    +
    170  return i;
    +
    171 #endif
    +
    172 }
    +
    173 #else
    +
    174 static INLINE long opj_lrintf(float f)
    +
    175 {
    +
    176  return lrintf(f);
    +
    177 }
    +
    178 #endif
    +
    179 
    +
    180 #if defined(_MSC_VER) && (_MSC_VER < 1400)
    +
    181 #define vsnprintf _vsnprintf
    +
    182 #endif
    +
    183 
    +
    184 /* MSVC x86 is really bad at doing int64 = int32 * int32 on its own. Use intrinsic. */
    +
    185 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    +
    186 # include <intrin.h>
    +
    187 # pragma intrinsic(__emul)
    +
    188 #endif
    +
    189 
    +
    190 /* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */
    +
    191 #if defined(_M_X64)
    +
    192 /* Intel 64bit support SSE and SSE2 */
    +
    193 # ifndef __SSE__
    +
    194 # define __SSE__ 1
    +
    195 # endif
    +
    196 # ifndef __SSE2__
    +
    197 # define __SSE2__ 1
    +
    198 # endif
    +
    199 #endif
    +
    200 
    +
    201 /* For x86, test the value of the _M_IX86_FP macro. */
    +
    202 /* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */
    +
    203 #if defined(_M_IX86_FP)
    +
    204 # if _M_IX86_FP >= 1
    +
    205 # ifndef __SSE__
    +
    206 # define __SSE__ 1
    +
    207 # endif
    +
    208 # endif
    +
    209 # if _M_IX86_FP >= 2
    +
    210 # ifndef __SSE2__
    +
    211 # define __SSE2__ 1
    +
    212 # endif
    +
    213 # endif
    +
    214 #endif
    +
    215 
    +
    216 /* Type to use for bit-fields in internal headers */
    +
    217 typedef unsigned int OPJ_BITFIELD;
    +
    218 
    +
    219 #define OPJ_UNUSED(x) (void)x
    +
    220 
    +
    221 #include "opj_inttypes.h"
    +
    222 #include "opj_clock.h"
    +
    223 #include "opj_malloc.h"
    +
    224 #include "event.h"
    +
    225 #include "function_list.h"
    +
    226 #include "bio.h"
    +
    227 #include "cio.h"
    +
    228 
    +
    229 #include "thread.h"
    +
    230 #include "tls_keys.h"
    +
    231 
    +
    232 #include "image.h"
    +
    233 #include "invert.h"
    +
    234 #include "j2k.h"
    +
    235 #include "jp2.h"
    +
    236 
    +
    237 #include "mqc.h"
    +
    238 #include "bio.h"
    +
    239 
    +
    240 #include "pi.h"
    +
    241 #include "tgt.h"
    +
    242 #include "tcd.h"
    +
    243 #include "t1.h"
    +
    244 #include "dwt.h"
    +
    245 #include "t2.h"
    +
    246 #include "mct.h"
    +
    247 #include "opj_intmath.h"
    +
    248 #include "sparse_array.h"
    +
    249 
    +
    250 #ifdef USE_JPIP
    +
    251 #include "cidx_manager.h"
    +
    252 #include "indexbox_manager.h"
    +
    253 #endif
    +
    254 
    +
    255 /* JPWL>> */
    +
    256 #ifdef USE_JPWL
    +
    257 #include "openjpwl/jpwl.h"
    +
    258 #endif /* USE_JPWL */
    +
    259 /* <<JPWL */
    +
    260 
    +
    261 /* V2 */
    +
    262 #include "opj_codec.h"
    +
    263 
    +
    264 
    +
    265 #endif /* OPJ_INCLUDES_H */
    +
    +
    Implementation of an MQ-Coder (MQC)
    +
    Implementation of a packet iterator (PI)
    +
    static INLINE long opj_lrintf(float f)
    Definition: opj_includes.h:174
    +
    Modification of jpip.c from 2KAN indexer.
    +
    Implementation of a discrete wavelet transform (DWT)
    +
    Implementation of an individual bit input-output (BIO)
    +
    The JPEG-2000 Codestream Reader/Writer (J2K)
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    The JPEG-2000 file format Reader/Writer (JP2)
    +
    Implementation of a multi-component transforms (MCT)
    + +
    Implementation of operations on images (IMAGE)
    +
    Implementation of a tier-2 coding (packetization of code-block data) (T2)
    +
    Implementation of a event callback system.
    + +
    Sparse array management.
    +
    Internal functions.
    +
    Modification of jpip.h from 2KAN indexer.
    + +
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    +
    Implementation of a tag-tree coder (TGT)
    +
    Implementation of the matrix inversion.
    +
    Implementation of a list of procedures.
    +
    Implementation of a byte input-output process (CIO)
    +
    Implementation of a tile coder/decoder (TCD)
    +
    Implementation of the tier-1 coding (coding of code-block coefficients) (T1)
    + +
    Internal function for timing.
    +
    Thread API.
    +
    Implementation of operations on integers (INT)
    + + + + diff --git a/build/doc/html/opj__intmath_8h.html b/build/doc/html/opj__intmath_8h.html new file mode 100644 index 000000000..c222303d1 --- /dev/null +++ b/build/doc/html/opj__intmath_8h.html @@ -0,0 +1,956 @@ + + + + + + + +OpenJPEG: opj_intmath.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_intmath.h File Reference
    +
    +
    + +

    Implementation of operations on integers (INT) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions (see also openjpeg.h)
    static INLINE OPJ_INT32 opj_int_min (OPJ_INT32 a, OPJ_INT32 b)
     Get the minimum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_min (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the minimum of two integers. More...
     
    static INLINE OPJ_INT32 opj_int_max (OPJ_INT32 a, OPJ_INT32 b)
     Get the maximum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_max (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the maximum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_adds (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the saturated sum of two unsigned integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_subs (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the saturated difference of two unsigned integers. More...
     
    static INLINE OPJ_INT32 opj_int_clamp (OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
     Clamp an integer inside an interval. More...
     
    static INLINE OPJ_INT64 opj_int64_clamp (OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
     Clamp an integer inside an interval. More...
     
    static INLINE OPJ_INT32 opj_int_abs (OPJ_INT32 a)
     
    static INLINE OPJ_INT32 opj_int_ceildiv (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer and round upwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_ceildiv (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int_ceildivpow2 (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int64_ceildivpow2 (OPJ_INT64 a, OPJ_INT32 b)
     Divide a 64bits integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2 (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int_floordivpow2 (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer by a power of 2 and round downwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_floordivpow2 (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer by a power of 2 and round downwards. More...
     
    static INLINE OPJ_INT32 opj_int_floorlog2 (OPJ_INT32 a)
     Get logarithm of an integer and round downwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_floorlog2 (OPJ_UINT32 a)
     Get logarithm of an integer and round downwards. More...
     
    static INLINE OPJ_INT32 opj_int_fix_mul (OPJ_INT32 a, OPJ_INT32 b)
     Multiply two fixed-precision rational numbers. More...
     
    static INLINE OPJ_INT32 opj_int_fix_mul_t1 (OPJ_INT32 a, OPJ_INT32 b)
     
    +

    Detailed Description

    +

    Implementation of operations on integers (INT)

    +

    The functions in OPJ_INTMATH.H have for goal to realize operations on integers.

    +

    Function Documentation

    + +

    ◆ opj_int64_ceildivpow2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int64_ceildivpow2 (OPJ_INT64 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Divide a 64bits integer by a power of 2 and round upwards.

    +
    Returns
    Returns a divided by 2^b
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_int64_clamp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT64 opj_int64_clamp (OPJ_INT64 a,
    OPJ_INT64 min,
    OPJ_INT64 max 
    )
    +
    +static
    +
    + +

    Clamp an integer inside an interval.

    +
    Returns
      +
    • +Returns a if (min < a < max)
    • +
    • +Returns max if (a > max)
    • +
    • +Returns min if (a < min)
    • +
    +
    + +

    References max(), and min().

    + +

    Referenced by opj_tcd_dc_level_shift_decode().

    + +
    +
    + +

    ◆ opj_int_abs()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_abs (OPJ_INT32 a)
    +
    +static
    +
    +
    Returns
    Get absolute value of integer
    + +

    Referenced by opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_int_ceildiv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_ceildiv (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Divide an integer and round upwards.

    +
    Returns
    Returns a divided by b
    + +

    Referenced by opj_get_tile_dimensions(), opj_j2k_get_tile(), opj_j2k_read_siz(), opj_j2k_set_decode_area(), opj_j2k_setup_encoder(), opj_j2k_update_image_dimensions(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_int_ceildivpow2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_ceildivpow2 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Divide an integer by a power of 2 and round upwards.

    +
    Returns
    Returns a divided by 2^b
    + +

    Referenced by init_tilec(), opj_j2k_get_tile(), opj_j2k_update_image_dimensions(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_int_clamp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_clamp (OPJ_INT32 a,
    OPJ_INT32 min,
    OPJ_INT32 max 
    )
    +
    +static
    +
    + +

    Clamp an integer inside an interval.

    +
    Returns
      +
    • +Returns a if (min < a < max)
    • +
    • +Returns max if (a > max)
    • +
    • +Returns min if (a < min)
    • +
    +
    + +

    References max(), and min().

    + +

    Referenced by opj_tcd_dc_level_shift_decode().

    + +
    +
    + +

    ◆ opj_int_fix_mul()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_fix_mul (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Multiply two fixed-precision rational numbers.

    +
    Parameters
    + + + +
    a
    b
    +
    +
    +
    Returns
    Returns a * b
    + +

    Referenced by opj_dwt_encode_1_real(), opj_mct_encode_custom(), and opj_mct_encode_real().

    + +
    +
    + +

    ◆ opj_int_fix_mul_t1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_fix_mul_t1 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    References T1_NMSEDEC_FRACBITS.

    + +

    Referenced by opj_t1_encode_cblks().

    + +
    +
    + +

    ◆ opj_int_floordivpow2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_floordivpow2 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Divide an integer by a power of 2 and round downwards.

    +
    Returns
    Returns a divided by 2^b
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_int_floorlog2()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_floorlog2 (OPJ_INT32 a)
    +
    +static
    +
    + +

    Get logarithm of an integer and round downwards.

    +
    Returns
    Returns log2(a)
    + +

    Referenced by opj_dwt_encode_stepsize(), opj_j2k_setup_encoder(), opj_t1_encode_cblk(), and opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_int_max()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_max (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Get the maximum of two integers.

    +
    Returns
    Returns a if a > b else b
    + +

    Referenced by main(), opj_j2k_update_rates(), opj_t1_encode_cblk(), opj_t2_encode_packet(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_int_min()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_INT32 opj_int_min (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    +
    +static
    +
    + +

    Get the minimum of two integers.

    +
    Returns
    Returns a if a < b else b
    + +

    Referenced by opj_j2k_update_rates(), opj_j2k_write_poc_in_memory(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_v4dwt_decode(), t1_init_ctxno_sc(), and t1_init_spb().

    + +
    +
    + +

    ◆ opj_uint_adds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_UINT32 opj_uint_adds (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    +
    +static
    +
    + +

    Get the saturated sum of two unsigned integers.

    +
    Returns
    Returns saturated sum of a+b
    + +

    Referenced by opj_dwt_segment_grow(), opj_get_all_encoding_parameters(), opj_get_encoding_parameters(), opj_image_comp_header_update(), opj_j2k_read_siz(), opj_tcd_init_tile(), and opj_tcd_is_subband_area_of_interest().

    + +
    +
    + +

    ◆ opj_uint_ceildiv()

    + + + +

    ◆ opj_uint_ceildivpow2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2 (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_uint_floordivpow2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_UINT32 opj_uint_floordivpow2 (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    +
    +static
    +
    + +

    Divide an integer by a power of 2 and round downwards.

    +
    Returns
    Returns a divided by 2^b
    + +

    Referenced by opj_get_all_encoding_parameters(), opj_get_encoding_parameters(), opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ opj_uint_floorlog2()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_UINT32 opj_uint_floorlog2 (OPJ_UINT32 a)
    +
    +static
    +
    + +

    Get logarithm of an integer and round downwards.

    +
    Returns
    Returns log2(a)
    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_uint_max()

    + + + +

    ◆ opj_uint_min()

    + + + +

    ◆ opj_uint_subs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_UINT32 opj_uint_subs (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    +
    +static
    +
    + +

    Get the saturated difference of two unsigned integers.

    +
    Returns
    Returns saturated sum of a-b
    + +

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_segment_grow().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/opj__intmath_8h_source.html b/build/doc/html/opj__intmath_8h_source.html new file mode 100644 index 000000000..762a302cd --- /dev/null +++ b/build/doc/html/opj__intmath_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +OpenJPEG: opj_intmath.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_intmath.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * All rights reserved.
    +
    15  *
    +
    16  * Redistribution and use in source and binary forms, with or without
    +
    17  * modification, are permitted provided that the following conditions
    +
    18  * are met:
    +
    19  * 1. Redistributions of source code must retain the above copyright
    +
    20  * notice, this list of conditions and the following disclaimer.
    +
    21  * 2. Redistributions in binary form must reproduce the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer in the
    +
    23  * documentation and/or other materials provided with the distribution.
    +
    24  *
    +
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    35  * POSSIBILITY OF SUCH DAMAGE.
    +
    36  */
    +
    37 #ifndef OPJ_INTMATH_H
    +
    38 #define OPJ_INTMATH_H
    +
    39 
    +
    48 
    +
    51 /* ----------------------------------------------------------------------- */
    + +
    57 {
    +
    58  return a < b ? a : b;
    +
    59 }
    +
    60 
    + +
    66 {
    +
    67  return a < b ? a : b;
    +
    68 }
    +
    69 
    + +
    75 {
    +
    76  return (a > b) ? a : b;
    +
    77 }
    +
    78 
    + +
    84 {
    +
    85  return (a > b) ? a : b;
    +
    86 }
    +
    87 
    + +
    93 {
    +
    94  OPJ_UINT64 sum = (OPJ_UINT64)a + (OPJ_UINT64)b;
    +
    95  return (OPJ_UINT32)(-(OPJ_INT32)(sum >> 32)) | (OPJ_UINT32)sum;
    +
    96 }
    +
    97 
    + +
    103 {
    +
    104  return (a >= b) ? a - b : 0;
    +
    105 }
    +
    106 
    + +
    117  OPJ_INT32 max)
    +
    118 {
    +
    119  if (a < min) {
    +
    120  return min;
    +
    121  }
    +
    122  if (a > max) {
    +
    123  return max;
    +
    124  }
    +
    125  return a;
    +
    126 }
    +
    127 
    + +
    138  OPJ_INT64 max)
    +
    139 {
    +
    140  if (a < min) {
    +
    141  return min;
    +
    142  }
    +
    143  if (a > max) {
    +
    144  return max;
    +
    145  }
    +
    146  return a;
    +
    147 }
    +
    148 
    + +
    153 {
    +
    154  return a < 0 ? -a : a;
    +
    155 }
    + +
    161 {
    +
    162  assert(b);
    +
    163  return (OPJ_INT32)(((OPJ_INT64)a + b - 1) / b);
    +
    164 }
    +
    165 
    + +
    171 {
    +
    172  assert(b);
    +
    173  return (OPJ_UINT32)(((OPJ_UINT64)a + b - 1) / b);
    +
    174 }
    +
    175 
    + +
    181 {
    +
    182  return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
    +
    183 }
    +
    184 
    + +
    190 {
    +
    191  return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
    +
    192 }
    +
    193 
    + +
    199 {
    +
    200  return (OPJ_UINT32)((a + ((OPJ_UINT64)1U << b) - 1U) >> b);
    +
    201 }
    +
    202 
    + +
    208 {
    +
    209  return a >> b;
    +
    210 }
    +
    211 
    + +
    217 {
    +
    218  return a >> b;
    +
    219 }
    +
    220 
    + +
    226 {
    +
    227  OPJ_INT32 l;
    +
    228  for (l = 0; a > 1; l++) {
    +
    229  a >>= 1;
    +
    230  }
    +
    231  return l;
    +
    232 }
    + +
    238 {
    +
    239  OPJ_UINT32 l;
    +
    240  for (l = 0; a > 1; ++l) {
    +
    241  a >>= 1;
    +
    242  }
    +
    243  return l;
    +
    244 }
    +
    245 
    + +
    253 {
    +
    254 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    +
    255  OPJ_INT64 temp = __emul(a, b);
    +
    256 #else
    +
    257  OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
    +
    258 #endif
    +
    259  temp += 4096;
    +
    260  assert((temp >> 13) <= (OPJ_INT64)0x7FFFFFFF);
    +
    261  assert((temp >> 13) >= (-(OPJ_INT64)0x7FFFFFFF - (OPJ_INT64)1));
    +
    262  return (OPJ_INT32)(temp >> 13);
    +
    263 }
    +
    264 
    + +
    266 {
    +
    267 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    +
    268  OPJ_INT64 temp = __emul(a, b);
    +
    269 #else
    +
    270  OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
    +
    271 #endif
    +
    272  temp += 4096;
    +
    273  assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) <= (OPJ_INT64)0x7FFFFFFF);
    +
    274  assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) >= (-(OPJ_INT64)0x7FFFFFFF -
    +
    275  (OPJ_INT64)1));
    +
    276  return (OPJ_INT32)(temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) ;
    +
    277 }
    +
    278 
    +
    279 /* ----------------------------------------------------------------------- */
    +
    283 
    +
    284 #endif /* OPJ_INTMATH_H */
    +
    +
    static INLINE OPJ_INT32 opj_int64_ceildivpow2(OPJ_INT64 a, OPJ_INT32 b)
    Divide a 64bits integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:189
    +
    static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a)
    Definition: opj_intmath.h:152
    +
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    +
    static INLINE OPJ_UINT32 opj_uint_floordivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:216
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    static INLINE OPJ_INT32 opj_int_fix_mul_t1(OPJ_INT32 a, OPJ_INT32 b)
    Definition: opj_intmath.h:265
    +
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    static INLINE OPJ_UINT32 opj_uint_floorlog2(OPJ_UINT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:237
    +
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    +
    static INLINE OPJ_INT64 opj_int64_clamp(OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:137
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    static INLINE OPJ_UINT32 opj_uint_subs(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated difference of two unsigned integers.
    Definition: opj_intmath.h:102
    +
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    +
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:116
    +
    static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:207
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    + + + + diff --git a/build/doc/html/opj__inttypes_8h.html b/build/doc/html/opj__inttypes_8h.html new file mode 100644 index 000000000..69291ef5e --- /dev/null +++ b/build/doc/html/opj__inttypes_8h.html @@ -0,0 +1,61 @@ + + + + + + + +OpenJPEG: opj_inttypes.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_inttypes.h File Reference
    +
    +
    +
    #include "opj_config_private.h"
    +
    +

    Go to the source code of this file.

    +
    + + + + diff --git a/build/doc/html/opj__inttypes_8h_source.html b/build/doc/html/opj__inttypes_8h_source.html new file mode 100644 index 000000000..4c8aaee28 --- /dev/null +++ b/build/doc/html/opj__inttypes_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +OpenJPEG: opj_inttypes.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_inttypes.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2012, Mathieu Malaterre <mathieu.malaterre@gmail.com>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 #ifndef OPJ_INTTYPES_H
    +
    32 #define OPJ_INTTYPES_H
    +
    33 
    +
    34 #include "opj_config_private.h"
    +
    35 #ifdef OPJ_HAVE_INTTYPES_H
    +
    36 #include <inttypes.h>
    +
    37 #else
    +
    38 #if defined(_WIN32)
    +
    39 #define PRId64 "I64d"
    +
    40 #define PRIi64 "I64i"
    +
    41 #define PRIu64 "I64u"
    +
    42 #define PRIx64 "I64x"
    +
    43 #else
    +
    44 #error unsupported platform
    +
    45 #endif
    +
    46 #endif
    +
    47 
    +
    48 #endif /* OPJ_INTTYPES_H */
    +
    + + + + diff --git a/build/doc/html/opj__malloc_8c.html b/build/doc/html/opj__malloc_8c.html new file mode 100644 index 000000000..9240585f7 --- /dev/null +++ b/build/doc/html/opj__malloc_8c.html @@ -0,0 +1,496 @@ + + + + + + + +OpenJPEG: opj_malloc.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    opj_malloc.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Macros

    #define OPJ_SKIP_POISON
     
    #define SIZE_MAX   ((size_t) -1)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    static INLINE void * opj_aligned_alloc_n (size_t alignment, size_t size)
     
    static INLINE void * opj_aligned_realloc_n (void *ptr, size_t alignment, size_t new_size)
     
    void * opj_malloc (size_t size)
     Allocate an uninitialized memory block. More...
     
    void * opj_calloc (size_t num, size_t size)
     Allocate a memory block with elements initialized to 0. More...
     
    void * opj_aligned_malloc (size_t size)
     Allocate memory aligned to a 16 byte boundary. More...
     
    void * opj_aligned_realloc (void *ptr, size_t size)
     
    void * opj_aligned_32_malloc (size_t size)
     Allocate memory aligned to a 32 byte boundary. More...
     
    void * opj_aligned_32_realloc (void *ptr, size_t size)
     
    void opj_aligned_free (void *ptr)
     
    void * opj_realloc (void *ptr, size_t new_size)
     Reallocate memory blocks. More...
     
    void opj_free (void *ptr)
     Deallocates or frees a memory block. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_SKIP_POISON

    + +
    +
    + + + + +
    #define OPJ_SKIP_POISON
    +
    + +
    +
    + +

    ◆ SIZE_MAX

    + +
    +
    + + + + +
    #define SIZE_MAX   ((size_t) -1)
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_aligned_32_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_aligned_32_malloc (size_t size)
    +
    + +

    Allocate memory aligned to a 32 byte boundary.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    References opj_aligned_alloc_n().

    + +

    Referenced by opj_dwt_decode_partial_tile(), and opj_dwt_decode_tile().

    + +
    +
    + +

    ◆ opj_aligned_32_realloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_aligned_32_realloc (void * ptr,
    size_t size 
    )
    +
    + +

    References opj_aligned_realloc_n().

    + +
    +
    + +

    ◆ opj_aligned_alloc_n()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE void* opj_aligned_alloc_n (size_t alignment,
    size_t size 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_aligned_free()

    + + + +

    ◆ opj_aligned_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_aligned_malloc (size_t size)
    +
    + +

    Allocate memory aligned to a 16 byte boundary.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    References opj_aligned_alloc_n().

    + +

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), opj_image_data_alloc(), opj_t1_allocate_buffers(), and opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_aligned_realloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_aligned_realloc (void * ptr,
    size_t size 
    )
    +
    + +

    References opj_aligned_realloc_n().

    + +
    +
    + +

    ◆ opj_aligned_realloc_n()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void* opj_aligned_realloc_n (void * ptr,
    size_t alignment,
    size_t new_size 
    )
    +
    +static
    +
    + +

    References opj_aligned_alloc_n(), and SIZE_MAX.

    + +

    Referenced by opj_aligned_32_realloc(), and opj_aligned_realloc().

    + +
    +
    + +

    ◆ opj_calloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_calloc (size_t numOfElements,
    size_t sizeOfElements 
    )
    +
    + +

    Allocate a memory block with elements initialized to 0.

    +
    Parameters
    + + + +
    numOfElementsBlocks to allocate
    sizeOfElementsBytes per block to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    Referenced by gene_cachemodel(), init_jpipdecoder(), init_tilec(), j2k_get_cstr_index(), j2k_get_cstr_info(), opj_create_compress(), opj_create_decompress(), opj_image_create(), opj_image_create0(), opj_image_tile_create(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_check_poc_val(), opj_j2k_create_compress(), opj_j2k_create_cstr_index(), opj_j2k_create_decompress(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_siz(), opj_j2k_read_sot(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_jp2_check_color(), opj_jp2_create(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_write_bpcc(), opj_jp2_write_colr(), opj_jp2_write_ftyp(), opj_jp2_write_ihdr(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_procedure_list_create(), opj_sparse_array_int32_create(), opj_sparse_array_int32_read_or_write(), opj_stream_create(), opj_t1_create(), opj_t1_decode_cblks(), opj_t2_create(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), opj_tcd_init(), opj_tcd_marker_info_create(), opj_tgt_create(), opj_thread_pool_create(), opj_thread_pool_setup(), opj_tls_new(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), and parse_comps().

    + +
    +
    + +

    ◆ opj_free()

    + +
    +
    + + + + + + + + +
    void opj_free (void * m)
    +
    + +

    Deallocates or frees a memory block.

    +
    Parameters
    + + +
    mPreviously allocated memory block to be freed
    +
    +
    + +

    Referenced by add_body_stream(), add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), check_JP2boxidx(), delete_auxresponse(), delete_cachemodel(), delete_cachemodellist(), delete_channel(), delete_channellist(), delete_COD(), delete_index(), delete_message_in_msgqueue(), delete_msgqueue(), delete_query(), delete_session(), delete_sessionlist(), delete_target(), delete_targetlist(), destroy_jpipdecoder(), fread_jpip(), free_tilec(), get_index_from_JP2file(), get_SIZ_from_jpipstream(), handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_JPIPstreamMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), identify_cid(), j2k_destroy_cstr_index(), j2k_get_cstr_index(), jpipstream_to_pnm(), open_jp2file(), opj_bio_destroy(), opj_copy_image_header(), opj_create_compress(), opj_create_decompress(), opj_destroy_codec(), opj_destroy_cstr_info(), opj_dwt_decode_h_func(), opj_dwt_decode_tile(), opj_dwt_decode_v_func(), opj_dwt_encode_procedure(), opj_image_destroy(), opj_j2k_add_mct(), opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_check_poc_val(), opj_j2k_cp_destroy(), opj_j2k_create_cstr_index(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_encode(), opj_j2k_end_encoding(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_tile_header(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_tcp_data_destroy(), opj_j2k_tcp_destroy(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_destroy(), opj_jp2_free_pclr(), opj_jp2_read_cdef(), opj_jp2_read_header_procedure(), opj_jp2_read_pclr(), opj_jp2_write_ftyp(), opj_jp2_write_jp2h(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_procedure_list_add_procedure(), opj_procedure_list_create(), opj_procedure_list_destroy(), opj_sparse_array_int32_create(), opj_sparse_array_int32_free(), opj_stream_create(), opj_stream_destroy(), opj_t1_clbl_decode_processor(), opj_t1_destroy(), opj_t2_decode_packets(), opj_t2_destroy(), opj_tcd_code_block_dec_deallocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_code_block_enc_deallocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_destroy(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_marker_info_destroy(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tgt_create(), opj_tgt_destroy(), opj_thread_pool_create(), opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), opj_tls_destroy(), opj_worker_thread_function(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), parse_jp2file(), recons_jp2(), recv_ack(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), set_tpixdata(), terminate_dec_server(), and update_JPIPstream().

    + +
    +
    + +

    ◆ opj_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_malloc (size_t size)
    +
    + +

    Allocate an uninitialized memory block.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    Referenced by add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), enqueue_mainheader(), enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), fread_jpip(), gene_auxresponse(), gene_cachemodel(), gene_cachemodellist(), gene_channel(), gene_channellist(), gene_emptytilestream(), gene_metamsg(), gene_msgqueue(), gene_msgstream(), gene_session(), gene_sessionlist(), gene_target(), gene_targetlist(), get_CODmkrdata_from_j2kstream(), get_index_from_JP2file(), get_initquery(), get_SIZ_from_jpipstream(), handle_XMLreqMSG(), init_dec_server(), init_tilec(), j2k_get_cstr_index(), open_jp2file(), opj_bio_create(), opj_copy_image_header(), opj_dwt_decode_tile(), opj_dwt_encode_procedure(), opj_j2k_add_mct(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_compress(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cod(), opj_j2k_read_mct(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_sod(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_update_rates(), opj_j2k_write_sod(), opj_jp2_apply_pclr(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_cdef(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_set_MCT(), opj_stream_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tcd_rateallocate(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), parse_jp2file(), parse_JPIPstream(), parse_phld(), set_CODmkrdata(), set_ppixdata(), set_thixdata(), and update_JPIPstream().

    + +
    +
    + +

    ◆ opj_realloc()

    + + +
    + + + + diff --git a/build/doc/html/opj__malloc_8h.html b/build/doc/html/opj__malloc_8h.html new file mode 100644 index 000000000..13932217c --- /dev/null +++ b/build/doc/html/opj__malloc_8h.html @@ -0,0 +1,376 @@ + + + + + + + +OpenJPEG: opj_malloc.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_malloc.h File Reference
    +
    +
    + +

    Internal functions. +More...

    +
    #include <stddef.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    void * opj_malloc (size_t size)
     Allocate an uninitialized memory block. More...
     
    void * opj_calloc (size_t numOfElements, size_t sizeOfElements)
     Allocate a memory block with elements initialized to 0. More...
     
    void * opj_aligned_malloc (size_t size)
     Allocate memory aligned to a 16 byte boundary. More...
     
    void * opj_aligned_realloc (void *ptr, size_t size)
     
    void opj_aligned_free (void *ptr)
     
    void * opj_aligned_32_malloc (size_t size)
     Allocate memory aligned to a 32 byte boundary. More...
     
    void * opj_aligned_32_realloc (void *ptr, size_t size)
     
    void * opj_realloc (void *m, size_t s)
     Reallocate memory blocks. More...
     
    void opj_free (void *m)
     Deallocates or frees a memory block. More...
     
    +

    Detailed Description

    +

    Internal functions.

    +

    The functions in opj_malloc.h are internal utilities used for memory management.

    +

    Function Documentation

    + +

    ◆ opj_aligned_32_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_aligned_32_malloc (size_t size)
    +
    + +

    Allocate memory aligned to a 32 byte boundary.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    References opj_aligned_alloc_n().

    + +

    Referenced by opj_dwt_decode_partial_tile(), and opj_dwt_decode_tile().

    + +
    +
    + +

    ◆ opj_aligned_32_realloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_aligned_32_realloc (void * ptr,
    size_t size 
    )
    +
    + +

    References opj_aligned_realloc_n().

    + +
    +
    + +

    ◆ opj_aligned_free()

    + + + +

    ◆ opj_aligned_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_aligned_malloc (size_t size)
    +
    + +

    Allocate memory aligned to a 16 byte boundary.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    References opj_aligned_alloc_n().

    + +

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), opj_image_data_alloc(), opj_t1_allocate_buffers(), and opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_aligned_realloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_aligned_realloc (void * ptr,
    size_t size 
    )
    +
    + +

    References opj_aligned_realloc_n().

    + +
    +
    + +

    ◆ opj_calloc()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_calloc (size_t numOfElements,
    size_t sizeOfElements 
    )
    +
    + +

    Allocate a memory block with elements initialized to 0.

    +
    Parameters
    + + + +
    numOfElementsBlocks to allocate
    sizeOfElementsBytes per block to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    Referenced by gene_cachemodel(), init_jpipdecoder(), init_tilec(), j2k_get_cstr_index(), j2k_get_cstr_info(), opj_create_compress(), opj_create_decompress(), opj_image_create(), opj_image_create0(), opj_image_tile_create(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_check_poc_val(), opj_j2k_create_compress(), opj_j2k_create_cstr_index(), opj_j2k_create_decompress(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_siz(), opj_j2k_read_sot(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_jp2_check_color(), opj_jp2_create(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_write_bpcc(), opj_jp2_write_colr(), opj_jp2_write_ftyp(), opj_jp2_write_ihdr(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_procedure_list_create(), opj_sparse_array_int32_create(), opj_sparse_array_int32_read_or_write(), opj_stream_create(), opj_t1_create(), opj_t1_decode_cblks(), opj_t2_create(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), opj_tcd_init(), opj_tcd_marker_info_create(), opj_tgt_create(), opj_thread_pool_create(), opj_thread_pool_setup(), opj_tls_new(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), and parse_comps().

    + +
    +
    + +

    ◆ opj_free()

    + +
    +
    + + + + + + + + +
    void opj_free (void * m)
    +
    + +

    Deallocates or frees a memory block.

    +
    Parameters
    + + +
    mPreviously allocated memory block to be freed
    +
    +
    + +

    Referenced by add_body_stream(), add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), check_JP2boxidx(), delete_auxresponse(), delete_cachemodel(), delete_cachemodellist(), delete_channel(), delete_channellist(), delete_COD(), delete_index(), delete_message_in_msgqueue(), delete_msgqueue(), delete_query(), delete_session(), delete_sessionlist(), delete_target(), delete_targetlist(), destroy_jpipdecoder(), fread_jpip(), free_tilec(), get_index_from_JP2file(), get_SIZ_from_jpipstream(), handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_JPIPstreamMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), identify_cid(), j2k_destroy_cstr_index(), j2k_get_cstr_index(), jpipstream_to_pnm(), open_jp2file(), opj_bio_destroy(), opj_copy_image_header(), opj_create_compress(), opj_create_decompress(), opj_destroy_codec(), opj_destroy_cstr_info(), opj_dwt_decode_h_func(), opj_dwt_decode_tile(), opj_dwt_decode_v_func(), opj_dwt_encode_procedure(), opj_image_destroy(), opj_j2k_add_mct(), opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_check_poc_val(), opj_j2k_cp_destroy(), opj_j2k_create_cstr_index(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_encode(), opj_j2k_end_encoding(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_tile_header(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_tcp_data_destroy(), opj_j2k_tcp_destroy(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_destroy(), opj_jp2_free_pclr(), opj_jp2_read_cdef(), opj_jp2_read_header_procedure(), opj_jp2_read_pclr(), opj_jp2_write_ftyp(), opj_jp2_write_jp2h(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_procedure_list_add_procedure(), opj_procedure_list_create(), opj_procedure_list_destroy(), opj_sparse_array_int32_create(), opj_sparse_array_int32_free(), opj_stream_create(), opj_stream_destroy(), opj_t1_clbl_decode_processor(), opj_t1_destroy(), opj_t2_decode_packets(), opj_t2_destroy(), opj_tcd_code_block_dec_deallocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_code_block_enc_deallocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_destroy(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_marker_info_destroy(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tgt_create(), opj_tgt_destroy(), opj_thread_pool_create(), opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), opj_tls_destroy(), opj_worker_thread_function(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), parse_jp2file(), recons_jp2(), recv_ack(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), set_tpixdata(), terminate_dec_server(), and update_JPIPstream().

    + +
    +
    + +

    ◆ opj_malloc()

    + +
    +
    + + + + + + + + +
    void* opj_malloc (size_t size)
    +
    + +

    Allocate an uninitialized memory block.

    +
    Parameters
    + + +
    sizeBytes to allocate
    +
    +
    +
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    + +

    Referenced by add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), enqueue_mainheader(), enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), fread_jpip(), gene_auxresponse(), gene_cachemodel(), gene_cachemodellist(), gene_channel(), gene_channellist(), gene_emptytilestream(), gene_metamsg(), gene_msgqueue(), gene_msgstream(), gene_session(), gene_sessionlist(), gene_target(), gene_targetlist(), get_CODmkrdata_from_j2kstream(), get_index_from_JP2file(), get_initquery(), get_SIZ_from_jpipstream(), handle_XMLreqMSG(), init_dec_server(), init_tilec(), j2k_get_cstr_index(), open_jp2file(), opj_bio_create(), opj_copy_image_header(), opj_dwt_decode_tile(), opj_dwt_encode_procedure(), opj_j2k_add_mct(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_compress(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cod(), opj_j2k_read_mct(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_sod(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_update_rates(), opj_j2k_write_sod(), opj_jp2_apply_pclr(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_cdef(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_set_MCT(), opj_stream_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tcd_rateallocate(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), parse_jp2file(), parse_JPIPstream(), parse_phld(), set_CODmkrdata(), set_ppixdata(), set_thixdata(), and update_JPIPstream().

    + +
    +
    + +

    ◆ opj_realloc()

    + + +
    + + + + diff --git a/build/doc/html/opj__malloc_8h_source.html b/build/doc/html/opj__malloc_8h_source.html new file mode 100644 index 000000000..88e49b4da --- /dev/null +++ b/build/doc/html/opj__malloc_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: opj_malloc.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_malloc.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    8  * Copyright (c) 2007, Callum Lerwick <seg@haxxed.com>
    +
    9  * All rights reserved.
    +
    10  *
    +
    11  * Redistribution and use in source and binary forms, with or without
    +
    12  * modification, are permitted provided that the following conditions
    +
    13  * are met:
    +
    14  * 1. Redistributions of source code must retain the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer.
    +
    16  * 2. Redistributions in binary form must reproduce the above copyright
    +
    17  * notice, this list of conditions and the following disclaimer in the
    +
    18  * documentation and/or other materials provided with the distribution.
    +
    19  *
    +
    20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    30  * POSSIBILITY OF SUCH DAMAGE.
    +
    31  */
    +
    32 #ifndef OPJ_MALLOC_H
    +
    33 #define OPJ_MALLOC_H
    +
    34 
    +
    35 #include <stddef.h>
    +
    45 
    +
    48 /* ----------------------------------------------------------------------- */
    +
    49 
    +
    55 void * opj_malloc(size_t size);
    +
    56 
    +
    63 void * opj_calloc(size_t numOfElements, size_t sizeOfElements);
    +
    64 
    +
    70 void * opj_aligned_malloc(size_t size);
    +
    71 void * opj_aligned_realloc(void *ptr, size_t size);
    +
    72 void opj_aligned_free(void* ptr);
    +
    73 
    +
    79 void * opj_aligned_32_malloc(size_t size);
    +
    80 void * opj_aligned_32_realloc(void *ptr, size_t size);
    +
    81 
    +
    88 void * opj_realloc(void * m, size_t s);
    +
    89 
    +
    94 void opj_free(void * m);
    +
    95 
    +
    96 #if defined(__GNUC__) && !defined(OPJ_SKIP_POISON)
    +
    97 #pragma GCC poison malloc calloc realloc free
    +
    98 #endif
    +
    99 
    +
    100 /* ----------------------------------------------------------------------- */
    +
    104 
    +
    105 #endif /* OPJ_MALLOC_H */
    +
    106 
    +
    +
    void opj_free(void *m)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    +
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    void * opj_aligned_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:211
    +
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    void * opj_aligned_32_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:220
    +
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    + +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void * opj_aligned_32_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:220
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void * opj_calloc(size_t numOfElements, size_t sizeOfElements)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    static INLINE void * opj_aligned_realloc_n(void *ptr, size_t alignment, size_t new_size)
    Definition: opj_malloc.c:107
    +
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    +
    void * opj_aligned_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:211
    +
    static INLINE void * opj_aligned_alloc_n(size_t alignment, size_t size)
    Definition: opj_malloc.c:43
    +
    void * opj_realloc(void *m, size_t s)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    + + + + diff --git a/build/doc/html/opj__stdint_8h.html b/build/doc/html/opj__stdint_8h.html new file mode 100644 index 000000000..61c5b6a9b --- /dev/null +++ b/build/doc/html/opj__stdint_8h.html @@ -0,0 +1,61 @@ + + + + + + + +OpenJPEG: opj_stdint.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_stdint.h File Reference
    +
    +
    +
    #include "opj_config.h"
    +
    +

    Go to the source code of this file.

    +
    + + + + diff --git a/build/doc/html/opj__stdint_8h_source.html b/build/doc/html/opj__stdint_8h_source.html new file mode 100644 index 000000000..805f34d88 --- /dev/null +++ b/build/doc/html/opj__stdint_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +OpenJPEG: opj_stdint.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    opj_stdint.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2012, Mathieu Malaterre <mathieu.malaterre@gmail.com>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 #ifndef OPJ_STDINT_H
    +
    32 #define OPJ_STDINT_H
    +
    33 
    +
    34 #include "opj_config.h"
    +
    35 #ifdef OPJ_HAVE_STDINT_H
    +
    36 #include <stdint.h>
    +
    37 #else
    +
    38 #if defined(_WIN32)
    +
    39 typedef signed __int8 int8_t;
    +
    40 typedef unsigned __int8 uint8_t;
    +
    41 typedef signed __int16 int16_t;
    +
    42 typedef unsigned __int16 uint16_t;
    +
    43 typedef signed __int32 int32_t;
    +
    44 typedef unsigned __int32 uint32_t;
    +
    45 typedef signed __int64 int64_t;
    +
    46 typedef unsigned __int64 uint64_t;
    +
    47 #else
    +
    48 #error unsupported platform
    +
    49 #endif
    +
    50 #endif
    +
    51 
    +
    52 #endif /* OPJ_STDINT_H */
    +
    + + + + diff --git a/build/doc/html/pages.html b/build/doc/html/pages.html new file mode 100644 index 000000000..9560ce910 --- /dev/null +++ b/build/doc/html/pages.html @@ -0,0 +1,59 @@ + + + + + + + +OpenJPEG: Related Pages + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    + + + + diff --git a/build/doc/html/phix__manager_8c.html b/build/doc/html/phix__manager_8c.html new file mode 100644 index 000000000..eeb9066a3 --- /dev/null +++ b/build/doc/html/phix__manager_8c.html @@ -0,0 +1,193 @@ + + + + + + + +OpenJPEG: phix_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    phix_manager.c File Reference
    +
    +
    + +

    Modification of jpip.c from 2KAN indexer. +More...

    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Functions

    int opj_write_phix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.c from 2KAN indexer.

    +

    Function Documentation

    + +

    ◆ opj_write_phix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_phix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_phixfaix()

    + + +
    + + + + diff --git a/build/doc/html/pi_8c.html b/build/doc/html/pi_8c.html new file mode 100644 index 000000000..bacc8b396 --- /dev/null +++ b/build/doc/html/pi_8c.html @@ -0,0 +1,1406 @@ + + + + + + + +OpenJPEG: pi.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    pi.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + +

    +Macros

    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_UINT32
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Local static functions
    static OPJ_BOOL opj_pi_next_lrcp (opj_pi_iterator_t *pi)
     Get next packet in layer-resolution-component-precinct order. More...
     
    static OPJ_BOOL opj_pi_next_rlcp (opj_pi_iterator_t *pi)
     Get next packet in resolution-layer-component-precinct order. More...
     
    static OPJ_BOOL opj_pi_next_rpcl (opj_pi_iterator_t *pi)
     Get next packet in resolution-precinct-component-layer order. More...
     
    static OPJ_BOOL opj_pi_next_pcrl (opj_pi_iterator_t *pi)
     Get next packet in precinct-component-resolution-layer order. More...
     
    static OPJ_BOOL opj_pi_next_cprl (opj_pi_iterator_t *pi)
     Get next packet in component-precinct-resolution-layer order. More...
     
    static void opj_pi_update_encode_poc_and_final (opj_cp_t *p_cp, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
     Updates the coding parameters if the encoding is used with Progression order changes and final (or cinema parameters are used). More...
     
    static void opj_pi_update_encode_not_poc (opj_cp_t *p_cp, OPJ_UINT32 p_num_comps, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
     Updates the coding parameters if the encoding is not used with Progression order changes and final (and cinema parameters are used). More...
     
    static void opj_get_encoding_parameters (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res)
     Gets the encoding parameters needed to update the coding parameters and all the pocs. More...
     
    static void opj_get_all_encoding_parameters (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res, OPJ_UINT32 **p_resolutions)
     Gets the encoding parameters needed to update the coding parameters and all the pocs. More...
     
    static opj_pi_iterator_topj_pi_create (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno)
     Allocates memory for a packet iterator. More...
     
    static void opj_pi_update_decode_not_poc (opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
     FIXME DOC. More...
     
    static void opj_pi_update_decode_poc (opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
     FIXME DOC. More...
     
    static OPJ_BOOL opj_pi_check_next_level (OPJ_INT32 pos, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, const OPJ_CHAR *prog)
     FIXME DOC. More...
     
    static void opj_pi_emit_error (opj_pi_iterator_t *pi, const char *msg)
     
    opj_pi_iterator_topj_pi_create_decode (opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Create a packet iterator for Decoder. More...
     
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Return the number of packets in the tile. More...
     
    opj_pi_iterator_topj_pi_initialise_encode (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
     Creates a packet iterator for encoding. More...
     
    void opj_pi_create_encode (opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
     Modify the packet iterator for enabling tile part generation. More...
     
    void opj_pi_destroy (opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
     Destroys a packet iterator array. More...
     
    void opj_pi_update_encoding_parameters (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Updates the encoding parameters of the codec. More...
     
    OPJ_BOOL opj_pi_next (opj_pi_iterator_t *pi)
     Modify the packet iterator to point to the next packet. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_UINT32_SEMANTICALLY_BUT_INT32

    + +
    +
    + + + + +
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_UINT32
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_get_all_encoding_parameters()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_get_all_encoding_parameters (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno,
    OPJ_UINT32p_tx0,
    OPJ_UINT32p_tx1,
    OPJ_UINT32p_ty0,
    OPJ_UINT32p_ty1,
    OPJ_UINT32p_dx_min,
    OPJ_UINT32p_dy_min,
    OPJ_UINT32p_max_prec,
    OPJ_UINT32p_max_res,
    OPJ_UINT32 ** p_resolutions 
    )
    +
    +static
    +
    + +

    Gets the encoding parameters needed to update the coding parameters and all the pocs.

    +

    The precinct widths, heights, dx and dy for each component at each resolution will be stored as well. the last parameter of the function should be an array of pointers of size nb components, each pointer leading to an area of size 4 * max_res. The data is stored inside this area with the following pattern : dx_compi_res0 , dy_compi_res0 , w_compi_res0, h_compi_res0 , dx_compi_res1 , dy_compi_res1 , w_compi_res1, h_compi_res1 , ...

    +
    Parameters
    + + + + + + + + + + + + + +
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    tilenothe tile index of the tile being encoded.
    p_tx0pointer that will hold the X0 parameter for the tile
    p_tx1pointer that will hold the X1 parameter for the tile
    p_ty0pointer that will hold the Y0 parameter for the tile
    p_ty1pointer that will hold the Y1 parameter for the tile
    p_max_precpointer that will hold the maximum precision for all the bands of the tile
    p_max_respointer that will hold the maximum number of resolutions for all the poc inside the tile.
    p_dx_minpointer that will hold the minimum dx of all the components of all the resolutions for the tile.
    p_dy_minpointer that will hold the minimum dy of all the components of all the resolutions for the tile.
    p_resolutionspointer to an area corresponding to the one described above.
    +
    +
    + +

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image::numcomps, opj_tccp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_floordivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::prch, opj_tccp::prcw, tcp, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_get_encoding_packet_count(), opj_pi_create_decode(), and opj_pi_initialise_encode().

    + +
    +
    + +

    ◆ opj_get_encoding_packet_count()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    +
    + +

    Return the number of packets in the tile.

    +
    Parameters
    + + + + +
    imagethe image being encoded.
    cpCoding parameters
    tilenoNumber that identifies the tile.
    +
    +
    + +

    References opj_image::numcomps, opj_tcp::numlayers, opj_get_all_encoding_parameters(), opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_get_specific_header_sizes(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_get_encoding_parameters()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_get_encoding_parameters (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno,
    OPJ_UINT32p_tx0,
    OPJ_UINT32p_tx1,
    OPJ_UINT32p_ty0,
    OPJ_UINT32p_ty1,
    OPJ_UINT32p_dx_min,
    OPJ_UINT32p_dy_min,
    OPJ_UINT32p_max_prec,
    OPJ_UINT32p_max_res 
    )
    +
    +static
    +
    + +

    Gets the encoding parameters needed to update the coding parameters and all the pocs.

    +
    Parameters
    + + + + + + + + + + + + +
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    tilenothe tile index of the tile being encoded.
    p_tx0pointer that will hold the X0 parameter for the tile
    p_tx1pointer that will hold the X1 parameter for the tile
    p_ty0pointer that will hold the Y0 parameter for the tile
    p_ty1pointer that will hold the Y1 parameter for the tile
    p_max_precpointer that will hold the maximum precision for all the bands of the tile
    p_max_respointer that will hold the maximum number of resolutions for all the poc inside the tile.
    p_dx_minpointer that will hold the minimum dx of all the components of all the resolutions for the tile.
    p_dy_minpointer that will hold the minimum dy of all the components of all the resolutions for the tile.
    +
    +
    + +

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image::numcomps, opj_tccp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_floordivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::prch, opj_tccp::prcw, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    + +

    Referenced by opj_pi_update_encoding_parameters().

    + +
    +
    + +

    ◆ opj_pi_check_next_level()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_pi_check_next_level (OPJ_INT32 pos,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    const OPJ_CHARprog 
    )
    +
    +static
    +
    + +

    FIXME DOC.

    + +

    References OPJ_FALSE, OPJ_LRCP, OPJ_RLCP, OPJ_TRUE, opj_tcp::pocs, tcp, and opj_cp::tcps.

    + +

    Referenced by opj_pi_create_encode().

    + +
    +
    + +

    ◆ opj_pi_create()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static opj_pi_iterator_t * opj_pi_create (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno 
    )
    +
    +static
    +
    + +

    Allocates memory for a packet iterator.

    +

    Data and data sizes are set by this operation. No other data is set. The include section of the packet iterator is not allocated.

    +
    Parameters
    + + + + +
    p_imagethe image used to initialize the packet iterator (in fact only the number of components is relevant.
    p_cpthe coding parameters.
    tilenothe index of the tile from which creating the packet iterator.
    +
    +
    + +

    References opj_pi_iterator::comps, opj_pi_iterator::numcomps, opj_image::numcomps, opj_pi_comp::numresolutions, opj_tccp::numresolutions, opj_calloc(), opj_pi_destroy(), opj_pi_comp::resolutions, tcp, opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_pi_create_decode(), and opj_pi_initialise_encode().

    + +
    +
    + +

    ◆ opj_pi_create_decode()

    + + + +

    ◆ opj_pi_create_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_pi_create_encode (opj_pi_iterator_tpi,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    J2K_T2_MODE t2_mode 
    )
    +
    + +

    Modify the packet iterator for enabling tile part generation.

    +
    Parameters
    + + + + + + + + +
    piHandle to the packet iterator generated in pi_initialise_encode
    cpCoding parameters
    tilenoNumber that identifies the tile for which to list the packets
    pinoFIXME DOC
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    t2_modeFIXME DOC
    +
    +
    + +

    References opj_poc::compno0, opj_poc::compno1, FINAL_PASS, opj_pi_iterator::first, opj_poc::layno0, opj_poc::layno1, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_convert_progression_order(), OPJ_LRCP, opj_pi_check_next_level(), OPJ_RLCP, opj_pi_iterator::poc, opj_tcp::pocs, opj_poc::precno0, opj_poc::precno1, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_cp::rsiz, tcp, opj_cp::tcps, opj_poc::tx0, opj_pi_iterator::tx1, opj_poc::tx1, opj_poc::ty0, opj_pi_iterator::ty1, and opj_poc::ty1.

    + +

    Referenced by opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_destroy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_pi_destroy (opj_pi_iterator_tp_pi,
    OPJ_UINT32 p_nb_elements 
    )
    +
    + +

    Destroys a packet iterator array.

    +
    Parameters
    + + + +
    p_pithe packet iterator array to destroy.
    p_nb_elementsthe number of elements in the array.
    +
    +
    + +

    References opj_pi_iterator::comps, opj_pi_iterator::include, opj_pi_iterator::numcomps, opj_free(), and opj_pi_comp::resolutions.

    + +

    Referenced by opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_emit_error()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_pi_emit_error (opj_pi_iterator_tpi,
    const char * msg 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_pi_initialise_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_pi_iterator_t* opj_pi_initialise_encode (const opj_image_timage,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    J2K_T2_MODE t2_mode 
    )
    +
    +
    + +

    ◆ opj_pi_next()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_pi_next (opj_pi_iterator_tpi)
    +
    + +

    Modify the packet iterator to point to the next packet.

    +
    Parameters
    + + +
    piPacket iterator to modify
    +
    +
    +
    Returns
    Returns false if pi pointed to the last packet or else returns true
    + +

    References OPJ_CPRL, OPJ_FALSE, OPJ_LRCP, OPJ_PCRL, opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), opj_pi_next_rpcl(), OPJ_PROG_UNKNOWN, OPJ_RLCP, OPJ_RPCL, opj_pi_iterator::poc, and opj_poc::prg.

    + +

    Referenced by opj_t2_decode_packets(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_next_cprl()

    + + + +

    ◆ opj_pi_next_lrcp()

    + + + +

    ◆ opj_pi_next_pcrl()

    + + + +

    ◆ opj_pi_next_rlcp()

    + + + +

    ◆ opj_pi_next_rpcl()

    + + + +

    ◆ opj_pi_update_decode_not_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_pi_update_decode_not_poc (opj_pi_iterator_tp_pi,
    opj_tcp_tp_tcp,
    OPJ_UINT32 p_max_precision,
    OPJ_UINT32 p_max_res 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_pi_update_decode_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_pi_update_decode_poc (opj_pi_iterator_tp_pi,
    opj_tcp_tp_tcp,
    OPJ_UINT32 p_max_precision,
    OPJ_UINT32 p_max_res 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_pi_update_encode_not_poc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_pi_update_encode_not_poc (opj_cp_tp_cp,
    OPJ_UINT32 p_num_comps,
    OPJ_UINT32 p_tileno,
    OPJ_UINT32 p_tx0,
    OPJ_UINT32 p_tx1,
    OPJ_UINT32 p_ty0,
    OPJ_UINT32 p_ty1,
    OPJ_UINT32 p_max_prec,
    OPJ_UINT32 p_max_res,
    OPJ_UINT32 p_dx_min,
    OPJ_UINT32 p_dy_min 
    )
    +
    +static
    +
    + +

    Updates the coding parameters if the encoding is not used with Progression order changes and final (and cinema parameters are used).

    +
    Parameters
    + + + + + + + + + + + + +
    p_cpthe coding parameters to modify
    p_num_compsthe number of components
    p_tilenothe tile index being concerned.
    p_tx0X0 parameter for the tile
    p_tx1X1 parameter for the tile
    p_ty0Y0 parameter for the tile
    p_ty1Y1 parameter for the tile
    p_max_precthe maximum precision for all the bands of the tile
    p_max_resthe maximum number of resolutions for all the poc inside the tile.
    p_dx_minthe minimum dx of all the components of all the resolutions for the tile.
    p_dy_minthe minimum dy of all the components of all the resolutions for the tile.
    +
    +
    + +

    References opj_poc::compE, opj_poc::compS, opj_poc::dx, opj_poc::dy, opj_poc::layE, opj_poc::layS, opj_tcp::numlayers, opj_tcp::numpocs, opj_tcp::pocs, opj_poc::prcE, opj_poc::prcS, opj_tcp::prg, opj_poc::prg, opj_poc::resE, opj_poc::resS, opj_cp::tcps, opj_cp::th, opj_poc::txE, opj_poc::txS, opj_poc::tyE, and opj_poc::tyS.

    + +

    Referenced by opj_pi_initialise_encode(), and opj_pi_update_encoding_parameters().

    + +
    +
    + +

    ◆ opj_pi_update_encode_poc_and_final()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_pi_update_encode_poc_and_final (opj_cp_tp_cp,
    OPJ_UINT32 p_tileno,
    OPJ_UINT32 p_tx0,
    OPJ_UINT32 p_tx1,
    OPJ_UINT32 p_ty0,
    OPJ_UINT32 p_ty1,
    OPJ_UINT32 p_max_prec,
    OPJ_UINT32 p_max_res,
    OPJ_UINT32 p_dx_min,
    OPJ_UINT32 p_dy_min 
    )
    +
    +static
    +
    + +

    Updates the coding parameters if the encoding is used with Progression order changes and final (or cinema parameters are used).

    +
    Parameters
    + + + + + + + + + + + +
    p_cpthe coding parameters to modify
    p_tilenothe tile index being concerned.
    p_tx0X0 parameter for the tile
    p_tx1X1 parameter for the tile
    p_ty0Y0 parameter for the tile
    p_ty1Y1 parameter for the tile
    p_max_precthe maximum precision for all the bands of the tile
    p_max_resthe maximum number of resolutions for all the poc inside the tile.
    p_dx_minthe minimum dx of all the components of all the resolutions for the tile.
    p_dy_minthe minimum dy of all the components of all the resolutions for the tile.
    +
    +
    + +

    References opj_poc::compE, opj_poc::compno0, opj_poc::compno1, opj_poc::compS, opj_poc::dx, opj_poc::dy, opj_poc::layE, opj_poc::layno1, opj_poc::layS, opj_tcp::numpocs, OPJ_ARG_NOT_USED, opj_tcp::pocs, opj_poc::prcE, opj_poc::prcS, opj_poc::prg, opj_poc::prg1, opj_poc::resE, opj_poc::resno0, opj_poc::resno1, opj_poc::resS, opj_cp::tcps, opj_cp::th, opj_poc::txE, opj_poc::txS, opj_poc::tyE, and opj_poc::tyS.

    + +

    Referenced by opj_pi_initialise_encode(), and opj_pi_update_encoding_parameters().

    + +
    +
    + +

    ◆ opj_pi_update_encoding_parameters()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_pi_update_encoding_parameters (const opj_image_tp_image,
    opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    +
    + +

    Updates the encoding parameters of the codec.

    +
    Parameters
    + + + + +
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    p_tile_noindex of the tile being encoded.
    +
    +
    + +

    References opj_image::numcomps, opj_get_encoding_parameters(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_tcp::POC, opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_calculate_tp().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/pi_8h.html b/build/doc/html/pi_8h.html new file mode 100644 index 000000000..8eab27d1a --- /dev/null +++ b/build/doc/html/pi_8h.html @@ -0,0 +1,519 @@ + + + + + + + +OpenJPEG: pi.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    pi.h File Reference
    +
    +
    + +

    Implementation of a packet iterator (PI) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Data Structures

    struct  opj_pi_resolution
     FIXME DOC. More...
     
    struct  opj_pi_comp
     FIXME DOC. More...
     
    struct  opj_pi_iterator
     Packet iterator. More...
     
    + + + + + + + + + + +

    +Typedefs

    typedef struct opj_pi_resolution opj_pi_resolution_t
     FIXME DOC. More...
     
    typedef struct opj_pi_comp opj_pi_comp_t
     FIXME DOC. More...
     
    typedef struct opj_pi_iterator opj_pi_iterator_t
     Packet iterator. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    opj_pi_iterator_topj_pi_initialise_encode (const opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno, J2K_T2_MODE t2_mode)
     Creates a packet iterator for encoding. More...
     
    void opj_pi_update_encoding_parameters (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Updates the encoding parameters of the codec. More...
     
    void opj_pi_create_encode (opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
     Modify the packet iterator for enabling tile part generation. More...
     
    opj_pi_iterator_topj_pi_create_decode (opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno)
     Create a packet iterator for Decoder. More...
     
    void opj_pi_destroy (opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
     Destroys a packet iterator array. More...
     
    OPJ_BOOL opj_pi_next (opj_pi_iterator_t *pi)
     Modify the packet iterator to point to the next packet. More...
     
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Return the number of packets in the tile. More...
     
    +

    Detailed Description

    +

    Implementation of a packet iterator (PI)

    +

    The functions in PI.C have for goal to realize a packet iterator that permits to get the next packet following the progression order and change of it. The functions in PI.C are used by some function in T2.C.

    +

    Typedef Documentation

    + +

    ◆ opj_pi_comp_t

    + +
    +
    + + + + +
    typedef struct opj_pi_comp opj_pi_comp_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_pi_iterator_t

    + +
    +
    + + + + +
    typedef struct opj_pi_iterator opj_pi_iterator_t
    +
    + +

    Packet iterator.

    + +
    +
    + +

    ◆ opj_pi_resolution_t

    + +
    +
    + + + + +
    typedef struct opj_pi_resolution opj_pi_resolution_t
    +
    + +

    FIXME DOC.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_get_encoding_packet_count()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    +
    + +

    Return the number of packets in the tile.

    +
    Parameters
    + + + + +
    imagethe image being encoded.
    cpCoding parameters
    tilenoNumber that identifies the tile.
    +
    +
    + +

    References opj_image::numcomps, opj_tcp::numlayers, opj_get_all_encoding_parameters(), opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_get_specific_header_sizes(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_create_decode()

    + + + +

    ◆ opj_pi_create_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_pi_create_encode (opj_pi_iterator_tpi,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    J2K_T2_MODE t2_mode 
    )
    +
    + +

    Modify the packet iterator for enabling tile part generation.

    +
    Parameters
    + + + + + + + + +
    piHandle to the packet iterator generated in pi_initialise_encode
    cpCoding parameters
    tilenoNumber that identifies the tile for which to list the packets
    pinoFIXME DOC
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    t2_modeFIXME DOC
    +
    +
    + +

    References opj_poc::compno0, opj_poc::compno1, FINAL_PASS, opj_pi_iterator::first, opj_poc::layno0, opj_poc::layno1, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_convert_progression_order(), OPJ_LRCP, opj_pi_check_next_level(), OPJ_RLCP, opj_pi_iterator::poc, opj_tcp::pocs, opj_poc::precno0, opj_poc::precno1, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_cp::rsiz, tcp, opj_cp::tcps, opj_poc::tx0, opj_pi_iterator::tx1, opj_poc::tx1, opj_poc::ty0, opj_pi_iterator::ty1, and opj_poc::ty1.

    + +

    Referenced by opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_destroy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_pi_destroy (opj_pi_iterator_tp_pi,
    OPJ_UINT32 p_nb_elements 
    )
    +
    + +

    Destroys a packet iterator array.

    +
    Parameters
    + + + +
    p_pithe packet iterator array to destroy.
    p_nb_elementsthe number of elements in the array.
    +
    +
    + +

    References opj_pi_iterator::comps, opj_pi_iterator::include, opj_pi_iterator::numcomps, opj_free(), and opj_pi_comp::resolutions.

    + +

    Referenced by opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_initialise_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_pi_iterator_t* opj_pi_initialise_encode (const opj_image_timage,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    J2K_T2_MODE t2_mode 
    )
    +
    +
    + +

    ◆ opj_pi_next()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_pi_next (opj_pi_iterator_tpi)
    +
    + +

    Modify the packet iterator to point to the next packet.

    +
    Parameters
    + + +
    piPacket iterator to modify
    +
    +
    +
    Returns
    Returns false if pi pointed to the last packet or else returns true
    + +

    References OPJ_CPRL, OPJ_FALSE, OPJ_LRCP, OPJ_PCRL, opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), opj_pi_next_rpcl(), OPJ_PROG_UNKNOWN, OPJ_RLCP, OPJ_RPCL, opj_pi_iterator::poc, and opj_poc::prg.

    + +

    Referenced by opj_t2_decode_packets(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_pi_update_encoding_parameters()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_pi_update_encoding_parameters (const opj_image_tp_image,
    opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    +
    + +

    Updates the encoding parameters of the codec.

    +
    Parameters
    + + + + +
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    p_tile_noindex of the tile being encoded.
    +
    +
    + +

    References opj_image::numcomps, opj_get_encoding_parameters(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_tcp::POC, opj_cp::tcps, and opj_cp::th.

    + +

    Referenced by opj_j2k_calculate_tp().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/pi_8h_source.html b/build/doc/html/pi_8h_source.html new file mode 100644 index 000000000..9229c549f --- /dev/null +++ b/build/doc/html/pi_8h_source.html @@ -0,0 +1,355 @@ + + + + + + + +OpenJPEG: pi.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    pi.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * All rights reserved.
    +
    15  *
    +
    16  * Redistribution and use in source and binary forms, with or without
    +
    17  * modification, are permitted provided that the following conditions
    +
    18  * are met:
    +
    19  * 1. Redistributions of source code must retain the above copyright
    +
    20  * notice, this list of conditions and the following disclaimer.
    +
    21  * 2. Redistributions in binary form must reproduce the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer in the
    +
    23  * documentation and/or other materials provided with the distribution.
    +
    24  *
    +
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    35  * POSSIBILITY OF SUCH DAMAGE.
    +
    36  */
    +
    37 
    +
    38 #ifndef OPJ_PI_H
    +
    39 #define OPJ_PI_H
    +
    40 
    +
    51 
    +
    55 typedef struct opj_pi_resolution {
    + + + +
    59 
    +
    63 typedef struct opj_pi_comp {
    + + + + +
    69 
    +
    73 typedef struct opj_pi_iterator {
    + + + + + + + + + + + + + + + + + + + +
    111 
    +
    114 /* ----------------------------------------------------------------------- */
    + +
    126  opj_cp_t *cp,
    +
    127  OPJ_UINT32 tileno,
    +
    128  J2K_T2_MODE t2_mode);
    +
    129 
    + +
    138  opj_cp_t *p_cp,
    +
    139  OPJ_UINT32 p_tile_no);
    +
    140 
    + +
    152  opj_cp_t *cp,
    +
    153  OPJ_UINT32 tileno,
    +
    154  OPJ_UINT32 pino,
    +
    155  OPJ_UINT32 tpnum,
    +
    156  OPJ_INT32 tppos,
    +
    157  J2K_T2_MODE t2_mode);
    +
    158 
    + +
    168  opj_cp_t * cp,
    +
    169  OPJ_UINT32 tileno);
    + +
    177  OPJ_UINT32 p_nb_elements);
    +
    178 
    + +
    185 
    + +
    193  const opj_cp_t *p_cp,
    +
    194  OPJ_UINT32 p_tile_no);
    +
    195 
    +
    196 /* ----------------------------------------------------------------------- */
    +
    200 
    +
    201 #endif /* OPJ_PI_H */
    +
    +
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    +
    FIXME DOC.
    Definition: pi.h:55
    +
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    +
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
    Definition: openjpeg.h:373
    +
    OPJ_UINT32 compS
    Definition: openjpeg.h:375
    +
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    +
    Packet iterator.
    Definition: pi.h:73
    +
    struct opj_pi_comp opj_pi_comp_t
    FIXME DOC.
    +
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_INT16 * include
    precise if the packet has been already used (useful for progression order change)
    Definition: pi.h:77
    +
    OPJ_PROG_ORDER prg
    progression order
    Definition: j2k.h:245
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    OPJ_UINT32 step_l
    layer step used to localize the packet in the include vector
    Definition: pi.h:81
    +
    opj_poc_t pocs[J2K_MAX_POCS]
    progression order changes
    Definition: j2k.h:256
    +
    static OPJ_BOOL opj_pi_next_cprl(opj_pi_iterator_t *pi)
    Get next packet in component-precinct-resolution-layer order.
    Definition: pi.c:603
    +
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    +
    OPJ_UINT32 precno0
    Definition: openjpeg.h:365
    +
    OPJ_UINT32 compno
    component that identify the packet
    Definition: pi.h:89
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    +
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    +
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    +
    static OPJ_BOOL opj_pi_next_pcrl(opj_pi_iterator_t *pi)
    Get next packet in precinct-component-resolution-layer order.
    Definition: pi.c:472
    +
    OPJ_UINT32 tyS
    Definition: openjpeg.h:379
    +
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    +
    OPJ_UINT32 include_size
    Number of elements in include array.
    Definition: pi.h:79
    +
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    opj_pi_comp_t * comps
    Components.
    Definition: pi.h:103
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    static OPJ_BOOL opj_pi_check_next_level(OPJ_INT32 pos, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, const OPJ_CHAR *prog)
    FIXME DOC.
    Definition: pi.c:1270
    +
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    +
    FIXME DOC.
    Definition: pi.h:63
    +
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    +
    OPJ_BOOL first
    0 if the first packet
    Definition: pi.h:97
    +
    OPJ_UINT32 x
    FIXME DOC.
    Definition: pi.h:107
    +
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno, J2K_T2_MODE t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    static void opj_get_all_encoding_parameters(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res, OPJ_UINT32 **p_resolutions)
    Gets the encoding parameters needed to update the coding parameters and all the pocs.
    Definition: pi.c:852
    +
    OPJ_UINT32 txE
    Definition: openjpeg.h:379
    +
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    +
    OPJ_UINT32 pdy
    Definition: pi.h:56
    +
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    +
    @ tcp
    Definition: query_parser.h:41
    +
    OPJ_UINT32 ty0
    Definition: pi.h:105
    +
    #define JPIP_PHIX
    Definition: indexbox_manager.h:51
    +
    OPJ_UINT32 layno0
    Layer num start,Precinct num start, Precinct num end.
    Definition: openjpeg.h:365
    +
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    static INLINE OPJ_UINT32 opj_uint_floordivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:216
    +
    Message handler object used for.
    Definition: event.h:50
    +
    OPJ_UINT32 dx
    Definition: pi.h:64
    +
    OPJ_UINT32 y
    Definition: pi.h:107
    +
    struct opj_pi_resolution opj_pi_resolution_t
    FIXME DOC.
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_UINT32 step_p
    precinct step used to localize the packet in the include vector
    Definition: pi.h:87
    +
    OPJ_UINT32 tx1
    Definition: pi.h:105
    +
    OPJ_UINT32 type
    Definition: jp2.h:200
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    static void opj_pi_update_decode_poc(opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
    FIXME DOC.
    Definition: pi.c:1186
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    +
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    +
    Coding parameters.
    Definition: j2k.h:347
    +
    OPJ_UINT32 dx
    FIXME DOC.
    Definition: pi.h:109
    +
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    +
    OPJ_UINT32 ty1
    Definition: pi.h:105
    +
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    +
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    +
    OPJ_UINT32 precno1
    Definition: openjpeg.h:365
    +
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    +
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    +
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    +
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    +
    static void opj_pi_emit_error(opj_pi_iterator_t *pi, const char *msg)
    Definition: pi.c:235
    +
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    +
    OPJ_UINT32 pdx
    Definition: pi.h:56
    +
    OPJ_UINT32 dy
    Definition: openjpeg.h:379
    +
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    +
    OPJ_UINT32 precno
    precinct that identify the packet
    Definition: pi.h:93
    + +
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    +
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    +
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
    Definition: openjpeg.h:373
    +
    char OPJ_CHAR
    Definition: openjpeg.h:114
    +
    OPJ_UINT32 dy
    Definition: pi.h:109
    +
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    +
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    +
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    +
    static OPJ_BOOL opj_pi_next_rpcl(opj_pi_iterator_t *pi)
    Get next packet in resolution-precinct-component-layer order.
    Definition: pi.c:340
    +
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    +
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    OPJ_BYTE tp_on
    Enabling Tile part generation.
    Definition: pi.h:75
    +
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    +
    opj_pi_resolution_t * resolutions
    Definition: pi.h:67
    +
    OPJ_UINT32 dy
    Definition: pi.h:64
    +
    static OPJ_BOOL opj_pi_next_lrcp(opj_pi_iterator_t *pi)
    Get next packet in layer-resolution-component-precinct order.
    Definition: pi.c:241
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    +
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    +
    OPJ_UINT32 prcS
    Definition: openjpeg.h:375
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    OPJ_UINT32 tx0
    FIXME DOC.
    Definition: pi.h:105
    +
    OPJ_UINT32 ph
    Definition: pi.h:57
    +
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    +
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    +
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    +
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    +
    static void opj_pi_update_encode_not_poc(opj_cp_t *p_cp, OPJ_UINT32 p_num_comps, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
    Updates the coding parameters if the encoding is not used with Progression order changes and final (a...
    Definition: pi.c:1131
    +
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
    Definition: openjpeg.h:373
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: pi.h:101
    +
    OPJ_UINT32 step_r
    resolution step used to localize the packet in the include vector
    Definition: pi.h:83
    +
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    +
    OPJ_UINT32 resno
    resolution that identify the packet
    Definition: pi.h:91
    +
    OPJ_UINT32 txS
    Start and end values of Tile width and height, initialised in pi_initialise_encode.
    Definition: openjpeg.h:379
    +
    Tile-component coding parameters.
    Definition: j2k.h:175
    +
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    +
    struct opj_pi_iterator opj_pi_iterator_t
    Packet iterator.
    +
    OPJ_UINT32 step_c
    component step used to localize the packet in the include vector
    Definition: pi.h:85
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    OPJ_UINT32 length
    Definition: jp2.h:199
    +
    OPJ_UINT32 pw
    Definition: pi.h:57
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    +
    OPJ_UINT32 tyE
    Definition: openjpeg.h:379
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:96
    +
    static void opj_get_encoding_parameters(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res)
    Gets the encoding parameters needed to update the coding parameters and all the pocs.
    Definition: pi.c:731
    +
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
    Start and end values for Tile width and height.
    Definition: openjpeg.h:373
    +
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    static void opj_pi_update_encode_poc_and_final(opj_cp_t *p_cp, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
    Updates the coding parameters if the encoding is used with Progression order changes and final (or ci...
    Definition: pi.c:1052
    +
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    OPJ_UINT32 numresolutions
    number of resolution levels
    Definition: pi.h:66
    +
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    +
    static OPJ_BOOL opj_pi_next_rlcp(opj_pi_iterator_t *pi)
    Get next packet in resolution-layer-component-precinct order.
    Definition: pi.c:294
    +
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    +
    OPJ_UINT32 resS
    Definition: openjpeg.h:375
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    +
    static opj_pi_iterator_t * opj_pi_create(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno)
    Allocates memory for a packet iterator.
    Definition: pi.c:988
    +
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    +
    static void opj_pi_update_decode_not_poc(opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
    FIXME DOC.
    Definition: pi.c:1233
    +
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    +
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    +
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    +
    Progression order changes.
    Definition: openjpeg.h:359
    +
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    +
    OPJ_UINT32 layS
    Start value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:375
    +
    OPJ_UINT32 dx
    Definition: openjpeg.h:379
    +
    opj_poc_t poc
    progression order change information
    Definition: pi.h:99
    +
    union opj_cp::@0 m_specific_param
    +
    OPJ_UINT32 layno
    layer that identify the packet
    Definition: pi.h:95
    +
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    + + + + diff --git a/build/doc/html/placeholder__manager_8c.html b/build/doc/html/placeholder__manager_8c.html new file mode 100644 index 000000000..9f94a3e86 --- /dev/null +++ b/build/doc/html/placeholder__manager_8c.html @@ -0,0 +1,360 @@ + + + + + + + +OpenJPEG: placeholder_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    placeholder_manager.c File Reference
    +
    +
    +
    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include "placeholder_manager.h"
    +#include "opj_inttypes.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    placeholderlist_param_tgene_placeholderlist (void)
     generate a placeholder list More...
     
    void delete_placeholderlist (placeholderlist_param_t **list)
     delete placeholder list More...
     
    placeholder_param_tgene_placeholder (box_param_t *box, Byte8_t origID)
     generate a placeholder of a box More...
     
    void delete_placeholder (placeholder_param_t **placeholder)
     delete a placeholder More...
     
    void insert_placeholder_into_list (placeholder_param_t *phld, placeholderlist_param_t *phldlist)
     
    void print_placeholder (placeholder_param_t *phld)
     print placeholder parameters More...
     
    void print_allplaceholder (placeholderlist_param_t *list)
     print all placeholder parameters More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_placeholder()

    + +
    +
    + + + + + + + + +
    void delete_placeholder (placeholder_param_t ** placeholder)
    +
    + +

    delete a placeholder

    +
    Parameters
    + + +
    [in,out]placeholderaddress of the placeholder pointer
    +
    +
    + +

    Referenced by delete_placeholderlist().

    + +
    +
    + +

    ◆ delete_placeholderlist()

    + +
    +
    + + + + + + + + +
    void delete_placeholderlist (placeholderlist_param_t ** list)
    +
    + +

    delete placeholder list

    +
    Parameters
    + + +
    [in,out]listaddress of the placeholder list pointer
    +
    +
    + +

    References delete_placeholder(), and placeholder_param::next.

    + +

    Referenced by delete_metadata().

    + +
    +
    + +

    ◆ gene_placeholder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    placeholder_param_t* gene_placeholder (box_param_tbox,
    Byte8_t origID 
    )
    +
    + +

    generate a placeholder of a box

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]origIDmetadata-bin ID of the bin containing the contents of the original box
    +
    +
    +
    Returns
    pointer to the generated placeholder
    + +

    References fetch_headbytes(), placeholder_param::Flags, box_param::headlen, placeholder_param::LBox, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    + +

    Referenced by const_metadatalist().

    + +
    +
    + +

    ◆ gene_placeholderlist()

    + +
    +
    + + + + + + + + +
    placeholderlist_param_t* gene_placeholderlist (void )
    +
    + +

    generate a placeholder list

    +
    Returns
    pointer to the generated placeholder list
    + +

    References placeholderlist_param::first, and placeholderlist_param::last.

    + +

    Referenced by const_metadatalist(), and parse_metadata().

    + +
    +
    + +

    ◆ insert_placeholder_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_placeholder_into_list (placeholder_param_tphld,
    placeholderlist_param_tphldlist 
    )
    +
    +
    + +

    ◆ print_allplaceholder()

    + +
    +
    + + + + + + + + +
    void print_allplaceholder (placeholderlist_param_tlist)
    +
    + +

    print all placeholder parameters

    +
    Parameters
    + + +
    [in]listplaceholder list pointer
    +
    +
    + +

    References placeholderlist_param::first, logstream, placeholder_param::next, and print_placeholder().

    + +

    Referenced by print_metadata().

    + +
    +
    + +

    ◆ print_placeholder()

    + +
    +
    + + + + + + + + +
    void print_placeholder (placeholder_param_tphld)
    +
    + +

    print placeholder parameters

    +
    Parameters
    + + +
    [in]phldplaceholder pointer
    +
    +
    + +

    References placeholder_param::Flags, placeholder_param::LBox, logstream, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    + +

    Referenced by print_allplaceholder(), and print_msgqueue().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/placeholder__manager_8h.html b/build/doc/html/placeholder__manager_8h.html new file mode 100644 index 000000000..fc0ba97d9 --- /dev/null +++ b/build/doc/html/placeholder__manager_8h.html @@ -0,0 +1,360 @@ + + + + + + + +OpenJPEG: placeholder_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    placeholder_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "box_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  placeholder_param
     A.3.6.3 Placeholder box format. More...
     
    struct  placeholderlist_param
     placeholder box list parameters More...
     
    + + + + + + + +

    +Typedefs

    typedef struct placeholder_param placeholder_param_t
     A.3.6.3 Placeholder box format. More...
     
    typedef struct placeholderlist_param placeholderlist_param_t
     placeholder box list parameters More...
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    placeholderlist_param_tgene_placeholderlist (void)
     generate a placeholder list More...
     
    void delete_placeholderlist (placeholderlist_param_t **list)
     delete placeholder list More...
     
    placeholder_param_tgene_placeholder (box_param_t *box, Byte8_t origID)
     generate a placeholder of a box More...
     
    void delete_placeholder (placeholder_param_t **placeholder)
     delete a placeholder More...
     
    void insert_placeholder_into_list (placeholder_param_t *phld, placeholderlist_param_t *phldlist)
     
    void print_placeholder (placeholder_param_t *phld)
     print placeholder parameters More...
     
    void print_allplaceholder (placeholderlist_param_t *list)
     print all placeholder parameters More...
     
    +

    Typedef Documentation

    + +

    ◆ placeholder_param_t

    + +
    +
    + + + + +
    typedef struct placeholder_param placeholder_param_t
    +
    + +

    A.3.6.3 Placeholder box format.

    +

    placeholder box parameters

    + +
    +
    + +

    ◆ placeholderlist_param_t

    + +
    +
    + +

    placeholder box list parameters

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_placeholder()

    + +
    +
    + + + + + + + + +
    void delete_placeholder (placeholder_param_t ** placeholder)
    +
    + +

    delete a placeholder

    +
    Parameters
    + + +
    [in,out]placeholderaddress of the placeholder pointer
    +
    +
    + +

    Referenced by delete_placeholderlist().

    + +
    +
    + +

    ◆ delete_placeholderlist()

    + +
    +
    + + + + + + + + +
    void delete_placeholderlist (placeholderlist_param_t ** list)
    +
    + +

    delete placeholder list

    +
    Parameters
    + + +
    [in,out]listaddress of the placeholder list pointer
    +
    +
    + +

    References delete_placeholder(), and placeholder_param::next.

    + +

    Referenced by delete_metadata().

    + +
    +
    + +

    ◆ gene_placeholder()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    placeholder_param_t* gene_placeholder (box_param_tbox,
    Byte8_t origID 
    )
    +
    + +

    generate a placeholder of a box

    +
    Parameters
    + + + +
    [in]boxbox pointer
    [in]origIDmetadata-bin ID of the bin containing the contents of the original box
    +
    +
    +
    Returns
    pointer to the generated placeholder
    + +

    References fetch_headbytes(), placeholder_param::Flags, box_param::headlen, placeholder_param::LBox, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    + +

    Referenced by const_metadatalist().

    + +
    +
    + +

    ◆ gene_placeholderlist()

    + +
    +
    + + + + + + + + +
    placeholderlist_param_t* gene_placeholderlist (void )
    +
    + +

    generate a placeholder list

    +
    Returns
    pointer to the generated placeholder list
    + +

    References placeholderlist_param::first, and placeholderlist_param::last.

    + +

    Referenced by const_metadatalist(), and parse_metadata().

    + +
    +
    + +

    ◆ insert_placeholder_into_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_placeholder_into_list (placeholder_param_tphld,
    placeholderlist_param_tphldlist 
    )
    +
    +
    + +

    ◆ print_allplaceholder()

    + +
    +
    + + + + + + + + +
    void print_allplaceholder (placeholderlist_param_tlist)
    +
    + +

    print all placeholder parameters

    +
    Parameters
    + + +
    [in]listplaceholder list pointer
    +
    +
    + +

    References placeholderlist_param::first, logstream, placeholder_param::next, and print_placeholder().

    + +

    Referenced by print_metadata().

    + +
    +
    + +

    ◆ print_placeholder()

    + +
    +
    + + + + + + + + +
    void print_placeholder (placeholder_param_tphld)
    +
    + +

    print placeholder parameters

    +
    Parameters
    + + +
    [in]phldplaceholder pointer
    +
    +
    + +

    References placeholder_param::Flags, placeholder_param::LBox, logstream, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    + +

    Referenced by print_allplaceholder(), and print_msgqueue().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/placeholder__manager_8h_source.html b/build/doc/html/placeholder__manager_8h_source.html new file mode 100644 index 000000000..c284c299a --- /dev/null +++ b/build/doc/html/placeholder__manager_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +OpenJPEG: placeholder_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    placeholder_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef PLACEHOLDER_MANAGER_H_
    +
    32 # define PLACEHOLDER_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "box_manager.h"
    +
    36 
    +
    39 typedef struct placeholder_param {
    + +
    41  char TBox[4];
    + + + + +
    46 #ifdef AAA
    +
    47  Byte8_t EquivID;
    +
    48  Byte_t *EquivBH;
    +
    49  Byte_t EquivBHlen;
    +
    50  Byte8_t CSID;
    +
    51  Byte4_t NCS;
    +
    52 #endif /*AAA*/
    + + +
    55 
    +
    56 
    +
    58 typedef struct placeholderlist_param {
    + + + +
    62 
    +
    63 
    + +
    70 
    +
    71 
    + +
    78 
    +
    79 
    + +
    88 
    +
    89 
    +
    95 void delete_placeholder(placeholder_param_t **placeholder);
    +
    96 
    + +
    98  placeholderlist_param_t *phldlist);
    +
    99 
    +
    100 
    + +
    107 
    +
    108 
    + +
    115 
    +
    116 #endif /* !PLACEHOLDER_MANAGER_H_ */
    +
    +
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    +
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    +
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    +
    void delete_placeholder(placeholder_param_t **placeholder)
    delete a placeholder
    Definition: placeholder_manager.c:96
    +
    Byte_t headlen
    header length 8 or 16
    Definition: box_manager.h:40
    +
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    +
    uint8_t Byte_t
    Definition: byte_manager.h:37
    +
    void delete_placeholder(placeholder_param_t **placeholder)
    delete a placeholder
    Definition: placeholder_manager.c:96
    +
    box parameters
    Definition: box_manager.h:37
    +
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    +
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    +
    #define logstream
    Definition: placeholder_manager.c:43
    +
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    +
    struct placeholderlist_param placeholderlist_param_t
    placeholder box list parameters
    +
    placeholder_param_t * last
    last placeholder pointer of the list
    Definition: placeholder_manager.h:60
    + +
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    +
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    +
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    +
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    +
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    +
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    +
    struct placeholder_param placeholder_param_t
    A.3.6.3 Placeholder box format.
    +
    char TBox[4]
    Definition: placeholder_manager.h:41
    +
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    +
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    +
    Byte4_t LBox
    Definition: placeholder_manager.h:40
    + +
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    +
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    +
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    + + +
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    +
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    +
    Byte4_t Flags
    Definition: placeholder_manager.h:42
    +
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    +
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    + + + + diff --git a/build/doc/html/ppix__manager_8c.html b/build/doc/html/ppix__manager_8c.html new file mode 100644 index 000000000..9b9fe12f8 --- /dev/null +++ b/build/doc/html/ppix__manager_8c.html @@ -0,0 +1,193 @@ + + + + + + + +OpenJPEG: ppix_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    ppix_manager.c File Reference
    +
    +
    + +

    Modification of jpip.c from 2KAN indexer. +More...

    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Functions

    int opj_write_ppix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.c from 2KAN indexer.

    +

    Function Documentation

    + +

    ◆ opj_write_ppix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_ppix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_ppixfaix()

    + + +
    + + + + diff --git a/build/doc/html/query__parser_8c.html b/build/doc/html/query__parser_8c.html new file mode 100644 index 000000000..33e67768c --- /dev/null +++ b/build/doc/html/query__parser_8c.html @@ -0,0 +1,465 @@ + + + + + + + +OpenJPEG: query_parser.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    query_parser.c File Reference
    +
    +
    +
    #include <strings.h>
    +#include <stdio.h>
    +#include <assert.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include "query_parser.h"
    +#include "opj_stdint.h"
    +
    + + + + + + + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    #define MAX_LENOFFIELDNAME   10
     maximum length of field name More...
     
    #define MAX_LENOFFIELDVAL   128
     maximum length of field value More...
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    query_param_tget_initquery (void)
     Get initialized query parameters. More...
     
    char * get_fieldparam (const char *stringptr, char *fieldname, char *fieldval)
     
    void parse_cclose (char *src, query_param_t *query_param)
     
    void parse_metareq (char *field, query_param_t *query_param)
     
    void parse_comps (char *field, query_param_t *query_param)
     
    query_param_tparse_query (const char *query_string)
     parse query More...
     
    void print_queryparam (query_param_t query_param)
     print query parameters More...
     
    void parse_req_box_prop (char *req_box_prop, int idx, query_param_t *query_param)
     
    void delete_query (query_param_t **query)
     delete query More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    + +

    ◆ MAX_LENOFFIELDNAME

    + +
    +
    + + + + +
    #define MAX_LENOFFIELDNAME   10
    +
    + +

    maximum length of field name

    + +
    +
    + +

    ◆ MAX_LENOFFIELDVAL

    + +
    +
    + + + + +
    #define MAX_LENOFFIELDVAL   128
    +
    + +

    maximum length of field value

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_query()

    + +
    +
    + + + + + + + + +
    void delete_query (query_param_t ** query)
    +
    + +

    delete query

    +
    Parameters
    + + +
    [in]queryaddress of the deleting query pointer
    +
    +
    + +

    References opj_free().

    + +
    +
    + +

    ◆ get_fieldparam()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    char * get_fieldparam (const char * stringptr,
    char * fieldname,
    char * fieldval 
    )
    +
    + +

    Referenced by parse_query().

    + +
    +
    + +

    ◆ get_initquery()

    + + + +

    ◆ parse_cclose()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void parse_cclose (char * src,
    query_param_tquery_param 
    )
    +
    + +

    References query_param::cclose, and query_param::numOfcclose.

    + +

    Referenced by parse_query().

    + +
    +
    + +

    ◆ parse_comps()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void parse_comps (char * field,
    query_param_tquery_param 
    )
    +
    + +

    References query_param::comps, query_param::lastcomp, opj_calloc(), and OPJ_TRUE.

    + +

    Referenced by parse_query().

    + +
    +
    + +

    ◆ parse_metareq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void parse_metareq (char * field,
    query_param_tquery_param 
    )
    +
    +
    + +

    ◆ parse_query()

    + + + +

    ◆ parse_req_box_prop()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void parse_req_box_prop (char * req_box_prop,
    int idx,
    query_param_tquery_param 
    )
    +
    +
    + +

    ◆ print_queryparam()

    + + +
    + + + + diff --git a/build/doc/html/query__parser_8h.html b/build/doc/html/query__parser_8h.html new file mode 100644 index 000000000..4cae22731 --- /dev/null +++ b/build/doc/html/query__parser_8h.html @@ -0,0 +1,316 @@ + + + + + + + +OpenJPEG: query_parser.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    query_parser.h File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  query_param
     Query parameters. More...
     
    + + + + +

    +Macros

    #define MAX_NUMOFBOX   10
     maximum number of meta request box More...
     
    + + + + + + + + + + +

    +Typedefs

    typedef enum cnew_transport cnew_transport_t
     cnew aux transport name More...
     
    typedef enum image_return image_return_t
     image return type More...
     
    typedef struct query_param query_param_t
     Query parameters. More...
     
    + + + + + + + +

    +Enumerations

    enum  cnew_transport { non, +http, +tcp, +udp + }
     cnew aux transport name More...
     
    enum  image_return { JPPstream, +JPTstream, +UNKNOWN = -1 + }
     image return type More...
     
    + + + + + + + + + + +

    +Functions

    query_param_tparse_query (const char *query_string)
     parse query More...
     
    void print_queryparam (query_param_t query_param)
     print query parameters More...
     
    void delete_query (query_param_t **query)
     delete query More...
     
    +

    Macro Definition Documentation

    + +

    ◆ MAX_NUMOFBOX

    + +
    +
    + + + + +
    #define MAX_NUMOFBOX   10
    +
    + +

    maximum number of meta request box

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ cnew_transport_t

    + +
    +
    + + + + +
    typedef enum cnew_transport cnew_transport_t
    +
    + +

    cnew aux transport name

    + +
    +
    + +

    ◆ image_return_t

    + +
    +
    + + + + +
    typedef enum image_return image_return_t
    +
    + +

    image return type

    + +
    +
    + +

    ◆ query_param_t

    + +
    +
    + + + + +
    typedef struct query_param query_param_t
    +
    + +

    Query parameters.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ cnew_transport

    + +
    +
    + + + + +
    enum cnew_transport
    +
    + +

    cnew aux transport name

    + + + + + +
    Enumerator
    non 
    http 
    tcp 
    udp 
    + +
    +
    + +

    ◆ image_return

    + +
    +
    + + + + +
    enum image_return
    +
    + +

    image return type

    + + + + +
    Enumerator
    JPPstream 
    JPTstream 
    UNKNOWN 
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_query()

    + +
    +
    + + + + + + + + +
    void delete_query (query_param_t ** query)
    +
    + +

    delete query

    +
    Parameters
    + + +
    [in]queryaddress of the deleting query pointer
    +
    +
    + +

    References opj_free().

    + +
    +
    + +

    ◆ parse_query()

    + + + +

    ◆ print_queryparam()

    + + +
    + + + + diff --git a/build/doc/html/query__parser_8h_source.html b/build/doc/html/query__parser_8h_source.html new file mode 100644 index 000000000..acef347c7 --- /dev/null +++ b/build/doc/html/query__parser_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +OpenJPEG: query_parser.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    query_parser.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef QUERY_PARSER_H_
    +
    33 # define QUERY_PARSER_H_
    +
    34 
    +
    35 #include "opj_includes.h"
    +
    36 
    +
    38 #define MAX_NUMOFBOX 10
    +
    39 
    + +
    42 
    + +
    45 
    +
    47 typedef struct query_param {
    +
    48  char *target;
    +
    49  char *tid;
    +
    50  int fx, fy;
    +
    51  int rx, ry, rw, rh;
    +
    52  int layers;
    +
    53  int lastcomp;
    + +
    55  char *cid;
    + +
    57  cnew;
    +
    58  char *cclose;
    + + + + + + + + +
    67  int root_bin;
    +
    68  int max_depth;
    + + +
    71  int len;
    + +
    73 
    +
    74 
    +
    81 query_param_t * parse_query(const char *query_string);
    +
    82 
    + +
    89 
    +
    90 
    +
    96 void delete_query(query_param_t **query);
    +
    97 
    +
    98 #endif /* !QUERY_PARSER_H_ */
    +
    +
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    int limit[MAX_NUMOFBOX]
    limit value, -1: skeleton request "r", 0: entire contents
    Definition: query_parser.h:61
    +
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    +
    int ry
    Definition: query_parser.h:51
    +
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    +
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    +
    OPJ_BOOL metadata_only
    metadata-only request
    Definition: query_parser.h:69
    +
    int root_bin
    root-bin
    Definition: query_parser.h:67
    +
    #define MAX_LENOFFIELDVAL
    maximum length of field value
    Definition: query_parser.c:86
    +
    enum image_return image_return_t
    image return type
    +
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    +
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    +
    int max_depth
    max-depth
    Definition: query_parser.h:68
    +
    int len
    maximum response length
    Definition: query_parser.h:71
    +
    void parse_cclose(char *src, query_param_t *query_param)
    Definition: query_parser.c:301
    + +
    int fy
    frame size (fx,fy)
    Definition: query_parser.h:50
    +
    #define MAX_LENOFFIELDNAME
    maximum length of field name
    Definition: query_parser.c:83
    +
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    +
    @ tcp
    Definition: query_parser.h:41
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    +
    Message handler object used for.
    Definition: event.h:50
    +
    image_return_t return_type
    image return type
    Definition: query_parser.h:70
    +
    char * cclose
    list of closing channel identifiers, separated by '\0'
    Definition: query_parser.h:58
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    OPJ_UINT32 type
    Definition: jp2.h:200
    +
    #define logstream
    Definition: query_parser.c:54
    +
    int lastcomp
    last component number
    Definition: query_parser.h:53
    +
    struct query_param query_param_t
    Query parameters.
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    +
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    +
    @ http
    Definition: query_parser.h:41
    +
    int rw
    Definition: query_parser.h:51
    +
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    +
    int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:104
    +
    query_param_t * get_initquery(void)
    Get initialized query parameters.
    Definition: query_parser.c:170
    +
    OPJ_BOOL * comps
    components (dynamic array) for jpp-stream, null means all components
    Definition: query_parser.h:54
    +
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    +
    int rh
    roi region
    Definition: query_parser.h:51
    +
    char * target
    target name
    Definition: query_parser.h:48
    +
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    +
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    +
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    +
    #define MAX_NUMOFBOX
    maximum number of meta request box
    Definition: query_parser.h:38
    +
    char box_type[MAX_NUMOFBOX][4]
    interested box-types
    Definition: query_parser.h:60
    +
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    @ non
    Definition: query_parser.h:41
    +
    int layers
    quality layers
    Definition: query_parser.h:52
    +
    @ UNKNOWN
    Definition: query_parser.h:44
    +
    char * cid
    channel identifier
    Definition: query_parser.h:55
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    @ udp
    Definition: query_parser.h:41
    +
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void parse_comps(char *field, query_param_t *query_param)
    Definition: query_parser.c:412
    +
    image_return
    image return type
    Definition: query_parser.h:44
    +
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    +
    cnew_transport
    cnew aux transport name
    Definition: query_parser.h:41
    +
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    +
    #define JPIP_PPIX
    Definition: indexbox_manager.h:50
    +
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    +
    void parse_metareq(char *field, query_param_t *query_param)
    Definition: query_parser.c:321
    +
    OPJ_BOOL a[MAX_NUMOFBOX]
    Definition: query_parser.h:65
    +
    OPJ_BOOL w[MAX_NUMOFBOX]
    Metadata request qualifier flags.
    Definition: query_parser.h:62
    +
    char * tid
    target identifier
    Definition: query_parser.h:49
    +
    OPJ_UINT32 length
    Definition: jp2.h:199
    +
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    void parse_req_box_prop(char *req_box_prop, int idx, query_param_t *query_param)
    Definition: query_parser.c:362
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    int numOfcclose
    number of closing channels
    Definition: query_parser.h:59
    +
    Query parameters.
    Definition: query_parser.h:47
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_BOOL s[MAX_NUMOFBOX]
    Definition: query_parser.h:63
    +
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    +
    OPJ_BOOL g[MAX_NUMOFBOX]
    Definition: query_parser.h:64
    +
    @ JPPstream
    Definition: query_parser.h:44
    +
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    +
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    @ JPTstream
    Definition: query_parser.h:44
    +
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    +
    int rx
    Definition: query_parser.h:51
    +
    OPJ_BOOL priority[MAX_NUMOFBOX]
    priority flag
    Definition: query_parser.h:66
    +
    int fx
    Definition: query_parser.h:50
    + +
    char * get_fieldparam(const char *stringptr, char *fieldname, char *fieldval)
    Definition: query_parser.c:211
    +
    enum cnew_transport cnew_transport_t
    cnew aux transport name
    +
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    + + + + diff --git a/build/doc/html/session__manager_8c.html b/build/doc/html/session__manager_8c.html new file mode 100644 index 000000000..e051dc39b --- /dev/null +++ b/build/doc/html/session__manager_8c.html @@ -0,0 +1,391 @@ + + + + + + + +OpenJPEG: session_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    session_manager.c File Reference
    +
    +
    +
    #include <stdlib.h>
    +#include <string.h>
    +#include <stdio.h>
    +#include "session_manager.h"
    +#include "target_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    sessionlist_param_tgene_sessionlist (void)
     generate a session list More...
     
    session_param_tgene_session (sessionlist_param_t *sessionlist)
     generate a session under the sesion list More...
     
    OPJ_BOOL search_session_and_channel (char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
     search a channel and its belonging session by channel ID More...
     
    void insert_cachemodel_into_session (session_param_t *session, cachemodel_param_t *cachemodel)
     insert a cache model into a session More...
     
    OPJ_BOOL delete_session (session_param_t **session, sessionlist_param_t *sessionlist)
     delete a session More...
     
    void delete_sessionlist (sessionlist_param_t **sessionlist)
     delete session list More...
     
    void print_allsession (sessionlist_param_t *sessionlist)
     print all sessions More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_session()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL delete_session (session_param_t ** session,
    sessionlist_param_tsessionlist 
    )
    +
    + +

    delete a session

    +
    Parameters
    + + + +
    [in]sessionaddress of the session pointer
    [in]sessionlistsession list pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References delete_cachemodellist(), delete_channellist(), sessionlist_param::first, sessionlist_param::last, logstream, session_param::next, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ delete_sessionlist()

    + +
    +
    + + + + + + + + +
    void delete_sessionlist (sessionlist_param_t ** sessionlist)
    +
    + +

    delete session list

    +
    Parameters
    + + +
    [in,out]sessionlistaddress of the session list pointer
    +
    +
    + +

    References session_param::cachemodellist, session_param::channellist, delete_cachemodellist(), delete_channellist(), logstream, session_param::next, and opj_free().

    + +
    +
    + +

    ◆ gene_session()

    + +
    +
    + + + + + + + + +
    session_param_t* gene_session (sessionlist_param_tsessionlist)
    +
    + +

    generate a session under the sesion list

    +
    Parameters
    + + +
    [in]sessionlistsession list to insert the new session
    +
    +
    +
    Returns
    pointer to the generated session
    + +

    References session_param::cachemodellist, session_param::channellist, sessionlist_param::first, gene_cachemodellist(), gene_channellist(), sessionlist_param::last, session_param::next, and opj_malloc().

    + +

    Referenced by open_channel().

    + +
    +
    + +

    ◆ gene_sessionlist()

    + +
    +
    + + + + + + + + +
    sessionlist_param_t* gene_sessionlist (void )
    +
    + +

    generate a session list

    +
    Returns
    pointer to the generated session list
    + +

    References sessionlist_param::first, sessionlist_param::last, and opj_malloc().

    + +
    +
    + +

    ◆ insert_cachemodel_into_session()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_cachemodel_into_session (session_param_tsession,
    cachemodel_param_tcachemodel 
    )
    +
    + +

    insert a cache model into a session

    +
    Parameters
    + + + +
    [in]sessionsession pointer
    [in]cachemodelcachemodel pointer
    +
    +
    + +

    References session_param::cachemodellist, cachemodellist_param::first, cachemodellist_param::last, logstream, and cachemodel_param::next.

    + +
    +
    + +

    ◆ print_allsession()

    + +
    +
    + + + + + + + + +
    void print_allsession (sessionlist_param_tsessionlist)
    +
    +
    + +

    ◆ search_session_and_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL search_session_and_channel (char cid[],
    sessionlist_param_tsessionlist,
    session_param_t ** foundsession,
    channel_param_t ** foundchannel 
    )
    +
    + +

    search a channel and its belonging session by channel ID

    +
    Parameters
    + + + + + +
    [in]cidchannel identifier
    [in]sessionlistsession list pointer
    [in,out]foundsessionaddress of the found session pointer
    [in,out]foundchanneladdress of the found channel pointer
    +
    +
    +
    Returns
    if the channel is found (true) or not (false)
    + +

    References FCGI_stdout, sessionlist_param::first, session_param::next, channel_param::next, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by associate_channel(), and close_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/session__manager_8h.html b/build/doc/html/session__manager_8h.html new file mode 100644 index 000000000..d111f135a --- /dev/null +++ b/build/doc/html/session__manager_8h.html @@ -0,0 +1,390 @@ + + + + + + + +OpenJPEG: session_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    session_manager.h File Reference
    +
    +
    +
    #include "channel_manager.h"
    +#include "cachemodel_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  session_param
     Session parameters. More...
     
    struct  sessionlist_param
     Session list parameters. More...
     
    + + + + + + + +

    +Typedefs

    typedef struct session_param session_param_t
     Session parameters. More...
     
    typedef struct sessionlist_param sessionlist_param_t
     Session list parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    sessionlist_param_tgene_sessionlist (void)
     generate a session list More...
     
    session_param_tgene_session (sessionlist_param_t *sessionlist)
     generate a session under the sesion list More...
     
    OPJ_BOOL search_session_and_channel (char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
     search a channel and its belonging session by channel ID More...
     
    void insert_cachemodel_into_session (session_param_t *session, cachemodel_param_t *cachemodel)
     insert a cache model into a session More...
     
    OPJ_BOOL delete_session (session_param_t **session, sessionlist_param_t *sessionlist)
     delete a session More...
     
    void delete_sessionlist (sessionlist_param_t **sessionlist)
     delete session list More...
     
    void print_allsession (sessionlist_param_t *sessionlist)
     print all sessions More...
     
    +

    Typedef Documentation

    + +

    ◆ session_param_t

    + +
    +
    + + + + +
    typedef struct session_param session_param_t
    +
    + +

    Session parameters.

    + +
    +
    + +

    ◆ sessionlist_param_t

    + +
    +
    + + + + +
    typedef struct sessionlist_param sessionlist_param_t
    +
    + +

    Session list parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_session()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL delete_session (session_param_t ** session,
    sessionlist_param_tsessionlist 
    )
    +
    + +

    delete a session

    +
    Parameters
    + + + +
    [in]sessionaddress of the session pointer
    [in]sessionlistsession list pointer
    +
    +
    +
    Returns
    if succeeded (true) or failed (false)
    + +

    References delete_cachemodellist(), delete_channellist(), sessionlist_param::first, sessionlist_param::last, logstream, session_param::next, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    + +

    Referenced by close_channel().

    + +
    +
    + +

    ◆ delete_sessionlist()

    + +
    +
    + + + + + + + + +
    void delete_sessionlist (sessionlist_param_t ** sessionlist)
    +
    + +

    delete session list

    +
    Parameters
    + + +
    [in,out]sessionlistaddress of the session list pointer
    +
    +
    + +

    References session_param::cachemodellist, session_param::channellist, delete_cachemodellist(), delete_channellist(), logstream, session_param::next, and opj_free().

    + +
    +
    + +

    ◆ gene_session()

    + +
    +
    + + + + + + + + +
    session_param_t* gene_session (sessionlist_param_tsessionlist)
    +
    + +

    generate a session under the sesion list

    +
    Parameters
    + + +
    [in]sessionlistsession list to insert the new session
    +
    +
    +
    Returns
    pointer to the generated session
    + +

    References session_param::cachemodellist, session_param::channellist, sessionlist_param::first, gene_cachemodellist(), gene_channellist(), sessionlist_param::last, session_param::next, and opj_malloc().

    + +

    Referenced by open_channel().

    + +
    +
    + +

    ◆ gene_sessionlist()

    + +
    +
    + + + + + + + + +
    sessionlist_param_t* gene_sessionlist (void )
    +
    + +

    generate a session list

    +
    Returns
    pointer to the generated session list
    + +

    References sessionlist_param::first, sessionlist_param::last, and opj_malloc().

    + +
    +
    + +

    ◆ insert_cachemodel_into_session()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void insert_cachemodel_into_session (session_param_tsession,
    cachemodel_param_tcachemodel 
    )
    +
    + +

    insert a cache model into a session

    +
    Parameters
    + + + +
    [in]sessionsession pointer
    [in]cachemodelcachemodel pointer
    +
    +
    + +

    References session_param::cachemodellist, cachemodellist_param::first, cachemodellist_param::last, logstream, and cachemodel_param::next.

    + +
    +
    + +

    ◆ print_allsession()

    + +
    +
    + + + + + + + + +
    void print_allsession (sessionlist_param_tsessionlist)
    +
    +
    + +

    ◆ search_session_and_channel()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL search_session_and_channel (char cid[],
    sessionlist_param_tsessionlist,
    session_param_t ** foundsession,
    channel_param_t ** foundchannel 
    )
    +
    + +

    search a channel and its belonging session by channel ID

    +
    Parameters
    + + + + + +
    [in]cidchannel identifier
    [in]sessionlistsession list pointer
    [in,out]foundsessionaddress of the found session pointer
    [in,out]foundchanneladdress of the found channel pointer
    +
    +
    +
    Returns
    if the channel is found (true) or not (false)
    + +

    References FCGI_stdout, sessionlist_param::first, session_param::next, channel_param::next, OPJ_FALSE, and OPJ_TRUE.

    + +

    Referenced by associate_channel(), and close_channel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/session__manager_8h_source.html b/build/doc/html/session__manager_8h_source.html new file mode 100644 index 000000000..845a5b7a3 --- /dev/null +++ b/build/doc/html/session__manager_8h_source.html @@ -0,0 +1,179 @@ + + + + + + + +OpenJPEG: session_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    session_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef SESSION_MANAGER_H_
    +
    32 # define SESSION_MANAGER_H_
    +
    33 
    +
    34 #include "channel_manager.h"
    +
    35 #include "cachemodel_manager.h"
    +
    36 
    +
    38 typedef struct session_param {
    + + +
    41  struct session_param *next;
    + +
    43 
    +
    45 typedef struct sessionlist_param {
    + + + +
    49 
    +
    50 
    + +
    57 
    +
    58 
    + +
    66 
    + +
    77  sessionlist_param_t *sessionlist,
    +
    78  session_param_t **foundsession,
    +
    79  channel_param_t **foundchannel);
    +
    80 
    + +
    88  cachemodel_param_t *cachemodel);
    +
    89 
    +
    90 
    + +
    99  sessionlist_param_t *sessionlist);
    +
    100 
    +
    101 
    +
    107 void delete_sessionlist(sessionlist_param_t **sessionlist);
    +
    108 
    +
    114 void print_allsession(sessionlist_param_t *sessionlist);
    +
    115 
    +
    116 
    +
    117 #endif /* !SESSION_MANAGER_H_ */
    +
    +
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    +
    void insert_cachemodel_into_session(session_param_t *session, cachemodel_param_t *cachemodel)
    insert a cache model into a session
    Definition: session_manager.c:108
    +
    Session parameters.
    Definition: session_manager.h:38
    +
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    +
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    +
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    + +
    Session list parameters.
    Definition: session_manager.h:45
    +
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    + +
    void insert_cachemodel_into_session(session_param_t *session, cachemodel_param_t *cachemodel)
    insert a cache model into a session
    Definition: session_manager.c:108
    +
    #define FCGI_stdout
    Definition: session_manager.c:41
    +
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    +
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    +
    channellist_param_t * channellist
    channel list pointer
    Definition: session_manager.h:39
    +
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    + +
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    +
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    +
    session_param_t * last
    last session pointer of the list
    Definition: session_manager.h:47
    +
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    +
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    +
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    +
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    +
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    struct session_param session_param_t
    Session parameters.
    +
    struct channel_param * next
    pointer to the next channel
    Definition: channel_manager.h:49
    +
    Cache model list parameters.
    Definition: cachemodel_manager.h:48
    +
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    +
    session_param_t * first
    first session pointer of the list
    Definition: session_manager.h:46
    +
    struct cachemodel_param * next
    pointer to the next cache model
    Definition: cachemodel_manager.h:44
    +
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    +
    Channel list parameters.
    Definition: channel_manager.h:54
    +
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    +
    #define logstream
    Definition: session_manager.c:43
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    cachemodel_param_t * first
    first cache model pointer of the list
    Definition: cachemodel_manager.h:49
    + +
    cachemodel_param_t * last
    last cache model pointer of the list
    Definition: cachemodel_manager.h:50
    +
    struct session_param * next
    pointer to the next session
    Definition: session_manager.h:41
    +
    Channel parameters.
    Definition: channel_manager.h:43
    +
    struct sessionlist_param sessionlist_param_t
    Session list parameters.
    +
    cachemodellist_param_t * cachemodellist
    cache list pointer
    Definition: session_manager.h:40
    + + + + diff --git a/build/doc/html/sock__manager_8c.html b/build/doc/html/sock__manager_8c.html new file mode 100644 index 000000000..e354fbbc2 --- /dev/null +++ b/build/doc/html/sock__manager_8c.html @@ -0,0 +1,403 @@ + + + + + + + +OpenJPEG: sock_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    sock_manager.c File Reference
    +
    +
    +
    #include <sys/types.h>
    +#include <sys/socket.h>
    +#include <arpa/inet.h>
    +#include <unistd.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +#include "sock_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    SOCKET open_listeningsocket (uint16_t port)
     open listening socket More...
     
    SOCKET accept_socket (SOCKET listening_socket)
     accept a new connection to the listenning socket More...
     
    void send_stream (SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
     send data stream to client More...
     
    void * receive_stream (SOCKET connected_socket, OPJ_SIZE_T length)
     receive data stream to client More...
     
    OPJ_SIZE_T receive_line (SOCKET connected_socket, char *p)
     receive a string line (ending with '
    +') from client More...
     
    char * receive_string (SOCKET connected_socket)
     receive a string line (ending with '
    +') from client, return malloc string More...
     
    int close_socket (SOCKET sock)
     close socket More...
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ accept_socket()

    + +
    +
    + + + + + + + + +
    SOCKET accept_socket (SOCKET listening_socket)
    +
    + +

    accept a new connection to the listenning socket

    +
    Parameters
    + + +
    listening_socketlistenning socket
    +
    +
    +
    Returns
    connected socket (-1 if error occurs)
    + +

    Referenced by accept_connection(), and aux_streaming().

    + +
    +
    + +

    ◆ close_socket()

    + +
    +
    + + + + + + + + +
    int close_socket (SOCKET sock)
    +
    + +

    close socket

    +
    Parameters
    + + +
    [in]sockclosing socket
    +
    +
    +
    Returns
    0 if succeed, -1 if failed
    + +

    Referenced by aux_streaming(), close_aux_transport(), handle_clientreq(), open_listeningsocket(), and terminate_dec_server().

    + +
    +
    + +

    ◆ open_listeningsocket()

    + +
    +
    + + + + + + + + +
    SOCKET open_listeningsocket (uint16_t port)
    +
    + +

    open listening socket

    +
    Parameters
    + + +
    portopening port number
    +
    +
    +
    Returns
    new socket
    + +

    References close_socket(), and FCGI_stderr.

    + +

    Referenced by init_aux_transport(), and init_dec_server().

    + +
    +
    + +

    ◆ receive_line()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T receive_line (SOCKET connected_socket,
    char * buf 
    )
    +
    + +

    receive a string line (ending with '
    +') from client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [out]bufstring to be stored
    +
    +
    +
    Returns
    red size
    + +

    References FCGI_stderr.

    + +

    Referenced by handle_PNMreqMSG(), identify_clientmsg(), receive_JPIPstream(), and receive_string().

    + +
    +
    + +

    ◆ receive_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* receive_stream (SOCKET connected_socket,
    OPJ_SIZE_T length 
    )
    +
    + +

    receive data stream to client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]lengthlength of the receiving stream
    +
    +
    +
    Returns
    pointer to the data stream (memory allocated), NULL if failed
    + +

    References FCGI_stderr.

    + +

    Referenced by receive_JPIPstream(), and recv_ack().

    + +
    +
    + +

    ◆ receive_string()

    + +
    +
    + + + + + + + + +
    char* receive_string (SOCKET connected_socket)
    +
    + +

    receive a string line (ending with '
    +') from client, return malloc string

    +
    Parameters
    + + +
    [in]connected_socketfile descriptor of the connected socket
    +
    +
    +
    Returns
    pointer to the string (memory allocated)
    + +

    References BUF_LEN, and receive_line().

    + +

    Referenced by handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), and identify_cid().

    + +
    +
    + +

    ◆ send_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_stream (SOCKET connected_socket,
    const void * stream,
    OPJ_SIZE_T length 
    )
    +
    + +

    send data stream to client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]streamdata stream
    [in]lengthlength of data stream
    +
    +
    + +

    References FCGI_stderr.

    + +

    Referenced by aux_streaming(), response_signal(), send_IDstream(), send_PNMstream(), send_SIZstream(), and send_XMLstream().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/sock__manager_8h.html b/build/doc/html/sock__manager_8h.html new file mode 100644 index 000000000..66afe294d --- /dev/null +++ b/build/doc/html/sock__manager_8h.html @@ -0,0 +1,388 @@ + + + + + + + +OpenJPEG: sock_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    sock_manager.h File Reference
    +
    +
    +
    #include "byte_manager.h"
    +#include "opj_stdint.h"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Macros

    #define BUF_LEN   256
     
    + + + +

    +Typedefs

    typedef int SOCKET
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    SOCKET open_listeningsocket (uint16_t port)
     open listening socket More...
     
    SOCKET accept_socket (SOCKET listening_socket)
     accept a new connection to the listenning socket More...
     
    OPJ_SIZE_T receive_line (SOCKET connected_socket, char *buf)
     receive a string line (ending with '
    +') from client More...
     
    char * receive_string (SOCKET connected_socket)
     receive a string line (ending with '
    +') from client, return malloc string More...
     
    void * receive_stream (SOCKET connected_socket, OPJ_SIZE_T length)
     receive data stream to client More...
     
    void send_stream (SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
     send data stream to client More...
     
    int close_socket (SOCKET sock)
     close socket More...
     
    +

    Macro Definition Documentation

    + +

    ◆ BUF_LEN

    + +
    +
    + + + + +
    #define BUF_LEN   256
    +
    + +
    +
    +

    Typedef Documentation

    + +

    ◆ SOCKET

    + +
    +
    + + + + +
    typedef int SOCKET
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ accept_socket()

    + +
    +
    + + + + + + + + +
    SOCKET accept_socket (SOCKET listening_socket)
    +
    + +

    accept a new connection to the listenning socket

    +
    Parameters
    + + +
    listening_socketlistenning socket
    +
    +
    +
    Returns
    connected socket (-1 if error occurs)
    + +

    Referenced by accept_connection(), and aux_streaming().

    + +
    +
    + +

    ◆ close_socket()

    + +
    +
    + + + + + + + + +
    int close_socket (SOCKET sock)
    +
    + +

    close socket

    +
    Parameters
    + + +
    [in]sockclosing socket
    +
    +
    +
    Returns
    0 if succeed, -1 if failed
    + +

    Referenced by aux_streaming(), close_aux_transport(), handle_clientreq(), open_listeningsocket(), and terminate_dec_server().

    + +
    +
    + +

    ◆ open_listeningsocket()

    + +
    +
    + + + + + + + + +
    SOCKET open_listeningsocket (uint16_t port)
    +
    + +

    open listening socket

    +
    Parameters
    + + +
    portopening port number
    +
    +
    +
    Returns
    new socket
    + +

    References close_socket(), and FCGI_stderr.

    + +

    Referenced by init_aux_transport(), and init_dec_server().

    + +
    +
    + +

    ◆ receive_line()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    OPJ_SIZE_T receive_line (SOCKET connected_socket,
    char * buf 
    )
    +
    + +

    receive a string line (ending with '
    +') from client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [out]bufstring to be stored
    +
    +
    +
    Returns
    red size
    + +

    References FCGI_stderr.

    + +

    Referenced by handle_PNMreqMSG(), identify_clientmsg(), receive_JPIPstream(), and receive_string().

    + +
    +
    + +

    ◆ receive_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* receive_stream (SOCKET connected_socket,
    OPJ_SIZE_T length 
    )
    +
    + +

    receive data stream to client

    +
    Parameters
    + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]lengthlength of the receiving stream
    +
    +
    +
    Returns
    pointer to the data stream (memory allocated), NULL if failed
    + +

    References FCGI_stderr.

    + +

    Referenced by receive_JPIPstream(), and recv_ack().

    + +
    +
    + +

    ◆ receive_string()

    + +
    +
    + + + + + + + + +
    char* receive_string (SOCKET connected_socket)
    +
    + +

    receive a string line (ending with '
    +') from client, return malloc string

    +
    Parameters
    + + +
    [in]connected_socketfile descriptor of the connected socket
    +
    +
    +
    Returns
    pointer to the string (memory allocated)
    + +

    References BUF_LEN, and receive_line().

    + +

    Referenced by handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), and identify_cid().

    + +
    +
    + +

    ◆ send_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void send_stream (SOCKET connected_socket,
    const void * stream,
    OPJ_SIZE_T length 
    )
    +
    + +

    send data stream to client

    +
    Parameters
    + + + + +
    [in]connected_socketfile descriptor of the connected socket
    [in]streamdata stream
    [in]lengthlength of data stream
    +
    +
    + +

    References FCGI_stderr.

    + +

    Referenced by aux_streaming(), response_signal(), send_IDstream(), send_PNMstream(), send_SIZstream(), and send_XMLstream().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/sock__manager_8h_source.html b/build/doc/html/sock__manager_8h_source.html new file mode 100644 index 000000000..0c6fc451d --- /dev/null +++ b/build/doc/html/sock__manager_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +OpenJPEG: sock_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    sock_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef SOCK_MANAGER_H_
    +
    32 # define SOCK_MANAGER_H_
    +
    33 
    +
    34 #include "byte_manager.h"
    +
    35 #include "opj_stdint.h"
    +
    36 
    +
    37 #ifdef _WIN32
    +
    38 #include <winsock.h>
    +
    39 #else
    +
    40 typedef int SOCKET;
    +
    41 #endif /*_WIN32*/
    +
    42 
    +
    43 #define BUF_LEN 256
    +
    44 
    +
    51 SOCKET open_listeningsocket(uint16_t port);
    +
    52 
    +
    59 SOCKET accept_socket(SOCKET listening_socket);
    +
    60 
    +
    61 
    +
    69 OPJ_SIZE_T receive_line(SOCKET connected_socket, char *buf);
    +
    70 
    +
    77 char * receive_string(SOCKET connected_socket);
    +
    78 
    +
    86 void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length);
    +
    87 
    +
    95 void send_stream(SOCKET connected_socket, const void *stream,
    +
    96  OPJ_SIZE_T length);
    +
    97 
    +
    104 int close_socket(SOCKET sock);
    +
    105 
    +
    106 #endif /* !SOCK_MANAGER_H_ */
    +
    +
    #define FCGI_stderr
    Definition: sock_manager.c:53
    +
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    +
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    +
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    + +
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    +
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    +
    int SOCKET
    Definition: sock_manager.h:40
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    +
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    +
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    +
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    +
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    +
    #define BUF_LEN
    Definition: sock_manager.h:43
    +
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *buf)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    +
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    +
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    + +
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    + + + + + diff --git a/build/doc/html/sparse__array_8c.html b/build/doc/html/sparse__array_8c.html new file mode 100644 index 000000000..0c0dbbf07 --- /dev/null +++ b/build/doc/html/sparse__array_8c.html @@ -0,0 +1,510 @@ + + + + + + + +OpenJPEG: sparse_array.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    sparse_array.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + +

    +Data Structures

    struct  opj_sparse_array_int32
     
    + + + + + + + + + + + + + + + + + + +

    +Functions

    opj_sparse_array_int32_topj_sparse_array_int32_create (OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
     Creates a new sparse array. More...
     
    void opj_sparse_array_int32_free (opj_sparse_array_int32_t *sa)
     Frees a sparse array. More...
     
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether region bounds are valid (non empty and within array bounds) More...
     
    static OPJ_BOOL opj_sparse_array_int32_read_or_write (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *buf, OPJ_UINT32 buf_col_stride, OPJ_UINT32 buf_line_stride, OPJ_BOOL forgiving, OPJ_BOOL is_read_op)
     
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
     Read the content of a rectangular region of the sparse array into a user buffer. More...
     
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
     Write the content of a rectangular region into the sparse array from a user buffer. More...
     
    +

    Function Documentation

    + +

    ◆ opj_sparse_array_int32_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_sparse_array_int32_t* opj_sparse_array_int32_create (OPJ_UINT32 width,
    OPJ_UINT32 height,
    OPJ_UINT32 block_width,
    OPJ_UINT32 block_height 
    )
    +
    + +

    Creates a new sparse array.

    +
    Parameters
    + + + + + +
    widthtotal width of the array.
    heighttotal height of the array
    block_widthwidth of a block.
    block_heightheight of a block.
    +
    +
    +
    Returns
    a new sparse array instance, or NULL in case of failure.
    + +

    References opj_sparse_array_int32::block_count_hor, opj_sparse_array_int32::block_count_ver, opj_sparse_array_int32::block_height, opj_sparse_array_int32::block_width, opj_sparse_array_int32::data_blocks, opj_sparse_array_int32::height, opj_calloc(), opj_free(), opj_uint_ceildiv(), and opj_sparse_array_int32::width.

    + +

    Referenced by main(), and opj_dwt_init_sparse_array().

    + +
    +
    + +

    ◆ opj_sparse_array_int32_free()

    + +
    +
    + + + + + + + + +
    void opj_sparse_array_int32_free (opj_sparse_array_int32_tsa)
    +
    +
    + +

    ◆ opj_sparse_array_int32_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32dest,
    OPJ_UINT32 dest_col_stride,
    OPJ_UINT32 dest_line_stride,
    OPJ_BOOL forgiving 
    )
    +
    + +

    Read the content of a rectangular region of the sparse array into a user buffer.

    +

    Regions not written with opj_sparse_array_int32_write() are read as 0.

    +
    Parameters
    + + + + + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region to read in the sparse array.
    y0top x coordinate of the region to read in the sparse array.
    x1right x coordinate (not included) of the region to read in the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to read in the sparse array. Must be greater than y0.
    destuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * dest_line_stride + (x1 - x0 - 1) * dest_col_stride + 1) bytes large.
    dest_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    dest_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_sparse_array_int32_read_or_write(), and OPJ_TRUE.

    + +

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), opj_dwt_interleave_partial_h(), opj_dwt_interleave_partial_v(), opj_v4dwt_interleave_partial_h(), and opj_v4dwt_interleave_partial_v().

    + +
    +
    + +

    ◆ opj_sparse_array_int32_read_or_write()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_sparse_array_int32_read_or_write (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32buf,
    OPJ_UINT32 buf_col_stride,
    OPJ_UINT32 buf_line_stride,
    OPJ_BOOL forgiving,
    OPJ_BOOL is_read_op 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_sparse_array_int32_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    const OPJ_INT32src,
    OPJ_UINT32 src_col_stride,
    OPJ_UINT32 src_line_stride,
    OPJ_BOOL forgiving 
    )
    +
    + +

    Write the content of a rectangular region into the sparse array from a user buffer.

    +

    Blocks intersecting the region are allocated, if not already done.

    +
    Parameters
    + + + + + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region to write into the sparse array.
    y0top x coordinate of the region to write into the sparse array.
    x1right x coordinate (not included) of the region to write into the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to write into the sparse array. Must be greater than y0.
    srcuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * src_line_stride + (x1 - x0 - 1) * src_col_stride + 1) bytes large.
    src_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    src_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References OPJ_FALSE, and opj_sparse_array_int32_read_or_write().

    + +

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_init_sparse_array().

    + +
    +
    + +

    ◆ opj_sparse_array_is_region_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    +
    + +

    Returns whether region bounds are valid (non empty and within array bounds)

    +
    Parameters
    + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region.
    y0top x coordinate of the region.
    x1right x coordinate (not included) of the region. Must be greater than x0.
    y1bottom y coordinate (not included) of the region. Must be greater than y0.
    +
    +
    +
    Returns
    OPJ_TRUE or OPJ_FALSE.
    + +

    References opj_sparse_array_int32::height, and opj_sparse_array_int32::width.

    + +

    Referenced by opj_sparse_array_int32_read_or_write().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/sparse__array_8h.html b/build/doc/html/sparse__array_8h.html new file mode 100644 index 000000000..c3042f606 --- /dev/null +++ b/build/doc/html/sparse__array_8h.html @@ -0,0 +1,446 @@ + + + + + + + +OpenJPEG: sparse_array.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    sparse_array.h File Reference
    +
    +
    + +

    Sparse array management. +More...

    +
    #include "opj_includes.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Typedefs

    typedef struct opj_sparse_array_int32 opj_sparse_array_int32_t
     Opaque type for sparse arrays that contain int32 values. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    opj_sparse_array_int32_topj_sparse_array_int32_create (OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
     Creates a new sparse array. More...
     
    void opj_sparse_array_int32_free (opj_sparse_array_int32_t *sa)
     Frees a sparse array. More...
     
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether region bounds are valid (non empty and within array bounds) More...
     
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
     Read the content of a rectangular region of the sparse array into a user buffer. More...
     
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
     Write the content of a rectangular region into the sparse array from a user buffer. More...
     
    +

    Detailed Description

    +

    Sparse array management.

    +

    The functions in this file manage sparse arrays. Sparse arrays are arrays with potential big dimensions, but with very few samples actually set. Such sparse arrays require allocating a low amount of memory, by just allocating memory for blocks of the array that are set. The minimum memory allocation unit is a a block. There is a trade-off to pick up an appropriate dimension for blocks. If it is too big, and pixels set are far from each other, too much memory will be used. If blocks are too small, the book-keeping costs of blocks will raise.

    +

    Typedef Documentation

    + +

    ◆ opj_sparse_array_int32_t

    + +
    +
    + +

    Opaque type for sparse arrays that contain int32 values.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_sparse_array_int32_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_sparse_array_int32_t* opj_sparse_array_int32_create (OPJ_UINT32 width,
    OPJ_UINT32 height,
    OPJ_UINT32 block_width,
    OPJ_UINT32 block_height 
    )
    +
    + +

    Creates a new sparse array.

    +
    Parameters
    + + + + + +
    widthtotal width of the array.
    heighttotal height of the array
    block_widthwidth of a block.
    block_heightheight of a block.
    +
    +
    +
    Returns
    a new sparse array instance, or NULL in case of failure.
    + +

    References opj_sparse_array_int32::block_count_hor, opj_sparse_array_int32::block_count_ver, opj_sparse_array_int32::block_height, opj_sparse_array_int32::block_width, opj_sparse_array_int32::data_blocks, opj_sparse_array_int32::height, opj_calloc(), opj_free(), opj_uint_ceildiv(), and opj_sparse_array_int32::width.

    + +

    Referenced by main(), and opj_dwt_init_sparse_array().

    + +
    +
    + +

    ◆ opj_sparse_array_int32_free()

    + +
    +
    + + + + + + + + +
    void opj_sparse_array_int32_free (opj_sparse_array_int32_tsa)
    +
    +
    + +

    ◆ opj_sparse_array_int32_read()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32dest,
    OPJ_UINT32 dest_col_stride,
    OPJ_UINT32 dest_line_stride,
    OPJ_BOOL forgiving 
    )
    +
    + +

    Read the content of a rectangular region of the sparse array into a user buffer.

    +

    Regions not written with opj_sparse_array_int32_write() are read as 0.

    +
    Parameters
    + + + + + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region to read in the sparse array.
    y0top x coordinate of the region to read in the sparse array.
    x1right x coordinate (not included) of the region to read in the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to read in the sparse array. Must be greater than y0.
    destuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * dest_line_stride + (x1 - x0 - 1) * dest_col_stride + 1) bytes large.
    dest_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    dest_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References opj_sparse_array_int32_read_or_write(), and OPJ_TRUE.

    + +

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), opj_dwt_interleave_partial_h(), opj_dwt_interleave_partial_v(), opj_v4dwt_interleave_partial_h(), and opj_v4dwt_interleave_partial_v().

    + +
    +
    + +

    ◆ opj_sparse_array_int32_write()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    const OPJ_INT32src,
    OPJ_UINT32 src_col_stride,
    OPJ_UINT32 src_line_stride,
    OPJ_BOOL forgiving 
    )
    +
    + +

    Write the content of a rectangular region into the sparse array from a user buffer.

    +

    Blocks intersecting the region are allocated, if not already done.

    +
    Parameters
    + + + + + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region to write into the sparse array.
    y0top x coordinate of the region to write into the sparse array.
    x1right x coordinate (not included) of the region to write into the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to write into the sparse array. Must be greater than y0.
    srcuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * src_line_stride + (x1 - x0 - 1) * src_col_stride + 1) bytes large.
    src_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    src_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    +
    +
    +
    Returns
    OPJ_TRUE in case of success.
    + +

    References OPJ_FALSE, and opj_sparse_array_int32_read_or_write().

    + +

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_init_sparse_array().

    + +
    +
    + +

    ◆ opj_sparse_array_is_region_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    +
    + +

    Returns whether region bounds are valid (non empty and within array bounds)

    +
    Parameters
    + + + + + + +
    sasparse array instance.
    x0left x coordinate of the region.
    y0top x coordinate of the region.
    x1right x coordinate (not included) of the region. Must be greater than x0.
    y1bottom y coordinate (not included) of the region. Must be greater than y0.
    +
    +
    +
    Returns
    OPJ_TRUE or OPJ_FALSE.
    + +

    References opj_sparse_array_int32::height, and opj_sparse_array_int32::width.

    + +

    Referenced by opj_sparse_array_int32_read_or_write().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/sparse__array_8h_source.html b/build/doc/html/sparse__array_8h_source.html new file mode 100644 index 000000000..28358a5f8 --- /dev/null +++ b/build/doc/html/sparse__array_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + +OpenJPEG: sparse_array.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    sparse_array.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2017, IntoPix SA <contact@intopix.com>
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #include "opj_includes.h"
    +
    33 
    +
    34 #ifndef OPJ_SPARSE_ARRAY_H
    +
    35 #define OPJ_SPARSE_ARRAY_H
    +
    36 
    +
    51 
    + +
    54 
    + + + + +
    66 
    + +
    71 
    + +
    81  OPJ_UINT32 x0,
    +
    82  OPJ_UINT32 y0,
    +
    83  OPJ_UINT32 x1,
    +
    84  OPJ_UINT32 y1);
    +
    85 
    + +
    103  OPJ_UINT32 x0,
    +
    104  OPJ_UINT32 y0,
    +
    105  OPJ_UINT32 x1,
    +
    106  OPJ_UINT32 y1,
    +
    107  OPJ_INT32* dest,
    +
    108  OPJ_UINT32 dest_col_stride,
    +
    109  OPJ_UINT32 dest_line_stride,
    +
    110  OPJ_BOOL forgiving);
    +
    111 
    +
    112 
    + +
    130  OPJ_UINT32 x0,
    +
    131  OPJ_UINT32 y0,
    +
    132  OPJ_UINT32 x1,
    +
    133  OPJ_UINT32 y1,
    +
    134  const OPJ_INT32* src,
    +
    135  OPJ_UINT32 src_col_stride,
    +
    136  OPJ_UINT32 src_line_stride,
    +
    137  OPJ_BOOL forgiving);
    +
    138 
    +
    141 #endif /* OPJ_SPARSE_ARRAY_H */
    +
    +
    OPJ_UINT32 block_count_hor
    Definition: sparse_array.c:40
    +
    OPJ_BOOL opj_sparse_array_is_region_valid(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether region bounds are valid (non empty and within array bounds)
    Definition: sparse_array.c:95
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    OPJ_UINT32 block_height
    Definition: sparse_array.c:39
    +
    OPJ_BOOL opj_sparse_array_is_region_valid(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether region bounds are valid (non empty and within array bounds)
    Definition: sparse_array.c:95
    +
    OPJ_INT32 ** data_blocks
    Definition: sparse_array.c:42
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    + +
    OPJ_UINT32 block_width
    Definition: sparse_array.c:38
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_UINT32 height
    Definition: sparse_array.c:37
    +
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    Definition: sparse_array.c:35
    +
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    +
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    +
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    +
    OPJ_UINT32 block_count_ver
    Definition: sparse_array.c:41
    +
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    +
    OPJ_UINT32 width
    Definition: sparse_array.c:36
    +
    static OPJ_BOOL opj_sparse_array_int32_read_or_write(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *buf, OPJ_UINT32 buf_col_stride, OPJ_UINT32 buf_line_stride, OPJ_BOOL forgiving, OPJ_BOOL is_read_op)
    Definition: sparse_array.c:105
    + + + + diff --git a/build/doc/html/splitbar.png b/build/doc/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/build/doc/html/struct_c_o_dmarker__param.html b/build/doc/html/struct_c_o_dmarker__param.html new file mode 100644 index 000000000..d20257754 --- /dev/null +++ b/build/doc/html/struct_c_o_dmarker__param.html @@ -0,0 +1,218 @@ + + + + + + + +OpenJPEG: CODmarker_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    CODmarker_param Struct Reference
    +
    +
    + +

    A.6.1 Coding style default (COD) + More...

    + +

    #include <index_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte2_t Lcod
     length of marker segment excluding the marker More...
     
    Byte_t Scod
     Coding style for all components. More...
     
    OPJ_PROG_ORDER prog_order
     progression order More...
     
    Byte2_t numOflayers
     number of layers More...
     
    Byte_t numOfdecomp
     number of decompositions levels More...
     
    Byte4_tXPsiz
     dynamic array of precinct width at successive resolution level in order More...
     
    Byte4_tYPsiz
     dynamic array of precinct height at successive resolution level in order More...
     
    +

    Detailed Description

    +

    A.6.1 Coding style default (COD)

    +

    Field Documentation

    + +

    ◆ Lcod

    + +
    +
    + + + + +
    Byte2_t CODmarker_param::Lcod
    +
    + +

    length of marker segment excluding the marker

    + +

    Referenced by get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), modify_CODmkrstream(), modify_mainheader(), and set_CODmkrdata().

    + +
    +
    + +

    ◆ numOfdecomp

    + + + +

    ◆ numOflayers

    + + + +

    ◆ prog_order

    + +
    +
    + + + + +
    OPJ_PROG_ORDER CODmarker_param::prog_order
    +
    + +

    progression order

    + +

    Referenced by get_CODmkrdata_from_j2kstream(), print_COD(), recons_bitstream(), and set_CODmkrdata().

    + +
    +
    + +

    ◆ Scod

    + + + +

    ◆ XPsiz

    + +
    +
    + + + + +
    Byte4_t* CODmarker_param::XPsiz
    +
    + +

    dynamic array of precinct width at successive resolution level in order

    + +

    Referenced by comp_numOfprcts(), delete_COD(), enqueue_allprecincts(), enqueue_precincts(), get_CODmkrdata_from_j2kstream(), print_COD(), and set_CODmkrdata().

    + +
    +
    + +

    ◆ YPsiz

    + +
    +
    + + + + +
    Byte4_t* CODmarker_param::YPsiz
    +
    + +

    dynamic array of precinct height at successive resolution level in order

    + +

    Referenced by comp_numOfprcts(), delete_COD(), enqueue_allprecincts(), enqueue_precincts(), get_CODmkrdata_from_j2kstream(), print_COD(), and set_CODmkrdata().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/struct_s_i_zmarker__param.html b/build/doc/html/struct_s_i_zmarker__param.html new file mode 100644 index 000000000..45728082a --- /dev/null +++ b/build/doc/html/struct_s_i_zmarker__param.html @@ -0,0 +1,408 @@ + + + + + + + +OpenJPEG: SIZmarker_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    SIZmarker_param Struct Reference
    +
    +
    + +

    progression order + More...

    + +

    #include <index_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte2_t Lsiz
     length of marker segment excluding the marker More...
     
    Byte2_t Rsiz
     capabilities that a decoder needs More...
     
    Byte4_t Xsiz
     width of the reference grid More...
     
    Byte4_t Ysiz
     height of the reference grid More...
     
    Byte4_t XOsiz
     horizontal offset from the origin of the reference grid to the left side of the image area More...
     
    Byte4_t YOsiz
     vertical offset from the origin of the reference grid to the top side of the image area More...
     
    Byte4_t XTsiz
     width of one reference tile with respect to the reference grid More...
     
    Byte4_t YTsiz
     height of one reference tile with respect to the reference grid More...
     
    Byte4_t XTOsiz
     horizontal offset from the origin of the reference grid to the left side of the first tile More...
     
    Byte4_t YTOsiz
     vertical offset from the origin of the reference grid to the top side of the first tile More...
     
    Byte4_t XTnum
     number of tiles in horizontal direction More...
     
    Byte4_t YTnum
     number of tiles in vertical direction More...
     
    Byte2_t Csiz
     number of the components in the image More...
     
    Byte_t Ssiz [3]
     precision (depth) in bits and sign of the component samples More...
     
    Byte_t XRsiz [3]
     horizontal separation of a sample of component with respect to the reference grid More...
     
    Byte_t YRsiz [3]
     vertical separation of a sample of component with respect to the reference grid More...
     
    +

    Detailed Description

    +

    progression order

    +

    A.5.1 Image and tile size (SIZ)

    +

    Field Documentation

    + +

    ◆ Csiz

    + + + +

    ◆ Lsiz

    + +
    +
    + + + + +
    Byte2_t SIZmarker_param::Lsiz
    +
    + +

    length of marker segment excluding the marker

    + +

    Referenced by get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), modify_mainheader(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ Rsiz

    + +
    +
    + + + + +
    Byte2_t SIZmarker_param::Rsiz
    +
    + +

    capabilities that a decoder needs

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ Ssiz

    + +
    +
    + + + + +
    Byte_t SIZmarker_param::Ssiz[3]
    +
    + +

    precision (depth) in bits and sign of the component samples

    + +

    Referenced by get_SIZ_from_jpipstream(), get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ XOsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::XOsiz
    +
    + +

    horizontal offset from the origin of the reference grid to the left side of the image area

    + +

    Referenced by enqueue_imagedata(), get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ XRsiz

    + +
    +
    + + + + +
    Byte_t SIZmarker_param::XRsiz[3]
    +
    + +

    horizontal separation of a sample of component with respect to the reference grid

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ Xsiz

    + + + +

    ◆ XTnum

    + + + +

    ◆ XTOsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::XTOsiz
    +
    + +

    horizontal offset from the origin of the reference grid to the left side of the first tile

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ XTsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::XTsiz
    +
    + +

    width of one reference tile with respect to the reference grid

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ YOsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::YOsiz
    +
    + +

    vertical offset from the origin of the reference grid to the top side of the image area

    + +

    Referenced by enqueue_imagedata(), get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ YRsiz

    + +
    +
    + + + + +
    Byte_t SIZmarker_param::YRsiz[3]
    +
    + +

    vertical separation of a sample of component with respect to the reference grid

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ Ysiz

    + + + +

    ◆ YTnum

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::YTnum
    +
    +
    + +

    ◆ YTOsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::YTOsiz
    +
    + +

    vertical offset from the origin of the reference grid to the top side of the first tile

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ YTsiz

    + +
    +
    + + + + +
    Byte4_t SIZmarker_param::YTsiz
    +
    + +

    height of one reference tile with respect to the reference grid

    + +

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structaux__response__param.html b/build/doc/html/structaux__response__param.html new file mode 100644 index 000000000..00136e4c1 --- /dev/null +++ b/build/doc/html/structaux__response__param.html @@ -0,0 +1,159 @@ + + + + + + + +OpenJPEG: aux_response_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    aux_response_param Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Data Fields

    char * cid
     
    unsigned char * data
     
    OPJ_SIZE_T datalen
     
    OPJ_SIZE_T maxlenPerFrame
     
    SOCKET listensock
     
    +

    Field Documentation

    + +

    ◆ cid

    + +
    +
    + + + + +
    char* aux_response_param::cid
    +
    +

    channel ID

    + +

    Referenced by aux_streaming(), and gene_auxresponse().

    + +
    +
    + +

    ◆ data

    + +
    +
    + + + + +
    unsigned char* aux_response_param::data
    +
    +

    sending data

    + +

    Referenced by aux_streaming(), and gene_auxresponse().

    + +
    +
    + +

    ◆ datalen

    + +
    +
    + + + + +
    OPJ_SIZE_T aux_response_param::datalen
    +
    +

    length of data

    + +

    Referenced by aux_streaming(), and gene_auxresponse().

    + +
    +
    + +

    ◆ listensock

    + +
    +
    + + + + +
    SOCKET aux_response_param::listensock
    +
    +

    listeing socket

    + +

    Referenced by aux_streaming(), and gene_auxresponse().

    + +
    +
    + +

    ◆ maxlenPerFrame

    + +
    +
    + + + + +
    OPJ_SIZE_T aux_response_param::maxlenPerFrame
    +
    +

    maximum data length to send per frame

    + +

    Referenced by aux_streaming(), and gene_auxresponse().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structauxtrans__param.html b/build/doc/html/structauxtrans__param.html new file mode 100644 index 000000000..2d8fced1b --- /dev/null +++ b/build/doc/html/structauxtrans__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: auxtrans_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    auxtrans_param Struct Reference
    +
    +
    + +

    auxiliary transport setting parameters + More...

    + +

    #include <auxtrans_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    int tcpauxport
     tcp port More...
     
    int udpauxport
     udp port More...
     
    SOCKET tcplistensock
     listenning socket for aux tcp (-1 if not open) More...
     
    SOCKET udplistensock
     listenning socket for aux udp (-1 if not open) More...
     
    +

    Detailed Description

    +

    auxiliary transport setting parameters

    +

    Field Documentation

    + +

    ◆ tcpauxport

    + +
    +
    + + + + +
    int auxtrans_param::tcpauxport
    +
    + +

    tcp port

    + +

    Referenced by gene_channel(), and init_aux_transport().

    + +
    +
    + +

    ◆ tcplistensock

    + +
    +
    + + + + +
    SOCKET auxtrans_param::tcplistensock
    +
    + +

    listenning socket for aux tcp (-1 if not open)

    + +

    Referenced by close_aux_transport(), gene_auxresponse(), init_aux_transport(), and send_responsedata_on_aux().

    + +
    +
    + +

    ◆ udpauxport

    + +
    +
    + + + + +
    int auxtrans_param::udpauxport
    +
    + +

    udp port

    + +

    Referenced by gene_channel(), and init_aux_transport().

    + +
    +
    + +

    ◆ udplistensock

    + +
    +
    + + + + +
    SOCKET auxtrans_param::udplistensock
    +
    + +

    listenning socket for aux udp (-1 if not open)

    + +

    Referenced by close_aux_transport(), gene_auxresponse(), and init_aux_transport().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structbox__param.html b/build/doc/html/structbox__param.html new file mode 100644 index 000000000..dc0ec4a3a --- /dev/null +++ b/build/doc/html/structbox__param.html @@ -0,0 +1,197 @@ + + + + + + + +OpenJPEG: box_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    box_param Struct Reference
    +
    +
    + +

    box parameters + More...

    + +

    #include <box_manager.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    int fd
     file descriptor More...
     
    OPJ_OFF_T offset
     byte position of the whole Box (LBox) in the file More...
     
    Byte_t headlen
     header length 8 or 16 More...
     
    Byte8_t length
     length of the whole Box More...
     
    char type [4]
     type of information in the DBox More...
     
    struct box_paramnext
     pointer to the next box More...
     
    +

    Detailed Description

    +

    box parameters

    +

    Field Documentation

    + +

    ◆ fd

    + + + +

    ◆ headlen

    + + + +

    ◆ length

    + + + +

    ◆ next

    + + + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T box_param::offset
    +
    +
    + +

    ◆ type

    + +
    +
    + + + + +
    char box_param::type[4]
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structboxcontents__param.html b/build/doc/html/structboxcontents__param.html new file mode 100644 index 000000000..e804d31a0 --- /dev/null +++ b/build/doc/html/structboxcontents__param.html @@ -0,0 +1,108 @@ + + + + + + + +OpenJPEG: boxcontents_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    boxcontents_param Struct Reference
    +
    +
    + +

    #include <metadata_manager.h>

    + + + + + + + + +

    +Data Fields

    OPJ_OFF_T offset
     byte position of the box contents in the file More...
     
    Byte8_t length
     length of the box contents More...
     
    +

    Field Documentation

    + +

    ◆ length

    + +
    +
    + + + + +
    Byte8_t boxcontents_param::length
    +
    + +

    length of the box contents

    + +

    Referenced by enqueue_boxcontents(), gene_boxcontents(), handle_XMLreqMSG(), and print_metadata().

    + +
    +
    + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T boxcontents_param::offset
    +
    + +

    byte position of the box contents in the file

    + +

    Referenced by enqueue_boxcontents(), gene_boxcontents(), handle_XMLreqMSG(), and print_metadata().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structboxheader__param.html b/build/doc/html/structboxheader__param.html new file mode 100644 index 000000000..8dc554367 --- /dev/null +++ b/build/doc/html/structboxheader__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: boxheader_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    boxheader_param Struct Reference
    +
    +
    + +

    box header parameters + More...

    + +

    #include <boxheader_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    Byte_t headlen
     header length 8 or 16 More...
     
    Byte8_t length
     length of the reference Box More...
     
    char type [4]
     type of information in the DBox More...
     
    struct boxheader_paramnext
     pointer to the next header box More...
     
    +

    Detailed Description

    +

    box header parameters

    +

    Field Documentation

    + +

    ◆ headlen

    + +
    +
    + + + + +
    Byte_t boxheader_param::headlen
    +
    + +

    header length 8 or 16

    + +

    Referenced by check_JP2boxidx(), gene_boxheader(), and gene_manfbox().

    + +
    +
    + +

    ◆ length

    + +
    +
    + + + + +
    Byte8_t boxheader_param::length
    +
    + +

    length of the reference Box

    + +

    Referenced by check_JP2boxidx(), gene_boxheader(), and print_boxheader().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct boxheader_param* boxheader_param::next
    +
    + +

    pointer to the next header box

    + +

    Referenced by delete_manfbox(), gene_boxheader(), gene_manfbox(), print_manfbox(), search_boxheader(), set_ppixdata(), and set_thixdata().

    + +
    +
    + +

    ◆ type

    + +
    +
    + + + + +
    char boxheader_param::type[4]
    +
    + +

    type of information in the DBox

    + +

    Referenced by check_JP2boxidx(), gene_boxheader(), print_boxheader(), and search_boxheader().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structboxlist__param.html b/build/doc/html/structboxlist__param.html new file mode 100644 index 000000000..3047b0fc0 --- /dev/null +++ b/build/doc/html/structboxlist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: boxlist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    boxlist_param Struct Reference
    +
    +
    + +

    Box list parameters. + More...

    + +

    #include <box_manager.h>

    + + + + + + + + +

    +Data Fields

    box_param_tfirst
     first box pointer of the list More...
     
    box_param_tlast
     last box pointer of the list More...
     
    +

    Detailed Description

    +

    Box list parameters.

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    box_param_t* boxlist_param::first
    +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    box_param_t* boxlist_param::last
    +
    + +

    last box pointer of the list

    + +

    Referenced by delete_box_in_list(), gene_boxlist(), and insert_box_into_list().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structcache__param.html b/build/doc/html/structcache__param.html new file mode 100644 index 000000000..a67b4e4e5 --- /dev/null +++ b/build/doc/html/structcache__param.html @@ -0,0 +1,239 @@ + + + + + + + +OpenJPEG: cache_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    cache_param Struct Reference
    +
    +
    + +

    cache parameters + More...

    + +

    #include <cache_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    char * filename
     file name More...
     
    char * tid
     taregt identifier More...
     
    int csn
     codestream number More...
     
    char ** cid
     dynamic array of channel identifiers More...
     
    int numOfcid
     number of cids More...
     
    metadatalist_param_tmetadatalist
     metadata-bin list More...
     
    ihdrbox_param_tihdrbox
     ihdrbox More...
     
    struct cache_paramnext
     pointer to the next cache More...
     
    +

    Detailed Description

    +

    cache parameters

    +

    Field Documentation

    + +

    ◆ cid

    + +
    +
    + + + + +
    char** cache_param::cid
    +
    + +

    dynamic array of channel identifiers

    + +

    Referenced by add_cachecid(), gene_cache(), handle_CIDreqMSG(), print_cache(), remove_cidInCache(), and search_cacheBycid().

    + +
    +
    + +

    ◆ csn

    + +
    +
    + + + + +
    int cache_param::csn
    +
    +
    + +

    ◆ filename

    + +
    +
    + + + + +
    char* cache_param::filename
    +
    + +

    file name

    + +

    Referenced by gene_cache(), print_cache(), search_cache(), and update_cachetid().

    + +
    +
    + +

    ◆ ihdrbox

    + +
    +
    + + + + +
    ihdrbox_param_t* cache_param::ihdrbox
    +
    + +

    ihdrbox

    + +

    Referenced by gene_cache(), and handle_SIZreqMSG().

    + +
    +
    + +

    ◆ metadatalist

    + +
    +
    + + + + +
    metadatalist_param_t* cache_param::metadatalist
    +
    + +

    metadata-bin list

    + +

    Referenced by gene_cache(), handle_JPIPstreamMSG(), and handle_XMLreqMSG().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct cache_param* cache_param::next
    +
    +
    + +

    ◆ numOfcid

    + +
    +
    + + + + +
    int cache_param::numOfcid
    +
    +
    + +

    ◆ tid

    + +
    +
    + + + + +
    char* cache_param::tid
    +
    + +

    taregt identifier

    + +

    Referenced by gene_cache(), handle_TIDreqMSG(), print_cache(), search_cacheBytid(), and update_cachetid().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structcachelist__param.html b/build/doc/html/structcachelist__param.html new file mode 100644 index 000000000..31605bb45 --- /dev/null +++ b/build/doc/html/structcachelist__param.html @@ -0,0 +1,108 @@ + + + + + + + +OpenJPEG: cachelist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    cachelist_param Struct Reference
    +
    +
    + +

    #include <cache_manager.h>

    + + + + + + + + +

    +Data Fields

    cache_param_tfirst
     first cache pointer of the list More...
     
    cache_param_tlast
     last cache pointer of the list More...
     
    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    cache_param_t* cachelist_param::first
    +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    cache_param_t* cachelist_param::last
    +
    + +

    last cache pointer of the list

    + +

    Referenced by gene_cachelist(), and insert_cache_into_list().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structcachemodel__param.html b/build/doc/html/structcachemodel__param.html new file mode 100644 index 000000000..7979c1674 --- /dev/null +++ b/build/doc/html/structcachemodel__param.html @@ -0,0 +1,218 @@ + + + + + + + +OpenJPEG: cachemodel_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    cachemodel_param Struct Reference
    +
    +
    + +

    Cache model parameters. + More...

    + +

    #include <cachemodel_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    target_param_ttarget
     reference pointer to the target More...
     
    OPJ_BOOL jppstream
     return type, true: JPP-stream, false: JPT-stream More...
     
    OPJ_BOOL mhead_model
     main header model, if sent, 1, else 0 More...
     
    OPJ_BOOLtp_model
     dynamic array pointer of tile part model, if sent, 1, else 0 More...
     
    OPJ_BOOLth_model
     dynamic array pointer of tile header model More...
     
    OPJ_BOOL ** pp_model
     dynamic array pointer of precint packet model More...
     
    struct cachemodel_paramnext
     pointer to the next cache model More...
     
    +

    Detailed Description

    +

    Cache model parameters.

    +

    Field Documentation

    + +

    ◆ jppstream

    + +
    +
    + + + + +
    OPJ_BOOL cachemodel_param::jppstream
    +
    + +

    return type, true: JPP-stream, false: JPT-stream

    + +

    Referenced by enqueue_imagedata(), gene_cachemodel(), gene_JPIPstream(), and is_allsent().

    + +
    +
    + +

    ◆ mhead_model

    + +
    +
    + + + + +
    OPJ_BOOL cachemodel_param::mhead_model
    +
    + +

    main header model, if sent, 1, else 0

    + +

    Referenced by enqueue_mainheader(), gene_cachemodel(), gene_JPIPstream(), is_allsent(), and print_cachemodel().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct cachemodel_param* cachemodel_param::next
    +
    +
    + +

    ◆ pp_model

    + +
    +
    + + + + +
    OPJ_BOOL** cachemodel_param::pp_model
    +
    + +

    dynamic array pointer of precint packet model

    + +

    Referenced by enqueue_precinct(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    + +
    +
    + +

    ◆ target

    + + + +

    ◆ th_model

    + +
    +
    + + + + +
    OPJ_BOOL* cachemodel_param::th_model
    +
    + +

    dynamic array pointer of tile header model

    + +

    Referenced by enqueue_tileheader(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    + +
    +
    + +

    ◆ tp_model

    + +
    +
    + + + + +
    OPJ_BOOL* cachemodel_param::tp_model
    +
    + +

    dynamic array pointer of tile part model, if sent, 1, else 0

    + +

    Referenced by enqueue_tile(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structcachemodellist__param.html b/build/doc/html/structcachemodellist__param.html new file mode 100644 index 000000000..682e8f8fe --- /dev/null +++ b/build/doc/html/structcachemodellist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: cachemodellist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    cachemodellist_param Struct Reference
    +
    +
    + +

    Cache model list parameters. + More...

    + +

    #include <cachemodel_manager.h>

    + + + + + + + + +

    +Data Fields

    cachemodel_param_tfirst
     first cache model pointer of the list More...
     
    cachemodel_param_tlast
     last cache model pointer of the list More...
     
    +

    Detailed Description

    +

    Cache model list parameters.

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    cachemodel_param_t* cachemodellist_param::first
    +
    + +

    first cache model pointer of the list

    + +

    Referenced by gene_cachemodel(), gene_cachemodellist(), insert_cachemodel_into_session(), print_allsession(), and search_cachemodel().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    cachemodel_param_t* cachemodellist_param::last
    +
    + +

    last cache model pointer of the list

    + +

    Referenced by gene_cachemodel(), gene_cachemodellist(), and insert_cachemodel_into_session().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structchannel__param.html b/build/doc/html/structchannel__param.html new file mode 100644 index 000000000..8a6a105d5 --- /dev/null +++ b/build/doc/html/structchannel__param.html @@ -0,0 +1,176 @@ + + + + + + + +OpenJPEG: channel_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    channel_param Struct Reference
    +
    +
    + +

    Channel parameters. + More...

    + +

    #include <channel_manager.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    cachemodel_param_tcachemodel
     reference pointer to the cache model More...
     
    char cid [MAX_LENOFCID]
     channel identifier More...
     
    cnew_transport_t aux
     auxiliary transport More...
     
    time_t start_tm
     starting time More...
     
    struct channel_paramnext
     pointer to the next channel More...
     
    +

    Detailed Description

    +

    Channel parameters.

    +

    Field Documentation

    + +

    ◆ aux

    + +
    +
    + + + + +
    cnew_transport_t channel_param::aux
    +
    + +

    auxiliary transport

    + +

    Referenced by gene_channel().

    + +
    +
    + +

    ◆ cachemodel

    + +
    +
    + + + + +
    cachemodel_param_t* channel_param::cachemodel
    +
    + +

    reference pointer to the cache model

    + +

    Referenced by gene_channel(), gene_JPIPstream(), and print_allchannel().

    + +
    +
    + +

    ◆ cid

    + +
    +
    + + + + +
    char channel_param::cid[MAX_LENOFCID]
    +
    + +

    channel identifier

    + +

    Referenced by delete_channellist(), gene_channel(), print_allchannel(), and search_channel().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct channel_param* channel_param::next
    +
    +
    + +

    ◆ start_tm

    + +
    +
    + + + + +
    time_t channel_param::start_tm
    +
    + +

    starting time

    + +

    Referenced by gene_channel().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structchannellist__param.html b/build/doc/html/structchannellist__param.html new file mode 100644 index 000000000..f9b31edf5 --- /dev/null +++ b/build/doc/html/structchannellist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: channellist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    channellist_param Struct Reference
    +
    +
    + +

    Channel list parameters. + More...

    + +

    #include <channel_manager.h>

    + + + + + + + + +

    +Data Fields

    channel_param_tfirst
     first channel pointer of the list More...
     
    channel_param_tlast
     last channel pointer of the list More...
     
    +

    Detailed Description

    +

    Channel list parameters.

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    channel_param_t* channellist_param::first
    +
    + +

    first channel pointer of the list

    + +

    Referenced by delete_channel(), gene_channel(), gene_channellist(), print_allchannel(), and search_channel().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    channel_param_t* channellist_param::last
    +
    + +

    last channel pointer of the list

    + +

    Referenced by delete_channel(), gene_channel(), and gene_channellist().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structcodestream__param.html b/build/doc/html/structcodestream__param.html new file mode 100644 index 000000000..461b401c8 --- /dev/null +++ b/build/doc/html/structcodestream__param.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: codestream_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    codestream_param Struct Reference
    +
    +
    + +

    codestream parameters + More...

    + +

    #include <codestream_manager.h>

    + + + + + + + + + + + +

    +Data Fields

    int fd
     file descriptor More...
     
    OPJ_OFF_T offset
     byte position of DBox (Box Contents) in the file More...
     
    Byte8_t length
     content length More...
     
    +

    Detailed Description

    +

    codestream parameters

    +

    Field Documentation

    + +

    ◆ fd

    + +
    +
    + + + + +
    int codestream_param::fd
    +
    +
    + +

    ◆ length

    + +
    +
    + + + + +
    Byte8_t codestream_param::length
    +
    + +

    content length

    + +

    Referenced by print_codestream(), and set_codestream().

    + +
    +
    + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T codestream_param::offset
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structdec__server__record.html b/build/doc/html/structdec__server__record.html new file mode 100644 index 000000000..b01c0a9d3 --- /dev/null +++ b/build/doc/html/structdec__server__record.html @@ -0,0 +1,176 @@ + + + + + + + +OpenJPEG: dec_server_record Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    dec_server_record Struct Reference
    +
    +
    + +

    Decoding server static records. + More...

    + +

    #include <openjpip.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    cachelist_param_tcachelist
     cache list More...
     
    Byte_tjpipstream
     JPT/JPP stream. More...
     
    OPJ_SIZE_T jpipstreamlen
     length of jpipstream More...
     
    msgqueue_param_tmsgqueue
     parsed message queue of jpipstream More...
     
    SOCKET listening_socket
     listenning socket More...
     
    +

    Detailed Description

    +

    Decoding server static records.

    +

    Field Documentation

    + +

    ◆ cachelist

    + +
    +
    + + + + +
    cachelist_param_t* dec_server_record::cachelist
    +
    + +

    cache list

    + +

    Referenced by handle_clientreq(), and init_dec_server().

    + +
    +
    + +

    ◆ jpipstream

    + +
    +
    + + + + +
    Byte_t* dec_server_record::jpipstream
    +
    + +

    JPT/JPP stream.

    + +

    Referenced by handle_clientreq(), and init_dec_server().

    + +
    +
    + +

    ◆ jpipstreamlen

    + +
    +
    + + + + +
    OPJ_SIZE_T dec_server_record::jpipstreamlen
    +
    + +

    length of jpipstream

    + +

    Referenced by handle_clientreq(), and init_dec_server().

    + +
    +
    + +

    ◆ listening_socket

    + +
    +
    + + + + +
    SOCKET dec_server_record::listening_socket
    +
    + +

    listenning socket

    + +

    Referenced by accept_connection(), and init_dec_server().

    + +
    +
    + +

    ◆ msgqueue

    + +
    +
    + + + + +
    msgqueue_param_t* dec_server_record::msgqueue
    +
    + +

    parsed message queue of jpipstream

    + +

    Referenced by handle_clientreq(), and init_dec_server().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structdwt__local.html b/build/doc/html/structdwt__local.html new file mode 100644 index 000000000..8ca70daac --- /dev/null +++ b/build/doc/html/structdwt__local.html @@ -0,0 +1,136 @@ + + + + + + + +OpenJPEG: dwt_local Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    dwt_local Struct Reference
    +
    +
    + + + + + + + + + + +

    +Data Fields

    OPJ_INT32mem
     
    OPJ_INT32 dn
     
    OPJ_INT32 sn
     
    OPJ_INT32 cas
     
    +

    Field Documentation

    + +

    ◆ cas

    + +
    +
    + + + + +
    OPJ_INT32 dwt_local::cas
    +
    +
    + +

    ◆ dn

    + +
    +
    + + + + +
    OPJ_INT32 dwt_local::dn
    +
    +
    + +

    ◆ mem

    + + + +

    ◆ sn

    + +
    +
    + + + + +
    OPJ_INT32 dwt_local::sn
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structfaixbox__param.html b/build/doc/html/structfaixbox__param.html new file mode 100644 index 000000000..0460f76b2 --- /dev/null +++ b/build/doc/html/structfaixbox__param.html @@ -0,0 +1,114 @@ + + + + + + + +OpenJPEG: faixbox_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    faixbox_param Struct Reference
    +
    +
    + +

    fragment array index box parameters + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + +

    +Data Fields

    Byte_t version
     Refer to the Table I.3 - Version values. More...
     
    subfaixbox_param_t subfaixbox
     rest information in faixbox More...
     
    +

    Detailed Description

    +

    fragment array index box parameters

    +

    I.3.2.4.2 Fragment Array Index box

    +

    Field Documentation

    + +

    ◆ subfaixbox

    + +
    +
    + + + + +
    subfaixbox_param_t faixbox_param::subfaixbox
    +
    + +

    rest information in faixbox

    + +

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    + +
    +
    + +

    ◆ version

    + +
    +
    + + + + +
    Byte_t faixbox_param::version
    +
    + +

    Refer to the Table I.3 - Version values.

    + +

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), and print_faixbox().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structfaixelem4__param.html b/build/doc/html/structfaixelem4__param.html new file mode 100644 index 000000000..aa606c443 --- /dev/null +++ b/build/doc/html/structfaixelem4__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: faixelem4_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    faixelem4_param Struct Reference
    +
    +
    + +

    4byte parameters of a faix element + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + +

    +Data Fields

    Byte4_t off
     offset More...
     
    Byte4_t len
     length More...
     
    +

    Detailed Description

    +

    4byte parameters of a faix element

    +

    Field Documentation

    + +

    ◆ len

    + +
    +
    + + + + +
    Byte4_t faixelem4_param::len
    +
    + +

    length

    + +

    Referenced by gene_faixbox(), and get_elemLen().

    + +
    +
    + +

    ◆ off

    + +
    +
    + + + + +
    Byte4_t faixelem4_param::off
    +
    + +

    offset

    + +

    Referenced by gene_faixbox(), and get_elemOff().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structfaixelem8__param.html b/build/doc/html/structfaixelem8__param.html new file mode 100644 index 000000000..8cb28b644 --- /dev/null +++ b/build/doc/html/structfaixelem8__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: faixelem8_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    faixelem8_param Struct Reference
    +
    +
    + +

    8byte parameters of a faix element + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + +

    +Data Fields

    Byte8_t off
     offset More...
     
    Byte8_t len
     length More...
     
    +

    Detailed Description

    +

    8byte parameters of a faix element

    +

    Field Documentation

    + +

    ◆ len

    + +
    +
    + + + + +
    Byte8_t faixelem8_param::len
    +
    + +

    length

    + +

    Referenced by gene_faixbox(), and get_elemLen().

    + +
    +
    + +

    ◆ off

    + +
    +
    + + + + +
    Byte8_t faixelem8_param::off
    +
    + +

    offset

    + +

    Referenced by gene_faixbox(), and get_elemOff().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structihdrbox__param.html b/build/doc/html/structihdrbox__param.html new file mode 100644 index 000000000..3d2da51e9 --- /dev/null +++ b/build/doc/html/structihdrbox__param.html @@ -0,0 +1,149 @@ + + + + + + + +OpenJPEG: ihdrbox_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    ihdrbox_param Struct Reference
    +
    +
    + +

    I.5.3.1 Image Header box. + More...

    + +

    #include <ihdrbox_manager.h>

    + + + + + + + + + + + + +

    +Data Fields

    Byte4_t height
     
    Byte4_t width
     
    Byte2_t nc
     number of components More...
     
    Byte_t bpc
     bits per component More...
     
    +

    Detailed Description

    +

    I.5.3.1 Image Header box.

    +

    Field Documentation

    + +

    ◆ bpc

    + +
    +
    + + + + +
    Byte_t ihdrbox_param::bpc
    +
    + +

    bits per component

    + +

    Referenced by gene_ihdrbox(), get_SIZ_from_jpipstream(), handle_PNMreqMSG(), and output_log().

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    Byte4_t ihdrbox_param::height
    +
    +
    + +

    ◆ nc

    + +
    +
    + + + + +
    Byte2_t ihdrbox_param::nc
    +
    + +

    number of components

    + +

    Referenced by gene_ihdrbox(), get_SIZ_from_jpipstream(), handle_PNMreqMSG(), and output_log().

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    Byte4_t ihdrbox_param::width
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structimgreg__param.html b/build/doc/html/structimgreg__param.html new file mode 100644 index 000000000..d12d61bae --- /dev/null +++ b/build/doc/html/structimgreg__param.html @@ -0,0 +1,245 @@ + + + + + + + +OpenJPEG: imgreg_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    imgreg_param Struct Reference
    +
    +
    + +

    image region parameters + More...

    + +

    #include <imgreg_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    int xosiz
     
    int yosiz
     
    int fx
     offset from the origin of the reference grid at the decomposition level More...
     
    int fy
     
    int ox
     frame size (fsiz) More...
     
    int oy
     
    int sx
     offset (roff) More...
     
    int sy
     
    int level
     region size (rsiz) More...
     
    +

    Detailed Description

    +

    image region parameters

    +

    Field Documentation

    + +

    ◆ fx

    + +
    +
    + + + + +
    int imgreg_param::fx
    +
    + +

    offset from the origin of the reference grid at the decomposition level

    + +

    Referenced by map_viewin2imgreg(), and print_imgreg().

    + +
    +
    + +

    ◆ fy

    + +
    +
    + + + + +
    int imgreg_param::fy
    +
    + +

    Referenced by map_viewin2imgreg(), and print_imgreg().

    + +
    +
    + +

    ◆ level

    + +
    +
    + + + + +
    int imgreg_param::level
    +
    + +

    region size (rsiz)

    + +

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    + +
    +
    + +

    ◆ ox

    + +
    +
    + + + + +
    int imgreg_param::ox
    +
    + +

    frame size (fsiz)

    + +

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    + +
    +
    + +

    ◆ oy

    + +
    +
    + + + + +
    int imgreg_param::oy
    +
    +
    + +

    ◆ sx

    + +
    +
    + + + + +
    int imgreg_param::sx
    +
    + +

    offset (roff)

    + +

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    + +
    +
    + +

    ◆ sy

    + +
    +
    + + + + +
    int imgreg_param::sy
    +
    +
    + +

    ◆ xosiz

    + +
    +
    + + + + +
    int imgreg_param::xosiz
    +
    + +

    Referenced by enqueue_imagedata(), and map_viewin2imgreg().

    + +
    +
    + +

    ◆ yosiz

    + +
    +
    + + + + +
    int imgreg_param::yosiz
    +
    + +

    Referenced by enqueue_imagedata(), and map_viewin2imgreg().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structindex__param.html b/build/doc/html/structindex__param.html new file mode 100644 index 000000000..f950b364a --- /dev/null +++ b/build/doc/html/structindex__param.html @@ -0,0 +1,262 @@ + + + + + + + +OpenJPEG: index_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    index_param Struct Reference
    +
    +
    + +

    index parameters + More...

    + +

    #include <index_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    metadatalist_param_tmetadatalist
     metadata-bin list More...
     
    OPJ_OFF_T offset
     codestream offset More...
     
    Byte8_t length
     codestream length More...
     
    Byte8_t mhead_length
     main header length
    + More...
     
    SIZmarker_param_t SIZ
     SIZ marker information. More...
     
    CODmarker_param_t COD
     COD marker information. More...
     
    faixbox_param_ttilepart
     tile part information from tpix box More...
     
    mhixbox_param_t ** tileheader
     dynamic array of tile header information from thix box More...
     
    faixbox_param_t ** precpacket
     dynamic array of precint packet information from ppix box More...
     
    +

    Detailed Description

    +

    index parameters

    +

    Field Documentation

    + +

    ◆ COD

    + +
    +
    + + + + +
    CODmarker_param_t index_param::COD
    +
    +
    + +

    ◆ length

    + +
    +
    + + + + +
    Byte8_t index_param::length
    +
    + +

    codestream length

    + +

    Referenced by print_index(), set_cidxdata(), and set_cptrdata().

    + +
    +
    + +

    ◆ metadatalist

    + +
    +
    + + + + +
    metadatalist_param_t* index_param::metadatalist
    +
    + +

    metadata-bin list

    + +

    Referenced by enqueue_metadata(), gene_JPIPstream(), parse_jp2file(), and print_index().

    + +
    +
    + +

    ◆ mhead_length

    + +
    +
    + + + + +
    Byte8_t index_param::mhead_length
    +
    + +

    main header length
    +

    + +

    Referenced by enqueue_mainheader(), print_index(), and set_mainmhixdata().

    + +
    +
    + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T index_param::offset
    +
    +
    + +

    ◆ precpacket

    + +
    +
    + + + + +
    faixbox_param_t** index_param::precpacket
    +
    + +

    dynamic array of precint packet information from ppix box

    + +

    Referenced by enqueue_precinct(), gene_cachemodel(), is_allsent(), print_cachemodel(), print_index(), and set_ppixdata().

    + +
    +
    + +

    ◆ SIZ

    + + + +

    ◆ tileheader

    + +
    +
    + + + + +
    mhixbox_param_t** index_param::tileheader
    +
    + +

    dynamic array of tile header information from thix box

    + +

    Referenced by enqueue_tileheader(), print_index(), and set_thixdata().

    + +
    +
    + +

    ◆ tilepart

    + +
    +
    + + + + +
    faixbox_param_t* index_param::tilepart
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structj2k__prog__order.html b/build/doc/html/structj2k__prog__order.html new file mode 100644 index 000000000..3c290a7fd --- /dev/null +++ b/build/doc/html/structj2k__prog__order.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: j2k_prog_order Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    j2k_prog_order Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    OPJ_PROG_ORDER enum_prog
     
    char str_prog [5]
     
    +

    Field Documentation

    + +

    ◆ enum_prog

    + +
    +
    + + + + +
    OPJ_PROG_ORDER j2k_prog_order::enum_prog
    +
    +
    + +

    ◆ str_prog

    + +
    +
    + + + + +
    char j2k_prog_order::str_prog[5]
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structjpip__dec__param.html b/build/doc/html/structjpip__dec__param.html new file mode 100644 index 000000000..c1d6d6172 --- /dev/null +++ b/build/doc/html/structjpip__dec__param.html @@ -0,0 +1,218 @@ + + + + + + + +OpenJPEG: jpip_dec_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    jpip_dec_param Struct Reference
    +
    +
    + +

    JPIP decoding parameters. + More...

    + +

    #include <openjpip.h>

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte_tjpipstream
     JPT/JPP-stream. More...
     
    Byte8_t jpiplen
     length of jpipstream More...
     
    msgqueue_param_tmsgqueue
     message queue More...
     
    metadatalist_param_tmetadatalist
     metadata list going into JP2 file More...
     
    ihdrbox_param_tihdrbox
     ihdr box going into JP2 file More...
     
    Byte_tjp2kstream
     J2K codestream or JP2 file codestream. More...
     
    Byte8_t jp2klen
     length of j2kstream or JP2 file More...
     
    +

    Detailed Description

    +

    JPIP decoding parameters.

    +

    Field Documentation

    + +

    ◆ ihdrbox

    + +
    +
    + + + + +
    ihdrbox_param_t* jpip_dec_param::ihdrbox
    +
    + +

    ihdr box going into JP2 file

    + +

    Referenced by decode_jpip(), and output_log().

    + +
    +
    + +

    ◆ jp2klen

    + +
    +
    + + + + +
    Byte8_t jpip_dec_param::jp2klen
    +
    + +

    length of j2kstream or JP2 file

    + +

    Referenced by decode_jpip(), and fwrite_jp2k().

    + +
    +
    + +

    ◆ jp2kstream

    + +
    +
    + + + + +
    Byte_t* jpip_dec_param::jp2kstream
    +
    + +

    J2K codestream or JP2 file codestream.

    + +

    Referenced by decode_jpip(), and fwrite_jp2k().

    + +
    +
    + +

    ◆ jpiplen

    + +
    +
    + + + + +
    Byte8_t jpip_dec_param::jpiplen
    +
    + +

    length of jpipstream

    + +

    Referenced by decode_jpip(), and fread_jpip().

    + +
    +
    + +

    ◆ jpipstream

    + +
    +
    + + + + +
    Byte_t* jpip_dec_param::jpipstream
    +
    + +

    JPT/JPP-stream.

    + +

    Referenced by decode_jpip(), and fread_jpip().

    + +
    +
    + +

    ◆ metadatalist

    + +
    +
    + + + + +
    metadatalist_param_t* jpip_dec_param::metadatalist
    +
    + +

    metadata list going into JP2 file

    + +

    Referenced by decode_jpip(), init_jpipdecoder(), and output_log().

    + +
    +
    + +

    ◆ msgqueue

    + +
    +
    + + + + +
    msgqueue_param_t* jpip_dec_param::msgqueue
    +
    + +

    message queue

    + +

    Referenced by decode_jpip(), init_jpipdecoder(), and output_log().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmanfbox__param.html b/build/doc/html/structmanfbox__param.html new file mode 100644 index 000000000..b04c1e3c1 --- /dev/null +++ b/build/doc/html/structmanfbox__param.html @@ -0,0 +1,93 @@ + + + + + + + +OpenJPEG: manfbox_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    manfbox_param Struct Reference
    +
    +
    + +

    manifest box parameters + More...

    + +

    #include <manfbox_manager.h>

    + + + + + +

    +Data Fields

    boxheader_param_tfirst
     top of the box header list More...
     
    +

    Detailed Description

    +

    manifest box parameters

    +

    I.3.2.3 Manifest box

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    boxheader_param_t* manfbox_param::first
    +
    + +

    top of the box header list

    + +

    Referenced by gene_manfbox(), print_manfbox(), search_boxheader(), and set_thixdata().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmarker__param.html b/build/doc/html/structmarker__param.html new file mode 100644 index 000000000..5eb365837 --- /dev/null +++ b/build/doc/html/structmarker__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: marker_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    marker_param Struct Reference
    +
    +
    + +

    Marker parameters. + More...

    + +

    #include <marker_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    codestream_param_t cs
     corresponding codestream More...
     
    Byte2_t code
     marker code More...
     
    OPJ_OFF_T offset
     offset relative to the start of the codestream ( including the length parameter but not the marker itself) More...
     
    Byte2_t length
     marker segment length More...
     
    +

    Detailed Description

    +

    Marker parameters.

    +

    Field Documentation

    + +

    ◆ code

    + +
    +
    + + + + +
    Byte2_t marker_param::code
    +
    + +

    marker code

    + +

    Referenced by set_marker().

    + +
    +
    + +

    ◆ cs

    + +
    +
    + + + + +
    codestream_param_t marker_param::cs
    +
    + +

    corresponding codestream

    + +

    Referenced by fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), and set_marker().

    + +
    +
    + +

    ◆ length

    + +
    +
    + + + + +
    Byte2_t marker_param::length
    +
    + +

    marker segment length

    + +

    Referenced by set_marker().

    + +
    +
    + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T marker_param::offset
    +
    + +

    offset relative to the start of the codestream ( including the length parameter but not the marker itself)

    + +

    Referenced by fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), and set_marker().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmarkeridx__param.html b/build/doc/html/structmarkeridx__param.html new file mode 100644 index 000000000..43f0f63e7 --- /dev/null +++ b/build/doc/html/structmarkeridx__param.html @@ -0,0 +1,177 @@ + + + + + + + +OpenJPEG: markeridx_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    markeridx_param Struct Reference
    +
    +
    + +

    Marker index parameters. + More...

    + +

    #include <mhixbox_manager.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte2_t code
     marker code More...
     
    Byte2_t num_remain
     remining number of the same marker index segments listed immediately More...
     
    OPJ_OFF_T offset
     offset relative to the start of the More...
     
    Byte2_t length
     codestream ( including the length More...
     
    struct markeridx_paramnext
     pointer to the next markeridx More...
     
    +

    Detailed Description

    +

    Marker index parameters.

    +

    Field Documentation

    + +

    ◆ code

    + +
    +
    + + + + +
    Byte2_t markeridx_param::code
    +
    +
    + +

    ◆ length

    + +
    +
    + + + + +
    Byte2_t markeridx_param::length
    +
    + +

    codestream ( including the length

    +

    parameter but not the marker itself) marker segment length

    + +

    Referenced by gene_mhixbox(), print_markeridx(), print_mhixbox(), set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct markeridx_param* markeridx_param::next
    +
    + +

    pointer to the next markeridx

    + +

    Referenced by delete_mhixbox(), gene_mhixbox(), print_mhixbox(), and search_markeridx().

    + +
    +
    + +

    ◆ num_remain

    + +
    +
    + + + + +
    Byte2_t markeridx_param::num_remain
    +
    + +

    remining number of the same marker index segments listed immediately

    + +

    Referenced by gene_mhixbox(), print_markeridx(), and print_mhixbox().

    + +
    +
    + +

    ◆ offset

    + +
    +
    + + + + +
    OPJ_OFF_T markeridx_param::offset
    +
    + +

    offset relative to the start of the

    + +

    Referenced by gene_mhixbox(), print_markeridx(), print_mhixbox(), set_CODmkrdata(), and set_SIZmkrdata().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmessage__param.html b/build/doc/html/structmessage__param.html new file mode 100644 index 000000000..c957f9025 --- /dev/null +++ b/build/doc/html/structmessage__param.html @@ -0,0 +1,278 @@ + + + + + + + +OpenJPEG: message_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    message_param Struct Reference
    +
    +
    + +

    message parameters + More...

    + +

    #include <msgqueue_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BOOL last_byte
     if message contains the last byte of the data-bin More...
     
    Byte8_t in_class_id
     in-class identifier A.2.3 More...
     
    Byte8_t class_id
     class identifiers More...
     
    Byte8_t csn
     index of the codestream More...
     
    Byte8_t bin_offset
     offset of the data in this message from the start of the data-bin More...
     
    Byte8_t length
     message byte length More...
     
    Byte8_t aux
     
    OPJ_OFF_T res_offset
     offset in the resource More...
     
    placeholder_param_tphld
     placeholder pointer in index More...
     
    struct message_paramnext
     pointer to the next message More...
     
    +

    Detailed Description

    +

    message parameters

    +

    Field Documentation

    + +

    ◆ aux

    + + + +

    ◆ bin_offset

    + + + +

    ◆ class_id

    + + + +

    ◆ csn

    + + + +

    ◆ in_class_id

    + + + +

    ◆ last_byte

    + +
    +
    + + + + +
    OPJ_BOOL message_param::last_byte
    +
    +
    + +

    ◆ length

    + + + +

    ◆ next

    + + + +

    ◆ phld

    + + + +

    ◆ res_offset

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmetadata__param.html b/build/doc/html/structmetadata__param.html new file mode 100644 index 000000000..0d236f0c4 --- /dev/null +++ b/build/doc/html/structmetadata__param.html @@ -0,0 +1,176 @@ + + + + + + + +OpenJPEG: metadata_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    metadata_param Struct Reference
    +
    +
    + +

    metadata-bin parameters + More...

    + +

    #include <metadata_manager.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte8_t idx
     index number More...
     
    boxlist_param_tboxlist
     box list More...
     
    placeholderlist_param_tplaceholderlist
     placeholder box list More...
     
    boxcontents_param_tboxcontents
     box contens in case of no boxlist and placeholderlist More...
     
    struct metadata_paramnext
     pointer to the next metadata-bin More...
     
    +

    Detailed Description

    +

    metadata-bin parameters

    +

    Field Documentation

    + +

    ◆ boxcontents

    + +
    +
    + + + + +
    boxcontents_param_t* metadata_param::boxcontents
    +
    + +

    box contens in case of no boxlist and placeholderlist

    + +

    Referenced by enqueue_metadata(), gene_metadata(), handle_XMLreqMSG(), parse_metadata(), and print_metadata().

    + +
    +
    + +

    ◆ boxlist

    + +
    +
    + + + + +
    boxlist_param_t* metadata_param::boxlist
    +
    +
    + +

    ◆ idx

    + +
    +
    + + + + +
    Byte8_t metadata_param::idx
    +
    + +

    index number

    + +

    Referenced by gene_metadata(), print_metadata(), search_metadata(), and search_metadataidx().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct metadata_param* metadata_param::next
    +
    +
    + +

    ◆ placeholderlist

    + +
    +
    + + + + +
    placeholderlist_param_t* metadata_param::placeholderlist
    +
    + +

    placeholder box list

    + +

    Referenced by enqueue_metadata(), gene_metadata(), parse_metadata(), print_metadata(), and search_metadataidx().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmetadatalist__param.html b/build/doc/html/structmetadatalist__param.html new file mode 100644 index 000000000..f586766b7 --- /dev/null +++ b/build/doc/html/structmetadatalist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: metadatalist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    metadatalist_param Struct Reference
    +
    +
    + +

    metadata-bin list parameters + More...

    + +

    #include <metadata_manager.h>

    + + + + + + + + +

    +Data Fields

    metadata_param_tfirst
     first metadata-bin pointer of the list More...
     
    metadata_param_tlast
     last metadata-bin pointer of the list More...
     
    +

    Detailed Description

    +

    metadata-bin list parameters

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    metadata_param_t* metadatalist_param::first
    +
    + +

    first metadata-bin pointer of the list

    + +

    Referenced by gene_ihdrbox(), gene_metadatalist(), insert_metadata_into_list(), print_allmetadata(), search_metadata(), and search_metadataidx().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    metadata_param_t* metadatalist_param::last
    +
    + +

    last metadata-bin pointer of the list

    + +

    Referenced by gene_metadatalist(), handle_XMLreqMSG(), and insert_metadata_into_list().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmhixbox__param.html b/build/doc/html/structmhixbox__param.html new file mode 100644 index 000000000..e12d3646e --- /dev/null +++ b/build/doc/html/structmhixbox__param.html @@ -0,0 +1,115 @@ + + + + + + + +OpenJPEG: mhixbox_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    mhixbox_param Struct Reference
    +
    +
    + +

    header index table box parameters + More...

    + +

    #include <mhixbox_manager.h>

    + + + + + + + + +

    +Data Fields

    Byte8_t tlen
     length ( total length of the main More...
     
    markeridx_param_tfirst
     header or of the first tile-part header) More...
     
    +

    Detailed Description

    +

    header index table box parameters

    +

    I.3.2.4.3 Header Index Table box

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    markeridx_param_t* mhixbox_param::first
    +
    + +

    header or of the first tile-part header)

    +

    first marker index pointer of the list

    + +

    Referenced by gene_mhixbox(), print_mhixbox(), and search_markeridx().

    + +
    +
    + +

    ◆ tlen

    + +
    +
    + + + + +
    Byte8_t mhixbox_param::tlen
    +
    + +

    length ( total length of the main

    + +

    Referenced by enqueue_tileheader(), gene_mhixbox(), and print_mhixbox().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structmsgqueue__param.html b/build/doc/html/structmsgqueue__param.html new file mode 100644 index 000000000..f506cc0ff --- /dev/null +++ b/build/doc/html/structmsgqueue__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: msgqueue_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    msgqueue_param Struct Reference
    +
    +
    + +

    message queue parameters + More...

    + +

    #include <msgqueue_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    message_param_tfirst
     first message pointer of the list More...
     
    message_param_tlast
     last message pointer of the list More...
     
    OPJ_BOOL stateless
     if this is a stateless message queue More...
     
    cachemodel_param_tcachemodel
     reference cachemodel pointer More...
     
    +

    Detailed Description

    +

    message queue parameters

    +

    Field Documentation

    + +

    ◆ cachemodel

    + + + +

    ◆ first

    + + + +

    ◆ last

    + +
    +
    + + + + +
    message_param_t* msgqueue_param::last
    +
    +
    + +

    ◆ stateless

    + +
    +
    + + + + +
    OPJ_BOOL msgqueue_param::stateless
    +
    + +

    if this is a stateless message queue

    + +

    Referenced by gene_msgqueue().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__bio.html b/build/doc/html/structopj__bio.html new file mode 100644 index 000000000..431a4e0de --- /dev/null +++ b/build/doc/html/structopj__bio.html @@ -0,0 +1,177 @@ + + + + + + + +OpenJPEG: opj_bio Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_bio Struct Reference
    +
    +
    + +

    Individual bit input-output stream (BIO) + More...

    + +

    #include <bio.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BYTEstart
     pointer to the start of the buffer More...
     
    OPJ_BYTEend
     pointer to the end of the buffer More...
     
    OPJ_BYTEbp
     pointer to the present position in the buffer More...
     
    OPJ_UINT32 buf
     temporary place where each byte is read or written More...
     
    OPJ_UINT32 ct
     coder : number of bits free to write. More...
     
    +

    Detailed Description

    +

    Individual bit input-output stream (BIO)

    +

    Field Documentation

    + +

    ◆ bp

    + +
    +
    + + + + +
    OPJ_BYTE* opj_bio::bp
    +
    + +

    pointer to the present position in the buffer

    + +

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_numbytes().

    + +
    +
    + +

    ◆ buf

    + +
    +
    + + + + +
    OPJ_UINT32 opj_bio::buf
    +
    + +

    temporary place where each byte is read or written

    + +

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_getbit(), opj_bio_inalign(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_putbit().

    + +
    +
    + +

    ◆ ct

    + +
    +
    + + + + +
    OPJ_UINT32 opj_bio::ct
    +
    + +

    coder : number of bits free to write.

    +

    decoder : number of bits read

    + +

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_flush(), opj_bio_getbit(), opj_bio_inalign(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_putbit().

    + +
    +
    + +

    ◆ end

    + +
    +
    + + + + +
    OPJ_BYTE* opj_bio::end
    +
    + +

    pointer to the end of the buffer

    + +

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_init_dec(), and opj_bio_init_enc().

    + +
    +
    + +

    ◆ start

    + +
    +
    + + + + +
    OPJ_BYTE* opj_bio::start
    +
    + +

    pointer to the start of the buffer

    + +

    Referenced by opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_numbytes().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__codec__private.html b/build/doc/html/structopj__codec__private.html new file mode 100644 index 000000000..769de6d3e --- /dev/null +++ b/build/doc/html/structopj__codec__private.html @@ -0,0 +1,637 @@ + + + + + + + +OpenJPEG: opj_codec_private Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_codec_private Struct Reference
    +
    +
    + +

    Main codec handler used for compression or decompression. + More...

    + +

    #include <opj_codec.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    union {
       struct opj_decompression {
          OPJ_BOOL(*   opj_read_header )(struct opj_stream_private
    +         *cio, void *p_codec,
    +         opj_image_t **p_image, struct
    +         opj_event_mgr *p_manager)
     Main header reading function handler. More...
     
          OPJ_BOOL(*   opj_decode )(void *p_codec, struct
    +         opj_stream_private *p_cio,
    +         opj_image_t *p_image, struct
    +         opj_event_mgr *p_manager)
     Decoding function. More...
     
          OPJ_BOOL(*   opj_read_tile_header )(void *p_codec, OPJ_UINT32
    +         *p_tile_index, OPJ_UINT32
    +         *p_data_size, OPJ_INT32
    +         *p_tile_x0, OPJ_INT32
    +         *p_tile_y0, OPJ_INT32
    +         *p_tile_x1, OPJ_INT32
    +         *p_tile_y1, OPJ_UINT32
    +         *p_nb_comps, OPJ_BOOL
    +         *p_should_go_on, struct
    +         opj_stream_private *p_cio,
    +         struct opj_event_mgr
    +         *p_manager)
     FIXME DOC. More...
     
          OPJ_BOOL(*   opj_decode_tile_data )(void *p_codec, OPJ_UINT32
    +         p_tile_index, OPJ_BYTE *p_data,
    +         OPJ_UINT32 p_data_size, struct
    +         opj_stream_private *p_cio,
    +         struct opj_event_mgr
    +         *p_manager)
     FIXME DOC. More...
     
          OPJ_BOOL(*   opj_end_decompress )(void *p_codec, struct
    +         opj_stream_private *cio,
    +         struct opj_event_mgr
    +         *p_manager)
     Reading function used after codestream if necessary. More...
     
          void(*   opj_destroy )(void *p_codec)
     Codec destroy function handler. More...
     
          void(*   opj_setup_decoder )(void *p_codec,
    +         opj_dparameters_t *p_param)
     Setup decoder function handler. More...
     
          OPJ_BOOL(*   opj_set_decode_area )(void *p_codec, opj_image_t
    +         *p_image, OPJ_INT32 p_start_x,
    +         OPJ_INT32 p_end_x, OPJ_INT32
    +         p_start_y, OPJ_INT32 p_end_y,
    +         struct opj_event_mgr
    +         *p_manager)
     Set decode area function handler. More...
     
          OPJ_BOOL(*   opj_get_decoded_tile )(void *p_codec,
    +         opj_stream_private_t *p_cio,
    +         opj_image_t *p_image, struct
    +         opj_event_mgr *p_manager,
    +         OPJ_UINT32 tile_index)
     Get tile function. More...
     
          OPJ_BOOL(*   opj_set_decoded_resolution_factor )(void *p_codec, OPJ_UINT32
    +         res_factor, opj_event_mgr_t
    +         *p_manager)
     Set the decoded resolution factor. More...
     
          OPJ_BOOL(*   opj_set_decoded_components )(void *p_codec, OPJ_UINT32
    +         num_comps, const OPJ_UINT32
    +         *comps_indices,
    +         opj_event_mgr_t *p_manager)
     Set the decoded components. More...
     
       }   m_decompression
     
       struct opj_compression {
          OPJ_BOOL(*   opj_start_compress )(void *p_codec, struct
    +         opj_stream_private *cio,
    +         struct opj_image *p_image,
    +         struct opj_event_mgr
    +         *p_manager)
     
          OPJ_BOOL(*   opj_encode )(void *p_codec, struct
    +         opj_stream_private *p_cio,
    +         struct opj_event_mgr
    +         *p_manager)
     
          OPJ_BOOL(*   opj_write_tile )(void *p_codec, OPJ_UINT32
    +         p_tile_index, OPJ_BYTE *p_data,
    +         OPJ_UINT32 p_data_size, struct
    +         opj_stream_private *p_cio,
    +         struct opj_event_mgr
    +         *p_manager)
     
          OPJ_BOOL(*   opj_end_compress )(void *p_codec, struct
    +         opj_stream_private *p_cio,
    +         struct opj_event_mgr
    +         *p_manager)
     
          void(*   opj_destroy )(void *p_codec)
     
          OPJ_BOOL(*   opj_setup_encoder )(void *p_codec,
    +         opj_cparameters_t *p_param,
    +         struct opj_image *p_image,
    +         struct opj_event_mgr
    +         *p_manager)
     
          OPJ_BOOL(*   opj_encoder_set_extra_options )(void *p_codec, const char
    +         *const *p_options, struct
    +         opj_event_mgr *p_manager)
     
       }   m_compression
     
    m_codec_data
     FIXME DOC. More...
     
    void * m_codec
     FIXME DOC. More...
     
    opj_event_mgr_t m_event_mgr
     Event handler. More...
     
    OPJ_BOOL is_decompressor
     Flag to indicate if the codec is used to decode or encode. More...
     
    void(* opj_dump_codec )(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     
    opj_codestream_info_v2_t *(* opj_get_codec_info )(void *p_codec)
     
    opj_codestream_index_t *(* opj_get_codec_index )(void *p_codec)
     
    OPJ_BOOL(* opj_set_threads )(void *p_codec, OPJ_UINT32 num_threads)
     Set number of threads. More...
     
    +

    Detailed Description

    +

    Main codec handler used for compression or decompression.

    +

    Field Documentation

    + +

    ◆ is_decompressor

    + + + +

    ◆ m_codec

    + + + +

    ◆ m_codec_data

    + + + +

    ◆ m_compression

    + +
    +
    + + + + +
    struct { ... } ::opj_compression opj_codec_private::m_compression
    +
    +
    + +

    ◆ m_decompression

    + + + +

    ◆ m_event_mgr

    + + + +

    ◆ opj_decode

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_decode) (void *p_codec, struct opj_stream_private *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager)
    +
    + +

    Decoding function.

    + +
    +
    + +

    ◆ opj_decode_tile_data

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_decode_tile_data) (void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_destroy

    + +
    +
    + + + + +
    void(* opj_codec_private::opj_destroy) (void *p_codec)
    +
    + +

    Codec destroy function handler.

    + +
    +
    + +

    ◆ opj_dump_codec

    + +
    +
    + + + + +
    void(* opj_codec_private::opj_dump_codec) (void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    +
    + +

    Referenced by opj_create_decompress(), and opj_dump_codec().

    + +
    +
    + +

    ◆ opj_encode

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_encode) (void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    +
    + +
    +
    + +

    ◆ opj_encoder_set_extra_options

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_encoder_set_extra_options) (void *p_codec, const char *const *p_options, struct opj_event_mgr *p_manager)
    +
    + +
    +
    + +

    ◆ opj_end_compress

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_end_compress) (void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    +
    + +
    +
    + +

    ◆ opj_end_decompress

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_end_decompress) (void *p_codec, struct opj_stream_private *cio, struct opj_event_mgr *p_manager)
    +
    + +

    Reading function used after codestream if necessary.

    + +
    +
    + +

    ◆ opj_get_codec_index

    + +
    +
    + + + + +
    opj_codestream_index_t*(* opj_codec_private::opj_get_codec_index) (void *p_codec)
    +
    + +

    Referenced by opj_create_decompress(), and opj_get_cstr_index().

    + +
    +
    + +

    ◆ opj_get_codec_info

    + +
    +
    + + + + +
    opj_codestream_info_v2_t*(* opj_codec_private::opj_get_codec_info) (void *p_codec)
    +
    + +

    Referenced by opj_create_decompress(), and opj_get_cstr_info().

    + +
    +
    + +

    ◆ opj_get_decoded_tile

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_get_decoded_tile) (void *p_codec, opj_stream_private_t *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager, OPJ_UINT32 tile_index)
    +
    + +

    Get tile function.

    + +
    +
    + +

    ◆ opj_read_header

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_read_header) (struct opj_stream_private *cio, void *p_codec, opj_image_t **p_image, struct opj_event_mgr *p_manager)
    +
    + +

    Main header reading function handler.

    + +
    +
    + +

    ◆ opj_read_tile_header

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_read_tile_header) (void *p_codec, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_set_decode_area

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_set_decode_area) (void *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_end_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_y, struct opj_event_mgr *p_manager)
    +
    + +

    Set decode area function handler.

    + +
    +
    + +

    ◆ opj_set_decoded_components

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_set_decoded_components) (void *p_codec, OPJ_UINT32 num_comps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    +
    + +

    Set the decoded components.

    + +
    +
    + +

    ◆ opj_set_decoded_resolution_factor

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_set_decoded_resolution_factor) (void *p_codec, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    +
    + +

    Set the decoded resolution factor.

    + +
    +
    + +

    ◆ opj_set_threads

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_set_threads) (void *p_codec, OPJ_UINT32 num_threads)
    +
    + +

    Set number of threads.

    + +

    Referenced by opj_codec_set_threads(), and opj_create_decompress().

    + +
    +
    + +

    ◆ opj_setup_decoder

    + +
    +
    + + + + +
    void(* opj_codec_private::opj_setup_decoder) (void *p_codec, opj_dparameters_t *p_param)
    +
    + +

    Setup decoder function handler.

    + +
    +
    + +

    ◆ opj_setup_encoder

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_setup_encoder) (void *p_codec, opj_cparameters_t *p_param, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    +
    + +
    +
    + +

    ◆ opj_start_compress

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_start_compress) (void *p_codec, struct opj_stream_private *cio, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    +
    + +
    +
    + +

    ◆ opj_write_tile

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_codec_private::opj_write_tile) (void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__codestream__index.html b/build/doc/html/structopj__codestream__index.html new file mode 100644 index 000000000..5910e43d2 --- /dev/null +++ b/build/doc/html/structopj__codestream__index.html @@ -0,0 +1,233 @@ + + + + + + + +OpenJPEG: opj_codestream_index Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_codestream_index Struct Reference
    +
    +
    + +

    Index structure of the codestream (FIXME should be expand and enhance) + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_OFF_T main_head_start
     main header start position (SOC position) More...
     
    OPJ_OFF_T main_head_end
     main header end position (first SOT position) More...
     
    OPJ_UINT64 codestream_size
     codestream's size More...
     
    OPJ_UINT32 marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    OPJ_UINT32 maxmarknum
     actual size of markers array More...
     
    OPJ_UINT32 nb_of_tiles
     
    opj_tile_index_ttile_index
     
    +

    Detailed Description

    +

    Index structure of the codestream (FIXME should be expand and enhance)

    +

    Field Documentation

    + +

    ◆ codestream_size

    + +
    +
    + + + + +
    OPJ_UINT64 opj_codestream_index::codestream_size
    +
    + +

    codestream's size

    + +

    Referenced by j2k_get_cstr_index(), and opj_j2k_write_epc().

    + +
    +
    + +

    ◆ main_head_end

    + +
    +
    + + + + +
    OPJ_OFF_T opj_codestream_index::main_head_end
    +
    + +

    main header end position (first SOT position)

    + +

    Referenced by j2k_get_cstr_index(), opj_j2k_decode_one_tile(), opj_j2k_dump_MH_index(), opj_j2k_get_end_header(), and opj_j2k_read_header_procedure().

    + +
    +
    + +

    ◆ main_head_start

    + +
    +
    + + + + +
    OPJ_OFF_T opj_codestream_index::main_head_start
    +
    + +

    main header start position (SOC position)

    + +

    Referenced by j2k_get_cstr_index(), opj_j2k_dump_MH_index(), opj_j2k_read_soc(), and opj_j2k_write_epc().

    + +
    +
    + +

    ◆ marker

    + +
    +
    + + + + +
    opj_marker_info_t* opj_codestream_index::marker
    +
    +
    + +

    ◆ marknum

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_index::marknum
    +
    +
    + +

    ◆ maxmarknum

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_index::maxmarknum
    +
    + +

    actual size of markers array

    + +

    Referenced by opj_j2k_add_mhmarker(), and opj_j2k_create_cstr_index().

    + +
    +
    + +

    ◆ nb_of_tiles

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_index::nb_of_tiles
    +
    +
    + +

    ◆ tile_index

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__codestream__info.html b/build/doc/html/structopj__codestream__info.html new file mode 100644 index 000000000..831b68f8b --- /dev/null +++ b/build/doc/html/structopj__codestream__info.html @@ -0,0 +1,513 @@ + + + + + + + +OpenJPEG: opj_codestream_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_codestream_info Struct Reference
    +
    +
    + +

    Index structure of the codestream. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    double D_max
     maximum distortion reduction on the whole image (add for Marcela) More...
     
    int packno
     packet number More...
     
    int index_write
     writing the packet in the index with t2_encode_packets More...
     
    int image_w
     image width More...
     
    int image_h
     image height More...
     
    OPJ_PROG_ORDER prog
     progression order More...
     
    int tile_x
     tile size in x More...
     
    int tile_y
     tile size in y More...
     
    int tile_Ox
     
    int tile_Oy
     
    int tw
     number of tiles in X More...
     
    int th
     number of tiles in Y More...
     
    int numcomps
     component numbers More...
     
    int numlayers
     number of layer More...
     
    int * numdecompos
     number of decomposition for each component More...
     
    int marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    int maxmarknum
     actual size of markers array More...
     
    int main_head_start
     main header position More...
     
    int main_head_end
     main header position More...
     
    int codestream_size
     codestream's size More...
     
    opj_tile_info_ttile
     information regarding tiles inside image More...
     
    +

    Detailed Description

    +

    Index structure of the codestream.

    +

    Field Documentation

    + +

    ◆ codestream_size

    + +
    +
    + + + + +
    int opj_codestream_info::codestream_size
    +
    + +

    codestream's size

    + +

    Referenced by opj_write_cidx().

    + +
    +
    + +

    ◆ D_max

    + +
    +
    + + + + +
    double opj_codestream_info::D_max
    +
    + +

    maximum distortion reduction on the whole image (add for Marcela)

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ image_h

    + +
    +
    + + + + +
    int opj_codestream_info::image_h
    +
    + +

    image height

    + +
    +
    + +

    ◆ image_w

    + +
    +
    + + + + +
    int opj_codestream_info::image_w
    +
    + +

    image width

    + +
    +
    + +

    ◆ index_write

    + +
    +
    + + + + +
    int opj_codestream_info::index_write
    +
    + +

    writing the packet in the index with t2_encode_packets

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_encode_packets(), opj_tcd_encode_tile(), and opj_tcd_rate_allocate_encode().

    + +
    +
    + +

    ◆ main_head_end

    + +
    +
    + + + + +
    int opj_codestream_info::main_head_end
    +
    + +

    main header position

    + +

    Referenced by opj_write_mainmhix().

    + +
    +
    + +

    ◆ main_head_start

    + +
    +
    + + + + +
    int opj_codestream_info::main_head_start
    +
    + +

    main header position

    + +

    Referenced by opj_write_mainmhix().

    + +
    +
    + +

    ◆ marker

    + +
    +
    + + + + +
    opj_marker_info_t* opj_codestream_info::marker
    +
    + +

    list of markers

    + +

    Referenced by opj_write_cidx(), and opj_write_mainmhix().

    + +
    +
    + +

    ◆ marknum

    + +
    +
    + + + + +
    int opj_codestream_info::marknum
    +
    + +

    number of markers

    + +

    Referenced by opj_write_cidx(), and opj_write_mainmhix().

    + +
    +
    + +

    ◆ maxmarknum

    + +
    +
    + + + + +
    int opj_codestream_info::maxmarknum
    +
    + +

    actual size of markers array

    + +
    +
    + +

    ◆ numcomps

    + +
    +
    + + + + +
    int opj_codestream_info::numcomps
    +
    +
    + +

    ◆ numdecompos

    + +
    +
    + + + + +
    int* opj_codestream_info::numdecompos
    +
    + +

    number of decomposition for each component

    + +

    Referenced by opj_write_phixfaix(), opj_write_ppixfaix(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ numlayers

    + +
    +
    + + + + +
    int opj_codestream_info::numlayers
    +
    + +

    number of layer

    + +

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ packno

    + +
    +
    + + + + +
    int opj_codestream_info::packno
    +
    + +

    packet number

    + +

    Referenced by opj_j2k_write_sod(), opj_t2_encode_packet(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ prog

    + +
    +
    + + + + +
    OPJ_PROG_ORDER opj_codestream_info::prog
    +
    + +

    progression order

    + +

    Referenced by opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ th

    + +
    +
    + + + + +
    int opj_codestream_info::th
    +
    +
    + +

    ◆ tile

    + + + +

    ◆ tile_Ox

    + +
    +
    + + + + +
    int opj_codestream_info::tile_Ox
    +
    + +
    +
    + +

    ◆ tile_Oy

    + +
    +
    + + + + +
    int opj_codestream_info::tile_Oy
    +
    + +
    +
    + +

    ◆ tile_x

    + +
    +
    + + + + +
    int opj_codestream_info::tile_x
    +
    + +

    tile size in x

    + +
    +
    + +

    ◆ tile_y

    + +
    +
    + + + + +
    int opj_codestream_info::tile_y
    +
    + +

    tile size in y

    + +
    +
    + +

    ◆ tw

    + +
    +
    + + + + +
    int opj_codestream_info::tw
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__codestream__info__v2.html b/build/doc/html/structopj__codestream__info__v2.html new file mode 100644 index 000000000..76816f1ff --- /dev/null +++ b/build/doc/html/structopj__codestream__info__v2.html @@ -0,0 +1,260 @@ + + + + + + + +OpenJPEG: opj_codestream_info_v2 Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_codestream_info_v2 Struct Reference
    +
    +
    + +

    Information structure about the codestream (FIXME should be expand and enhance) + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 tx0
     tile origin in x = XTOsiz More...
     
    OPJ_UINT32 ty0
     tile origin in y = YTOsiz More...
     
    OPJ_UINT32 tdx
     tile size in x = XTsiz More...
     
    OPJ_UINT32 tdy
     tile size in y = YTsiz More...
     
    OPJ_UINT32 tw
     number of tiles in X More...
     
    OPJ_UINT32 th
     number of tiles in Y More...
     
    OPJ_UINT32 nbcomps
     number of components More...
     
    opj_tile_info_v2_t m_default_tile_info
     Default information regarding tiles inside image. More...
     
    opj_tile_info_v2_ttile_info
     information regarding tiles inside image More...
     
    +

    Detailed Description

    +

    Information structure about the codestream (FIXME should be expand and enhance)

    +

    Field Documentation

    + +

    ◆ m_default_tile_info

    + +
    +
    + + + + +
    opj_tile_info_v2_t opj_codestream_info_v2::m_default_tile_info
    +
    + +

    Default information regarding tiles inside image.

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ nbcomps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::nbcomps
    +
    + +

    number of components

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tdx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::tdx
    +
    + +

    tile size in x = XTsiz

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tdy

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::tdy
    +
    + +

    tile size in y = YTsiz

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ th

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::th
    +
    + +

    number of tiles in Y

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tile_info

    + +
    +
    + + + + +
    opj_tile_info_v2_t* opj_codestream_info_v2::tile_info
    +
    + +

    information regarding tiles inside image

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tw

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::tw
    +
    + +

    number of tiles in X

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tx0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::tx0
    +
    + +

    tile origin in x = XTOsiz

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ ty0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_codestream_info_v2::ty0
    +
    + +

    tile origin in y = YTOsiz

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__cp.html b/build/doc/html/structopj__cp.html new file mode 100644 index 000000000..f28307607 --- /dev/null +++ b/build/doc/html/structopj__cp.html @@ -0,0 +1,1018 @@ + + + + + + + +OpenJPEG: opj_cp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_cp Struct Reference
    +
    +
    + +

    Coding parameters. + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT16 rsiz
     Size of the image in bits. More...
     
    OPJ_UINT32 tx0
     XTOsiz. More...
     
    OPJ_UINT32 ty0
     YTOsiz. More...
     
    OPJ_UINT32 tdx
     XTsiz. More...
     
    OPJ_UINT32 tdy
     YTsiz. More...
     
    OPJ_CHARcomment
     comment More...
     
    OPJ_UINT32 tw
     number of tiles in width More...
     
    OPJ_UINT32 th
     number of tiles in height More...
     
    OPJ_UINT32 ppm_markers_count
     number of ppm markers (reserved size) More...
     
    opj_ppxppm_markers
     ppm markers data (table indexed by Zppm) More...
     
    OPJ_BYTEppm_data
     packet header store there for future use in t2_decode_packet More...
     
    OPJ_UINT32 ppm_len
     size of the ppm_data More...
     
    OPJ_UINT32 ppm_data_read
     size of the ppm_data More...
     
    OPJ_BYTEppm_data_current
     
    OPJ_BYTEppm_buffer
     packet header storage original buffer More...
     
    OPJ_BYTEppm_data_first
     pointer remaining on the first byte of the first header if ppm is used More...
     
    OPJ_UINT32 ppm_data_size
     Number of bytes actually stored inside the ppm_data. More...
     
    OPJ_INT32 ppm_store
     use in case of multiple marker PPM (number of info already store) More...
     
    OPJ_INT32 ppm_previous
     use in case of multiple marker PPM (case on non-finished previous info) More...
     
    opj_tcp_ttcps
     tile coding parameters More...
     
    union {
       opj_decoding_param_t   m_dec
     
       opj_encoding_param_t   m_enc
     
    m_specific_param
     
    OPJ_BOOL epc_on
     enables writing of EPC in MH, thus activating JPWL More...
     
    OPJ_BOOL epb_on
     enables writing of EPB, in case of activated JPWL More...
     
    OPJ_BOOL esd_on
     enables writing of ESD, in case of activated JPWL More...
     
    OPJ_BOOL info_on
     enables writing of informative techniques of ESD, in case of activated JPWL More...
     
    OPJ_BOOL red_on
     enables writing of RED, in case of activated JPWL More...
     
    int hprot_MH
     error protection method for MH (0,1,16,32,37-128) More...
     
    int hprot_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of header protection specification (>=0) More...
     
    int hprot_TPH [JPWL_MAX_NO_TILESPECS]
     error protection methods for TPHs (0,1,16,32,37-128) More...
     
    int pprot_tileno [JPWL_MAX_NO_PACKSPECS]
     tile number of packet protection specification (>=0) More...
     
    int pprot_packno [JPWL_MAX_NO_PACKSPECS]
     packet number of packet protection specification (>=0) More...
     
    int pprot [JPWL_MAX_NO_PACKSPECS]
     error protection methods for packets (0,1,16,32,37-128) More...
     
    int sens_size
     enables writing of ESD, (0/2/4 bytes) More...
     
    int sens_addr
     sensitivity addressing size (0=auto/2/4 bytes) More...
     
    int sens_range
     sensitivity range (0-3) More...
     
    int sens_MH
     sensitivity method for MH (-1,0-7) More...
     
    int sens_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of sensitivity specification (>=0) More...
     
    int sens_TPH [JPWL_MAX_NO_TILESPECS]
     sensitivity methods for TPHs (-1,0-7) More...
     
    OPJ_BOOL correct
     enables JPWL correction at the decoder More...
     
    int exp_comps
     expected number of components at the decoder More...
     
    OPJ_UINT32 max_tiles
     maximum number of tiles at the decoder More...
     
    OPJ_BITFIELD ppm: 1
     if ppm == 1 --> there was a PPM marker More...
     
    OPJ_BITFIELD m_is_decoder: 1
     tells if the parameter is a coding or decoding one More...
     
    OPJ_BITFIELD allow_different_bit_depth_sign: 1
     whether different bit depth or sign per component is allowed. More...
     
    +

    Detailed Description

    +

    Coding parameters.

    +

    Field Documentation

    + +

    ◆ allow_different_bit_depth_sign

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_cp::allow_different_bit_depth_sign
    +
    + +

    whether different bit depth or sign per component is allowed.

    +

    Decoder only for ow

    + +

    Referenced by opj_j2k_create_decompress(), opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    + +
    +
    + +

    ◆ comment

    + +
    +
    + + + + +
    OPJ_CHAR* opj_cp::comment
    +
    +
    + +

    ◆ correct

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::correct
    +
    +
    + +

    ◆ epb_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::epb_on
    +
    + +

    enables writing of EPB, in case of activated JPWL

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ epc_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::epc_on
    +
    + +

    enables writing of EPC in MH, thus activating JPWL

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ esd_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::esd_on
    +
    + +

    enables writing of ESD, in case of activated JPWL

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ exp_comps

    + +
    +
    + + + + +
    int opj_cp::exp_comps
    +
    + +

    expected number of components at the decoder

    + +

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    + +
    +
    + +

    ◆ hprot_MH

    + +
    +
    + + + + +
    int opj_cp::hprot_MH
    +
    + +

    error protection method for MH (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ hprot_TPH

    + +
    +
    + + + + +
    int opj_cp::hprot_TPH[JPWL_MAX_NO_TILESPECS]
    +
    + +

    error protection methods for TPHs (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ hprot_TPH_tileno

    + +
    +
    + + + + +
    int opj_cp::hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    +
    + +

    tile number of header protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ info_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::info_on
    +
    + +

    enables writing of informative techniques of ESD, in case of activated JPWL

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ m_dec

    + + + +

    ◆ m_enc

    + + + +

    ◆ m_is_decoder

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_cp::m_is_decoder
    +
    + +

    tells if the parameter is a coding or decoding one

    + +

    Referenced by opj_j2k_cp_destroy(), opj_j2k_create_compress(), and opj_j2k_create_decompress().

    + +
    +
    + +

    ◆ m_specific_param

    + + + +

    ◆ max_tiles

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cp::max_tiles
    +
    + +

    maximum number of tiles at the decoder

    + +

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    + +
    +
    + +

    ◆ ppm

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_cp::ppm
    +
    + +

    if ppm == 1 --> there was a PPM marker

    + +

    Referenced by opj_j2k_merge_ppm(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppm_buffer

    + +
    +
    + + + + +
    OPJ_BYTE* opj_cp::ppm_buffer
    +
    + +

    packet header storage original buffer

    + +

    Referenced by opj_j2k_cp_destroy(), and opj_j2k_merge_ppm().

    + +
    +
    + +

    ◆ ppm_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_cp::ppm_data
    +
    + +

    packet header store there for future use in t2_decode_packet

    + +

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppm_data_current

    + +
    +
    + + + + +
    OPJ_BYTE* opj_cp::ppm_data_current
    +
    + +
    +
    + +

    ◆ ppm_data_first

    + +
    +
    + + + + +
    OPJ_BYTE* opj_cp::ppm_data_first
    +
    + +

    pointer remaining on the first byte of the first header if ppm is used

    + +
    +
    + +

    ◆ ppm_data_read

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cp::ppm_data_read
    +
    + +

    size of the ppm_data

    + +
    +
    + +

    ◆ ppm_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cp::ppm_data_size
    +
    + +

    Number of bytes actually stored inside the ppm_data.

    + +

    Referenced by opj_j2k_merge_ppm().

    + +
    +
    + +

    ◆ ppm_len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cp::ppm_len
    +
    + +

    size of the ppm_data

    + +

    Referenced by opj_j2k_merge_ppm(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppm_markers

    + +
    +
    + + + + +
    opj_ppx* opj_cp::ppm_markers
    +
    + +

    ppm markers data (table indexed by Zppm)

    + +

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_j2k_read_ppm().

    + +
    +
    + +

    ◆ ppm_markers_count

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cp::ppm_markers_count
    +
    + +

    number of ppm markers (reserved size)

    + +

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_j2k_read_ppm().

    + +
    +
    + +

    ◆ ppm_previous

    + +
    +
    + + + + +
    OPJ_INT32 opj_cp::ppm_previous
    +
    + +

    use in case of multiple marker PPM (case on non-finished previous info)

    + +
    +
    + +

    ◆ ppm_store

    + +
    +
    + + + + +
    OPJ_INT32 opj_cp::ppm_store
    +
    + +

    use in case of multiple marker PPM (number of info already store)

    + +
    +
    + +

    ◆ pprot

    + +
    +
    + + + + +
    int opj_cp::pprot[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    error protection methods for packets (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ pprot_packno

    + +
    +
    + + + + +
    int opj_cp::pprot_packno[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    packet number of packet protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ pprot_tileno

    + +
    +
    + + + + +
    int opj_cp::pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    tile number of packet protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ red_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cp::red_on
    +
    + +

    enables writing of RED, in case of activated JPWL

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ rsiz

    + + + +

    ◆ sens_addr

    + +
    +
    + + + + +
    int opj_cp::sens_addr
    +
    + +

    sensitivity addressing size (0=auto/2/4 bytes)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ sens_MH

    + +
    +
    + + + + +
    int opj_cp::sens_MH
    +
    + +

    sensitivity method for MH (-1,0-7)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ sens_range

    + +
    +
    + + + + +
    int opj_cp::sens_range
    +
    + +

    sensitivity range (0-3)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ sens_size

    + +
    +
    + + + + +
    int opj_cp::sens_size
    +
    + +

    enables writing of ESD, (0/2/4 bytes)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ sens_TPH

    + +
    +
    + + + + +
    int opj_cp::sens_TPH[JPWL_MAX_NO_TILESPECS]
    +
    + +

    sensitivity methods for TPHs (-1,0-7)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ sens_TPH_tileno

    + +
    +
    + + + + +
    int opj_cp::sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    +
    + +

    tile number of sensitivity specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ tcps

    + +
    +
    + + + + +
    opj_tcp_t* opj_cp::tcps
    +
    + +

    tile coding parameters

    + +

    Referenced by j2k_dump(), opj_get_all_encoding_parameters(), opj_get_encoding_packet_count(), opj_get_encoding_parameters(), opj_j2k_calculate_tp(), opj_j2k_compare_coc(), opj_j2k_compare_SPCod_SPCoc(), opj_j2k_compare_SQcd_SQcc(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_cp_destroy(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encoding_validation(), opj_j2k_get_max_poc_size(), opj_j2k_get_max_toc_size(), opj_j2k_get_num_tp(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_mct_validation(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_ppt(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_set_decode_area(), opj_j2k_setup_encoder(), opj_j2k_update_rates(), opj_j2k_write_all_tile_parts(), opj_j2k_write_coc_in_memory(), opj_j2k_write_cod(), opj_j2k_write_first_tile_part(), opj_j2k_write_mco(), opj_j2k_write_mct_data_group(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_rgn(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_pi_check_next_level(), opj_pi_create(), opj_pi_create_decode(), opj_pi_create_encode(), opj_pi_initialise_encode(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_pi_update_encoding_parameters(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ tdx

    + + + +

    ◆ tdy

    + + + +

    ◆ th

    + + + +

    ◆ tw

    + + + +

    ◆ tx0

    + + + +

    ◆ ty0

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__cparameters.html b/build/doc/html/structopj__cparameters.html new file mode 100644 index 000000000..31433f121 --- /dev/null +++ b/build/doc/html/structopj__cparameters.html @@ -0,0 +1,1328 @@ + + + + + + + +OpenJPEG: opj_cparameters Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_cparameters Struct Reference
    +
    +
    + +

    Compression parameters. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BOOL tile_size_on
     size of tile: tile_size_on = false (not in argument) or = true (in argument) More...
     
    int cp_tx0
     XTOsiz. More...
     
    int cp_ty0
     YTOsiz. More...
     
    int cp_tdx
     XTsiz. More...
     
    int cp_tdy
     YTsiz. More...
     
    int cp_disto_alloc
     allocation by rate/distortion More...
     
    int cp_fixed_alloc
     allocation by fixed layer More...
     
    int cp_fixed_quality
     add fixed_quality More...
     
    int * cp_matrice
     fixed layer More...
     
    char * cp_comment
     comment for coding More...
     
    int csty
     csty : coding style More...
     
    OPJ_PROG_ORDER prog_order
     progression order (default OPJ_LRCP) More...
     
    opj_poc_t POC [32]
     progression order changes More...
     
    OPJ_UINT32 numpocs
     number of progression order changes (POC), default to 0 More...
     
    int tcp_numlayers
     number of layers More...
     
    float tcp_rates [100]
     rates of layers - might be subsequently limited by the max_cs_size field. More...
     
    float tcp_distoratio [100]
     different psnr for successive layers. More...
     
    int numresolution
     number of resolutions More...
     
    int cblockw_init
     initial code block width, default to 64 More...
     
    int cblockh_init
     initial code block height, default to 64 More...
     
    int mode
     mode switch (cblk_style) More...
     
    int irreversible
     1 : use the irreversible DWT 9-7, 0 : use lossless compression (default) More...
     
    int roi_compno
     region of interest: affected component in [0..3], -1 means no ROI More...
     
    int roi_shift
     region of interest: upshift value More...
     
    int res_spec
     
    int prcw_init [OPJ_J2K_MAXRLVLS]
     initial precinct width More...
     
    int prch_init [OPJ_J2K_MAXRLVLS]
     initial precinct height More...
     
    command line encoder parameters (not used inside the library)
    char infile [OPJ_PATH_LEN]
     input file name More...
     
    char outfile [OPJ_PATH_LEN]
     output file name More...
     
    int index_on
     DEPRECATED. More...
     
    char index [OPJ_PATH_LEN]
     DEPRECATED. More...
     
    int image_offset_x0
     subimage encoding: origin image offset in x direction More...
     
    int image_offset_y0
     subimage encoding: origin image offset in y direction More...
     
    int subsampling_dx
     subsampling value for dx More...
     
    int subsampling_dy
     subsampling value for dy More...
     
    int decod_format
     input file format 0: PGX, 1: PxM, 2: BMP 3:TIF More...
     
    int cod_format
     output file format 0: J2K, 1: JP2, 2: JPT More...
     
    JPWL encoding parameters
    OPJ_BOOL jpwl_epc_on
     enables writing of EPC in MH, thus activating JPWL More...
     
    int jpwl_hprot_MH
     error protection method for MH (0,1,16,32,37-128) More...
     
    int jpwl_hprot_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of header protection specification (>=0) More...
     
    int jpwl_hprot_TPH [JPWL_MAX_NO_TILESPECS]
     error protection methods for TPHs (0,1,16,32,37-128) More...
     
    int jpwl_pprot_tileno [JPWL_MAX_NO_PACKSPECS]
     tile number of packet protection specification (>=0) More...
     
    int jpwl_pprot_packno [JPWL_MAX_NO_PACKSPECS]
     packet number of packet protection specification (>=0) More...
     
    int jpwl_pprot [JPWL_MAX_NO_PACKSPECS]
     error protection methods for packets (0,1,16,32,37-128) More...
     
    int jpwl_sens_size
     enables writing of ESD, (0=no/1/2 bytes) More...
     
    int jpwl_sens_addr
     sensitivity addressing size (0=auto/2/4 bytes) More...
     
    int jpwl_sens_range
     sensitivity range (0-3) More...
     
    int jpwl_sens_MH
     sensitivity method for MH (-1=no,0-7) More...
     
    int jpwl_sens_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of sensitivity specification (>=0) More...
     
    int jpwl_sens_TPH [JPWL_MAX_NO_TILESPECS]
     sensitivity methods for TPHs (-1=no,0-7) More...
     
    OPJ_CINEMA_MODE cp_cinema
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not compliant, 1-compliant. More...
     
    int max_comp_size
     Maximum size (in bytes) for each component. More...
     
    OPJ_RSIZ_CAPABILITIES cp_rsiz
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name. More...
     
    char tp_on
     Tile part generation. More...
     
    char tp_flag
     Flag for Tile part generation. More...
     
    char tcp_mct
     MCT (multiple component transform) More...
     
    OPJ_BOOL jpip_on
     Enable JPIP indexing. More...
     
    void * mct_data
     Naive implementation of MCT restricted to a single reversible array based encoding without offset concerning all the components. More...
     
    int max_cs_size
     Maximum size (in bytes) for the whole codestream. More...
     
    OPJ_UINT16 rsiz
     RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values. More...
     
    +

    Detailed Description

    +

    Compression parameters.

    +

    Field Documentation

    + +

    ◆ cblockh_init

    + +
    +
    + + + + +
    int opj_cparameters::cblockh_init
    +
    +
    + +

    ◆ cblockw_init

    + +
    +
    + + + + +
    int opj_cparameters::cblockw_init
    +
    +
    + +

    ◆ cod_format

    + +
    +
    + + + + +
    int opj_cparameters::cod_format
    +
    + +

    output file format 0: J2K, 1: JP2, 2: JPT

    + +

    Referenced by opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_cinema

    + +
    +
    + + + + +
    OPJ_CINEMA_MODE opj_cparameters::cp_cinema
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not compliant, 1-compliant.

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_comment

    + +
    +
    + + + + +
    char* opj_cparameters::cp_comment
    +
    + +

    comment for coding

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ cp_disto_alloc

    + +
    +
    + + + + +
    int opj_cparameters::cp_disto_alloc
    +
    + +

    allocation by rate/distortion

    + +

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_fixed_alloc

    + +
    +
    + + + + +
    int opj_cparameters::cp_fixed_alloc
    +
    + +

    allocation by fixed layer

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_fixed_quality

    + +
    +
    + + + + +
    int opj_cparameters::cp_fixed_quality
    +
    + +

    add fixed_quality

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_matrice

    + +
    +
    + + + + +
    int* opj_cparameters::cp_matrice
    +
    + +

    fixed layer

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ cp_rsiz

    + +
    +
    + + + + +
    OPJ_RSIZ_CAPABILITIES opj_cparameters::cp_rsiz
    +
    + +

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ cp_tdx

    + +
    +
    + + + + +
    int opj_cparameters::cp_tdx
    +
    +
    + +

    ◆ cp_tdy

    + +
    +
    + + + + +
    int opj_cparameters::cp_tdy
    +
    +
    + +

    ◆ cp_tx0

    + +
    +
    + + + + +
    int opj_cparameters::cp_tx0
    +
    +
    + +

    ◆ cp_ty0

    + +
    +
    + + + + +
    int opj_cparameters::cp_ty0
    +
    +
    + +

    ◆ csty

    + +
    +
    + + + + +
    int opj_cparameters::csty
    +
    +
    + +

    ◆ decod_format

    + +
    +
    + + + + +
    int opj_cparameters::decod_format
    +
    + +

    input file format 0: PGX, 1: PxM, 2: BMP 3:TIF

    + +

    Referenced by opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ image_offset_x0

    + +
    +
    + + + + +
    int opj_cparameters::image_offset_x0
    +
    + +

    subimage encoding: origin image offset in x direction

    + +

    Referenced by opj_j2k_set_cinema_parameters().

    + +
    +
    + +

    ◆ image_offset_y0

    + +
    +
    + + + + +
    int opj_cparameters::image_offset_y0
    +
    + +

    subimage encoding: origin image offset in y direction

    + +

    Referenced by opj_j2k_set_cinema_parameters().

    + +
    +
    + +

    ◆ index

    + +
    +
    + + + + +
    char opj_cparameters::index[OPJ_PATH_LEN]
    +
    + +

    DEPRECATED.

    +

    Index generation is now handeld with the opj_encode_with_info() function. Set to NULL

    + +
    +
    + +

    ◆ index_on

    + +
    +
    + + + + +
    int opj_cparameters::index_on
    +
    + +

    DEPRECATED.

    +

    Index generation is now handeld with the opj_encode_with_info() function. Set to NULL

    + +
    +
    + +

    ◆ infile

    + +
    +
    + + + + +
    char opj_cparameters::infile[OPJ_PATH_LEN]
    +
    + +

    input file name

    + +
    +
    + +

    ◆ irreversible

    + +
    +
    + + + + +
    int opj_cparameters::irreversible
    +
    + +

    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)

    + +

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_encoder(), and opj_set_MCT().

    + +
    +
    + +

    ◆ jpip_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cparameters::jpip_on
    +
    + +

    Enable JPIP indexing.

    + +

    Referenced by opj_jp2_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_epc_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cparameters::jpwl_epc_on
    +
    + +

    enables writing of EPC in MH, thus activating JPWL

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_hprot_MH

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_hprot_MH
    +
    + +

    error protection method for MH (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_hprot_TPH

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    +
    + +

    error protection methods for TPHs (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_hprot_TPH_tileno

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    +
    + +

    tile number of header protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_pprot

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    error protection methods for packets (0,1,16,32,37-128)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_pprot_packno

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    packet number of packet protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_pprot_tileno

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    +
    + +

    tile number of packet protection specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_addr

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_addr
    +
    + +

    sensitivity addressing size (0=auto/2/4 bytes)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_MH

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_MH
    +
    + +

    sensitivity method for MH (-1=no,0-7)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_range

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_range
    +
    + +

    sensitivity range (0-3)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_size

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_size
    +
    + +

    enables writing of ESD, (0=no/1/2 bytes)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_TPH

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    +
    + +

    sensitivity methods for TPHs (-1=no,0-7)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ jpwl_sens_TPH_tileno

    + +
    +
    + + + + +
    int opj_cparameters::jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    +
    + +

    tile number of sensitivity specification (>=0)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ max_comp_size

    + +
    +
    + + + + +
    int opj_cparameters::max_comp_size
    +
    + +

    Maximum size (in bytes) for each component.

    +

    If == 0, component size limitation is not considered

    + +

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ max_cs_size

    + +
    +
    + + + + +
    int opj_cparameters::max_cs_size
    +
    + +

    Maximum size (in bytes) for the whole codestream.

    +

    If == 0, codestream size limitation is not considered If it does not comply with tcp_rates, max_cs_size prevails and a warning is issued.

    + +

    Referenced by opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ mct_data

    + +
    +
    + + + + +
    void* opj_cparameters::mct_data
    +
    + +

    Naive implementation of MCT restricted to a single reversible array based encoding without offset concerning all the components.

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_MCT().

    + +
    +
    + +

    ◆ mode

    + +
    +
    + + + + +
    int opj_cparameters::mode
    +
    + +

    mode switch (cblk_style)

    + +

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ numpocs

    + +
    +
    + + + + +
    OPJ_UINT32 opj_cparameters::numpocs
    +
    + +

    number of progression order changes (POC), default to 0

    + +

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ numresolution

    + +
    +
    + + + + +
    int opj_cparameters::numresolution
    +
    +
    + +

    ◆ outfile

    + +
    +
    + + + + +
    char opj_cparameters::outfile[OPJ_PATH_LEN]
    +
    + +

    output file name

    + +
    +
    + +

    ◆ POC

    + +
    +
    + + + + +
    opj_poc_t opj_cparameters::POC[32]
    +
    + +

    progression order changes

    + +

    Referenced by opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ prch_init

    + +
    +
    + + + + +
    int opj_cparameters::prch_init[OPJ_J2K_MAXRLVLS]
    +
    +
    + +

    ◆ prcw_init

    + +
    +
    + + + + +
    int opj_cparameters::prcw_init[OPJ_J2K_MAXRLVLS]
    +
    +
    + +

    ◆ prog_order

    + +
    +
    + + + + +
    OPJ_PROG_ORDER opj_cparameters::prog_order
    +
    +
    + +

    ◆ res_spec

    + +
    +
    + + + + +
    int opj_cparameters::res_spec
    +
    +
    + +

    ◆ roi_compno

    + +
    +
    + + + + +
    int opj_cparameters::roi_compno
    +
    + +

    region of interest: affected component in [0..3], -1 means no ROI

    + +

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ roi_shift

    + +
    +
    + + + + +
    int opj_cparameters::roi_shift
    +
    + +

    region of interest: upshift value

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ rsiz

    + +
    +
    + + + + +
    OPJ_UINT16 opj_cparameters::rsiz
    +
    + +

    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.

    + +

    Referenced by opj_j2k_get_imf_max_NL(), opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_encoder(), opj_set_default_encoder_parameters(), and opj_set_MCT().

    + +
    +
    + +

    ◆ subsampling_dx

    + +
    +
    + + + + +
    int opj_cparameters::subsampling_dx
    +
    + +

    subsampling value for dx

    + +

    Referenced by opj_j2k_set_cinema_parameters(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ subsampling_dy

    + +
    +
    + + + + +
    int opj_cparameters::subsampling_dy
    +
    + +

    subsampling value for dy

    + +

    Referenced by opj_j2k_set_cinema_parameters(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ tcp_distoratio

    + +
    +
    + + + + +
    float opj_cparameters::tcp_distoratio[100]
    +
    + +

    different psnr for successive layers.

    +

    Should be increasing. 0 can be used as last value to indicate the last layer is lossless.

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ tcp_mct

    + +
    +
    + + + + +
    char opj_cparameters::tcp_mct
    +
    + +

    MCT (multiple component transform)

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_set_MCT().

    + +
    +
    + +

    ◆ tcp_numlayers

    + +
    +
    + + + + +
    int opj_cparameters::tcp_numlayers
    +
    +
    + +

    ◆ tcp_rates

    + +
    +
    + + + + +
    float opj_cparameters::tcp_rates[100]
    +
    + +

    rates of layers - might be subsequently limited by the max_cs_size field.

    +

    Should be decreasing. 1 can be used as last value to indicate the last layer is lossless.

    + +

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    + +
    +
    + +

    ◆ tile_size_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_cparameters::tile_size_on
    +
    + +

    size of tile: tile_size_on = false (not in argument) or = true (in argument)

    + +

    Referenced by opj_j2k_get_imf_max_NL(), opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ tp_flag

    + +
    +
    + + + + +
    char opj_cparameters::tp_flag
    +
    + +

    Flag for Tile part generation.

    + +

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ tp_on

    + +
    +
    + + + + +
    char opj_cparameters::tp_on
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__dec__memory__marker__handler.html b/build/doc/html/structopj__dec__memory__marker__handler.html new file mode 100644 index 000000000..e9a10fc42 --- /dev/null +++ b/build/doc/html/structopj__dec__memory__marker__handler.html @@ -0,0 +1,127 @@ + + + + + + + +OpenJPEG: opj_dec_memory_marker_handler Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_dec_memory_marker_handler Struct Reference
    +
    +
    + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 id
     marker value More...
     
    OPJ_UINT32 states
     value of the state when the marker can appear More...
     
    OPJ_BOOL(* handler )(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     action linked to the marker More...
     
    +

    Field Documentation

    + +

    ◆ handler

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_dec_memory_marker_handler::handler) (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    +
    + +

    action linked to the marker

    + +

    Referenced by opj_j2k_read_header_procedure(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ id

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dec_memory_marker_handler::id
    +
    +
    + +

    ◆ states

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dec_memory_marker_handler::states
    +
    + +

    value of the state when the marker can appear

    + +

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_tile_header(), and opj_j2k_read_unk().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__decoding__param.html b/build/doc/html/structopj__decoding__param.html new file mode 100644 index 000000000..0a30720ec --- /dev/null +++ b/build/doc/html/structopj__decoding__param.html @@ -0,0 +1,108 @@ + + + + + + + +OpenJPEG: opj_decoding_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_decoding_param Struct Reference
    +
    +
    + +

    #include <j2k.h>

    + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_reduce
     if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution More...
     
    OPJ_UINT32 m_layer
     if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded More...
     
    +

    Field Documentation

    + +

    ◆ m_layer

    + +
    +
    + + + + +
    OPJ_UINT32 opj_decoding_param::m_layer
    +
    + +

    if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded

    + +

    Referenced by opj_j2k_read_cod(), and opj_j2k_setup_decoder().

    + +
    +
    + +

    ◆ m_reduce

    + +
    +
    + + + + +
    OPJ_UINT32 opj_decoding_param::m_reduce
    +
    + +

    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution

    + +

    Referenced by opj_j2k_decode(), opj_j2k_read_siz(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_decoder(), and opj_tcd_init_tile().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__dparameters.html b/build/doc/html/structopj__dparameters.html new file mode 100644 index 000000000..efffb06ef --- /dev/null +++ b/build/doc/html/structopj__dparameters.html @@ -0,0 +1,419 @@ + + + + + + + +OpenJPEG: opj_dparameters Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_dparameters Struct Reference
    +
    +
    + +

    Decompression parameters. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 cp_reduce
     Set the number of highest resolution levels to be discarded. More...
     
    OPJ_UINT32 cp_layer
     Set the maximum number of quality layers to decode. More...
     
    command line decoder parameters (not used inside the library)
    char infile [OPJ_PATH_LEN]
     input file name More...
     
    char outfile [OPJ_PATH_LEN]
     output file name More...
     
    int decod_format
     input file format 0: J2K, 1: JP2, 2: JPT More...
     
    int cod_format
     output file format 0: PGX, 1: PxM, 2: BMP More...
     
    OPJ_UINT32 DA_x0
     Decoding area left boundary. More...
     
    OPJ_UINT32 DA_x1
     Decoding area right boundary. More...
     
    OPJ_UINT32 DA_y0
     Decoding area up boundary. More...
     
    OPJ_UINT32 DA_y1
     Decoding area bottom boundary. More...
     
    OPJ_BOOL m_verbose
     Verbose mode. More...
     
    OPJ_UINT32 tile_index
     tile number of the decoded tile More...
     
    OPJ_UINT32 nb_tile_to_decode
     Nb of tile to decode. More...
     
    JPWL decoding parameters
    OPJ_BOOL jpwl_correct
     activates the JPWL correction capabilities More...
     
    int jpwl_exp_comps
     expected number of components More...
     
    int jpwl_max_tiles
     maximum number of tiles More...
     
    unsigned int flags
     
    +

    Detailed Description

    +

    Decompression parameters.

    +

    Field Documentation

    + +

    ◆ cod_format

    + +
    +
    + + + + +
    int opj_dparameters::cod_format
    +
    + +

    output file format 0: PGX, 1: PxM, 2: BMP

    + +

    Referenced by opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ cp_layer

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::cp_layer
    +
    + +

    Set the maximum number of quality layers to decode.

    +

    If there are less quality layers than the specified number, all the quality layers are decoded. if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded

    + +

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ cp_reduce

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::cp_reduce
    +
    + +

    Set the number of highest resolution levels to be discarded.

    +

    The image resolution is effectively divided by 2 to the power of the number of discarded levels. The reduce factor is limited by the smallest total number of decomposition levels among tiles. if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution

    + +

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ DA_x0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::DA_x0
    +
    + +

    Decoding area left boundary.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ DA_x1

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::DA_x1
    +
    + +

    Decoding area right boundary.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ DA_y0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::DA_y0
    +
    + +

    Decoding area up boundary.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ DA_y1

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::DA_y1
    +
    + +

    Decoding area bottom boundary.

    + +

    Referenced by j2k_to_pnm().

    + +
    +
    + +

    ◆ decod_format

    + +
    +
    + + + + +
    int opj_dparameters::decod_format
    +
    + +

    input file format 0: J2K, 1: JP2, 2: JPT

    + +

    Referenced by opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ flags

    + +
    +
    + + + + +
    unsigned int opj_dparameters::flags
    +
    +
    + +

    ◆ infile

    + +
    +
    + + + + +
    char opj_dparameters::infile[OPJ_PATH_LEN]
    +
    + +

    input file name

    + +
    +
    + +

    ◆ jpwl_correct

    + +
    +
    + + + + +
    OPJ_BOOL opj_dparameters::jpwl_correct
    +
    + +

    activates the JPWL correction capabilities

    + +

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ jpwl_exp_comps

    + +
    +
    + + + + +
    int opj_dparameters::jpwl_exp_comps
    +
    + +

    expected number of components

    + +

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ jpwl_max_tiles

    + +
    +
    + + + + +
    int opj_dparameters::jpwl_max_tiles
    +
    + +

    maximum number of tiles

    + +

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    + +
    +
    + +

    ◆ m_verbose

    + +
    +
    + + + + +
    OPJ_BOOL opj_dparameters::m_verbose
    +
    + +

    Verbose mode.

    + +
    +
    + +

    ◆ nb_tile_to_decode

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::nb_tile_to_decode
    +
    + +

    Nb of tile to decode.

    + +
    +
    + +

    ◆ outfile

    + +
    +
    + + + + +
    char opj_dparameters::outfile[OPJ_PATH_LEN]
    +
    + +

    output file name

    + +
    +
    + +

    ◆ tile_index

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dparameters::tile_index
    +
    + +

    tile number of the decoded tile

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__dwd__decode__h__job__t.html b/build/doc/html/structopj__dwd__decode__h__job__t.html new file mode 100644 index 000000000..13708f502 --- /dev/null +++ b/build/doc/html/structopj__dwd__decode__h__job__t.html @@ -0,0 +1,172 @@ + + + + + + + +OpenJPEG: opj_dwd_decode_h_job_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_dwd_decode_h_job_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Data Fields

    opj_dwt_t h
     
    OPJ_UINT32 rw
     
    OPJ_UINT32 w
     
    OPJ_INT32 *OPJ_RESTRICT tiledp
     
    OPJ_UINT32 min_j
     
    OPJ_UINT32 max_j
     
    +

    Field Documentation

    + +

    ◆ h

    + +
    +
    + + + + +
    opj_dwt_t opj_dwd_decode_h_job_t::h
    +
    +
    + +

    ◆ max_j

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_h_job_t::max_j
    +
    + +

    Referenced by opj_dwt_decode_tile().

    + +
    +
    + +

    ◆ min_j

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_h_job_t::min_j
    +
    +
    + +

    ◆ rw

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_h_job_t::rw
    +
    + +

    Referenced by opj_dwt_decode_tile().

    + +
    +
    + +

    ◆ tiledp

    + +
    +
    + + + + +
    OPJ_INT32* OPJ_RESTRICT opj_dwd_decode_h_job_t::tiledp
    +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_h_job_t::w
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__dwd__decode__v__job__t.html b/build/doc/html/structopj__dwd__decode__v__job__t.html new file mode 100644 index 000000000..27e4f23e6 --- /dev/null +++ b/build/doc/html/structopj__dwd__decode__v__job__t.html @@ -0,0 +1,172 @@ + + + + + + + +OpenJPEG: opj_dwd_decode_v_job_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_dwd_decode_v_job_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Data Fields

    opj_dwt_t v
     
    OPJ_UINT32 rh
     
    OPJ_UINT32 w
     
    OPJ_INT32 *OPJ_RESTRICT tiledp
     
    OPJ_UINT32 min_j
     
    OPJ_UINT32 max_j
     
    +

    Field Documentation

    + +

    ◆ max_j

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_v_job_t::max_j
    +
    +
    + +

    ◆ min_j

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_v_job_t::min_j
    +
    +
    + +

    ◆ rh

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_v_job_t::rh
    +
    + +

    Referenced by opj_dwt_decode_tile().

    + +
    +
    + +

    ◆ tiledp

    + +
    +
    + + + + +
    OPJ_INT32* OPJ_RESTRICT opj_dwd_decode_v_job_t::tiledp
    +
    +
    + +

    ◆ v

    + +
    +
    + + + + +
    opj_dwt_t opj_dwd_decode_v_job_t::v
    +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    OPJ_UINT32 opj_dwd_decode_v_job_t::w
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__encoding__param.html b/build/doc/html/structopj__encoding__param.html new file mode 100644 index 000000000..9ef4a351f --- /dev/null +++ b/build/doc/html/structopj__encoding__param.html @@ -0,0 +1,235 @@ + + + + + + + +OpenJPEG: opj_encoding_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_encoding_param Struct Reference
    +
    +
    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_max_comp_size
     Maximum rate for each component. More...
     
    OPJ_INT32 m_tp_pos
     Position of tile part flag in progression order. More...
     
    OPJ_INT32m_matrice
     fixed layer More...
     
    OPJ_BYTE m_tp_flag
     Flag determining tile part generation. More...
     
    OPJ_BITFIELD m_disto_alloc: 1
     allocation by rate/distortion More...
     
    OPJ_BITFIELD m_fixed_alloc: 1
     allocation by fixed layer More...
     
    OPJ_BITFIELD m_fixed_quality: 1
     add fixed_quality More...
     
    OPJ_BITFIELD m_tp_on: 1
     Enabling Tile part generation. More...
     
    +

    Field Documentation

    + +

    ◆ m_disto_alloc

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_encoding_param::m_disto_alloc
    +
    + +

    allocation by rate/distortion

    + +

    Referenced by opj_j2k_setup_encoder(), opj_tcd_rate_allocate_encode(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ m_fixed_alloc

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_encoding_param::m_fixed_alloc
    +
    + +

    allocation by fixed layer

    + +

    Referenced by opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ m_fixed_quality

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_encoding_param::m_fixed_quality
    +
    + +

    add fixed_quality

    + +

    Referenced by opj_j2k_setup_encoder(), opj_tcd_rate_allocate_encode(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ m_matrice

    + +
    +
    + + + + +
    OPJ_INT32* opj_encoding_param::m_matrice
    +
    + +

    fixed layer

    + +

    Referenced by opj_j2k_cp_destroy(), opj_j2k_setup_encoder(), and opj_tcd_makelayer_fixed().

    + +
    +
    + +

    ◆ m_max_comp_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_encoding_param::m_max_comp_size
    +
    + +

    Maximum rate for each component.

    +

    If == 0, component size limitation is not considered

    + +

    Referenced by opj_j2k_setup_encoder(), and opj_t2_encode_packets().

    + +
    +
    + +

    ◆ m_tp_flag

    + +
    +
    + + + + +
    OPJ_BYTE opj_encoding_param::m_tp_flag
    +
    + +

    Flag determining tile part generation.

    + +

    Referenced by opj_j2k_get_num_tp(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ m_tp_on

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_encoding_param::m_tp_on
    +
    +
    + +

    ◆ m_tp_pos

    + +
    +
    + + + + +
    OPJ_INT32 opj_encoding_param::m_tp_pos
    +
    + +

    Position of tile part flag in progression order.

    + +

    Referenced by opj_j2k_get_num_tp(), and opj_tcd_init().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__event__mgr.html b/build/doc/html/structopj__event__mgr.html new file mode 100644 index 000000000..40e631261 --- /dev/null +++ b/build/doc/html/structopj__event__mgr.html @@ -0,0 +1,205 @@ + + + + + + + +OpenJPEG: opj_event_mgr Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_event_mgr Struct Reference
    +
    +
    + +

    Message handler object used for. + More...

    + +

    #include <event.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    void * m_error_data
     Data to call the event manager upon. More...
     
    void * m_warning_data
     Data to call the event manager upon. More...
     
    void * m_info_data
     Data to call the event manager upon. More...
     
    opj_msg_callback error_handler
     Error message callback if available, NULL otherwise. More...
     
    opj_msg_callback warning_handler
     Warning message callback if available, NULL otherwise. More...
     
    opj_msg_callback info_handler
     Debug message callback if available, NULL otherwise. More...
     
    +

    Detailed Description

    +

    Message handler object used for.

    +
      +
    • +Error messages
    • +
    • +Warning messages
    • +
    • +Debugging messages
    • +
    +

    Field Documentation

    + +

    ◆ error_handler

    + +
    +
    + + + + +
    opj_msg_callback opj_event_mgr::error_handler
    +
    + +

    Error message callback if available, NULL otherwise.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_error_handler().

    + +
    +
    + +

    ◆ info_handler

    + +
    +
    + + + + +
    opj_msg_callback opj_event_mgr::info_handler
    +
    + +

    Debug message callback if available, NULL otherwise.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_info_handler().

    + +
    +
    + +

    ◆ m_error_data

    + +
    +
    + + + + +
    void* opj_event_mgr::m_error_data
    +
    + +

    Data to call the event manager upon.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_error_handler().

    + +
    +
    + +

    ◆ m_info_data

    + +
    +
    + + + + +
    void* opj_event_mgr::m_info_data
    +
    + +

    Data to call the event manager upon.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_info_handler().

    + +
    +
    + +

    ◆ m_warning_data

    + +
    +
    + + + + +
    void* opj_event_mgr::m_warning_data
    +
    + +

    Data to call the event manager upon.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_warning_handler().

    + +
    +
    + +

    ◆ warning_handler

    + +
    +
    + + + + +
    opj_msg_callback opj_event_mgr::warning_handler
    +
    + +

    Warning message callback if available, NULL otherwise.

    + +

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_warning_handler().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__image.html b/build/doc/html/structopj__image.html new file mode 100644 index 000000000..bec738df8 --- /dev/null +++ b/build/doc/html/structopj__image.html @@ -0,0 +1,260 @@ + + + + + + + +OpenJPEG: opj_image Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_image Struct Reference
    +
    +
    + +

    Defines image data and characteristics. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 x0
     XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area. More...
     
    OPJ_UINT32 y0
     YOsiz: vertical offset from the origin of the reference grid to the top side of the image area. More...
     
    OPJ_UINT32 x1
     Xsiz: width of the reference grid. More...
     
    OPJ_UINT32 y1
     Ysiz: height of the reference grid. More...
     
    OPJ_UINT32 numcomps
     number of components in the image More...
     
    OPJ_COLOR_SPACE color_space
     color space: sRGB, Greyscale or YUV More...
     
    opj_image_comp_tcomps
     image components More...
     
    OPJ_BYTEicc_profile_buf
     'restricted' ICC profile More...
     
    OPJ_UINT32 icc_profile_len
     size of ICC profile More...
     
    +

    Detailed Description

    +

    Defines image data and characteristics.

    +

    Field Documentation

    + +

    ◆ color_space

    + +
    +
    + + + + +
    OPJ_COLOR_SPACE opj_image::color_space
    +
    +
    + +

    ◆ comps

    + + + +

    ◆ icc_profile_buf

    + +
    +
    + + + + +
    OPJ_BYTE* opj_image::icc_profile_buf
    +
    + +

    'restricted' ICC profile

    + +

    Referenced by opj_copy_image_header(), opj_image_destroy(), opj_jp2_decode(), and opj_jp2_get_tile().

    + +
    +
    + +

    ◆ icc_profile_len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image::icc_profile_len
    +
    + +

    size of ICC profile

    + +

    Referenced by opj_copy_image_header(), opj_jp2_decode(), opj_jp2_get_tile(), and opj_jp2_setup_encoder().

    + +
    +
    + +

    ◆ numcomps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image::numcomps
    +
    + +

    number of components in the image

    + +

    Referenced by imagetopnm(), j2k_dump(), j2k_dump_image_header(), j2k_get_cstr_info(), main(), opj_copy_image_header(), opj_get_all_encoding_parameters(), opj_get_encoding_packet_count(), opj_get_encoding_parameters(), opj_image_comp_header_update(), opj_image_create(), opj_image_destroy(), opj_image_tile_create(), opj_j2k_add_mct(), opj_j2k_are_all_used_components_decoded(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_decode(), opj_j2k_decode_tiles(), opj_j2k_dump_MH_info(), opj_j2k_encode(), opj_j2k_get_max_coc_size(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_tile(), opj_j2k_get_tile_data(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_mct_validation(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_mco(), opj_j2k_read_poc(), opj_j2k_read_qcc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_start_compress(), opj_j2k_update_image_data(), opj_j2k_update_image_dimensions(), opj_j2k_update_rates(), opj_j2k_write_all_coc(), opj_j2k_write_all_qcc(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_coc_in_memory(), opj_j2k_write_first_tile_part(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_qcc(), opj_j2k_write_qcc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_siz(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_tile(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_setup_encoder(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_update_encoding_parameters(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_copy_tile_data(), opj_tcd_decode_tile(), opj_tcd_get_decoded_tile_size(), opj_tcd_get_encoder_input_buffer_size(), opj_tcd_init(), opj_tcd_t1_encode(), and opj_tcd_update_tile_data().

    + +
    +
    + +

    ◆ x0

    + + + +

    ◆ x1

    + + + +

    ◆ y0

    + + + +

    ◆ y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__image__comp.html b/build/doc/html/structopj__image__comp.html new file mode 100644 index 000000000..a36c5afe3 --- /dev/null +++ b/build/doc/html/structopj__image__comp.html @@ -0,0 +1,344 @@ + + + + + + + +OpenJPEG: opj_image_comp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_image_comp Struct Reference
    +
    +
    + +

    Defines a single image component. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 dx
     XRsiz: horizontal separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 dy
     YRsiz: vertical separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 w
     data width More...
     
    OPJ_UINT32 h
     data height More...
     
    OPJ_UINT32 x0
     x component offset compared to the whole image More...
     
    OPJ_UINT32 y0
     y component offset compared to the whole image More...
     
    OPJ_UINT32 prec
     precision More...
     
    OPJ_UINT32 bpp
     image depth in bits More...
     
    OPJ_UINT32 sgnd
     signed (1) / unsigned (0) More...
     
    OPJ_UINT32 resno_decoded
     number of decoded resolution More...
     
    OPJ_UINT32 factor
     number of division by 2 of the out image compared to the original size of image More...
     
    OPJ_INT32data
     image component data More...
     
    OPJ_UINT16 alpha
     alpha channel More...
     
    +

    Detailed Description

    +

    Defines a single image component.

    +

    Field Documentation

    + +

    ◆ alpha

    + +
    +
    + + + + +
    OPJ_UINT16 opj_image_comp::alpha
    +
    + +

    alpha channel

    + +

    Referenced by opj_jp2_apply_cdef(), and opj_jp2_setup_encoder().

    + +
    +
    + +

    ◆ bpp

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comp::bpp
    +
    + +

    image depth in bits

    + +

    Referenced by opj_image_create(), opj_j2k_is_cinema_compliant(), and opj_j2k_is_imf_compliant().

    + +
    +
    + +

    ◆ data

    + + + +

    ◆ dx

    + + + +

    ◆ dy

    + + + +

    ◆ factor

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comp::factor
    +
    + +

    number of division by 2 of the out image compared to the original size of image

    + +

    Referenced by opj_image_comp_header_update(), opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_siz(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), and opj_j2k_update_image_dimensions().

    + +
    +
    + +

    ◆ h

    + + + +

    ◆ prec

    + + + +

    ◆ resno_decoded

    + + + +

    ◆ sgnd

    + + + +

    ◆ w

    + + + +

    ◆ x0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comp::x0
    +
    + +

    x component offset compared to the whole image

    + +

    Referenced by opj_image_comp_header_update(), opj_image_create(), opj_image_tile_create(), opj_j2k_get_tile(), and opj_j2k_update_image_dimensions().

    + +
    +
    + +

    ◆ y0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comp::y0
    +
    + +

    y component offset compared to the whole image

    + +

    Referenced by opj_image_comp_header_update(), opj_image_create(), opj_image_tile_create(), opj_j2k_get_tile(), and opj_j2k_update_image_dimensions().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__image__comptparm.html b/build/doc/html/structopj__image__comptparm.html new file mode 100644 index 000000000..cf6b648ba --- /dev/null +++ b/build/doc/html/structopj__image__comptparm.html @@ -0,0 +1,260 @@ + + + + + + + +OpenJPEG: opj_image_comptparm Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_image_comptparm Struct Reference
    +
    +
    + +

    Component parameters structure used by the opj_image_create function. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 dx
     XRsiz: horizontal separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 dy
     YRsiz: vertical separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 w
     data width More...
     
    OPJ_UINT32 h
     data height More...
     
    OPJ_UINT32 x0
     x component offset compared to the whole image More...
     
    OPJ_UINT32 y0
     y component offset compared to the whole image More...
     
    OPJ_UINT32 prec
     precision More...
     
    OPJ_UINT32 bpp
     image depth in bits More...
     
    OPJ_UINT32 sgnd
     signed (1) / unsigned (0) More...
     
    +

    Detailed Description

    +

    Component parameters structure used by the opj_image_create function.

    +

    Field Documentation

    + +

    ◆ bpp

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::bpp
    +
    + +

    image depth in bits

    + +

    Referenced by opj_image_create().

    + +
    +
    + +

    ◆ dx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::dx
    +
    + +

    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ dy

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::dy
    +
    + +

    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ h

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::h
    +
    + +

    data height

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ prec

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::prec
    +
    + +

    precision

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ sgnd

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::sgnd
    +
    + +

    signed (1) / unsigned (0)

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::w
    +
    + +

    data width

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ x0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::x0
    +
    + +

    x component offset compared to the whole image

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    + +

    ◆ y0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_image_comptparm::y0
    +
    + +

    y component offset compared to the whole image

    + +

    Referenced by opj_image_create(), and opj_image_tile_create().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__j2k.html b/build/doc/html/structopj__j2k.html new file mode 100644 index 000000000..9fc2b6a46 --- /dev/null +++ b/build/doc/html/structopj__j2k.html @@ -0,0 +1,395 @@ + + + + + + + +OpenJPEG: opj_j2k Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_j2k Struct Reference
    +
    +
    + +

    JPEG-2000 codestream reader/writer. + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BOOL m_is_decoder
     
    union {
       opj_j2k_dec_t   m_decoder
     
       opj_j2k_enc_t   m_encoder
     
    m_specific_param
     
    opj_image_tm_private_image
     pointer to the internal/private encoded / decoded image More...
     
    opj_image_tm_output_image
     
    opj_cp_t m_cp
     Coding parameters. More...
     
    opj_procedure_list_tm_procedure_list
     the list of procedures to exec More...
     
    opj_procedure_list_tm_validation_list
     the list of validation procedures to follow to make sure the code is valid More...
     
    opj_codestream_index_tcstr_index
     helper used to write the index file More...
     
    OPJ_UINT32 m_current_tile_number
     number of the tile currently concern by coding/decoding More...
     
    struct opj_tcdm_tcd
     the current tile coder/decoder More...
     
    opj_thread_pool_tm_tp
     Thread pool. More...
     
    OPJ_UINT32 ihdr_w
     Image width coming from JP2 IHDR box. More...
     
    OPJ_UINT32 ihdr_h
     Image height coming from JP2 IHDR box. More...
     
    unsigned int dump_state
     Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set. More...
     
    +

    Detailed Description

    +

    JPEG-2000 codestream reader/writer.

    +

    Field Documentation

    + +

    ◆ cstr_index

    + + + +

    ◆ dump_state

    + +
    +
    + + + + +
    unsigned int opj_j2k::dump_state
    +
    + +

    Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set.

    + +

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    + +
    +
    + +

    ◆ ihdr_h

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k::ihdr_h
    +
    + +

    Image height coming from JP2 IHDR box.

    +

    0 from a pure codestream

    + +

    Referenced by opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    + +
    +
    + +

    ◆ ihdr_w

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k::ihdr_w
    +
    + +

    Image width coming from JP2 IHDR box.

    +

    0 from a pure codestream

    + +

    Referenced by opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    + +
    +
    + +

    ◆ m_cp

    + +
    +
    + + + + +
    opj_cp_t opj_j2k::m_cp
    +
    + +

    Coding parameters.

    + +

    Referenced by j2k_dump(), j2k_get_cstr_info(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_compare_coc(), opj_j2k_compare_SPCod_SPCoc(), opj_j2k_compare_SQcd_SQcc(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_create_compress(), opj_j2k_create_decompress(), opj_j2k_create_tcd(), opj_j2k_decode(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_destroy(), opj_j2k_dump_MH_info(), opj_j2k_encode(), opj_j2k_encoding_validation(), opj_j2k_get_max_coc_size(), opj_j2k_get_max_poc_size(), opj_j2k_get_max_toc_size(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_get_tile(), opj_j2k_init_info(), opj_j2k_mct_validation(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_decoder(), opj_j2k_setup_encoder(), opj_j2k_setup_end_compress(), opj_j2k_setup_header_writing(), opj_j2k_update_rates(), opj_j2k_write_all_tile_parts(), opj_j2k_write_coc_in_memory(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_first_tile_part(), opj_j2k_write_mco(), opj_j2k_write_mct_data_group(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_rgn(), opj_j2k_write_siz(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), and opj_jp2_read_ihdr().

    + +
    +
    + +

    ◆ m_current_tile_number

    + + + +

    ◆ m_decoder

    + + + +

    ◆ m_encoder

    + + + +

    ◆ m_is_decoder

    + +
    +
    + + + + +
    OPJ_BOOL opj_j2k::m_is_decoder
    +
    +
    + +

    ◆ m_output_image

    + + + +

    ◆ m_private_image

    + + + +

    ◆ m_procedure_list

    + + + +

    ◆ m_specific_param

    + +
    +
    + + + + +
    union { ... } opj_j2k::m_specific_param
    +
    + +

    Referenced by j2k_get_cstr_info(), opj_j2k_are_all_used_components_decoded(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_create_compress(), opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_decoding_validation(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_dump_MH_info(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_end_encoding(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_tile(), opj_j2k_init_info(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_update_rates(), opj_j2k_update_tlm(), opj_j2k_write_all_tile_parts(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_eoc(), opj_j2k_write_first_tile_part(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_rgn(), opj_j2k_write_siz(), opj_j2k_write_soc(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_tlm(), opj_j2k_write_updated_tlm(), opj_jp2_decode(), and opj_jp2_get_tile().

    + +
    +
    + +

    ◆ m_tcd

    + + + +

    ◆ m_tp

    + + + +

    ◆ m_validation_list

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__j2k__dec.html b/build/doc/html/structopj__j2k__dec.html new file mode 100644 index 000000000..1dbe68514 --- /dev/null +++ b/build/doc/html/structopj__j2k__dec.html @@ -0,0 +1,436 @@ + + + + + + + +OpenJPEG: opj_j2k_dec Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_j2k_dec Struct Reference
    +
    +
    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_state
     locate in which part of the codestream the decoder is (main header, tile header, end) More...
     
    opj_tcp_tm_default_tcp
     store decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    OPJ_BYTEm_header_data
     
    OPJ_UINT32 m_header_data_size
     
    OPJ_UINT32 m_sot_length
     to tell the tile part length More...
     
    OPJ_UINT32 m_start_tile_x
     Only tiles index in the correct range will be decoded. More...
     
    OPJ_UINT32 m_start_tile_y
     
    OPJ_UINT32 m_end_tile_x
     
    OPJ_UINT32 m_end_tile_y
     
    OPJ_INT32 m_tile_ind_to_dec
     Index of the tile to decode (used in get_tile) More...
     
    OPJ_OFF_T m_last_sot_read_pos
     Position of the last SOT marker read. More...
     
    OPJ_BOOL m_last_tile_part
     Indicate that the current tile-part is assume as the last tile part of the codestream. More...
     
    OPJ_UINT32 m_numcomps_to_decode
     
    OPJ_UINT32m_comps_indices_to_decode
     
    OPJ_BITFIELD m_can_decode: 1
     to tell that a tile can be decoded. More...
     
    OPJ_BITFIELD m_discard_tiles: 1
     
    OPJ_BITFIELD m_skip_data: 1
     
    OPJ_BITFIELD m_nb_tile_parts_correction_checked: 1
     TNsot correction : see issue 254. More...
     
    OPJ_BITFIELD m_nb_tile_parts_correction: 1
     
    +

    Field Documentation

    + +

    ◆ m_can_decode

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_j2k_dec::m_can_decode
    +
    + +

    to tell that a tile can be decoded.

    + +

    Referenced by opj_j2k_decode_tile(), opj_j2k_read_sot(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ m_comps_indices_to_decode

    + + + +

    ◆ m_default_tcp

    + + + +

    ◆ m_discard_tiles

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_j2k_dec::m_discard_tiles
    +
    + +

    Referenced by opj_j2k_read_siz(), and opj_j2k_set_decode_area().

    + +
    +
    + +

    ◆ m_end_tile_x

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_end_tile_x
    +
    +
    + +

    ◆ m_end_tile_y

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_end_tile_y
    +
    +
    + +

    ◆ m_header_data

    + + + +

    ◆ m_header_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_header_data_size
    +
    +
    + +

    ◆ m_last_sot_read_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_j2k_dec::m_last_sot_read_pos
    +
    + +

    Position of the last SOT marker read.

    + +

    Referenced by opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ m_last_tile_part

    + +
    +
    + + + + +
    OPJ_BOOL opj_j2k_dec::m_last_tile_part
    +
    + +

    Indicate that the current tile-part is assume as the last tile part of the codestream.

    +

    It is useful in the case of PSot is equal to zero. The sot length will be compute in the SOD reader function. FIXME NOT USED for the moment

    + +

    Referenced by opj_j2k_read_sod(), and opj_j2k_read_sot().

    + +
    +
    + +

    ◆ m_nb_tile_parts_correction

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_j2k_dec::m_nb_tile_parts_correction
    +
    +
    + +

    ◆ m_nb_tile_parts_correction_checked

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_j2k_dec::m_nb_tile_parts_correction_checked
    +
    + +

    TNsot correction : see issue 254.

    + +

    Referenced by opj_j2k_create_decompress(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ m_numcomps_to_decode

    + + + +

    ◆ m_skip_data

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_j2k_dec::m_skip_data
    +
    +
    + +

    ◆ m_sot_length

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_sot_length
    +
    + +

    to tell the tile part length

    + +

    Referenced by opj_j2k_read_sod(), opj_j2k_read_sot(), and opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ m_start_tile_x

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_start_tile_x
    +
    + +

    Only tiles index in the correct range will be decoded.

    + +

    Referenced by opj_j2k_read_siz(), opj_j2k_read_sot(), and opj_j2k_set_decode_area().

    + +
    +
    + +

    ◆ m_start_tile_y

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_dec::m_start_tile_y
    +
    +
    + +

    ◆ m_state

    + + + +

    ◆ m_tile_ind_to_dec

    + +
    +
    + + + + +
    OPJ_INT32 opj_j2k_dec::m_tile_ind_to_dec
    +
    + +

    Index of the tile to decode (used in get_tile)

    + +

    Referenced by opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_get_tile(), and opj_j2k_read_sot().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__j2k__enc.html b/build/doc/html/structopj__j2k__enc.html new file mode 100644 index 000000000..c88291e95 --- /dev/null +++ b/build/doc/html/structopj__j2k__enc.html @@ -0,0 +1,302 @@ + + + + + + + +OpenJPEG: opj_j2k_enc Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_j2k_enc Struct Reference
    +
    +
    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_current_poc_tile_part_number
     Tile part number, regardless of poc, for each new poc, tp is reset to 1. More...
     
    OPJ_UINT32 m_current_tile_part_number
     Tile part number currently coding, taking into account POC. More...
     
    OPJ_OFF_T m_tlm_start
     locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is done to the TLM marker to store the value of its length. More...
     
    OPJ_BYTEm_tlm_sot_offsets_buffer
     Stores the sizes of the tlm. More...
     
    OPJ_BYTEm_tlm_sot_offsets_current
     The current offset of the tlm buffer. More...
     
    OPJ_UINT32 m_total_tile_parts
     Total num of tile parts in whole image = num tiles* num tileparts in each tile. More...
     
    OPJ_BYTEm_encoded_tile_data
     
    OPJ_UINT32 m_encoded_tile_size
     
    OPJ_BYTEm_header_tile_data
     
    OPJ_UINT32 m_header_tile_data_size
     
    OPJ_BOOL m_PLT
     
    OPJ_UINT32 m_reserved_bytes_for_PLT
     
    +

    Field Documentation

    + +

    ◆ m_current_poc_tile_part_number

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_enc::m_current_poc_tile_part_number
    +
    + +

    Tile part number, regardless of poc, for each new poc, tp is reset to 1.

    + +

    Referenced by opj_j2k_pre_write_tile(), opj_j2k_write_all_tile_parts(), opj_j2k_write_first_tile_part(), and opj_j2k_write_sod().

    + +
    +
    + +

    ◆ m_current_tile_part_number

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_enc::m_current_tile_part_number
    +
    + +

    Tile part number currently coding, taking into account POC.

    +

    m_current_tile_part_number holds the total number of tile parts while encoding the last tile part.

    + +

    Referenced by opj_j2k_pre_write_tile(), opj_j2k_write_all_tile_parts(), opj_j2k_write_sod(), and opj_j2k_write_sot().

    + +
    +
    + +

    ◆ m_encoded_tile_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_j2k_enc::m_encoded_tile_data
    +
    +
    + +

    ◆ m_encoded_tile_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_enc::m_encoded_tile_size
    +
    +
    + +

    ◆ m_header_tile_data

    + + + +

    ◆ m_header_tile_data_size

    + + + +

    ◆ m_PLT

    + +
    +
    + + + + +
    OPJ_BOOL opj_j2k_enc::m_PLT
    +
    +
    + +

    ◆ m_reserved_bytes_for_PLT

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_enc::m_reserved_bytes_for_PLT
    +
    +
    + +

    ◆ m_tlm_sot_offsets_buffer

    + +
    +
    + + + + +
    OPJ_BYTE* opj_j2k_enc::m_tlm_sot_offsets_buffer
    +
    + +

    Stores the sizes of the tlm.

    + +

    Referenced by opj_j2k_destroy(), opj_j2k_end_encoding(), opj_j2k_update_rates(), and opj_j2k_write_updated_tlm().

    + +
    +
    + +

    ◆ m_tlm_sot_offsets_current

    + +
    +
    + + + + +
    OPJ_BYTE* opj_j2k_enc::m_tlm_sot_offsets_current
    +
    + +

    The current offset of the tlm buffer.

    + +

    Referenced by opj_j2k_destroy(), opj_j2k_end_encoding(), opj_j2k_update_rates(), and opj_j2k_update_tlm().

    + +
    +
    + +

    ◆ m_tlm_start

    + +
    +
    + + + + +
    OPJ_OFF_T opj_j2k_enc::m_tlm_start
    +
    + +

    locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is done to the TLM marker to store the value of its length.

    + +

    Referenced by opj_j2k_write_tlm(), and opj_j2k_write_updated_tlm().

    + +
    +
    + +

    ◆ m_total_tile_parts

    + +
    +
    + + + + +
    OPJ_UINT32 opj_j2k_enc::m_total_tile_parts
    +
    + +

    Total num of tile parts in whole image = num tiles* num tileparts in each tile.

    +

    used in TLMmarker

    + +

    Referenced by opj_j2k_init_info(), opj_j2k_update_rates(), opj_j2k_write_tlm(), and opj_j2k_write_updated_tlm().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__job__list__t.html b/build/doc/html/structopj__job__list__t.html new file mode 100644 index 000000000..622c6f68f --- /dev/null +++ b/build/doc/html/structopj__job__list__t.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: opj_job_list_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_job_list_t Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    opj_worker_thread_job_tjob
     
    struct opj_job_list_tnext
     
    +

    Field Documentation

    + +

    ◆ job

    + +
    +
    + + + + +
    opj_worker_thread_job_t* opj_job_list_t::job
    +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct opj_job_list_t* opj_job_list_t::next
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2.html b/build/doc/html/structopj__jp2.html new file mode 100644 index 000000000..8a6189091 --- /dev/null +++ b/build/doc/html/structopj__jp2.html @@ -0,0 +1,586 @@ + + + + + + + +OpenJPEG: opj_jp2 Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2 Struct Reference
    +
    +
    + +

    JPEG-2000 file format reader/writer. + More...

    + +

    #include <jp2.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    opj_j2k_tj2k
     handle to the J2K codec
    + More...
     
    struct opj_procedure_listm_validation_list
     list of validation procedures More...
     
    struct opj_procedure_listm_procedure_list
     list of execution procedures More...
     
    OPJ_UINT32 w
     
    OPJ_UINT32 h
     
    OPJ_UINT32 numcomps
     
    OPJ_UINT32 bpc
     
    OPJ_UINT32 C
     
    OPJ_UINT32 UnkC
     
    OPJ_UINT32 IPR
     
    OPJ_UINT32 meth
     
    OPJ_UINT32 approx
     
    OPJ_UINT32 enumcs
     
    OPJ_UINT32 precedence
     
    OPJ_UINT32 brand
     
    OPJ_UINT32 minversion
     
    OPJ_UINT32 numcl
     
    OPJ_UINT32cl
     
    opj_jp2_comps_tcomps
     
    OPJ_OFF_T j2k_codestream_offset
     
    OPJ_OFF_T jpip_iptr_offset
     
    OPJ_BOOL jpip_on
     
    OPJ_UINT32 jp2_state
     
    OPJ_UINT32 jp2_img_state
     
    opj_jp2_color_t color
     
    OPJ_BOOL ignore_pclr_cmap_cdef
     
    OPJ_BYTE has_jp2h
     
    OPJ_BYTE has_ihdr
     
    +

    Detailed Description

    +

    JPEG-2000 file format reader/writer.

    +

    Field Documentation

    + +

    ◆ approx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::approx
    +
    +
    + +

    ◆ bpc

    + + + +

    ◆ brand

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::brand
    +
    +
    + +

    ◆ C

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::C
    +
    +
    + +

    ◆ cl

    + +
    +
    + + + + +
    OPJ_UINT32* opj_jp2::cl
    +
    +
    + +

    ◆ color

    + + + +

    ◆ comps

    + + + +

    ◆ enumcs

    + + + +

    ◆ h

    + + + +

    ◆ has_ihdr

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2::has_ihdr
    +
    + +

    Referenced by opj_jp2_read_header(), and opj_jp2_read_ihdr().

    + +
    +
    + +

    ◆ has_jp2h

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2::has_jp2h
    +
    + +

    Referenced by opj_jp2_read_header(), and opj_jp2_read_jp2h().

    + +
    +
    + +

    ◆ ignore_pclr_cmap_cdef

    + +
    +
    + + + + +
    OPJ_BOOL opj_jp2::ignore_pclr_cmap_cdef
    +
    + +

    Referenced by opj_jp2_decode(), and opj_jp2_setup_decoder().

    + +
    +
    + +

    ◆ IPR

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::IPR
    +
    +
    + +

    ◆ j2k

    + + + +

    ◆ j2k_codestream_offset

    + +
    +
    + + + + +
    OPJ_OFF_T opj_jp2::j2k_codestream_offset
    +
    + +

    Referenced by opj_jp2_skip_jp2c(), and opj_jp2_write_jp2c().

    + +
    +
    + +

    ◆ jp2_img_state

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::jp2_img_state
    +
    +
    + +

    ◆ jp2_state

    + + + +

    ◆ jpip_iptr_offset

    + +
    +
    + + + + +
    OPJ_OFF_T opj_jp2::jpip_iptr_offset
    +
    + +

    Referenced by opj_jpip_skip_iptr().

    + +
    +
    + +

    ◆ jpip_on

    + +
    +
    + + + + +
    OPJ_BOOL opj_jp2::jpip_on
    +
    +
    + +

    ◆ m_procedure_list

    + + + +

    ◆ m_validation_list

    + +
    +
    + + + + +
    struct opj_procedure_list* opj_jp2::m_validation_list
    +
    +
    + +

    ◆ meth

    + + + +

    ◆ minversion

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::minversion
    +
    +
    + +

    ◆ numcl

    + + + +

    ◆ numcomps

    + + + +

    ◆ precedence

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::precedence
    +
    +
    + +

    ◆ UnkC

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2::UnkC
    +
    +
    + +

    ◆ w

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__box.html b/build/doc/html/structopj__jp2__box.html new file mode 100644 index 000000000..10e8237cb --- /dev/null +++ b/build/doc/html/structopj__jp2__box.html @@ -0,0 +1,123 @@ + + + + + + + +OpenJPEG: opj_jp2_box Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_box Struct Reference
    +
    +
    + +

    JP2 Box. + More...

    + +

    #include <jp2.h>

    + + + + + + + + +

    +Data Fields

    OPJ_UINT32 length
     
    OPJ_UINT32 type
     
    OPJ_INT32 init_pos
     
    +

    Detailed Description

    +

    JP2 Box.

    +

    Field Documentation

    + +

    ◆ init_pos

    + +
    +
    + + + + +
    OPJ_INT32 opj_jp2_box::init_pos
    +
    + +
    +
    + +

    ◆ length

    + + + +

    ◆ type

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__cdef.html b/build/doc/html/structopj__jp2__cdef.html new file mode 100644 index 000000000..c3421c8bb --- /dev/null +++ b/build/doc/html/structopj__jp2__cdef.html @@ -0,0 +1,107 @@ + + + + + + + +OpenJPEG: opj_jp2_cdef Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_cdef Struct Reference
    +
    +
    + +

    Channel descriptions and number of descriptions. + More...

    + +

    #include <jp2.h>

    + + + + + + +

    +Data Fields

    opj_jp2_cdef_info_tinfo
     
    OPJ_UINT16 n
     
    +

    Detailed Description

    +

    Channel descriptions and number of descriptions.

    +

    Field Documentation

    + +

    ◆ info

    + + + +

    ◆ n

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__cdef__info.html b/build/doc/html/structopj__jp2__cdef__info.html new file mode 100644 index 000000000..88ac36984 --- /dev/null +++ b/build/doc/html/structopj__jp2__cdef__info.html @@ -0,0 +1,125 @@ + + + + + + + +OpenJPEG: opj_jp2_cdef_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_cdef_info Struct Reference
    +
    +
    + +

    Channel description: channel index, type, association. + More...

    + +

    #include <jp2.h>

    + + + + + + + + +

    +Data Fields

    OPJ_UINT16 cn
     
    OPJ_UINT16 typ
     
    OPJ_UINT16 asoc
     
    +

    Detailed Description

    +

    Channel description: channel index, type, association.

    +

    Field Documentation

    + +

    ◆ asoc

    + +
    +
    + + + + +
    OPJ_UINT16 opj_jp2_cdef_info::asoc
    +
    +
    + +

    ◆ cn

    + +
    +
    + + + + +
    OPJ_UINT16 opj_jp2_cdef_info::cn
    +
    +
    + +

    ◆ typ

    + +
    +
    + + + + +
    OPJ_UINT16 opj_jp2_cdef_info::typ
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__cmap__comp.html b/build/doc/html/structopj__jp2__cmap__comp.html new file mode 100644 index 000000000..a67a6f83e --- /dev/null +++ b/build/doc/html/structopj__jp2__cmap__comp.html @@ -0,0 +1,125 @@ + + + + + + + +OpenJPEG: opj_jp2_cmap_comp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_cmap_comp Struct Reference
    +
    +
    + +

    Component mappings: channel index, mapping type, palette index. + More...

    + +

    #include <jp2.h>

    + + + + + + + + +

    +Data Fields

    OPJ_UINT16 cmp
     
    OPJ_BYTE mtyp
     
    OPJ_BYTE pcol
     
    +

    Detailed Description

    +

    Component mappings: channel index, mapping type, palette index.

    +

    Field Documentation

    + +

    ◆ cmp

    + +
    +
    + + + + +
    OPJ_UINT16 opj_jp2_cmap_comp::cmp
    +
    + +

    Referenced by opj_jp2_apply_pclr(), and opj_jp2_read_cmap().

    + +
    +
    + +

    ◆ mtyp

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2_cmap_comp::mtyp
    +
    + +

    Referenced by opj_jp2_check_color(), and opj_jp2_read_cmap().

    + +
    +
    + +

    ◆ pcol

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2_cmap_comp::pcol
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__color.html b/build/doc/html/structopj__jp2__color.html new file mode 100644 index 000000000..32fb15c10 --- /dev/null +++ b/build/doc/html/structopj__jp2__color.html @@ -0,0 +1,161 @@ + + + + + + + +OpenJPEG: opj_jp2_color Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_color Struct Reference
    +
    +
    + +

    Collector for ICC profile, palette, component mapping, channel description. + More...

    + +

    #include <jp2.h>

    + + + + + + + + + + + + +

    +Data Fields

    OPJ_BYTEicc_profile_buf
     
    OPJ_UINT32 icc_profile_len
     
    opj_jp2_cdef_tjp2_cdef
     
    opj_jp2_pclr_tjp2_pclr
     
    OPJ_BYTE jp2_has_colr
     
    +

    Detailed Description

    +

    Collector for ICC profile, palette, component mapping, channel description.

    +

    Field Documentation

    + +

    ◆ icc_profile_buf

    + +
    +
    + + + + +
    OPJ_BYTE* opj_jp2_color::icc_profile_buf
    +
    +
    + +

    ◆ icc_profile_len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_color::icc_profile_len
    +
    +
    + +

    ◆ jp2_cdef

    + + + +

    ◆ jp2_has_colr

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2_color::jp2_has_colr
    +
    +
    + +

    ◆ jp2_pclr

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__comps.html b/build/doc/html/structopj__jp2__comps.html new file mode 100644 index 000000000..900374c4e --- /dev/null +++ b/build/doc/html/structopj__jp2__comps.html @@ -0,0 +1,121 @@ + + + + + + + +OpenJPEG: opj_jp2_comps Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_comps Struct Reference
    +
    +
    + +

    JP2 component. + More...

    + +

    #include <jp2.h>

    + + + + + + + + +

    +Data Fields

    OPJ_UINT32 depth
     
    OPJ_UINT32 sgnd
     
    OPJ_UINT32 bpcc
     
    +

    Detailed Description

    +

    JP2 component.

    +

    Field Documentation

    + +

    ◆ bpcc

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_comps::bpcc
    +
    +
    + +

    ◆ depth

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_comps::depth
    +
    + +
    +
    + +

    ◆ sgnd

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_comps::sgnd
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__header__handler.html b/build/doc/html/structopj__jp2__header__handler.html new file mode 100644 index 000000000..a09f99e22 --- /dev/null +++ b/build/doc/html/structopj__jp2__header__handler.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: opj_jp2_header_handler Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_header_handler Struct Reference
    +
    +
    + +

    #include <jp2.h>

    + + + + + + +

    +Data Fields

    OPJ_UINT32 id
     
    OPJ_BOOL(* handler )(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     
    +

    Field Documentation

    + +

    ◆ handler

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_jp2_header_handler::handler) (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    +
    +
    + +

    ◆ id

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_header_handler::id
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__img__header__writer__handler.html b/build/doc/html/structopj__jp2__img__header__writer__handler.html new file mode 100644 index 000000000..c9d991413 --- /dev/null +++ b/build/doc/html/structopj__jp2__img__header__writer__handler.html @@ -0,0 +1,120 @@ + + + + + + + +OpenJPEG: opj_jp2_img_header_writer_handler Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_img_header_writer_handler Struct Reference
    +
    +
    + +

    #include <jp2.h>

    + + + + + + + + +

    +Data Fields

    OPJ_BYTE *(* handler )(opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
     
    OPJ_BYTEm_data
     
    OPJ_UINT32 m_size
     
    +

    Field Documentation

    + +

    ◆ handler

    + +
    +
    + + + + +
    OPJ_BYTE*(* opj_jp2_img_header_writer_handler::handler) (opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
    +
    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ m_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_jp2_img_header_writer_handler::m_data
    +
    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    + +

    ◆ m_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_jp2_img_header_writer_handler::m_size
    +
    + +

    Referenced by opj_jp2_write_jp2h().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__index.html b/build/doc/html/structopj__jp2__index.html new file mode 100644 index 000000000..206c683bb --- /dev/null +++ b/build/doc/html/structopj__jp2__index.html @@ -0,0 +1,87 @@ + + + + + + + +OpenJPEG: opj_jp2_index Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_index Struct Reference
    +
    +
    + +

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. + More...

    + +

    #include <openjpeg.h>

    + + + + +

    +Data Fields

    OPJ_INT32 not_used
     
    +

    Detailed Description

    +

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    +

    Field Documentation

    + +

    ◆ not_used

    + +
    +
    + + + + +
    OPJ_INT32 opj_jp2_index::not_used
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__metadata.html b/build/doc/html/structopj__jp2__metadata.html new file mode 100644 index 000000000..c084781da --- /dev/null +++ b/build/doc/html/structopj__jp2__metadata.html @@ -0,0 +1,87 @@ + + + + + + + +OpenJPEG: opj_jp2_metadata Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_metadata Struct Reference
    +
    +
    + +

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. + More...

    + +

    #include <openjpeg.h>

    + + + + +

    +Data Fields

    OPJ_INT32 not_used
     
    +

    Detailed Description

    +

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    +

    Field Documentation

    + +

    ◆ not_used

    + +
    +
    + + + + +
    OPJ_INT32 opj_jp2_metadata::not_used
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__jp2__pclr.html b/build/doc/html/structopj__jp2__pclr.html new file mode 100644 index 000000000..fdcc053d5 --- /dev/null +++ b/build/doc/html/structopj__jp2__pclr.html @@ -0,0 +1,179 @@ + + + + + + + +OpenJPEG: opj_jp2_pclr Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_jp2_pclr Struct Reference
    +
    +
    + +

    Palette data: table entries, palette columns. + More...

    + +

    #include <jp2.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32entries
     
    OPJ_BYTEchannel_sign
     
    OPJ_BYTEchannel_size
     
    opj_jp2_cmap_comp_tcmap
     
    OPJ_UINT16 nr_entries
     
    OPJ_BYTE nr_channels
     
    +

    Detailed Description

    +

    Palette data: table entries, palette columns.

    +

    Field Documentation

    + +

    ◆ channel_sign

    + +
    +
    + + + + +
    OPJ_BYTE* opj_jp2_pclr::channel_sign
    +
    +
    + +

    ◆ channel_size

    + +
    +
    + + + + +
    OPJ_BYTE* opj_jp2_pclr::channel_size
    +
    +
    + +

    ◆ cmap

    + + + +

    ◆ entries

    + +
    +
    + + + + +
    OPJ_UINT32* opj_jp2_pclr::entries
    +
    +
    + +

    ◆ nr_channels

    + +
    +
    + + + + +
    OPJ_BYTE opj_jp2_pclr::nr_channels
    +
    +
    + +

    ◆ nr_entries

    + +
    +
    + + + + +
    OPJ_UINT16 opj_jp2_pclr::nr_entries
    +
    + +

    Referenced by opj_jp2_apply_pclr(), and opj_jp2_read_pclr().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__marker__info.html b/build/doc/html/structopj__marker__info.html new file mode 100644 index 000000000..de10e6fa4 --- /dev/null +++ b/build/doc/html/structopj__marker__info.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: opj_marker_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_marker_info Struct Reference
    +
    +
    + +

    Marker structure. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + +

    +Data Fields

    unsigned short int type
     marker type More...
     
    OPJ_OFF_T pos
     position in codestream More...
     
    int len
     length, marker val included More...
     
    +

    Detailed Description

    +

    Marker structure.

    +

    Field Documentation

    + +

    ◆ len

    + +
    +
    + + + + +
    int opj_marker_info::len
    +
    + +

    length, marker val included

    + +

    Referenced by opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_dump_MH_index(), and opj_write_mainmhix().

    + +
    +
    + +

    ◆ pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_marker_info::pos
    +
    + +

    position in codestream

    + +

    Referenced by opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_dump_MH_index(), and opj_write_mainmhix().

    + +
    +
    + +

    ◆ type

    + +
    +
    + + + + +
    unsigned short int opj_marker_info::type
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__mct__data.html b/build/doc/html/structopj__mct__data.html new file mode 100644 index 000000000..00e944949 --- /dev/null +++ b/build/doc/html/structopj__mct__data.html @@ -0,0 +1,161 @@ + + + + + + + +OpenJPEG: opj_mct_data Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_mct_data Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + +

    +Data Fields

    J2K_MCT_ELEMENT_TYPE m_element_type
     
    J2K_MCT_ARRAY_TYPE m_array_type
     
    OPJ_UINT32 m_index
     
    OPJ_BYTEm_data
     
    OPJ_UINT32 m_data_size
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ m_array_type

    + +
    +
    + + + + +
    J2K_MCT_ARRAY_TYPE opj_mct_data::m_array_type
    +
    +
    + +

    ◆ m_data

    + + + +

    ◆ m_data_size

    + + + +

    ◆ m_element_type

    + +
    +
    + + + + +
    J2K_MCT_ELEMENT_TYPE opj_mct_data::m_element_type
    +
    +
    + +

    ◆ m_index

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__mqc.html b/build/doc/html/structopj__mqc.html new file mode 100644 index 000000000..f021b89f7 --- /dev/null +++ b/build/doc/html/structopj__mqc.html @@ -0,0 +1,296 @@ + + + + + + + +OpenJPEG: opj_mqc Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_mqc Struct Reference
    +
    +
    + +

    MQ coder. + More...

    + +

    #include <mqc.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 c
     temporary buffer where bits are coded or decoded More...
     
    OPJ_UINT32 a
     only used by MQ decoder More...
     
    OPJ_UINT32 ct
     number of bits already read or free to write More...
     
    OPJ_UINT32 end_of_byte_stream_counter
     
    OPJ_BYTEbp
     pointer to the current position in the buffer More...
     
    OPJ_BYTEstart
     pointer to the start of the buffer More...
     
    OPJ_BYTEend
     pointer to the end of the buffer More...
     
    const opj_mqc_state_tctxs [MQC_NUMCTXS]
     Array of contexts. More...
     
    const opj_mqc_state_t ** curctx
     Active context. More...
     
    const OPJ_BYTElut_ctxno_zc_orient
     
    OPJ_BYTE backup [OPJ_COMMON_CBLK_DATA_EXTRA]
     Original value of the 2 bytes at end[0] and end[1]. More...
     
    +

    Detailed Description

    +

    MQ coder.

    +

    Field Documentation

    + +

    ◆ a

    + + + +

    ◆ backup

    + +
    +
    + + + + +
    OPJ_BYTE opj_mqc::backup[OPJ_COMMON_CBLK_DATA_EXTRA]
    +
    + +

    Original value of the 2 bytes at end[0] and end[1].

    + +

    Referenced by opj_mqc_init_dec_common(), and opq_mqc_finish_dec().

    + +
    +
    + +

    ◆ bp

    + + + +

    ◆ c

    + + + +

    ◆ ct

    + + + +

    ◆ ctxs

    + +
    +
    + + + + +
    const opj_mqc_state_t* opj_mqc::ctxs[MQC_NUMCTXS]
    +
    + +

    Array of contexts.

    + +

    Referenced by opj_mqc_resetstates(), and opj_mqc_setstate().

    + +
    +
    + +

    ◆ curctx

    + + + +

    ◆ end

    + +
    +
    + + + + +
    OPJ_BYTE* opj_mqc::end
    +
    + +

    pointer to the end of the buffer

    + +

    Referenced by opj_mqc_init_dec_common(), opj_t1_decode_cblk(), and opq_mqc_finish_dec().

    + +
    +
    + +

    ◆ end_of_byte_stream_counter

    + +
    +
    + + + + +
    OPJ_UINT32 opj_mqc::end_of_byte_stream_counter
    +
    +
    + +

    ◆ lut_ctxno_zc_orient

    + +
    +
    + + + + +
    const OPJ_BYTE* opj_mqc::lut_ctxno_zc_orient
    +
    +
    + +

    ◆ start

    + +
    +
    + + + + +
    OPJ_BYTE* opj_mqc::start
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__mqc__state.html b/build/doc/html/structopj__mqc__state.html new file mode 100644 index 000000000..1c291fe51 --- /dev/null +++ b/build/doc/html/structopj__mqc__state.html @@ -0,0 +1,147 @@ + + + + + + + +OpenJPEG: opj_mqc_state Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_mqc_state Struct Reference
    +
    +
    + +

    This struct defines the state of a context. + More...

    + +

    #include <mqc.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 qeval
     the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) More...
     
    OPJ_UINT32 mps
     the Most Probable Symbol (0 or 1) More...
     
    const struct opj_mqc_statenmps
     next state if the next encoded symbol is the MPS More...
     
    const struct opj_mqc_statenlps
     next state if the next encoded symbol is the LPS More...
     
    +

    Detailed Description

    +

    This struct defines the state of a context.

    +

    Field Documentation

    + +

    ◆ mps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_mqc_state::mps
    +
    + +

    the Most Probable Symbol (0 or 1)

    + +
    +
    + +

    ◆ nlps

    + +
    +
    + + + + +
    const struct opj_mqc_state* opj_mqc_state::nlps
    +
    + +

    next state if the next encoded symbol is the LPS

    + +
    +
    + +

    ◆ nmps

    + +
    +
    + + + + +
    const struct opj_mqc_state* opj_mqc_state::nmps
    +
    + +

    next state if the next encoded symbol is the MPS

    + +
    +
    + +

    ◆ qeval

    + +
    +
    + + + + +
    OPJ_UINT32 opj_mqc_state::qeval
    +
    + +

    the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__packet__info.html b/build/doc/html/structopj__packet__info.html new file mode 100644 index 000000000..f58bfc337 --- /dev/null +++ b/build/doc/html/structopj__packet__info.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: opj_packet_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_packet_info Struct Reference
    +
    +
    + +

    Index structure : Information concerning a packet inside tile. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_OFF_T start_pos
     packet start position (including SOP marker if it exists) More...
     
    OPJ_OFF_T end_ph_pos
     end of packet header position (including EPH marker if it exists) More...
     
    OPJ_OFF_T end_pos
     packet end position More...
     
    double disto
     packet distorsion More...
     
    +

    Detailed Description

    +

    Index structure : Information concerning a packet inside tile.

    +

    Field Documentation

    + +

    ◆ disto

    + +
    +
    + + + + +
    double opj_packet_info::disto
    +
    + +

    packet distorsion

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ end_ph_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_packet_info::end_ph_pos
    +
    + +

    end of packet header position (including EPH marker if it exists)

    + +

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packet(), opj_t2_encode_packets(), opj_t2_read_packet_header(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ end_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_packet_info::end_pos
    +
    + +

    packet end position

    + +

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packets(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ start_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_packet_info::start_pos
    +
    + +

    packet start position (including SOP marker if it exists)

    + +

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packets(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__pi__comp.html b/build/doc/html/structopj__pi__comp.html new file mode 100644 index 000000000..02379fe67 --- /dev/null +++ b/build/doc/html/structopj__pi__comp.html @@ -0,0 +1,146 @@ + + + + + + + +OpenJPEG: opj_pi_comp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_pi_comp Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <pi.h>

    + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 dx
     
    OPJ_UINT32 dy
     
    OPJ_UINT32 numresolutions
     number of resolution levels More...
     
    opj_pi_resolution_tresolutions
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ dx

    + + + +

    ◆ dy

    + + + +

    ◆ numresolutions

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_comp::numresolutions
    +
    +
    + +

    ◆ resolutions

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__pi__iterator.html b/build/doc/html/structopj__pi__iterator.html new file mode 100644 index 000000000..38a4e6d14 --- /dev/null +++ b/build/doc/html/structopj__pi__iterator.html @@ -0,0 +1,539 @@ + + + + + + + +OpenJPEG: opj_pi_iterator Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_pi_iterator Struct Reference
    +
    +
    + +

    Packet iterator. + More...

    + +

    #include <pi.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BYTE tp_on
     Enabling Tile part generation. More...
     
    OPJ_INT16include
     precise if the packet has been already used (useful for progression order change) More...
     
    OPJ_UINT32 include_size
     Number of elements in include array. More...
     
    OPJ_UINT32 step_l
     layer step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_r
     resolution step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_c
     component step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_p
     precinct step used to localize the packet in the include vector More...
     
    OPJ_UINT32 compno
     component that identify the packet More...
     
    OPJ_UINT32 resno
     resolution that identify the packet More...
     
    OPJ_UINT32 precno
     precinct that identify the packet More...
     
    OPJ_UINT32 layno
     layer that identify the packet More...
     
    OPJ_BOOL first
     0 if the first packet More...
     
    opj_poc_t poc
     progression order change information More...
     
    OPJ_UINT32 numcomps
     number of components in the image More...
     
    opj_pi_comp_tcomps
     Components. More...
     
    OPJ_UINT32 tx0
     FIXME DOC. More...
     
    OPJ_UINT32 ty0
     
    OPJ_UINT32 tx1
     
    OPJ_UINT32 ty1
     
    OPJ_UINT32 x
     FIXME DOC. More...
     
    OPJ_UINT32 y
     
    OPJ_UINT32 dx
     FIXME DOC. More...
     
    OPJ_UINT32 dy
     
    +

    Detailed Description

    +

    Packet iterator.

    +

    Field Documentation

    + +

    ◆ compno

    + + + +

    ◆ comps

    + + + +

    ◆ dx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::dx
    +
    +
    + +

    ◆ dy

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::dy
    +
    +
    + +

    ◆ first

    + + + +

    ◆ include

    + +
    +
    + + + + +
    OPJ_INT16* opj_pi_iterator::include
    +
    + +

    precise if the packet has been already used (useful for progression order change)

    + +

    Referenced by opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ include_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::include_size
    +
    +
    + +

    ◆ layno

    + + + +

    ◆ numcomps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::numcomps
    +
    + +

    number of components in the image

    + +

    Referenced by opj_pi_create(), opj_pi_destroy(), opj_pi_next_pcrl(), opj_pi_next_rpcl(), and opj_pi_update_decode_not_poc().

    + +
    +
    + +

    ◆ poc

    + + + +

    ◆ precno

    + + + +

    ◆ resno

    + + + +

    ◆ step_c

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::step_c
    +
    + +

    component step used to localize the packet in the include vector

    + +

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ step_l

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::step_l
    +
    + +

    layer step used to localize the packet in the include vector

    + +

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ step_p

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::step_p
    +
    + +

    precinct step used to localize the packet in the include vector

    + +

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ step_r

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::step_r
    +
    + +

    resolution step used to localize the packet in the include vector

    + +

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ tp_on

    + +
    +
    + + + + +
    OPJ_BYTE opj_pi_iterator::tp_on
    +
    +
    + +

    ◆ tx0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::tx0
    +
    +
    + +

    ◆ tx1

    + + + +

    ◆ ty0

    + + + +

    ◆ ty1

    + + + +

    ◆ x

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::x
    +
    + +

    FIXME DOC.

    + +

    Referenced by opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_iterator::y
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__pi__resolution.html b/build/doc/html/structopj__pi__resolution.html new file mode 100644 index 000000000..32001e844 --- /dev/null +++ b/build/doc/html/structopj__pi__resolution.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: opj_pi_resolution Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_pi_resolution Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <pi.h>

    + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 pdx
     
    OPJ_UINT32 pdy
     
    OPJ_UINT32 pw
     
    OPJ_UINT32 ph
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ pdx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_resolution::pdx
    +
    +
    + +

    ◆ pdy

    + +
    +
    + + + + +
    OPJ_UINT32 opj_pi_resolution::pdy
    +
    +
    + +

    ◆ ph

    + + + +

    ◆ pw

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__poc.html b/build/doc/html/structopj__poc.html new file mode 100644 index 000000000..df6d83ec2 --- /dev/null +++ b/build/doc/html/structopj__poc.html @@ -0,0 +1,738 @@ + + + + + + + +OpenJPEG: opj_poc Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_poc Struct Reference
    +
    +
    + +

    Progression order changes. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 resno0
     Resolution num start, Component num start, given by POC. More...
     
    OPJ_UINT32 compno0
     
    OPJ_UINT32 layno1
     Layer num end,Resolution num end, Component num end, given by POC. More...
     
    OPJ_UINT32 resno1
     
    OPJ_UINT32 compno1
     
    OPJ_UINT32 layno0
     Layer num start,Precinct num start, Precinct num end. More...
     
    OPJ_UINT32 precno0
     
    OPJ_UINT32 precno1
     
    OPJ_PROG_ORDER prg1
     Progression order enum. More...
     
    OPJ_PROG_ORDER prg
     
    OPJ_CHAR progorder [5]
     Progression order string. More...
     
    OPJ_UINT32 tile
     Tile number (starting at 1) More...
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
     Start and end values for Tile width and height. More...
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
     
    OPJ_UINT32 layS
     Start value, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 resS
     
    OPJ_UINT32 compS
     
    OPJ_UINT32 prcS
     
    OPJ_UINT32 layE
     End value, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 resE
     
    OPJ_UINT32 compE
     
    OPJ_UINT32 prcE
     
    OPJ_UINT32 txS
     Start and end values of Tile width and height, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 txE
     
    OPJ_UINT32 tyS
     
    OPJ_UINT32 tyE
     
    OPJ_UINT32 dx
     
    OPJ_UINT32 dy
     
    OPJ_UINT32 lay_t
     Temporary values for Tile parts, initialised in pi_create_encode. More...
     
    OPJ_UINT32 res_t
     
    OPJ_UINT32 comp_t
     
    OPJ_UINT32 prc_t
     
    OPJ_UINT32 tx0_t
     
    OPJ_UINT32 ty0_t
     
    +

    Detailed Description

    +

    Progression order changes.

    +

    Field Documentation

    + +

    ◆ comp_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::comp_t
    +
    + +
    +
    + +

    ◆ compE

    + + + +

    ◆ compno0

    + + + +

    ◆ compno1

    + + + +

    ◆ compS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::compS
    +
    +
    + +

    ◆ dx

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::dx
    +
    +
    + +

    ◆ dy

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::dy
    +
    +
    + +

    ◆ lay_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::lay_t
    +
    + +

    Temporary values for Tile parts, initialised in pi_create_encode.

    + +
    +
    + +

    ◆ layE

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::layE
    +
    + +

    End value, initialised in pi_initialise_encode.

    + +

    Referenced by opj_j2k_get_num_tp(), opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    + +
    +
    + +

    ◆ layno0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::layno0
    +
    +
    + +

    ◆ layno1

    + + + +

    ◆ layS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::layS
    +
    + +

    Start value, initialised in pi_initialise_encode.

    + +

    Referenced by opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    + +
    +
    + +

    ◆ prc_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::prc_t
    +
    + +
    +
    + +

    ◆ prcE

    + + + +

    ◆ prcS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::prcS
    +
    +
    + +

    ◆ precno0

    + + + +

    ◆ precno1

    + + + +

    ◆ prg

    + + + +

    ◆ prg1

    + +
    +
    + + + + +
    OPJ_PROG_ORDER opj_poc::prg1
    +
    +
    + +

    ◆ progorder

    + +
    +
    + + + + +
    OPJ_CHAR opj_poc::progorder[5]
    +
    + +

    Progression order string.

    + +
    +
    + +

    ◆ res_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::res_t
    +
    + +
    +
    + +

    ◆ resE

    + + + +

    ◆ resno0

    + + + +

    ◆ resno1

    + + + +

    ◆ resS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::resS
    +
    +
    + +

    ◆ tile

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::tile
    +
    + +

    Tile number (starting at 1)

    + +

    Referenced by opj_j2k_check_poc_val(), opj_j2k_initialise_4K_poc(), and opj_j2k_setup_encoder().

    + +
    +
    + +

    ◆ tx0

    + +
    +
    + + + + +
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 opj_poc::tx0
    +
    + +

    Start and end values for Tile width and height.

    + +

    Referenced by opj_pi_create_encode(), opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    + +
    +
    + +

    ◆ tx0_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::tx0_t
    +
    + +
    +
    + +

    ◆ tx1

    + + + +

    ◆ txE

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::txE
    +
    +
    + +

    ◆ txS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::txS
    +
    + +

    Start and end values of Tile width and height, initialised in pi_initialise_encode.

    + +

    Referenced by opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    + +
    +
    + +

    ◆ ty0

    + + + +

    ◆ ty0_t

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::ty0_t
    +
    + +
    +
    + +

    ◆ ty1

    + + + +

    ◆ tyE

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::tyE
    +
    +
    + +

    ◆ tyS

    + +
    +
    + + + + +
    OPJ_UINT32 opj_poc::tyS
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__ppx__struct.html b/build/doc/html/structopj__ppx__struct.html new file mode 100644 index 000000000..204183f9e --- /dev/null +++ b/build/doc/html/structopj__ppx__struct.html @@ -0,0 +1,102 @@ + + + + + + + +OpenJPEG: opj_ppx_struct Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_ppx_struct Struct Reference
    +
    +
    + +

    #include <j2k.h>

    + + + + + + +

    +Data Fields

    OPJ_BYTEm_data
     
    OPJ_UINT32 m_data_size
     
    +

    Field Documentation

    + +

    ◆ m_data

    + + + +

    ◆ m_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_ppx_struct::m_data_size
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__procedure__list.html b/build/doc/html/structopj__procedure__list.html new file mode 100644 index 000000000..ec347e4ea --- /dev/null +++ b/build/doc/html/structopj__procedure__list.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: opj_procedure_list Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_procedure_list Struct Reference
    +
    +
    + +

    A list of procedures. + More...

    + +

    #include <function_list.h>

    + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_nb_procedures
     The number of validation procedures. More...
     
    OPJ_UINT32 m_nb_max_procedures
     The number of the array of validation procedures. More...
     
    opj_procedurem_procedures
     The array of procedures. More...
     
    +

    Detailed Description

    +

    A list of procedures.

    +

    Field Documentation

    + +

    ◆ m_nb_max_procedures

    + +
    +
    + + + + +
    OPJ_UINT32 opj_procedure_list::m_nb_max_procedures
    +
    + +

    The number of the array of validation procedures.

    + +

    Referenced by opj_procedure_list_add_procedure(), and opj_procedure_list_create().

    + +
    +
    + +

    ◆ m_nb_procedures

    + +
    +
    + + + + +
    OPJ_UINT32 opj_procedure_list::m_nb_procedures
    +
    + +

    The number of validation procedures.

    + +

    Referenced by opj_procedure_list_add_procedure(), opj_procedure_list_clear(), and opj_procedure_list_get_nb_procedures().

    + +
    +
    + +

    ◆ m_procedures

    + +
    +
    + + + + +
    opj_procedure* opj_procedure_list::m_procedures
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__simple__mcc__decorrelation__data.html b/build/doc/html/structopj__simple__mcc__decorrelation__data.html new file mode 100644 index 000000000..c3f2d6a95 --- /dev/null +++ b/build/doc/html/structopj__simple__mcc__decorrelation__data.html @@ -0,0 +1,161 @@ + + + + + + + +OpenJPEG: opj_simple_mcc_decorrelation_data Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_simple_mcc_decorrelation_data Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 m_index
     
    OPJ_UINT32 m_nb_comps
     
    opj_mct_data_tm_decorrelation_array
     
    opj_mct_data_tm_offset_array
     
    OPJ_BITFIELD m_is_irreversible: 1
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ m_decorrelation_array

    + +
    +
    + + + + +
    opj_mct_data_t* opj_simple_mcc_decorrelation_data::m_decorrelation_array
    +
    +
    + +

    ◆ m_index

    + +
    +
    + + + + +
    OPJ_UINT32 opj_simple_mcc_decorrelation_data::m_index
    +
    +
    + +

    ◆ m_is_irreversible

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_simple_mcc_decorrelation_data::m_is_irreversible
    +
    +
    + +

    ◆ m_nb_comps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_simple_mcc_decorrelation_data::m_nb_comps
    +
    +
    + +

    ◆ m_offset_array

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__sparse__array__int32.html b/build/doc/html/structopj__sparse__array__int32.html new file mode 100644 index 000000000..847a40c96 --- /dev/null +++ b/build/doc/html/structopj__sparse__array__int32.html @@ -0,0 +1,190 @@ + + + + + + + +OpenJPEG: opj_sparse_array_int32 Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_sparse_array_int32 Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 width
     
    OPJ_UINT32 height
     
    OPJ_UINT32 block_width
     
    OPJ_UINT32 block_height
     
    OPJ_UINT32 block_count_hor
     
    OPJ_UINT32 block_count_ver
     
    OPJ_INT32 ** data_blocks
     
    +

    Field Documentation

    + +

    ◆ block_count_hor

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::block_count_hor
    +
    +
    + +

    ◆ block_count_ver

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::block_count_ver
    +
    +
    + +

    ◆ block_height

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::block_height
    +
    +
    + +

    ◆ block_width

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::block_width
    +
    +
    + +

    ◆ data_blocks

    + +
    +
    + + + + +
    OPJ_INT32** opj_sparse_array_int32::data_blocks
    +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::height
    +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    OPJ_UINT32 opj_sparse_array_int32::width
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__stepsize.html b/build/doc/html/structopj__stepsize.html new file mode 100644 index 000000000..ec7d50feb --- /dev/null +++ b/build/doc/html/structopj__stepsize.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: opj_stepsize Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_stepsize Struct Reference
    +
    +
    + +

    Quantization stepsize. + More...

    + +

    #include <j2k.h>

    + + + + + + + + +

    +Data Fields

    OPJ_INT32 expn
     exponent More...
     
    OPJ_INT32 mant
     mantissa More...
     
    +

    Detailed Description

    +

    Quantization stepsize.

    +

    Field Documentation

    + +

    ◆ expn

    + + + +

    ◆ mant

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__stream__private.html b/build/doc/html/structopj__stream__private.html new file mode 100644 index 000000000..afc616bf2 --- /dev/null +++ b/build/doc/html/structopj__stream__private.html @@ -0,0 +1,391 @@ + + + + + + + +OpenJPEG: opj_stream_private Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_stream_private Struct Reference
    +
    +
    + +

    Byte input-output stream. + More...

    + +

    #include <cio.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    void * m_user_data
     User data, be it files, ... More...
     
    opj_stream_free_user_data_fn m_free_user_data_fn
     Pointer to function to free m_user_data (NULL at initialization) when destroying the stream. More...
     
    OPJ_UINT64 m_user_data_length
     User data length. More...
     
    opj_stream_read_fn m_read_fn
     Pointer to actual read function (NULL at the initialization of the cio. More...
     
    opj_stream_write_fn m_write_fn
     Pointer to actual write function (NULL at the initialization of the cio. More...
     
    opj_stream_skip_fn m_skip_fn
     Pointer to actual skip function (NULL at the initialization of the cio. More...
     
    opj_stream_seek_fn m_seek_fn
     Pointer to actual seek function (if available). More...
     
    OPJ_BYTEm_stored_data
     Actual data stored into the stream if readed from. More...
     
    OPJ_BYTEm_current_data
     Pointer to the current read data. More...
     
    OPJ_OFF_T(* m_opj_skip )(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
     FIXME DOC. More...
     
    OPJ_BOOL(* m_opj_seek )(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
     FIXME DOC. More...
     
    OPJ_SIZE_T m_bytes_in_buffer
     number of bytes containing in the buffer. More...
     
    OPJ_OFF_T m_byte_offset
     The number of bytes read/written from the beginning of the stream. More...
     
    OPJ_SIZE_T m_buffer_size
     The size of the buffer. More...
     
    OPJ_UINT32 m_status
     Flags to tell the status of the stream. More...
     
    +

    Detailed Description

    +

    Byte input-output stream.

    +

    Field Documentation

    + +

    ◆ m_buffer_size

    + +
    +
    + + + + +
    OPJ_SIZE_T opj_stream_private::m_buffer_size
    +
    + +

    The size of the buffer.

    + +

    Referenced by opj_stream_create(), opj_stream_read_data(), and opj_stream_write_data().

    + +
    +
    + +

    ◆ m_byte_offset

    + +
    +
    + + + + +
    OPJ_OFF_T opj_stream_private::m_byte_offset
    +
    +
    + +

    ◆ m_bytes_in_buffer

    + +
    +
    + + + + +
    OPJ_SIZE_T opj_stream_private::m_bytes_in_buffer
    +
    +
    + +

    ◆ m_current_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_stream_private::m_current_data
    +
    +
    + +

    ◆ m_free_user_data_fn

    + +
    +
    + + + + +
    opj_stream_free_user_data_fn opj_stream_private::m_free_user_data_fn
    +
    + +

    Pointer to function to free m_user_data (NULL at initialization) when destroying the stream.

    +

    If pointer is NULL the function is not called and the m_user_data is not freed (even if non-NULL).

    + +

    Referenced by opj_stream_destroy(), and opj_stream_set_user_data().

    + +
    +
    + +

    ◆ m_opj_seek

    + +
    +
    + + + + +
    OPJ_BOOL(* opj_stream_private::m_opj_seek) (struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    +
    + +

    FIXME DOC.

    + +

    Referenced by opj_stream_create(), and opj_stream_seek().

    + +
    +
    + +

    ◆ m_opj_skip

    + +
    +
    + + + + +
    OPJ_OFF_T(* opj_stream_private::m_opj_skip) (struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    +
    + +

    FIXME DOC.

    + +

    Referenced by opj_stream_create(), and opj_stream_skip().

    + +
    +
    + +

    ◆ m_read_fn

    + +
    +
    + + + + +
    opj_stream_read_fn opj_stream_private::m_read_fn
    +
    + +

    Pointer to actual read function (NULL at the initialization of the cio.

    + +

    Referenced by opj_stream_create(), opj_stream_read_data(), and opj_stream_set_read_function().

    + +
    +
    + +

    ◆ m_seek_fn

    + +
    +
    + + + + +
    opj_stream_seek_fn opj_stream_private::m_seek_fn
    +
    + +

    Pointer to actual seek function (if available).

    + +

    Referenced by opj_stream_create(), opj_stream_has_seek(), opj_stream_read_seek(), opj_stream_set_seek_function(), and opj_stream_write_seek().

    + +
    +
    + +

    ◆ m_skip_fn

    + +
    +
    + + + + +
    opj_stream_skip_fn opj_stream_private::m_skip_fn
    +
    + +

    Pointer to actual skip function (NULL at the initialization of the cio.

    +

    There is no seek function to prevent from back and forth slow procedures.

    + +

    Referenced by opj_stream_create(), opj_stream_read_skip(), opj_stream_set_skip_function(), and opj_stream_write_skip().

    + +
    +
    + +

    ◆ m_status

    + +
    +
    + + + + +
    OPJ_UINT32 opj_stream_private::m_status
    +
    +
    + +

    ◆ m_stored_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_stream_private::m_stored_data
    +
    + +

    Actual data stored into the stream if readed from.

    +

    Data is read by chunk of fixed size. you should never access this data directly.

    + +

    Referenced by opj_stream_create(), opj_stream_destroy(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_seek(), opj_stream_read_skip(), opj_stream_write_data(), and opj_stream_write_seek().

    + +
    +
    + +

    ◆ m_user_data

    + +
    +
    + + + + +
    void* opj_stream_private::m_user_data
    +
    + +

    User data, be it files, ...

    +

    The actual data depends on the type of the stream.

    + +

    Referenced by opj_stream_destroy(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_seek(), opj_stream_read_skip(), opj_stream_set_user_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    + +
    +
    + +

    ◆ m_user_data_length

    + +
    +
    + + + + +
    OPJ_UINT64 opj_stream_private::m_user_data_length
    +
    +
    + +

    ◆ m_write_fn

    + +
    +
    + + + + +
    opj_stream_write_fn opj_stream_private::m_write_fn
    +
    + +

    Pointer to actual write function (NULL at the initialization of the cio.

    + +

    Referenced by opj_stream_create(), opj_stream_flush(), and opj_stream_set_write_function().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__t1.html b/build/doc/html/structopj__t1.html new file mode 100644 index 000000000..d6d056c07 --- /dev/null +++ b/build/doc/html/structopj__t1.html @@ -0,0 +1,294 @@ + + + + + + + +OpenJPEG: opj_t1 Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_t1 Struct Reference
    +
    +
    + +

    Tier-1 coding (coding of code-block coefficients) + More...

    + +

    #include <t1.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    opj_mqc_t mqc
     MQC component. More...
     
    OPJ_INT32data
     
    opj_flag_tflags
     Flags used by decoder and encoder. More...
     
    OPJ_UINT32 w
     
    OPJ_UINT32 h
     
    OPJ_UINT32 datasize
     
    OPJ_UINT32 flagssize
     
    OPJ_UINT32 data_stride
     
    OPJ_BOOL encoder
     
    OPJ_BOOL mustuse_cblkdatabuffer
     
    OPJ_BYTEcblkdatabuffer
     
    OPJ_UINT32 cblkdatabuffersize
     
    +

    Detailed Description

    +

    Tier-1 coding (coding of code-block coefficients)

    +

    Field Documentation

    + +

    ◆ cblkdatabuffer

    + +
    +
    + + + + +
    OPJ_BYTE* opj_t1::cblkdatabuffer
    +
    + +

    Referenced by opj_t1_decode_cblk(), and opj_t1_destroy().

    + +
    +
    + +

    ◆ cblkdatabuffersize

    + +
    +
    + + + + +
    OPJ_UINT32 opj_t1::cblkdatabuffersize
    +
    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ data

    + + + +

    ◆ data_stride

    + + + +

    ◆ datasize

    + +
    +
    + + + + +
    OPJ_UINT32 opj_t1::datasize
    +
    + +

    Referenced by opj_t1_allocate_buffers().

    + +
    +
    + +

    ◆ encoder

    + +
    +
    + + + + +
    OPJ_BOOL opj_t1::encoder
    +
    +
    + +

    ◆ flags

    + +
    +
    + + + + +
    opj_flag_t* opj_t1::flags
    +
    + +

    Flags used by decoder and encoder.

    +

    Such that flags[1+0] is for state of col=0,row=0..3, flags[1+1] for col=1, row=0..3, flags[1+flags_stride] for col=0,row=4..7, ... This array avoids too much cache trashing when processing by 4 vertical samples as done in the various decoding steps.

    + +

    Referenced by opj_t1_allocate_buffers(), and opj_t1_destroy().

    + +
    +
    + +

    ◆ flagssize

    + +
    +
    + + + + +
    OPJ_UINT32 opj_t1::flagssize
    +
    + +

    Referenced by opj_t1_allocate_buffers().

    + +
    +
    + +

    ◆ h

    + + + +

    ◆ mqc

    + + + +

    ◆ mustuse_cblkdatabuffer

    + +
    +
    + + + + +
    OPJ_BOOL opj_t1::mustuse_cblkdatabuffer
    +
    +
    + +

    ◆ w

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html b/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html new file mode 100644 index 000000000..08a714533 --- /dev/null +++ b/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html @@ -0,0 +1,262 @@ + + + + + + + +OpenJPEG: opj_t1_cblk_decode_processing_job_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_t1_cblk_decode_processing_job_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BOOL whole_tile_decoding
     
    OPJ_UINT32 resno
     
    opj_tcd_cblk_dec_tcblk
     
    opj_tcd_band_tband
     
    opj_tcd_tilecomp_ttilec
     
    opj_tccp_ttccp
     
    OPJ_BOOL mustuse_cblkdatabuffer
     
    volatile OPJ_BOOLpret
     
    opj_event_mgr_tp_manager
     
    opj_mutex_tp_manager_mutex
     
    OPJ_BOOL check_pterm
     
    +

    Field Documentation

    + +

    ◆ band

    + +
    +
    + + + + +
    opj_tcd_band_t* opj_t1_cblk_decode_processing_job_t::band
    +
    +
    + +

    ◆ cblk

    + +
    +
    + + + + +
    opj_tcd_cblk_dec_t* opj_t1_cblk_decode_processing_job_t::cblk
    +
    +
    + +

    ◆ check_pterm

    + +
    +
    + + + + +
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::check_pterm
    +
    +
    + +

    ◆ mustuse_cblkdatabuffer

    + +
    +
    + + + + +
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer
    +
    +
    + +

    ◆ p_manager

    + +
    +
    + + + + +
    opj_event_mgr_t* opj_t1_cblk_decode_processing_job_t::p_manager
    +
    +
    + +

    ◆ p_manager_mutex

    + +
    +
    + + + + +
    opj_mutex_t* opj_t1_cblk_decode_processing_job_t::p_manager_mutex
    +
    +
    + +

    ◆ pret

    + +
    +
    + + + + +
    volatile OPJ_BOOL* opj_t1_cblk_decode_processing_job_t::pret
    +
    +
    + +

    ◆ resno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_t1_cblk_decode_processing_job_t::resno
    +
    +
    + +

    ◆ tccp

    + +
    +
    + + + + +
    opj_tccp_t* opj_t1_cblk_decode_processing_job_t::tccp
    +
    +
    + +

    ◆ tilec

    + +
    +
    + + + + +
    opj_tcd_tilecomp_t* opj_t1_cblk_decode_processing_job_t::tilec
    +
    +
    + +

    ◆ whole_tile_decoding

    + +
    +
    + + + + +
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::whole_tile_decoding
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__t2.html b/build/doc/html/structopj__t2.html new file mode 100644 index 000000000..d1571ff4f --- /dev/null +++ b/build/doc/html/structopj__t2.html @@ -0,0 +1,114 @@ + + + + + + + +OpenJPEG: opj_t2 Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_t2 Struct Reference
    +
    +
    + +

    Tier-2 coding. + More...

    + +

    #include <t2.h>

    + + + + + + + + +

    +Data Fields

    opj_image_timage
     Encoding: pointer to the src image. More...
     
    opj_cp_tcp
     pointer to the image coding parameters More...
     
    +

    Detailed Description

    +

    Tier-2 coding.

    +

    Field Documentation

    + +

    ◆ cp

    + +
    +
    + + + + +
    opj_cp_t* opj_t2::cp
    +
    + +

    pointer to the image coding parameters

    + +

    Referenced by opj_t2_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ image

    + +
    +
    + + + + +
    opj_image_t* opj_t2::image
    +
    + +

    Encoding: pointer to the src image.

    +

    Decoding: pointer to the dst image.

    + +

    Referenced by opj_t2_create(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tccp.html b/build/doc/html/structopj__tccp.html new file mode 100644 index 000000000..f095a1c32 --- /dev/null +++ b/build/doc/html/structopj__tccp.html @@ -0,0 +1,344 @@ + + + + + + + +OpenJPEG: opj_tccp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tccp Struct Reference
    +
    +
    + +

    Tile-component coding parameters. + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 csty
     coding style More...
     
    OPJ_UINT32 numresolutions
     number of resolutions More...
     
    OPJ_UINT32 cblkw
     code-blocks width More...
     
    OPJ_UINT32 cblkh
     code-blocks height More...
     
    OPJ_UINT32 cblksty
     code-block coding style More...
     
    OPJ_UINT32 qmfbid
     discrete wavelet transform identifier More...
     
    OPJ_UINT32 qntsty
     quantisation style More...
     
    opj_stepsize_t stepsizes [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 numgbits
     number of guard bits More...
     
    OPJ_INT32 roishift
     Region Of Interest shift. More...
     
    OPJ_UINT32 prcw [OPJ_J2K_MAXRLVLS]
     precinct width More...
     
    OPJ_UINT32 prch [OPJ_J2K_MAXRLVLS]
     precinct height More...
     
    OPJ_INT32 m_dc_level_shift
     the dc_level_shift More...
     
    +

    Detailed Description

    +

    Tile-component coding parameters.

    +

    Field Documentation

    + +

    ◆ cblkh

    + + + +

    ◆ cblksty

    + + + +

    ◆ cblkw

    + + + +

    ◆ csty

    + + + +

    ◆ m_dc_level_shift

    + +
    +
    + + + + +
    OPJ_INT32 opj_tccp::m_dc_level_shift
    +
    +
    + +

    ◆ numgbits

    + + + +

    ◆ numresolutions

    + + + +

    ◆ prch

    + + + +

    ◆ prcw

    + + + +

    ◆ qmfbid

    + + + +

    ◆ qntsty

    + + + +

    ◆ roishift

    + + + +

    ◆ stepsizes

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tccp__info.html b/build/doc/html/structopj__tccp__info.html new file mode 100644 index 000000000..8de8da439 --- /dev/null +++ b/build/doc/html/structopj__tccp__info.html @@ -0,0 +1,363 @@ + + + + + + + +OpenJPEG: opj_tccp_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tccp_info Struct Reference
    +
    +
    + +

    Tile-component coding parameters information. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 compno
     component index More...
     
    OPJ_UINT32 csty
     coding style More...
     
    OPJ_UINT32 numresolutions
     number of resolutions More...
     
    OPJ_UINT32 cblkw
     log2 of code-blocks width More...
     
    OPJ_UINT32 cblkh
     log2 of code-blocks height More...
     
    OPJ_UINT32 cblksty
     code-block coding style More...
     
    OPJ_UINT32 qmfbid
     discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible More...
     
    OPJ_UINT32 qntsty
     quantisation style More...
     
    OPJ_UINT32 stepsizes_mant [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 stepsizes_expn [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 numgbits
     number of guard bits More...
     
    OPJ_INT32 roishift
     Region Of Interest shift. More...
     
    OPJ_UINT32 prcw [OPJ_J2K_MAXRLVLS]
     precinct width More...
     
    OPJ_UINT32 prch [OPJ_J2K_MAXRLVLS]
     precinct height More...
     
    +

    Detailed Description

    +

    Tile-component coding parameters information.

    +

    Field Documentation

    + +

    ◆ cblkh

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::cblkh
    +
    + +

    log2 of code-blocks height

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ cblksty

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::cblksty
    +
    + +

    code-block coding style

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ cblkw

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::cblkw
    +
    + +

    log2 of code-blocks width

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ compno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::compno
    +
    + +

    component index

    + +
    +
    + +

    ◆ csty

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::csty
    +
    + +

    coding style

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ numgbits

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::numgbits
    +
    + +

    number of guard bits

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ numresolutions

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::numresolutions
    +
    + +

    number of resolutions

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ prch

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::prch[OPJ_J2K_MAXRLVLS]
    +
    + +

    precinct height

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ prcw

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::prcw[OPJ_J2K_MAXRLVLS]
    +
    + +

    precinct width

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ qmfbid

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::qmfbid
    +
    + +

    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ qntsty

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::qntsty
    +
    + +

    quantisation style

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ roishift

    + +
    +
    + + + + +
    OPJ_INT32 opj_tccp_info::roishift
    +
    + +

    Region Of Interest shift.

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ stepsizes_expn

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::stepsizes_expn[OPJ_J2K_MAXBANDS]
    +
    + +

    stepsizes used for quantization

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ stepsizes_mant

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tccp_info::stepsizes_mant[OPJ_J2K_MAXBANDS]
    +
    + +

    stepsizes used for quantization

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd.html b/build/doc/html/structopj__tcd.html new file mode 100644 index 000000000..3e1fbf7f9 --- /dev/null +++ b/build/doc/html/structopj__tcd.html @@ -0,0 +1,438 @@ + + + + + + + +OpenJPEG: opj_tcd Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd Struct Reference
    +
    +
    + +

    Tile coder/decoder. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 tp_pos
     Position of the tilepart flag in Progression order. More...
     
    OPJ_UINT32 tp_num
     Tile part number. More...
     
    OPJ_UINT32 cur_tp_num
     Current tile part number. More...
     
    OPJ_UINT32 cur_totnum_tp
     Total number of tileparts of the current tile. More...
     
    OPJ_UINT32 cur_pino
     Current Packet iterator number. More...
     
    opj_tcd_image_ttcd_image
     info on each image tile More...
     
    opj_image_timage
     image header More...
     
    opj_cp_tcp
     coding parameters More...
     
    opj_tcp_ttcp
     coding/decoding parameters common to all tiles More...
     
    OPJ_UINT32 tcd_tileno
     current encoded/decoded tile More...
     
    OPJ_BITFIELD m_is_decoder: 1
     tell if the tcd is a decoder. More...
     
    opj_thread_pool_tthread_pool
     Thread pool. More...
     
    OPJ_UINT32 win_x0
     Coordinates of the window of interest, in grid reference space. More...
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    OPJ_BOOL whole_tile_decoding
     Only valid for decoding. More...
     
    OPJ_BOOLused_component
     
    +

    Detailed Description

    +

    Tile coder/decoder.

    +

    Field Documentation

    + +

    ◆ cp

    + + + +

    ◆ cur_pino

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::cur_pino
    +
    + +

    Current Packet iterator number.

    + +

    Referenced by opj_j2k_write_all_tile_parts(), opj_j2k_write_first_tile_part(), opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ cur_totnum_tp

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::cur_totnum_tp
    +
    + +

    Total number of tileparts of the current tile.

    + +

    Referenced by opj_j2k_pre_write_tile().

    + +
    +
    + +

    ◆ cur_tp_num

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::cur_tp_num
    +
    + +

    Current tile part number.

    + +

    Referenced by opj_j2k_write_sod(), opj_tcd_encode_tile(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ image

    + + + +

    ◆ m_is_decoder

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_tcd::m_is_decoder
    +
    + +

    tell if the tcd is a decoder.

    + +

    Referenced by opj_tcd_create(), and opj_tcd_free_tile().

    + +
    +
    + +

    ◆ tcd_image

    + + + +

    ◆ tcd_tileno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::tcd_tileno
    +
    +
    + +

    ◆ tcp

    + + + +

    ◆ thread_pool

    + +
    +
    + + + + +
    opj_thread_pool_t* opj_tcd::thread_pool
    +
    + +

    Thread pool.

    + +

    Referenced by main(), opj_dwt_decode(), opj_t1_decode_cblks(), opj_tcd_init(), and opj_tcd_t1_decode().

    + +
    +
    + +

    ◆ tp_num

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::tp_num
    +
    + +

    Tile part number.

    + +

    Referenced by opj_j2k_write_sod(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ tp_pos

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd::tp_pos
    +
    + +

    Position of the tilepart flag in Progression order.

    + +

    Referenced by opj_tcd_init(), opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ used_component

    + + + +

    ◆ whole_tile_decoding

    + +
    +
    + + + + +
    OPJ_BOOL opj_tcd::whole_tile_decoding
    +
    + +

    Only valid for decoding.

    +

    Whether the whole tile is decoded, or just the region in win_x0/win_y0/win_x1/win_y1

    + +

    Referenced by main(), opj_dwt_decode(), opj_dwt_decode_real(), opj_j2k_update_image_data(), opj_t1_decode_cblks(), opj_tcd_dc_level_shift_decode(), opj_tcd_decode_tile(), opj_tcd_get_decoded_tile_size(), opj_tcd_mct_decode(), and opj_tcd_update_tile_data().

    + +
    +
    + +

    ◆ win_x0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd::win_x0
    +
    + +

    Coordinates of the window of interest, in grid reference space.

    + +

    Referenced by main(), opj_tcd_decode_tile(), opj_tcd_is_subband_area_of_interest(), and opj_tcd_is_whole_tilecomp_decoding().

    + +
    +
    + +

    ◆ win_x1

    + + + +

    ◆ win_y0

    + + + +

    ◆ win_y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__band.html b/build/doc/html/structopj__tcd__band.html new file mode 100644 index 000000000..87a790b15 --- /dev/null +++ b/build/doc/html/structopj__tcd__band.html @@ -0,0 +1,233 @@ + + + + + + + +OpenJPEG: opj_tcd_band Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_band Struct Reference
    +
    +
    + +

    Sub-band structure. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 bandno
     
    opj_tcd_precinct_tprecincts
     
    OPJ_UINT32 precincts_data_size
     
    OPJ_INT32 numbps
     
    OPJ_FLOAT32 stepsize
     
    +

    Detailed Description

    +

    Sub-band structure.

    +

    Field Documentation

    + +

    ◆ bandno

    + + + +

    ◆ numbps

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_band::numbps
    +
    +
    + +

    ◆ precincts

    + + + +

    ◆ precincts_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_band::precincts_data_size
    +
    +
    + +

    ◆ stepsize

    + +
    +
    + + + + +
    OPJ_FLOAT32 opj_tcd_band::stepsize
    +
    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ x0

    + + + +

    ◆ x1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_band::x1
    +
    +
    + +

    ◆ y0

    + + + +

    ◆ y1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_band::y1
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__cblk__dec.html b/build/doc/html/structopj__tcd__cblk__dec.html new file mode 100644 index 000000000..ffa2d0501 --- /dev/null +++ b/build/doc/html/structopj__tcd__cblk__dec.html @@ -0,0 +1,341 @@ + + + + + + + +OpenJPEG: opj_tcd_cblk_dec Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_cblk_dec Struct Reference
    +
    +
    + +

    Code-block for decoding. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    opj_tcd_seg_tsegs
     
    opj_tcd_seg_data_chunk_tchunks
     
    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numbps
     
    OPJ_UINT32 numlenbits
     
    OPJ_UINT32 numnewpasses
     
    OPJ_UINT32 numsegs
     
    OPJ_UINT32 real_num_segs
     
    OPJ_UINT32 m_current_max_segs
     
    OPJ_UINT32 numchunks
     
    OPJ_UINT32 numchunksalloc
     
    OPJ_INT32decoded_data
     
    +

    Detailed Description

    +

    Code-block for decoding.

    +

    Field Documentation

    + +

    ◆ chunks

    + + + +

    ◆ decoded_data

    + + + +

    ◆ m_current_max_segs

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::m_current_max_segs
    +
    +
    + +

    ◆ numbps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numbps
    +
    +
    + +

    ◆ numchunks

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numchunks
    +
    +
    + +

    ◆ numchunksalloc

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numchunksalloc
    +
    +
    + +

    ◆ numlenbits

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numlenbits
    +
    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ numnewpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numnewpasses
    +
    +
    + +

    ◆ numsegs

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::numsegs
    +
    +
    + +

    ◆ real_num_segs

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_dec::real_num_segs
    +
    +
    + +

    ◆ segs

    + + + +

    ◆ x0

    + + + +

    ◆ x1

    + + + +

    ◆ y0

    + + + +

    ◆ y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__cblk__enc.html b/build/doc/html/structopj__tcd__cblk__enc.html new file mode 100644 index 000000000..8c2e7026d --- /dev/null +++ b/build/doc/html/structopj__tcd__cblk__enc.html @@ -0,0 +1,305 @@ + + + + + + + +OpenJPEG: opj_tcd_cblk_enc Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_cblk_enc Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_BYTEdata
     
    opj_tcd_layer_tlayers
     
    opj_tcd_pass_tpasses
     
    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numbps
     
    OPJ_UINT32 numlenbits
     
    OPJ_UINT32 data_size
     
    OPJ_UINT32 numpasses
     
    OPJ_UINT32 numpassesinlayers
     
    OPJ_UINT32 totalpasses
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ data

    + + + +

    ◆ data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::data_size
    +
    +
    + +

    ◆ layers

    + + + +

    ◆ numbps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::numbps
    +
    +
    + +

    ◆ numlenbits

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::numlenbits
    +
    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ numpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::numpasses
    +
    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ numpassesinlayers

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::numpassesinlayers
    +
    +
    + +

    ◆ passes

    + + + +

    ◆ totalpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_cblk_enc::totalpasses
    +
    +
    + +

    ◆ x0

    + + + +

    ◆ x1

    + + + +

    ◆ y0

    + + + +

    ◆ y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__image.html b/build/doc/html/structopj__tcd__image.html new file mode 100644 index 000000000..ed95697fc --- /dev/null +++ b/build/doc/html/structopj__tcd__image.html @@ -0,0 +1,89 @@ + + + + + + + +OpenJPEG: opj_tcd_image Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_image Struct Reference
    +
    + + + + + diff --git a/build/doc/html/structopj__tcd__layer.html b/build/doc/html/structopj__tcd__layer.html new file mode 100644 index 000000000..cc7f6893b --- /dev/null +++ b/build/doc/html/structopj__tcd__layer.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: opj_tcd_layer Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_layer Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 numpasses
     
    OPJ_UINT32 len
     
    OPJ_FLOAT64 disto
     
    OPJ_BYTEdata
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_tcd_layer::data
    +
    +
    + +

    ◆ disto

    + +
    +
    + + + + +
    OPJ_FLOAT64 opj_tcd_layer::disto
    +
    + +

    Referenced by opj_t2_encode_packet(), and opj_tcd_makelayer().

    + +
    +
    + +

    ◆ len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_layer::len
    +
    +
    + +

    ◆ numpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_layer::numpasses
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__marker__info.html b/build/doc/html/structopj__tcd__marker__info.html new file mode 100644 index 000000000..765a0eeda --- /dev/null +++ b/build/doc/html/structopj__tcd__marker__info.html @@ -0,0 +1,135 @@ + + + + + + + +OpenJPEG: opj_tcd_marker_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_marker_info Struct Reference
    +
    +
    + +

    Structure to hold information needed to generate some markers. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + +

    +Data Fields

    OPJ_BOOL need_PLT
     In: Whether information to generate PLT markers in needed. More...
     
    OPJ_UINT32 packet_count
     OUT: Number of elements in p_packet_size[] array. More...
     
    OPJ_UINT32p_packet_size
     OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet. More...
     
    +

    Detailed Description

    +

    Structure to hold information needed to generate some markers.

    +

    Used by encoder.

    +

    Field Documentation

    + +

    ◆ need_PLT

    + +
    +
    + + + + +
    OPJ_BOOL opj_tcd_marker_info::need_PLT
    +
    + +

    In: Whether information to generate PLT markers in needed.

    + +

    Referenced by opj_t2_encode_packets(), and opj_tcd_marker_info_create().

    + +
    +
    + +

    ◆ p_packet_size

    + +
    +
    + + + + +
    OPJ_UINT32* opj_tcd_marker_info::p_packet_size
    +
    + +

    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.

    + +

    Referenced by opj_j2k_write_plt_in_memory(), opj_t2_encode_packets(), and opj_tcd_marker_info_destroy().

    + +
    +
    + +

    ◆ packet_count

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_marker_info::packet_count
    +
    + +

    OUT: Number of elements in p_packet_size[] array.

    + +

    Referenced by opj_j2k_write_plt_in_memory(), and opj_t2_encode_packets().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__pass.html b/build/doc/html/structopj__tcd__pass.html new file mode 100644 index 000000000..91e7fc690 --- /dev/null +++ b/build/doc/html/structopj__tcd__pass.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: opj_tcd_pass Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_pass Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 rate
     
    OPJ_FLOAT64 distortiondec
     
    OPJ_UINT32 len
     
    OPJ_BITFIELD term: 1
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ distortiondec

    + +
    +
    + + + + +
    OPJ_FLOAT64 opj_tcd_pass::distortiondec
    +
    +
    + +

    ◆ len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_pass::len
    +
    + +

    Referenced by opj_t1_encode_cblk(), and opj_t2_encode_packet().

    + +
    +
    + +

    ◆ rate

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_pass::rate
    +
    +
    + +

    ◆ term

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_tcd_pass::term
    +
    + +

    Referenced by opj_t1_encode_cblk(), and opj_t2_encode_packet().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__precinct.html b/build/doc/html/structopj__tcd__precinct.html new file mode 100644 index 000000000..537bbfeee --- /dev/null +++ b/build/doc/html/structopj__tcd__precinct.html @@ -0,0 +1,306 @@ + + + + + + + +OpenJPEG: opj_tcd_precinct Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_precinct Struct Reference
    +
    +
    + +

    Precinct structure. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 cw
     
    OPJ_UINT32 ch
     
    union {
       opj_tcd_cblk_enc_t *   enc
     
       opj_tcd_cblk_dec_t *   dec
     
       void *   blocks
     
    cblks
     
    OPJ_UINT32 block_size
     
    opj_tgt_tree_tincltree
     
    opj_tgt_tree_timsbtree
     
    +

    Detailed Description

    +

    Precinct structure.

    +

    Field Documentation

    + +

    ◆ block_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_precinct::block_size
    +
    +
    + +

    ◆ blocks

    + +
    +
    + + + + +
    void* opj_tcd_precinct::blocks
    +
    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ cblks

    + + + +

    ◆ ch

    + + + +

    ◆ cw

    + + + +

    ◆ dec

    + + + +

    ◆ enc

    + + + +

    ◆ imsbtree

    + +
    +
    + + + + +
    opj_tgt_tree_t* opj_tcd_precinct::imsbtree
    +
    +
    + +

    ◆ incltree

    + +
    +
    + + + + +
    opj_tgt_tree_t* opj_tcd_precinct::incltree
    +
    +
    + +

    ◆ x0

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_precinct::x0
    +
    +
    + +

    ◆ x1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_precinct::x1
    +
    +
    + +

    ◆ y0

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_precinct::y0
    +
    +
    + +

    ◆ y1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_precinct::y1
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__resolution.html b/build/doc/html/structopj__tcd__resolution.html new file mode 100644 index 000000000..a713128e2 --- /dev/null +++ b/build/doc/html/structopj__tcd__resolution.html @@ -0,0 +1,287 @@ + + + + + + + +OpenJPEG: opj_tcd_resolution Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_resolution Struct Reference
    +
    +
    + +

    Tile-component resolution structure. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 pw
     
    OPJ_UINT32 ph
     
    OPJ_UINT32 numbands
     
    opj_tcd_band_t bands [3]
     
    OPJ_UINT32 win_x0
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    +

    Detailed Description

    +

    Tile-component resolution structure.

    +

    Field Documentation

    + +

    ◆ bands

    + + + +

    ◆ numbands

    + + + +

    ◆ ph

    + + + +

    ◆ pw

    + + + +

    ◆ win_x0

    + + + +

    ◆ win_x1

    + + + +

    ◆ win_y0

    + + + +

    ◆ win_y1

    + + + +

    ◆ x0

    + + + +

    ◆ x1

    + + + +

    ◆ y0

    + + + +

    ◆ y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__seg.html b/build/doc/html/structopj__tcd__seg.html new file mode 100644 index 000000000..69f3b534b --- /dev/null +++ b/build/doc/html/structopj__tcd__seg.html @@ -0,0 +1,180 @@ + + + + + + + +OpenJPEG: opj_tcd_seg Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_seg Struct Reference
    +
    +
    + +

    Segment of a code-block. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 len
     
    OPJ_UINT32 numpasses
     
    OPJ_UINT32 real_num_passes
     
    OPJ_UINT32 maxpasses
     
    OPJ_UINT32 numnewpasses
     
    OPJ_UINT32 newlen
     
    +

    Detailed Description

    +

    Segment of a code-block.

    +

    A segment represent a number of consecutive coding passes, without termination of MQC or RAW between them.

    +

    Field Documentation

    + +

    ◆ len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::len
    +
    +
    + +

    ◆ maxpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::maxpasses
    +
    +
    + +

    ◆ newlen

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::newlen
    +
    +
    + +

    ◆ numnewpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::numnewpasses
    +
    +
    + +

    ◆ numpasses

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::numpasses
    +
    +
    + +

    ◆ real_num_passes

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg::real_num_passes
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__seg__data__chunk.html b/build/doc/html/structopj__tcd__seg__data__chunk.html new file mode 100644 index 000000000..6d1fef6cf --- /dev/null +++ b/build/doc/html/structopj__tcd__seg__data__chunk.html @@ -0,0 +1,107 @@ + + + + + + + +OpenJPEG: opj_tcd_seg_data_chunk Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_seg_data_chunk Struct Reference
    +
    +
    + +

    Chunk of codestream data that is part of a code block. + More...

    + +

    #include <tcd.h>

    + + + + + + +

    +Data Fields

    OPJ_BYTEdata
     
    OPJ_UINT32 len
     
    +

    Detailed Description

    +

    Chunk of codestream data that is part of a code block.

    +

    Field Documentation

    + +

    ◆ data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_tcd_seg_data_chunk::data
    +
    +
    + +

    ◆ len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_seg_data_chunk::len
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__tile.html b/build/doc/html/structopj__tcd__tile.html new file mode 100644 index 000000000..d81c58044 --- /dev/null +++ b/build/doc/html/structopj__tcd__tile.html @@ -0,0 +1,251 @@ + + + + + + + +OpenJPEG: opj_tcd_tile Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_tile Struct Reference
    +
    +
    + +

    FIXME DOC. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numcomps
     
    opj_tcd_tilecomp_tcomps
     
    OPJ_INT32 numpix
     
    OPJ_FLOAT64 distotile
     
    OPJ_FLOAT64 distolayer [100]
     
    OPJ_UINT32 packno
     
    +

    Detailed Description

    +

    FIXME DOC.

    +

    Field Documentation

    + +

    ◆ comps

    + + + +

    ◆ distolayer

    + +
    +
    + + + + +
    OPJ_FLOAT64 opj_tcd_tile::distolayer[100]
    +
    + +

    Referenced by opj_tcd_makelayer(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ distotile

    + +
    +
    + + + + +
    OPJ_FLOAT64 opj_tcd_tile::distotile
    +
    +
    + +

    ◆ numcomps

    + + + +

    ◆ numpix

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tile::numpix
    +
    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ packno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tile::packno
    +
    +
    + +

    ◆ x0

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tile::x0
    +
    +
    + +

    ◆ x1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tile::x1
    +
    +
    + +

    ◆ y0

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tile::y0
    +
    +
    + +

    ◆ y1

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tile::y1
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcd__tilecomp.html b/build/doc/html/structopj__tcd__tilecomp.html new file mode 100644 index 000000000..ad1c52f2c --- /dev/null +++ b/build/doc/html/structopj__tcd__tilecomp.html @@ -0,0 +1,417 @@ + + + + + + + +OpenJPEG: opj_tcd_tilecomp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcd_tilecomp Struct Reference
    +
    +
    + +

    Tile-component structure. + More...

    + +

    #include <tcd.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 compno
     
    OPJ_UINT32 numresolutions
     
    OPJ_UINT32 minimum_num_resolutions
     
    opj_tcd_resolution_tresolutions
     
    OPJ_UINT32 resolutions_size
     
    OPJ_INT32data
     
    OPJ_BOOL ownsData
     
    size_t data_size_needed
     
    size_t data_size
     
    OPJ_INT32data_win
     data of the component limited to window of interest. More...
     
    OPJ_UINT32 win_x0
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    OPJ_INT32 numpix
     
    +

    Detailed Description

    +

    Tile-component structure.

    +

    Field Documentation

    + +

    ◆ compno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::compno
    +
    + +

    Referenced by opj_t1_decode_cblks(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ data

    + + + +

    ◆ data_size

    + +
    +
    + + + + +
    size_t opj_tcd_tilecomp::data_size
    +
    +
    + +

    ◆ data_size_needed

    + +
    +
    + + + + +
    size_t opj_tcd_tilecomp::data_size_needed
    +
    +
    + +

    ◆ data_win

    + +
    +
    + + + + +
    OPJ_INT32* opj_tcd_tilecomp::data_win
    +
    + +

    data of the component limited to window of interest.

    +

    Only valid for decoding and if tcd->whole_tile_decoding is NOT set (so exclusive of data member)

    + +

    Referenced by opj_dwt_decode_partial_tile(), opj_j2k_update_image_data(), opj_tcd_dc_level_shift_decode(), opj_tcd_decode_tile(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), and opj_tcd_update_tile_data().

    + +
    +
    + +

    ◆ minimum_num_resolutions

    + + + +

    ◆ numpix

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcd_tilecomp::numpix
    +
    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ numresolutions

    + + + +

    ◆ ownsData

    + +
    +
    + + + + +
    OPJ_BOOL opj_tcd_tilecomp::ownsData
    +
    +
    + +

    ◆ resolutions

    + + + +

    ◆ resolutions_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::resolutions_size
    +
    + +

    Referenced by opj_tcd_free_tile(), and opj_tcd_init_tile().

    + +
    +
    + +

    ◆ win_x0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::win_x0
    +
    +
    + +

    ◆ win_x1

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::win_x1
    +
    +
    + +

    ◆ win_y0

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::win_y0
    +
    +
    + +

    ◆ win_y1

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcd_tilecomp::win_y1
    +
    +
    + +

    ◆ x0

    + + + +

    ◆ x1

    + + + +

    ◆ y0

    + + + +

    ◆ y1

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tcp.html b/build/doc/html/structopj__tcp.html new file mode 100644 index 000000000..8ed72cc3d --- /dev/null +++ b/build/doc/html/structopj__tcp.html @@ -0,0 +1,740 @@ + + + + + + + +OpenJPEG: opj_tcp Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tcp Struct Reference
    +
    +
    + +

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) + More...

    + +

    #include <j2k.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 csty
     coding style More...
     
    OPJ_PROG_ORDER prg
     progression order More...
     
    OPJ_UINT32 numlayers
     number of layers More...
     
    OPJ_UINT32 num_layers_to_decode
     
    OPJ_UINT32 mct
     multi-component transform identifier More...
     
    OPJ_FLOAT32 rates [100]
     rates of layers More...
     
    OPJ_UINT32 numpocs
     number of progression order changes More...
     
    opj_poc_t pocs [J2K_MAX_POCS]
     progression order changes More...
     
    OPJ_UINT32 ppt_markers_count
     number of ppt markers (reserved size) More...
     
    opj_ppxppt_markers
     ppt markers data (table indexed by Zppt) More...
     
    OPJ_BYTEppt_data
     packet header store there for future use in t2_decode_packet More...
     
    OPJ_BYTEppt_buffer
     used to keep a track of the allocated memory More...
     
    OPJ_UINT32 ppt_data_size
     Number of bytes stored inside ppt_data. More...
     
    OPJ_UINT32 ppt_len
     size of ppt_data More...
     
    OPJ_FLOAT32 distoratio [100]
     add fixed_quality More...
     
    opj_tccp_ttccps
     tile-component coding parameters More...
     
    OPJ_INT32 m_current_tile_part_number
     current tile part number or -1 if first time into this tile More...
     
    OPJ_UINT32 m_nb_tile_parts
     number of tile parts for the tile. More...
     
    OPJ_BYTEm_data
     data for the tile More...
     
    OPJ_UINT32 m_data_size
     size of data More...
     
    OPJ_FLOAT64mct_norms
     encoding norms More...
     
    OPJ_FLOAT32m_mct_decoding_matrix
     the mct decoding matrix More...
     
    OPJ_FLOAT32m_mct_coding_matrix
     the mct coding matrix More...
     
    opj_mct_data_tm_mct_records
     mct records More...
     
    OPJ_UINT32 m_nb_mct_records
     the number of mct records. More...
     
    OPJ_UINT32 m_nb_max_mct_records
     the max number of mct records. More...
     
    opj_simple_mcc_decorrelation_data_tm_mcc_records
     mcc records More...
     
    OPJ_UINT32 m_nb_mcc_records
     the number of mct records. More...
     
    OPJ_UINT32 m_nb_max_mcc_records
     the max number of mct records. More...
     
    OPJ_BITFIELD cod: 1
     If cod == 1 --> there was a COD marker for the present tile. More...
     
    OPJ_BITFIELD ppt: 1
     If ppt == 1 --> there was a PPT marker for the present tile. More...
     
    OPJ_BITFIELD POC: 1
     indicates if a POC marker has been used O:NO, 1:YES More...
     
    +

    Detailed Description

    +

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)

    +

    Field Documentation

    + +

    ◆ cod

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_tcp::cod
    +
    + +

    If cod == 1 --> there was a COD marker for the present tile.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_read_cod().

    + +
    +
    + +

    ◆ csty

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::csty
    +
    +
    + +

    ◆ distoratio

    + +
    +
    + + + + +
    OPJ_FLOAT32 opj_tcp::distoratio[100]
    +
    + +

    add fixed_quality

    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ m_current_tile_part_number

    + +
    +
    + + + + +
    OPJ_INT32 opj_tcp::m_current_tile_part_number
    +
    + +

    current tile part number or -1 if first time into this tile

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_decode_one_tile(), and opj_j2k_read_sot().

    + +
    +
    + +

    ◆ m_data

    + + + +

    ◆ m_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::m_data_size
    +
    + +

    size of data

    + +

    Referenced by opj_j2k_decode_tile(), opj_j2k_read_sod(), and opj_j2k_tcp_data_destroy().

    + +
    +
    + +

    ◆ m_mcc_records

    + + + +

    ◆ m_mct_coding_matrix

    + +
    +
    + + + + +
    OPJ_FLOAT32* opj_tcp::m_mct_coding_matrix
    +
    + +

    the mct coding matrix

    + +

    Referenced by opj_j2k_mct_validation(), opj_j2k_tcp_destroy(), and opj_tcd_mct_encode().

    + +
    +
    + +

    ◆ m_mct_decoding_matrix

    + +
    +
    + + + + +
    OPJ_FLOAT32* opj_tcp::m_mct_decoding_matrix
    +
    +
    + +

    ◆ m_mct_records

    + + + +

    ◆ m_nb_max_mcc_records

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::m_nb_max_mcc_records
    +
    +
    + +

    ◆ m_nb_max_mct_records

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::m_nb_max_mct_records
    +
    +
    + +

    ◆ m_nb_mcc_records

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::m_nb_mcc_records
    +
    +
    + +

    ◆ m_nb_mct_records

    + + + +

    ◆ m_nb_tile_parts

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::m_nb_tile_parts
    +
    +
    + +

    ◆ mct

    + + + +

    ◆ mct_norms

    + +
    +
    + + + + +
    OPJ_FLOAT64* opj_tcp::mct_norms
    +
    + +

    encoding norms

    + +

    Referenced by opj_j2k_tcp_destroy(), and opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ num_layers_to_decode

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::num_layers_to_decode
    +
    +
    + +

    ◆ numlayers

    + + + +

    ◆ numpocs

    + + + +

    ◆ POC

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_tcp::POC
    +
    +
    + +

    ◆ pocs

    + + + +

    ◆ ppt

    + +
    +
    + + + + +
    OPJ_BITFIELD opj_tcp::ppt
    +
    + +

    If ppt == 1 --> there was a PPT marker for the present tile.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppt_buffer

    + +
    +
    + + + + +
    OPJ_BYTE* opj_tcp::ppt_buffer
    +
    + +

    used to keep a track of the allocated memory

    + +

    Referenced by opj_j2k_merge_ppt(), and opj_j2k_tcp_destroy().

    + +
    +
    + +

    ◆ ppt_data

    + +
    +
    + + + + +
    OPJ_BYTE* opj_tcp::ppt_data
    +
    + +

    packet header store there for future use in t2_decode_packet

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_merge_ppt(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppt_data_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::ppt_data_size
    +
    + +

    Number of bytes stored inside ppt_data.

    + +

    Referenced by opj_j2k_merge_ppt().

    + +
    +
    + +

    ◆ ppt_len

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::ppt_len
    +
    + +

    size of ppt_data

    + +

    Referenced by opj_j2k_merge_ppt(), and opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ ppt_markers

    + +
    +
    + + + + +
    opj_ppx* opj_tcp::ppt_markers
    +
    + +

    ppt markers data (table indexed by Zppt)

    + +

    Referenced by opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_j2k_tcp_destroy().

    + +
    +
    + +

    ◆ ppt_markers_count

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tcp::ppt_markers_count
    +
    + +

    number of ppt markers (reserved size)

    + +

    Referenced by opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_j2k_tcp_destroy().

    + +
    +
    + +

    ◆ prg

    + + + +

    ◆ rates

    + +
    +
    + + + + +
    OPJ_FLOAT32 opj_tcp::rates[100]
    +
    + +

    rates of layers

    + +

    Referenced by opj_j2k_update_rates(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ tccps

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tgt__node.html b/build/doc/html/structopj__tgt__node.html new file mode 100644 index 000000000..3f11df432 --- /dev/null +++ b/build/doc/html/structopj__tgt__node.html @@ -0,0 +1,143 @@ + + + + + + + +OpenJPEG: opj_tgt_node Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tgt_node Struct Reference
    +
    +
    + +

    Tag node. + More...

    + +

    #include <tgt.h>

    + + + + + + + + + + +

    +Data Fields

    struct opj_tgt_nodeparent
     
    OPJ_INT32 value
     
    OPJ_INT32 low
     
    OPJ_UINT32 known
     
    +

    Detailed Description

    +

    Tag node.

    +

    Field Documentation

    + +

    ◆ known

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tgt_node::known
    +
    + +

    Referenced by opj_tgt_encode(), and opj_tgt_reset().

    + +
    +
    + +

    ◆ low

    + +
    +
    + + + + +
    OPJ_INT32 opj_tgt_node::low
    +
    +
    + +

    ◆ parent

    + +
    +
    + + + + +
    struct opj_tgt_node* opj_tgt_node::parent
    +
    +
    + +

    ◆ value

    + +
    +
    + + + + +
    OPJ_INT32 opj_tgt_node::value
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tgt__tree.html b/build/doc/html/structopj__tgt__tree.html new file mode 100644 index 000000000..23f112809 --- /dev/null +++ b/build/doc/html/structopj__tgt__tree.html @@ -0,0 +1,161 @@ + + + + + + + +OpenJPEG: opj_tgt_tree Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tgt_tree Struct Reference
    +
    +
    + +

    Tag tree. + More...

    + +

    #include <tgt.h>

    + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 numleafsh
     
    OPJ_UINT32 numleafsv
     
    OPJ_UINT32 numnodes
     
    opj_tgt_node_tnodes
     
    OPJ_UINT32 nodes_size
     
    +

    Detailed Description

    +

    Tag tree.

    +

    Field Documentation

    + +

    ◆ nodes

    + + + +

    ◆ nodes_size

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tgt_tree::nodes_size
    +
    + +

    Referenced by opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ numleafsh

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tgt_tree::numleafsh
    +
    + +

    Referenced by opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ numleafsv

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tgt_tree::numleafsv
    +
    + +

    Referenced by opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ numnodes

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tgt_tree::numnodes
    +
    + +

    Referenced by opj_tgt_create(), opj_tgt_init(), and opj_tgt_reset().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__thread__pool__t.html b/build/doc/html/structopj__thread__pool__t.html new file mode 100644 index 000000000..a50ef5136 --- /dev/null +++ b/build/doc/html/structopj__thread__pool__t.html @@ -0,0 +1,262 @@ + + + + + + + +OpenJPEG: opj_thread_pool_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_thread_pool_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    opj_worker_thread_tworker_threads
     
    int worker_threads_count
     
    opj_cond_tcond
     
    opj_mutex_tmutex
     
    volatile opj_worker_thread_state state
     
    opj_job_list_tjob_queue
     
    volatile int pending_jobs_count
     
    opj_worker_thread_list_twaiting_worker_thread_list
     
    int waiting_worker_thread_count
     
    opj_tls_ttls
     
    int signaling_threshold
     
    +

    Field Documentation

    + +

    ◆ cond

    + + + +

    ◆ job_queue

    + +
    +
    + + + + +
    opj_job_list_t* opj_thread_pool_t::job_queue
    +
    +
    + +

    ◆ mutex

    + + + +

    ◆ pending_jobs_count

    + +
    +
    + + + + +
    volatile int opj_thread_pool_t::pending_jobs_count
    +
    +
    + +

    ◆ signaling_threshold

    + +
    +
    + + + + +
    int opj_thread_pool_t::signaling_threshold
    +
    +
    + +

    ◆ state

    + +
    +
    + + + + +
    volatile opj_worker_thread_state opj_thread_pool_t::state
    +
    +
    + +

    ◆ tls

    + +
    +
    + + + + +
    opj_tls_t* opj_thread_pool_t::tls
    +
    +
    + +

    ◆ waiting_worker_thread_count

    + +
    +
    + + + + +
    int opj_thread_pool_t::waiting_worker_thread_count
    +
    +
    + +

    ◆ waiting_worker_thread_list

    + +
    +
    + + + + +
    opj_worker_thread_list_t* opj_thread_pool_t::waiting_worker_thread_list
    +
    +
    + +

    ◆ worker_threads

    + +
    +
    + + + + +
    opj_worker_thread_t* opj_thread_pool_t::worker_threads
    +
    +
    + +

    ◆ worker_threads_count

    + +
    +
    + + + + +
    int opj_thread_pool_t::worker_threads_count
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tile__index.html b/build/doc/html/structopj__tile__index.html new file mode 100644 index 000000000..3e07cf9d5 --- /dev/null +++ b/build/doc/html/structopj__tile__index.html @@ -0,0 +1,281 @@ + + + + + + + +OpenJPEG: opj_tile_index Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tile_index Struct Reference
    +
    +
    + +

    Index structure about a tile. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    OPJ_UINT32 tileno
     tile index More...
     
    OPJ_UINT32 nb_tps
     number of tile parts More...
     
    OPJ_UINT32 current_nb_tps
     current nb of tile part (allocated) More...
     
    OPJ_UINT32 current_tpsno
     current tile-part index More...
     
    opj_tp_index_ttp_index
     information concerning tile parts More...
     
    OPJ_UINT32 marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    OPJ_UINT32 maxmarknum
     actual size of markers array More...
     
    OPJ_UINT32 nb_packet
     packet number More...
     
    opj_packet_info_tpacket_index
     information concerning packets inside tile More...
     
    +

    Detailed Description

    +

    Index structure about a tile.

    +

    Field Documentation

    + +

    ◆ current_nb_tps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::current_nb_tps
    +
    + +

    current nb of tile part (allocated)

    + +

    Referenced by opj_j2k_read_sot().

    + +
    +
    + +

    ◆ current_tpsno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::current_tpsno
    +
    + +

    current tile-part index

    + +

    Referenced by opj_j2k_add_tlmarker(), opj_j2k_read_sod(), and opj_j2k_read_sot().

    + +
    +
    + +

    ◆ marker

    + + + +

    ◆ marknum

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::marknum
    +
    +
    + +

    ◆ maxmarknum

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::maxmarknum
    +
    + +

    actual size of markers array

    + +

    Referenced by opj_j2k_add_tlmarker(), and opj_j2k_allocate_tile_element_cstr_index().

    + +
    +
    + +

    ◆ nb_packet

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::nb_packet
    +
    + +

    packet number

    + +

    Referenced by j2k_get_cstr_index().

    + +
    +
    + +

    ◆ nb_tps

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::nb_tps
    +
    +
    + +

    ◆ packet_index

    + +
    +
    + + + + +
    opj_packet_info_t* opj_tile_index::packet_index
    +
    + +

    information concerning packets inside tile

    + +

    Referenced by j2k_destroy_cstr_index(), and j2k_get_cstr_index().

    + +
    +
    + +

    ◆ tileno

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_index::tileno
    +
    + +

    tile index

    + +

    Referenced by opj_j2k_read_sot().

    + +
    +
    + +

    ◆ tp_index

    + +
    +
    + + + + +
    opj_tp_index_t* opj_tile_index::tp_index
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tile__info.html b/build/doc/html/structopj__tile__info.html new file mode 100644 index 000000000..0c46fa9e5 --- /dev/null +++ b/build/doc/html/structopj__tile__info.html @@ -0,0 +1,422 @@ + + + + + + + +OpenJPEG: opj_tile_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tile_info Struct Reference
    +
    +
    + +

    Index structure : information regarding tiles. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    double * thresh
     value of thresh for each layer by tile cfr. More...
     
    int tileno
     number of tile More...
     
    int start_pos
     start position More...
     
    int end_header
     end position of the header More...
     
    int end_pos
     end position More...
     
    int pw [33]
     precinct number for each resolution level (width) More...
     
    int ph [33]
     precinct number for each resolution level (height) More...
     
    int pdx [33]
     precinct size (in power of 2), in X for each resolution level More...
     
    int pdy [33]
     precinct size (in power of 2), in Y for each resolution level More...
     
    opj_packet_info_tpacket
     information concerning packets inside tile More...
     
    int numpix
     add fixed_quality More...
     
    double distotile
     add fixed_quality More...
     
    int marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    int maxmarknum
     actual size of markers array More...
     
    int num_tps
     number of tile parts More...
     
    opj_tp_info_ttp
     information concerning tile parts More...
     
    +

    Detailed Description

    +

    Index structure : information regarding tiles.

    +

    Field Documentation

    + +

    ◆ distotile

    + +
    +
    + + + + +
    double opj_tile_info::distotile
    +
    + +

    add fixed_quality

    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ end_header

    + +
    +
    + + + + +
    int opj_tile_info::end_header
    +
    + +

    end position of the header

    + +

    Referenced by opj_t2_encode_packets().

    + +
    +
    + +

    ◆ end_pos

    + +
    +
    + + + + +
    int opj_tile_info::end_pos
    +
    + +

    end position

    + +
    +
    + +

    ◆ marker

    + +
    +
    + + + + +
    opj_marker_info_t* opj_tile_info::marker
    +
    + +

    list of markers

    + +

    Referenced by opj_write_tilemhix().

    + +
    +
    + +

    ◆ marknum

    + +
    +
    + + + + +
    int opj_tile_info::marknum
    +
    + +

    number of markers

    + +

    Referenced by opj_write_tilemhix().

    + +
    +
    + +

    ◆ maxmarknum

    + +
    +
    + + + + +
    int opj_tile_info::maxmarknum
    +
    + +

    actual size of markers array

    + +
    +
    + +

    ◆ num_tps

    + +
    +
    + + + + +
    int opj_tile_info::num_tps
    +
    + +

    number of tile parts

    + +

    Referenced by get_num_max_tile_parts(), and opj_write_tpixfaix().

    + +
    +
    + +

    ◆ numpix

    + +
    +
    + + + + +
    int opj_tile_info::numpix
    +
    + +

    add fixed_quality

    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ packet

    + +
    +
    + + + + +
    opj_packet_info_t* opj_tile_info::packet
    +
    + +

    information concerning packets inside tile

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_encode_packets(), opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ pdx

    + +
    +
    + + + + +
    int opj_tile_info::pdx[33]
    +
    + +

    precinct size (in power of 2), in X for each resolution level

    + +

    Referenced by opj_tcd_encode_tile().

    + +
    +
    + +

    ◆ pdy

    + +
    +
    + + + + +
    int opj_tile_info::pdy[33]
    +
    + +

    precinct size (in power of 2), in Y for each resolution level

    + +

    Referenced by opj_tcd_encode_tile().

    + +
    +
    + +

    ◆ ph

    + +
    +
    + + + + +
    int opj_tile_info::ph[33]
    +
    + +

    precinct number for each resolution level (height)

    + +

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ pw

    + +
    +
    + + + + +
    int opj_tile_info::pw[33]
    +
    + +

    precinct number for each resolution level (width)

    + +

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    + +
    +
    + +

    ◆ start_pos

    + +
    +
    + + + + +
    int opj_tile_info::start_pos
    +
    + +

    start position

    + +
    +
    + +

    ◆ thresh

    + +
    +
    + + + + +
    double* opj_tile_info::thresh
    +
    + +

    value of thresh for each layer by tile cfr.

    +

    Marcela
    +

    + +

    Referenced by opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ tileno

    + +
    +
    + + + + +
    int opj_tile_info::tileno
    +
    + +

    number of tile

    + +
    +
    + +

    ◆ tp

    + +
    +
    + + + + +
    opj_tp_info_t* opj_tile_info::tp
    +
    + +

    information concerning tile parts

    + +

    Referenced by opj_write_tilemhix(), and opj_write_tpixfaix().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tile__v2__info.html b/build/doc/html/structopj__tile__v2__info.html new file mode 100644 index 000000000..bda47a5e5 --- /dev/null +++ b/build/doc/html/structopj__tile__v2__info.html @@ -0,0 +1,195 @@ + + + + + + + +OpenJPEG: opj_tile_v2_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tile_v2_info Struct Reference
    +
    +
    + +

    Tile coding parameters information. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    int tileno
     number (index) of tile More...
     
    OPJ_UINT32 csty
     coding style More...
     
    OPJ_PROG_ORDER prg
     progression order More...
     
    OPJ_UINT32 numlayers
     number of layers More...
     
    OPJ_UINT32 mct
     multi-component transform identifier More...
     
    opj_tccp_info_ttccp_info
     information concerning tile component parameters More...
     
    +

    Detailed Description

    +

    Tile coding parameters information.

    +

    Field Documentation

    + +

    ◆ csty

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_v2_info::csty
    +
    + +

    coding style

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ mct

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_v2_info::mct
    +
    + +

    multi-component transform identifier

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ numlayers

    + +
    +
    + + + + +
    OPJ_UINT32 opj_tile_v2_info::numlayers
    +
    + +

    number of layers

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ prg

    + +
    +
    + + + + +
    OPJ_PROG_ORDER opj_tile_v2_info::prg
    +
    + +

    progression order

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tccp_info

    + +
    +
    + + + + +
    opj_tccp_info_t* opj_tile_v2_info::tccp_info
    +
    + +

    information concerning tile component parameters

    + +

    Referenced by j2k_get_cstr_info().

    + +
    +
    + +

    ◆ tileno

    + +
    +
    + + + + +
    int opj_tile_v2_info::tileno
    +
    + +

    number (index) of tile

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tls__key__val__t.html b/build/doc/html/structopj__tls__key__val__t.html new file mode 100644 index 000000000..2082fbfe4 --- /dev/null +++ b/build/doc/html/structopj__tls__key__val__t.html @@ -0,0 +1,118 @@ + + + + + + + +OpenJPEG: opj_tls_key_val_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tls_key_val_t Struct Reference
    +
    +
    + + + + + + + + +

    +Data Fields

    int key
     
    void * value
     
    opj_tls_free_func opj_free_func
     
    +

    Field Documentation

    + +

    ◆ key

    + +
    +
    + + + + +
    int opj_tls_key_val_t::key
    +
    + +

    Referenced by opj_tls_get(), and opj_tls_set().

    + +
    +
    + +

    ◆ opj_free_func

    + +
    +
    + + + + +
    opj_tls_free_func opj_tls_key_val_t::opj_free_func
    +
    + +

    Referenced by opj_tls_destroy(), and opj_tls_set().

    + +
    +
    + +

    ◆ value

    + +
    +
    + + + + +
    void* opj_tls_key_val_t::value
    +
    + +

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tls__t.html b/build/doc/html/structopj__tls__t.html new file mode 100644 index 000000000..60a713a1c --- /dev/null +++ b/build/doc/html/structopj__tls__t.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: opj_tls_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tls_t Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    opj_tls_key_val_tkey_val
     
    int key_val_count
     
    +

    Field Documentation

    + +

    ◆ key_val

    + +
    +
    + + + + +
    opj_tls_key_val_t* opj_tls_t::key_val
    +
    + +

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    + +
    +
    + +

    ◆ key_val_count

    + +
    +
    + + + + +
    int opj_tls_t::key_val_count
    +
    + +

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tp__index.html b/build/doc/html/structopj__tp__index.html new file mode 100644 index 000000000..1ba215877 --- /dev/null +++ b/build/doc/html/structopj__tp__index.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: opj_tp_index Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tp_index Struct Reference
    +
    +
    + +

    Index structure about a tile part. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + +

    +Data Fields

    OPJ_OFF_T start_pos
     start position More...
     
    OPJ_OFF_T end_header
     end position of the header More...
     
    OPJ_OFF_T end_pos
     end position More...
     
    +

    Detailed Description

    +

    Index structure about a tile part.

    +

    Field Documentation

    + +

    ◆ end_header

    + +
    +
    + + + + +
    OPJ_OFF_T opj_tp_index::end_header
    +
    + +

    end position of the header

    + +

    Referenced by opj_j2k_dump_MH_index(), and opj_j2k_read_sod().

    + +
    +
    + +

    ◆ end_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_tp_index::end_pos
    +
    + +

    end position

    + +

    Referenced by opj_j2k_dump_MH_index(), and opj_j2k_read_sod().

    + +
    +
    + +

    ◆ start_pos

    + +
    +
    + + + + +
    OPJ_OFF_T opj_tp_index::start_pos
    +
    + +

    start position

    + +

    Referenced by opj_j2k_add_tlmarker(), opj_j2k_decode_one_tile(), and opj_j2k_dump_MH_index().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__tp__info.html b/build/doc/html/structopj__tp__info.html new file mode 100644 index 000000000..44b614688 --- /dev/null +++ b/build/doc/html/structopj__tp__info.html @@ -0,0 +1,172 @@ + + + + + + + +OpenJPEG: opj_tp_info Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_tp_info Struct Reference
    +
    +
    + +

    Index structure : Information concerning tile-parts. + More...

    + +

    #include <openjpeg.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    int tp_start_pos
     start position of tile part More...
     
    int tp_end_header
     end position of tile part header More...
     
    int tp_end_pos
     end position of tile part More...
     
    int tp_start_pack
     start packet of tile part More...
     
    int tp_numpacks
     number of packets of tile part More...
     
    +

    Detailed Description

    +

    Index structure : Information concerning tile-parts.

    +

    Field Documentation

    + +

    ◆ tp_end_header

    + +
    +
    + + + + +
    int opj_tp_info::tp_end_header
    +
    + +

    end position of tile part header

    + +

    Referenced by opj_write_tilemhix().

    + +
    +
    + +

    ◆ tp_end_pos

    + +
    +
    + + + + +
    int opj_tp_info::tp_end_pos
    +
    + +

    end position of tile part

    + +

    Referenced by opj_write_tpixfaix().

    + +
    +
    + +

    ◆ tp_numpacks

    + +
    +
    + + + + +
    int opj_tp_info::tp_numpacks
    +
    + +

    number of packets of tile part

    + +
    +
    + +

    ◆ tp_start_pack

    + +
    +
    + + + + +
    int opj_tp_info::tp_start_pack
    +
    + +

    start packet of tile part

    + +
    +
    + +

    ◆ tp_start_pos

    + +
    +
    + + + + +
    int opj_tp_info::tp_start_pos
    +
    + +

    start position of tile part

    + +

    Referenced by opj_write_tilemhix(), and opj_write_tpixfaix().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__worker__thread__job__t.html b/build/doc/html/structopj__worker__thread__job__t.html new file mode 100644 index 000000000..0258c5a88 --- /dev/null +++ b/build/doc/html/structopj__worker__thread__job__t.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: opj_worker_thread_job_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_worker_thread_job_t Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    opj_job_fn job_fn
     
    void * user_data
     
    +

    Field Documentation

    + +

    ◆ job_fn

    + +
    +
    + + + + +
    opj_job_fn opj_worker_thread_job_t::job_fn
    +
    +
    + +

    ◆ user_data

    + +
    +
    + + + + +
    void* opj_worker_thread_job_t::user_data
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__worker__thread__list__t.html b/build/doc/html/structopj__worker__thread__list__t.html new file mode 100644 index 000000000..aea5342a2 --- /dev/null +++ b/build/doc/html/structopj__worker__thread__list__t.html @@ -0,0 +1,100 @@ + + + + + + + +OpenJPEG: opj_worker_thread_list_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_worker_thread_list_t Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    opj_worker_thread_tworker_thread
     
    struct opj_worker_thread_list_tnext
     
    +

    Field Documentation

    + +

    ◆ next

    + +
    +
    + + + + +
    struct opj_worker_thread_list_t* opj_worker_thread_list_t::next
    +
    +
    + +

    ◆ worker_thread

    + +
    +
    + + + + +
    opj_worker_thread_t* opj_worker_thread_list_t::worker_thread
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structopj__worker__thread__t.html b/build/doc/html/structopj__worker__thread__t.html new file mode 100644 index 000000000..84b332715 --- /dev/null +++ b/build/doc/html/structopj__worker__thread__t.html @@ -0,0 +1,154 @@ + + + + + + + +OpenJPEG: opj_worker_thread_t Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_worker_thread_t Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Data Fields

    opj_thread_pool_ttp
     
    opj_thread_tthread
     
    int marked_as_waiting
     
    opj_mutex_tmutex
     
    opj_cond_tcond
     
    +

    Field Documentation

    + +

    ◆ cond

    + + + +

    ◆ marked_as_waiting

    + +
    +
    + + + + +
    int opj_worker_thread_t::marked_as_waiting
    +
    +
    + +

    ◆ mutex

    + +
    +
    + + + + +
    opj_mutex_t* opj_worker_thread_t::mutex
    +
    +
    + +

    ◆ thread

    + +
    +
    + + + + +
    opj_thread_t* opj_worker_thread_t::thread
    +
    +
    + +

    ◆ tp

    + +
    +
    + + + + +
    opj_thread_pool_t* opj_worker_thread_t::tp
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structplaceholder__param.html b/build/doc/html/structplaceholder__param.html new file mode 100644 index 000000000..93594f668 --- /dev/null +++ b/build/doc/html/structplaceholder__param.html @@ -0,0 +1,207 @@ + + + + + + + +OpenJPEG: placeholder_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    placeholder_param Struct Reference
    +
    +
    + +

    A.3.6.3 Placeholder box format. + More...

    + +

    #include <placeholder_manager.h>

    + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    Byte4_t LBox
     
    char TBox [4]
     
    Byte4_t Flags
     
    Byte8_t OrigID
     
    Byte_tOrigBH
     dynamic memory pointer More...
     
    Byte_t OrigBHlen
     length of OrigBH More...
     
    struct placeholder_paramnext
     pointer to the next placeholder More...
     
    +

    Detailed Description

    +

    A.3.6.3 Placeholder box format.

    +

    placeholder box parameters

    +

    Field Documentation

    + +

    ◆ Flags

    + +
    +
    + + + + +
    Byte4_t placeholder_param::Flags
    +
    +
    + +

    ◆ LBox

    + +
    +
    + + + + +
    Byte4_t placeholder_param::LBox
    +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct placeholder_param* placeholder_param::next
    +
    +
    + +

    ◆ OrigBH

    + +
    +
    + + + + +
    Byte_t* placeholder_param::OrigBH
    +
    +
    + +

    ◆ OrigBHlen

    + +
    +
    + + + + +
    Byte_t placeholder_param::OrigBHlen
    +
    +
    + +

    ◆ OrigID

    + +
    +
    + + + + +
    Byte8_t placeholder_param::OrigID
    +
    +
    + +

    ◆ TBox

    + +
    +
    + + + + +
    char placeholder_param::TBox[4]
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structplaceholderlist__param.html b/build/doc/html/structplaceholderlist__param.html new file mode 100644 index 000000000..0d7eefbdb --- /dev/null +++ b/build/doc/html/structplaceholderlist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: placeholderlist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    placeholderlist_param Struct Reference
    +
    +
    + +

    placeholder box list parameters + More...

    + +

    #include <placeholder_manager.h>

    + + + + + + + + +

    +Data Fields

    placeholder_param_tfirst
     first placeholder pointer of the list More...
     
    placeholder_param_tlast
     last placeholder pointer of the list More...
     
    +

    Detailed Description

    +

    placeholder box list parameters

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    placeholder_param_t* placeholderlist_param::first
    +
    + +

    first placeholder pointer of the list

    + +

    Referenced by enqueue_phld(), gene_placeholderlist(), insert_placeholder_into_list(), print_allplaceholder(), and search_metadataidx().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    placeholder_param_t* placeholderlist_param::last
    +
    + +

    last placeholder pointer of the list

    + +

    Referenced by gene_placeholderlist(), and insert_placeholder_into_list().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structquery__param.html b/build/doc/html/structquery__param.html new file mode 100644 index 000000000..b62462336 --- /dev/null +++ b/build/doc/html/structquery__param.html @@ -0,0 +1,617 @@ + + + + + + + +OpenJPEG: query_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    query_param Struct Reference
    +
    +
    + +

    Query parameters. + More...

    + +

    #include <query_parser.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    char * target
     target name More...
     
    char * tid
     target identifier More...
     
    int fx
     
    int fy
     frame size (fx,fy) More...
     
    int rx
     
    int ry
     
    int rw
     
    int rh
     roi region More...
     
    int layers
     quality layers More...
     
    int lastcomp
     last component number More...
     
    OPJ_BOOLcomps
     components (dynamic array) for jpp-stream, null means all components More...
     
    char * cid
     channel identifier More...
     
    cnew_transport_t cnew
     transport name if there is new channel request, else non More...
     
    char * cclose
     list of closing channel identifiers, separated by '\0' More...
     
    int numOfcclose
     number of closing channels More...
     
    char box_type [MAX_NUMOFBOX][4]
     interested box-types More...
     
    int limit [MAX_NUMOFBOX]
     limit value, -1: skeleton request "r", 0: entire contents More...
     
    OPJ_BOOL w [MAX_NUMOFBOX]
     Metadata request qualifier flags. More...
     
    OPJ_BOOL s [MAX_NUMOFBOX]
     
    OPJ_BOOL g [MAX_NUMOFBOX]
     
    OPJ_BOOL a [MAX_NUMOFBOX]
     
    OPJ_BOOL priority [MAX_NUMOFBOX]
     priority flag More...
     
    int root_bin
     root-bin More...
     
    int max_depth
     max-depth More...
     
    OPJ_BOOL metadata_only
     metadata-only request More...
     
    image_return_t return_type
     image return type More...
     
    int len
     maximum response length More...
     
    +

    Detailed Description

    +

    Query parameters.

    +

    Field Documentation

    + +

    ◆ a

    + +
    +
    + + + + +
    OPJ_BOOL query_param::a[MAX_NUMOFBOX]
    +
    +
    + +

    ◆ box_type

    + +
    +
    + + + + +
    char query_param::box_type[MAX_NUMOFBOX][4]
    +
    +
    + +

    ◆ cclose

    + +
    +
    + + + + +
    char* query_param::cclose
    +
    + +

    list of closing channel identifiers, separated by '\0'

    + +

    Referenced by close_channel(), get_initquery(), parse_cclose(), and print_queryparam().

    + +
    +
    + +

    ◆ cid

    + +
    +
    + + + + +
    char* query_param::cid
    +
    + +

    channel identifier

    + +

    Referenced by associate_channel(), get_initquery(), identify_target(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ cnew

    + +
    +
    + + + + +
    cnew_transport_t query_param::cnew
    +
    + +

    transport name if there is new channel request, else non

    + +

    Referenced by associate_channel(), gene_channel(), get_initquery(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ comps

    + +
    +
    + + + + +
    OPJ_BOOL* query_param::comps
    +
    + +

    components (dynamic array) for jpp-stream, null means all components

    + +

    Referenced by enqueue_imagedata(), get_initquery(), parse_comps(), and print_queryparam().

    + +
    +
    + +

    ◆ fx

    + +
    +
    + + + + +
    int query_param::fx
    +
    +
    + +

    ◆ fy

    + +
    +
    + + + + +
    int query_param::fy
    +
    + +

    frame size (fx,fy)

    + +

    Referenced by enqueue_imagedata(), gene_JPIPstream(), get_initquery(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ g

    + +
    +
    + + + + +
    OPJ_BOOL query_param::g[MAX_NUMOFBOX]
    +
    +
    + +

    ◆ lastcomp

    + +
    +
    + + + + +
    int query_param::lastcomp
    +
    + +

    last component number

    + +

    Referenced by enqueue_imagedata(), get_initquery(), parse_comps(), and print_queryparam().

    + +
    +
    + +

    ◆ layers

    + +
    +
    + + + + +
    int query_param::layers
    +
    +
    + +

    ◆ len

    + +
    +
    + + + + +
    int query_param::len
    +
    + +

    maximum response length

    + +

    Referenced by enqueue_imagedata(), gene_JPIPstream(), get_initquery(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ limit

    + +
    +
    + + + + +
    int query_param::limit[MAX_NUMOFBOX]
    +
    + +

    limit value, -1: skeleton request "r", 0: entire contents

    + +

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    + +
    +
    + +

    ◆ max_depth

    + +
    +
    + + + + +
    int query_param::max_depth
    +
    + +

    max-depth

    + +

    Referenced by get_initquery(), parse_metareq(), and print_queryparam().

    + +
    +
    + +

    ◆ metadata_only

    + +
    +
    + + + + +
    OPJ_BOOL query_param::metadata_only
    +
    + +

    metadata-only request

    + +

    Referenced by gene_JPIPstream(), get_initquery(), parse_metareq(), and print_queryparam().

    + +
    +
    + +

    ◆ numOfcclose

    + +
    +
    + + + + +
    int query_param::numOfcclose
    +
    + +

    number of closing channels

    + +

    Referenced by close_channel(), get_initquery(), parse_cclose(), and print_queryparam().

    + +
    +
    + +

    ◆ priority

    + +
    +
    + + + + +
    OPJ_BOOL query_param::priority[MAX_NUMOFBOX]
    +
    + +

    priority flag

    + +

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    + +
    +
    + +

    ◆ return_type

    + +
    +
    + + + + +
    image_return_t query_param::return_type
    +
    + +

    image return type

    + +

    Referenced by gene_JPIPstream(), get_initquery(), open_channel(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ rh

    + +
    +
    + + + + +
    int query_param::rh
    +
    + +

    roi region

    + +

    Referenced by enqueue_imagedata(), get_initquery(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ root_bin

    + +
    +
    + + + + +
    int query_param::root_bin
    +
    + +

    root-bin

    + +

    Referenced by get_initquery(), parse_metareq(), and print_queryparam().

    + +
    +
    + +

    ◆ rw

    + +
    +
    + + + + +
    int query_param::rw
    +
    +
    + +

    ◆ rx

    + +
    +
    + + + + +
    int query_param::rx
    +
    +
    + +

    ◆ ry

    + +
    +
    + + + + +
    int query_param::ry
    +
    +
    + +

    ◆ s

    + +
    +
    + + + + +
    OPJ_BOOL query_param::s[MAX_NUMOFBOX]
    +
    +
    + +

    ◆ target

    + +
    +
    + + + + +
    char* query_param::target
    +
    + +

    target name

    + +

    Referenced by get_initquery(), identify_target(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ tid

    + +
    +
    + + + + +
    char* query_param::tid
    +
    + +

    target identifier

    + +

    Referenced by get_initquery(), identify_target(), parse_query(), and print_queryparam().

    + +
    +
    + +

    ◆ w

    + +
    +
    + + + + +
    OPJ_BOOL query_param::w[MAX_NUMOFBOX]
    +
    + +

    Metadata request qualifier flags.

    + +

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structrange__param.html b/build/doc/html/structrange__param.html new file mode 100644 index 000000000..2df684fec --- /dev/null +++ b/build/doc/html/structrange__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: range_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    range_param Struct Reference
    +
    +
    + +

    1-dimensional range parameters + More...

    + +

    #include <index_manager.h>

    + + + + + + + + +

    +Data Fields

    Byte4_t minvalue
     minimal value More...
     
    Byte4_t maxvalue
     maximal value More...
     
    +

    Detailed Description

    +

    1-dimensional range parameters

    +

    Field Documentation

    + +

    ◆ maxvalue

    + +
    +
    + + + + +
    Byte4_t range_param::maxvalue
    +
    + +

    maximal value

    + +

    Referenced by enqueue_imagedata(), get_tile_range(), get_tile_XSiz(), and get_tile_YSiz().

    + +
    +
    + +

    ◆ minvalue

    + +
    +
    + + + + +
    Byte4_t range_param::minvalue
    +
    + +

    minimal value

    + +

    Referenced by enqueue_imagedata(), get_tile_range(), get_tile_XSiz(), and get_tile_YSiz().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structsession__param.html b/build/doc/html/structsession__param.html new file mode 100644 index 000000000..b11a414df --- /dev/null +++ b/build/doc/html/structsession__param.html @@ -0,0 +1,134 @@ + + + + + + + +OpenJPEG: session_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    session_param Struct Reference
    +
    +
    + +

    Session parameters. + More...

    + +

    #include <session_manager.h>

    + + + + + + + + + + + +

    +Data Fields

    channellist_param_tchannellist
     channel list pointer More...
     
    cachemodellist_param_tcachemodellist
     cache list pointer More...
     
    struct session_paramnext
     pointer to the next session More...
     
    +

    Detailed Description

    +

    Session parameters.

    +

    Field Documentation

    + +

    ◆ cachemodellist

    + +
    +
    + + + + +
    cachemodellist_param_t* session_param::cachemodellist
    +
    +
    + +

    ◆ channellist

    + +
    +
    + + + + +
    channellist_param_t* session_param::channellist
    +
    + +

    channel list pointer

    + +

    Referenced by delete_sessionlist(), gene_session(), and print_allsession().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct session_param* session_param::next
    +
    + +

    pointer to the next session

    + +

    Referenced by delete_session(), delete_sessionlist(), gene_session(), print_allsession(), and search_session_and_channel().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structsessionlist__param.html b/build/doc/html/structsessionlist__param.html new file mode 100644 index 000000000..789013904 --- /dev/null +++ b/build/doc/html/structsessionlist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: sessionlist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    sessionlist_param Struct Reference
    +
    +
    + +

    Session list parameters. + More...

    + +

    #include <session_manager.h>

    + + + + + + + + +

    +Data Fields

    session_param_tfirst
     first session pointer of the list More...
     
    session_param_tlast
     last session pointer of the list More...
     
    +

    Detailed Description

    +

    Session list parameters.

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    session_param_t* sessionlist_param::first
    +
    + +

    first session pointer of the list

    + +

    Referenced by delete_session(), gene_session(), gene_sessionlist(), print_allsession(), and search_session_and_channel().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    session_param_t* sessionlist_param::last
    +
    + +

    last session pointer of the list

    + +

    Referenced by delete_session(), gene_session(), and gene_sessionlist().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structsubfaixbox4__param.html b/build/doc/html/structsubfaixbox4__param.html new file mode 100644 index 000000000..79147c548 --- /dev/null +++ b/build/doc/html/structsubfaixbox4__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: subfaixbox4_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    subfaixbox4_param Struct Reference
    +
    +
    + +

    4byte parameters of fragment array index box + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    Byte4_t nmax
     maximum number of valid elements in any row of the array More...
     
    Byte4_t m
     number of raws of the array More...
     
    faixelem4_param_telem
     dynamic array pointer of faix elements More...
     
    Byte4_taux
     dynamic array pointer of auxiliary More...
     
    +

    Detailed Description

    +

    4byte parameters of fragment array index box

    +

    Field Documentation

    + +

    ◆ aux

    + +
    +
    + + + + +
    Byte4_t* subfaixbox4_param::aux
    +
    + +

    dynamic array pointer of auxiliary

    + +

    Referenced by gene_faixbox(), and get_elemAux().

    + +
    +
    + +

    ◆ elem

    + +
    +
    + + + + +
    faixelem4_param_t* subfaixbox4_param::elem
    +
    + +

    dynamic array pointer of faix elements

    + +

    Referenced by gene_faixbox(), get_elemLen(), and get_elemOff().

    + +
    +
    + +

    ◆ m

    + +
    +
    + + + + +
    Byte4_t subfaixbox4_param::m
    +
    + +

    number of raws of the array

    + +

    Referenced by gene_faixbox(), and get_m().

    + +
    +
    + +

    ◆ nmax

    + +
    +
    + + + + +
    Byte4_t subfaixbox4_param::nmax
    +
    + +

    maximum number of valid elements in any row of the array

    + +

    Referenced by gene_faixbox(), and get_nmax().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structsubfaixbox8__param.html b/build/doc/html/structsubfaixbox8__param.html new file mode 100644 index 000000000..f63e3ae03 --- /dev/null +++ b/build/doc/html/structsubfaixbox8__param.html @@ -0,0 +1,155 @@ + + + + + + + +OpenJPEG: subfaixbox8_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    subfaixbox8_param Struct Reference
    +
    +
    + +

    8byte parameters of fragment array index box + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    Byte8_t nmax
     maximum number of valid elements in any row of the array More...
     
    Byte8_t m
     number of raws of the array More...
     
    faixelem8_param_telem
     dynamic array pointer of faix elements More...
     
    Byte4_taux
     dynamic array pointer of auxiliary More...
     
    +

    Detailed Description

    +

    8byte parameters of fragment array index box

    +

    Field Documentation

    + +

    ◆ aux

    + +
    +
    + + + + +
    Byte4_t* subfaixbox8_param::aux
    +
    + +

    dynamic array pointer of auxiliary

    + +

    Referenced by gene_faixbox(), and get_elemAux().

    + +
    +
    + +

    ◆ elem

    + +
    +
    + + + + +
    faixelem8_param_t* subfaixbox8_param::elem
    +
    + +

    dynamic array pointer of faix elements

    + +

    Referenced by gene_faixbox(), get_elemLen(), and get_elemOff().

    + +
    +
    + +

    ◆ m

    + +
    +
    + + + + +
    Byte8_t subfaixbox8_param::m
    +
    + +

    number of raws of the array

    + +

    Referenced by gene_faixbox(), and get_m().

    + +
    +
    + +

    ◆ nmax

    + +
    +
    + + + + +
    Byte8_t subfaixbox8_param::nmax
    +
    + +

    maximum number of valid elements in any row of the array

    + +

    Referenced by gene_faixbox(), and get_nmax().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structtarget__param.html b/build/doc/html/structtarget__param.html new file mode 100644 index 000000000..bb782df68 --- /dev/null +++ b/build/doc/html/structtarget__param.html @@ -0,0 +1,272 @@ + + + + + + + +OpenJPEG: target_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    target_param Struct Reference
    +
    +
    + +

    target parameters + More...

    + +

    #include <target_manager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    char tid [MAX_LENOFTID]
     target identifier More...
     
    char * targetname
     local file path or URL ( URL is supported only with SERVER mode) More...
     
    int fd
     file descriptor More...
     
    int csn
     codestream number
    + More...
     
    index_param_tcodeidx
     index information of codestream
    + More...
     
    int num_of_use
     numbers of sessions referring to this target
    + More...
     
    OPJ_BOOL jppstream
     if this target can return JPP-stream
    + More...
     
    OPJ_BOOL jptstream
     if this target can return JPP-stream
    + More...
     
    struct target_paramnext
     pointer to the next target
    + More...
     
    +

    Detailed Description

    +

    target parameters

    +

    Field Documentation

    + +

    ◆ codeidx

    + + + +

    ◆ csn

    + +
    +
    + + + + +
    int target_param::csn
    +
    +
    + +

    ◆ fd

    + +
    +
    + + + + +
    int target_param::fd
    +
    + +

    file descriptor

    + +

    Referenced by gene_target(), and recons_stream_from_msgqueue().

    + +
    +
    + +

    ◆ jppstream

    + +
    +
    + + + + +
    OPJ_BOOL target_param::jppstream
    +
    + +

    if this target can return JPP-stream
    +

    + +

    Referenced by gene_cachemodel(), and gene_target().

    + +
    +
    + +

    ◆ jptstream

    + +
    +
    + + + + +
    OPJ_BOOL target_param::jptstream
    +
    + +

    if this target can return JPP-stream
    +

    + +

    Referenced by gene_cachemodel(), and gene_target().

    + +
    +
    + +

    ◆ next

    + +
    +
    + + + + +
    struct target_param* target_param::next
    +
    +
    + +

    ◆ num_of_use

    + +
    +
    + + + + +
    int target_param::num_of_use
    +
    + +

    numbers of sessions referring to this target
    +

    + +

    Referenced by gene_target(), refer_target(), and unrefer_target().

    + +
    +
    + +

    ◆ targetname

    + +
    +
    + + + + +
    char* target_param::targetname
    +
    + +

    local file path or URL ( URL is supported only with SERVER mode)

    + +

    Referenced by gene_target(), print_allchannel(), print_cachemodel(), print_target(), and search_target().

    + +
    +
    + +

    ◆ tid

    + +
    +
    + + + + +
    char target_param::tid[MAX_LENOFTID]
    +
    + +

    target identifier

    + +

    Referenced by gene_target(), print_target(), and search_targetBytid().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structtargetlist__param.html b/build/doc/html/structtargetlist__param.html new file mode 100644 index 000000000..d496104ff --- /dev/null +++ b/build/doc/html/structtargetlist__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: targetlist_param Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    targetlist_param Struct Reference
    +
    +
    + +

    Target list parameters. + More...

    + +

    #include <target_manager.h>

    + + + + + + + + +

    +Data Fields

    target_param_tfirst
     first target pointer of the list More...
     
    target_param_tlast
     last target pointer of the list More...
     
    +

    Detailed Description

    +

    Target list parameters.

    +

    Field Documentation

    + +

    ◆ first

    + +
    +
    + + + + +
    target_param_t* targetlist_param::first
    +
    + +

    first target pointer of the list

    + +

    Referenced by delete_target_in_list(), gene_target(), gene_targetlist(), print_alltarget(), search_target(), and search_targetBytid().

    + +
    +
    + +

    ◆ last

    + +
    +
    + + + + +
    target_param_t* targetlist_param::last
    +
    + +

    last target pointer of the list

    + +

    Referenced by delete_target_in_list(), gene_target(), and gene_targetlist().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/structv4dwt__local.html b/build/doc/html/structv4dwt__local.html new file mode 100644 index 000000000..2f7809936 --- /dev/null +++ b/build/doc/html/structv4dwt__local.html @@ -0,0 +1,208 @@ + + + + + + + +OpenJPEG: v4dwt_local Struct Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    v4dwt_local Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Data Fields

    opj_v4_twavelet
     
    OPJ_INT32 dn
     
    OPJ_INT32 sn
     
    OPJ_INT32 cas
     
    OPJ_UINT32 win_l_x0
     
    OPJ_UINT32 win_l_x1
     
    OPJ_UINT32 win_h_x0
     
    OPJ_UINT32 win_h_x1
     
    +

    Field Documentation

    + +

    ◆ cas

    + +
    +
    + + + + +
    OPJ_INT32 v4dwt_local::cas
    +
    +
    + +

    ◆ dn

    + +
    +
    + + + + +
    OPJ_INT32 v4dwt_local::dn
    +
    +
    + +

    ◆ sn

    + +
    +
    + + + + +
    OPJ_INT32 v4dwt_local::sn
    +
    +
    + +

    ◆ wavelet

    + +
    +
    + + + + +
    opj_v4_t* v4dwt_local::wavelet
    +
    +
    + +

    ◆ win_h_x0

    + +
    +
    + + + + +
    OPJ_UINT32 v4dwt_local::win_h_x0
    +
    +
    + +

    ◆ win_h_x1

    + +
    +
    + + + + +
    OPJ_UINT32 v4dwt_local::win_h_x1
    +
    +
    + +

    ◆ win_l_x0

    + +
    +
    + + + + +
    OPJ_UINT32 v4dwt_local::win_l_x0
    +
    +
    + +

    ◆ win_l_x1

    + +
    +
    + + + + +
    OPJ_UINT32 v4dwt_local::win_l_x1
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/build/doc/html/sync_off.png b/build/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/build/doc/html/sync_on.png b/build/doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/build/doc/html/t1_8c.html b/build/doc/html/t1_8c.html new file mode 100644 index 000000000..b6c19c013 --- /dev/null +++ b/build/doc/html/t1_8c.html @@ -0,0 +1,3235 @@ + + + + + + + +OpenJPEG: t1.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    t1.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include "t1_luts.h"
    +
    + + + +

    +Data Structures

    struct  opj_t1_cblk_decode_processing_job_t
     
    + + + + + + + +

    +Macros

    #define OPJ_SKIP_POISON
     
    #define T1_FLAGS(x, y)   (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])
     
    #define opj_t1_setcurctx(curctx, ctxno)   curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    #define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
     
    #define opj_t1_dec_sigpass_step_mqc_macro(flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
     
    #define opj_t1_dec_sigpass_mqc_internal(t1, bpno, vsc, w, h, flags_stride)
     
    #define opj_t1_dec_refpass_step_mqc_macro(flags, data, data_stride, ci, mqc, curctx, v, a, c, ct, poshalf)
     
    #define opj_t1_dec_refpass_mqc_internal(t1, bpno, w, h, flags_stride)
     
    #define opj_t1_dec_clnpass_step_macro(check_flags, partial, flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
     
    #define opj_t1_dec_clnpass_internal(t1, bpno, vsc, w, h, flags_stride)
     
    static INLINE OPJ_BYTE opj_t1_getctxno_zc (opj_mqc_t *mqc, OPJ_UINT32 f)
     
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
     
    static OPJ_INT16 opj_t1_getnmsedec_sig (OPJ_UINT32 x, OPJ_UINT32 bitpos)
     
    static OPJ_INT16 opj_t1_getnmsedec_ref (OPJ_UINT32 x, OPJ_UINT32 bitpos)
     
    static INLINE void opj_t1_update_flags (opj_flag_t *flagsp, OPJ_UINT32 ci, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 vsc)
     
    static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 vsc, OPJ_UINT32 row)
     Decode significant pass. More...
     
    static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 flags_stride, OPJ_UINT32 vsc)
     
    static void opj_t1_enc_sigpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
     Encode significant pass. More...
     
    static void opj_t1_dec_sigpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     Decode significant pass. More...
     
    static void opj_t1_enc_refpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
     Encode refinement pass. More...
     
    static void opj_t1_dec_refpass_raw (opj_t1_t *t1, OPJ_INT32 bpno)
     Decode refinement pass. More...
     
    static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
     Decode refinement pass. More...
     
    static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
     
    static void opj_t1_dec_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 vsc)
     Decode clean-up pass. More...
     
    static void opj_t1_enc_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
     Encode clean-up pass. More...
     
    static OPJ_FLOAT64 opj_t1_getwmsedec (OPJ_INT32 nmsedec, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 numcomps, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     mod fixed_quality More...
     
    static void opj_t1_encode_cblk (opj_t1_t *t1, opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 cblksty, OPJ_UINT32 numcomps, opj_tcd_tile_t *tile, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     mod fixed_quality More...
     
    static OPJ_BOOL opj_t1_decode_cblk (opj_t1_t *t1, opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 roishift, OPJ_UINT32 cblksty, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode 1 code-block. More...
     
    static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
     
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index (OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
     
    static INLINE OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 lu)
     
    static INLINE OPJ_BYTE opj_t1_getspb (OPJ_UINT32 lu)
     
    static INLINE void opj_t1_enc_sigpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci, OPJ_UINT32 vsc)
     Encode significant pass. More...
     
    static void opj_t1_dec_sigpass_mqc_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     
    static INLINE void opj_t1_enc_refpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci)
     Encode refinement pass step. More...
     
    static void opj_t1_dec_refpass_mqc_64x64 (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_refpass_mqc_generic (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_refpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_enc_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 agg, OPJ_UINT32 runlen, OPJ_UINT32 lim, OPJ_UINT32 cblksty)
     Encode clean-up pass step. More...
     
    static void opj_t1_dec_clnpass_check_segsym (opj_t1_t *t1, OPJ_INT32 cblksty)
     
    static void opj_t1_dec_clnpass_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     
    opj_t1_topj_t1_create (OPJ_BOOL isEncoder)
     Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder. More...
     
    void opj_t1_destroy (opj_t1_t *p_t1)
     Destroys a previously created T1 handle. More...
     
    static void opj_t1_destroy_wrapper (void *t1)
     
    static void opj_t1_clbl_decode_processor (void *user_data, opj_tls_t *tls)
     
    void opj_t1_decode_cblks (opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode the code-blocks of a tile. More...
     
    OPJ_BOOL opj_t1_encode_cblks (opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     Encode the code-blocks of a tile. More...
     
    static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_SKIP_POISON

    + +
    +
    + + + + +
    #define OPJ_SKIP_POISON
    +
    + +
    +
    + +

    ◆ opj_t1_dec_clnpass_internal

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_clnpass_internal( t1,
     bpno,
     vsc,
     w,
     h,
     flags_stride 
    )
    +
    + +
    +
    + +

    ◆ opj_t1_dec_clnpass_step_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_clnpass_step_macro( check_flags,
     partial,
     flags,
     flagsp,
     flags_stride,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     oneplushalf,
     vsc 
    )
    +
    +Value:
    { \
    +
    if ( !check_flags || !(flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U)))) {\
    +
    do { \
    +
    if( !partial ) { \
    +
    OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
    +
    opj_t1_setcurctx(curctx, ctxt1); \
    +
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    +
    if( !v ) \
    +
    break; \
    +
    } \
    +
    { \
    + +
    flags, flagsp[-1], flagsp[1], \
    +
    ci); \
    +
    opj_t1_setcurctx(curctx, opj_t1_getctxno_sc(lu)); \
    +
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    +
    v = v ^ opj_t1_getspb(lu); \
    +
    data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
    +
    opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
    +
    } \
    +
    } while(0); \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_t1_dec_refpass_mqc_internal

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_refpass_mqc_internal( t1,
     bpno,
     w,
     h,
     flags_stride 
    )
    +
    + +
    +
    + +

    ◆ opj_t1_dec_refpass_step_mqc_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_refpass_step_mqc_macro( flags,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     poshalf 
    )
    +
    +Value:
    { \
    +
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == \
    +
    (T1_SIGMA_THIS << (ci * 3U))) { \
    +
    OPJ_UINT32 ctxt = opj_t1_getctxno_mag(flags >> (ci * 3U)); \
    +
    opj_t1_setcurctx(curctx, ctxt); \
    +
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    +
    data[ci*data_stride] += (v ^ (data[ci*data_stride] < 0)) ? poshalf : -poshalf; \
    +
    flags |= T1_MU_THIS << (ci * 3U); \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc_internal

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_sigpass_mqc_internal( t1,
     bpno,
     vsc,
     w,
     h,
     flags_stride 
    )
    +
    + +
    +
    + +

    ◆ opj_t1_dec_sigpass_step_mqc_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_dec_sigpass_step_mqc_macro( flags,
     flagsp,
     flags_stride,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     oneplushalf,
     vsc 
    )
    +
    +Value:
    { \
    +
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == 0U && \
    +
    (flags & (T1_SIGMA_NEIGHBOURS << (ci * 3U))) != 0U) { \
    +
    OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
    +
    opj_t1_setcurctx(curctx, ctxt1); \
    +
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    +
    if (v) { \
    + +
    flags, \
    +
    flagsp[-1], flagsp[1], \
    +
    ci); \
    +
    OPJ_UINT32 ctxt2 = opj_t1_getctxno_sc(lu); \
    +
    OPJ_UINT32 spb = opj_t1_getspb(lu); \
    +
    opj_t1_setcurctx(curctx, ctxt2); \
    +
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    +
    v = v ^ spb; \
    +
    data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
    +
    opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
    +
    } \
    +
    flags |= T1_PI_THIS << (ci * 3U); \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ opj_t1_setcurctx

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define opj_t1_setcurctx( curctx,
     ctxno 
    )   curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    +
    + +
    +
    + +

    ◆ opj_t1_update_flags_macro

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #define opj_t1_update_flags_macro( flags,
     flagsp,
     ci,
     s,
     stride,
     vsc 
    )
    +
    +Value:
    { \
    +
    /* east */ \
    +
    flagsp[-1] |= T1_SIGMA_5 << (3U * ci); \
    +
    \
    +
    /* mark target as significant */ \
    +
    flags |= ((s << T1_CHI_1_I) | T1_SIGMA_4) << (3U * ci); \
    +
    \
    +
    /* west */ \
    +
    flagsp[1] |= T1_SIGMA_3 << (3U * ci); \
    +
    \
    +
    /* north-west, north, north-east */ \
    +
    if (ci == 0U && !(vsc)) { \
    +
    opj_flag_t* north = flagsp - (stride); \
    +
    *north |= (s << T1_CHI_5_I) | T1_SIGMA_16; \
    +
    north[-1] |= T1_SIGMA_17; \
    +
    north[1] |= T1_SIGMA_15; \
    +
    } \
    +
    \
    +
    /* south-west, south, south-east */ \
    +
    if (ci == 3U) { \
    +
    opj_flag_t* south = flagsp + (stride); \
    +
    *south |= (s << T1_CHI_0_I) | T1_SIGMA_1; \
    +
    south[-1] |= T1_SIGMA_2; \
    +
    south[1] |= T1_SIGMA_0; \
    +
    } \
    +
    }
    +
    +
    +
    + +

    ◆ T1_FLAGS

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define T1_FLAGS( x,
     
    )   (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_t1_allocate_buffers()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_tt1,
    OPJ_UINT32 w,
    OPJ_UINT32 h 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_clbl_decode_processor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_clbl_decode_processor (void * user_data,
    opj_tls_ttls 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_create()

    + +
    +
    + + + + + + + + +
    opj_t1_t* opj_t1_create (OPJ_BOOL isEncoder)
    +
    + +

    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.

    +
    Returns
    a new T1 handle if successful, returns NULL otherwise
    + +

    References opj_t1::encoder, and opj_calloc().

    + +

    Referenced by opj_t1_clbl_decode_processor(), and opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_t1_dec_clnpass()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_clnpass_64x64_novsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_64x64_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References OPJ_FALSE, and opj_t1_dec_clnpass_internal.

    + +

    Referenced by opj_t1_dec_clnpass().

    + +
    +
    + +

    ◆ opj_t1_dec_clnpass_64x64_vsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_64x64_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References opj_t1_dec_clnpass_internal, and OPJ_TRUE.

    + +

    Referenced by opj_t1_dec_clnpass().

    + +
    +
    + +

    ◆ opj_t1_dec_clnpass_check_segsym()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_check_segsym (opj_t1_tt1,
    OPJ_INT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_clnpass_generic_novsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_generic_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_clnpass_generic_vsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_generic_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References opj_t1::h, opj_t1_dec_clnpass_internal, OPJ_TRUE, and opj_t1::w.

    + +

    Referenced by opj_t1_dec_clnpass().

    + +
    +
    + +

    ◆ opj_t1_dec_clnpass_step()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_clnpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 row,
    OPJ_UINT32 vsc 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_refpass_mqc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_refpass_mqc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_refpass_mqc_64x64()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_refpass_mqc_64x64 (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References opj_t1_dec_refpass_mqc_internal.

    + +

    Referenced by opj_t1_dec_refpass_mqc().

    + +
    +
    + +

    ◆ opj_t1_dec_refpass_mqc_generic()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_refpass_mqc_generic (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_refpass_raw()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_refpass_raw (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    Decode refinement pass.

    + +

    References opj_t1::data, opj_t1::h, opj_t1_dec_refpass_step_raw(), T1_FLAGS, and opj_t1::w.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_t1_dec_refpass_step_mqc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 poshalf,
    OPJ_UINT32 row 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_refpass_step_raw()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 poshalf,
    OPJ_UINT32 row 
    )
    +
    +static
    +
    + +

    Decode refinement pass.

    + +

    References opj_t1::mqc, opj_mqc_raw_decode(), T1_MU_THIS, T1_PI_THIS, and T1_SIGMA_THIS.

    + +

    Referenced by opj_t1_dec_refpass_raw().

    + +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_mqc (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc_64x64_novsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_mqc_64x64_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References OPJ_FALSE, and opj_t1_dec_sigpass_mqc_internal.

    + +

    Referenced by opj_t1_dec_sigpass_mqc().

    + +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc_64x64_vsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_mqc_64x64_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    + +

    References opj_t1_dec_sigpass_mqc_internal, and OPJ_TRUE.

    + +

    Referenced by opj_t1_dec_sigpass_mqc().

    + +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc_generic_novsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_mqc_generic_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_sigpass_mqc_generic_vsc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_mqc_generic_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_sigpass_raw()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_dec_sigpass_raw (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    +
    +static
    +
    + +

    Decode significant pass.

    + +

    References opj_t1::data, opj_t1::h, J2K_CCP_CBLKSTY_VSC, OPJ_FALSE, opj_t1_dec_sigpass_step_raw(), T1_FLAGS, and opj_t1::w.

    + +

    Referenced by opj_t1_decode_cblk().

    + +
    +
    + +

    ◆ opj_t1_dec_sigpass_step_mqc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 row,
    OPJ_UINT32 flags_stride,
    OPJ_UINT32 vsc 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_dec_sigpass_step_raw()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 vsc,
    OPJ_UINT32 row 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_decode_cblk()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t1_decode_cblk (opj_t1_tt1,
    opj_tcd_cblk_dec_tcblk,
    OPJ_UINT32 orient,
    OPJ_UINT32 roishift,
    OPJ_UINT32 cblksty,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_decode_cblks()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_t1_decode_cblks (opj_tcd_ttcd,
    volatile OPJ_BOOLpret,
    opj_tcd_tilecomp_ttilec,
    opj_tccp_ttccp,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    +
    + +

    Decode the code-blocks of a tile.

    +
    Parameters
    + + + + + + + + +
    tcdTCD handle
    pretPointer to return value
    tilecThe tile to decode
    tccpTile coding parameters
    p_managerthe event manager
    p_manager_mutexmutex for the event manager
    check_ptermwhether PTERM correct termination should be checked
    +
    +
    + +

    References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_decode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_tcd_tilecomp::compno, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_tcd_resolution::numbands, opj_aligned_free(), opj_calloc(), OPJ_FALSE, OPJ_RESTRICT, opj_t1_clbl_decode_processor(), opj_tcd_is_subband_area_of_interest(), opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_tcd_resolution::ph, opj_t1_cblk_decode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_decode_processing_job_t::tccp, opj_tcd::thread_pool, opj_t1_cblk_decode_processing_job_t::tilec, opj_tcd::whole_tile_decoding, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_cblk_dec::y1, and opj_tcd_precinct::y1.

    + +

    Referenced by opj_tcd_t1_decode().

    + +
    +
    + +

    ◆ opj_t1_destroy()

    + +
    +
    + + + + + + + + +
    void opj_t1_destroy (opj_t1_tp_t1)
    +
    + +

    Destroys a previously created T1 handle.

    +
    Parameters
    + + +
    p_t1Tier 1 handle to destroy
    +
    +
    + +

    References opj_t1::cblkdatabuffer, opj_t1::data, opj_t1::encoder, opj_t1::flags, opj_aligned_free(), and opj_free().

    + +

    Referenced by opj_t1_clbl_decode_processor(), opj_t1_destroy_wrapper(), and opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_t1_destroy_wrapper()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_t1_destroy_wrapper (void * t1)
    +
    +static
    +
    + +

    References opj_t1_destroy().

    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_t1_enc_clnpass()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_enc_clnpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_UINT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_clnpass_step()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_enc_clnpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_UINT32 agg,
    OPJ_UINT32 runlen,
    OPJ_UINT32 lim,
    OPJ_UINT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_is_term_pass()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_tcblk,
    OPJ_UINT32 cblksty,
    OPJ_INT32 bpno,
    OPJ_UINT32 passtype 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_refpass()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_enc_refpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_BYTE type 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_refpass_step()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_enc_refpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 ci 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_sigpass()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_enc_sigpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 cblksty 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_enc_sigpass_step()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_enc_sigpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 ci,
    OPJ_UINT32 vsc 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_encode_cblk()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_t1_encode_cblk (opj_t1_tt1,
    opj_tcd_cblk_enc_tcblk,
    OPJ_UINT32 orient,
    OPJ_UINT32 compno,
    OPJ_UINT32 level,
    OPJ_UINT32 qmfbid,
    OPJ_FLOAT64 stepsize,
    OPJ_UINT32 cblksty,
    OPJ_UINT32 numcomps,
    opj_tcd_tile_ttile,
    const OPJ_FLOAT64mct_norms,
    OPJ_UINT32 mct_numcomps 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_encode_cblks()

    + + + +

    ◆ opj_t1_getctxno_mag()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
    +
    +static
    +
    + +

    References T1_CTXNO_MAG, T1_MU_0, and T1_SIGMA_NEIGHBOURS.

    + +

    Referenced by opj_t1_enc_refpass_step().

    + +
    +
    + +

    ◆ opj_t1_getctxno_sc()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 lu)
    +
    +static
    +
    + +

    References lut_ctxno_sc.

    + +

    Referenced by opj_t1_enc_clnpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_t1_getctxno_zc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_BYTE opj_t1_getctxno_zc (opj_mqc_tmqc,
    OPJ_UINT32 f 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_getctxtno_sc_or_spb_index()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index (OPJ_UINT32 fX,
    OPJ_UINT32 pfX,
    OPJ_UINT32 nfX,
    OPJ_UINT32 ci 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_getnmsedec_ref()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_INT16 opj_t1_getnmsedec_ref (OPJ_UINT32 x,
    OPJ_UINT32 bitpos 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_getnmsedec_sig()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_INT16 opj_t1_getnmsedec_sig (OPJ_UINT32 x,
    OPJ_UINT32 bitpos 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t1_getspb()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static INLINE OPJ_BYTE opj_t1_getspb (OPJ_UINT32 lu)
    +
    +static
    +
    + +

    References lut_spb.

    + +

    Referenced by opj_t1_enc_clnpass_step(), and opj_t1_enc_sigpass_step().

    + +
    +
    + +

    ◆ opj_t1_getwmsedec()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_FLOAT64 opj_t1_getwmsedec (OPJ_INT32 nmsedec,
    OPJ_UINT32 compno,
    OPJ_UINT32 level,
    OPJ_UINT32 orient,
    OPJ_INT32 bpno,
    OPJ_UINT32 qmfbid,
    OPJ_FLOAT64 stepsize,
    OPJ_UINT32 numcomps,
    const OPJ_FLOAT64mct_norms,
    OPJ_UINT32 mct_numcomps 
    )
    +
    +static
    +
    + +

    mod fixed_quality

    + +

    References OPJ_ARG_NOT_USED, opj_dwt_getnorm(), and opj_dwt_getnorm_real().

    + +

    Referenced by opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ opj_t1_update_flags()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE void opj_t1_update_flags (opj_flag_tflagsp,
    OPJ_UINT32 ci,
    OPJ_UINT32 s,
    OPJ_UINT32 stride,
    OPJ_UINT32 vsc 
    )
    +
    +static
    +
    +
    +
    +
    #define T1_MU_THIS
    Definition: t1.h:162
    +
    #define T1_CHI_5_I
    Definition: t1.h:127
    +
    #define T1_SIGMA_4
    Definition: t1.h:95
    +
    #define T1_SIGMA_2
    Definition: t1.h:93
    +
    #define T1_SIGMA_NEIGHBOURS
    Definition: t1.h:158
    +
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index(OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
    Definition: t1.c:228
    +
    static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
    Definition: t1.c:258
    +
    #define T1_SIGMA_0
    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to ho...
    Definition: t1.h:91
    +
    #define T1_SIGMA_1
    Definition: t1.h:92
    +
    #define T1_SIGMA_16
    Definition: t1.h:107
    +
    #define T1_SIGMA_3
    Definition: t1.h:94
    +
    #define T1_SIGMA_17
    Definition: t1.h:108
    +
    #define T1_SIGMA_5
    Definition: t1.h:96
    +
    static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
    Definition: t1.c:223
    +
    #define T1_SIGMA_15
    Definition: t1.h:106
    +
    static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
    Definition: t1.c:270
    +
    #define T1_SIGMA_THIS
    Definition: t1.h:153
    +
    #define T1_CHI_1_I
    Definition: t1.h:113
    +
    #define T1_CHI_0_I
    Definition: t1.h:111
    +
    #define T1_PI_THIS
    Definition: t1.h:163
    +
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
    Definition: t1.c:263
    + + + + diff --git a/build/doc/html/t1_8h.html b/build/doc/html/t1_8h.html new file mode 100644 index 000000000..09df95c2f --- /dev/null +++ b/build/doc/html/t1_8h.html @@ -0,0 +1,1538 @@ + + + + + + + +OpenJPEG: t1.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    t1.h File Reference
    +
    +
    + +

    Implementation of the tier-1 coding (coding of code-block coefficients) (T1) +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_t1
     Tier-1 coding (coding of code-block coefficients) More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define T1_NMSEDEC_BITS   7
     
    #define T1_NUMCTXS_ZC   9
     
    #define T1_NUMCTXS_SC   5
     
    #define T1_NUMCTXS_MAG   3
     
    #define T1_NUMCTXS_AGG   1
     
    #define T1_NUMCTXS_UNI   1
     
    #define T1_CTXNO_ZC   0
     
    #define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
     
    #define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)
     
    #define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
     
    #define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
     
    #define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
     
    #define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
     
    #define T1_TYPE_MQ   0
     Normal coding using entropy coder. More...
     
    #define T1_TYPE_RAW   1
     No encoding the information is store under raw format in codestream (mode switch RAW) More...
     
    #define T1_SIGMA_0   (1U << 0)
     We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to hold the state of 4 data points. More...
     
    #define T1_SIGMA_1   (1U << 1)
     
    #define T1_SIGMA_2   (1U << 2)
     
    #define T1_SIGMA_3   (1U << 3)
     
    #define T1_SIGMA_4   (1U << 4)
     
    #define T1_SIGMA_5   (1U << 5)
     
    #define T1_SIGMA_6   (1U << 6)
     
    #define T1_SIGMA_7   (1U << 7)
     
    #define T1_SIGMA_8   (1U << 8)
     
    #define T1_SIGMA_9   (1U << 9)
     
    #define T1_SIGMA_10   (1U << 10)
     
    #define T1_SIGMA_11   (1U << 11)
     
    #define T1_SIGMA_12   (1U << 12)
     
    #define T1_SIGMA_13   (1U << 13)
     
    #define T1_SIGMA_14   (1U << 14)
     
    #define T1_SIGMA_15   (1U << 15)
     
    #define T1_SIGMA_16   (1U << 16)
     
    #define T1_SIGMA_17   (1U << 17)
     
    #define T1_CHI_0   (1U << 18)
     
    #define T1_CHI_0_I   18
     
    #define T1_CHI_1   (1U << 19)
     
    #define T1_CHI_1_I   19
     
    #define T1_MU_0   (1U << 20)
     
    #define T1_PI_0   (1U << 21)
     
    #define T1_CHI_2   (1U << 22)
     
    #define T1_CHI_2_I   22
     
    #define T1_MU_1   (1U << 23)
     
    #define T1_PI_1   (1U << 24)
     
    #define T1_CHI_3   (1U << 25)
     
    #define T1_MU_2   (1U << 26)
     
    #define T1_PI_2   (1U << 27)
     
    #define T1_CHI_4   (1U << 28)
     
    #define T1_MU_3   (1U << 29)
     
    #define T1_PI_3   (1U << 30)
     
    #define T1_CHI_5   (1U << 31)
     
    #define T1_CHI_5_I   31
     
    #define T1_SIGMA_NW   T1_SIGMA_0
     As an example, the bits T1_SIGMA_3, T1_SIGMA_4 and T1_SIGMA_5 indicate the significance state of the west neighbour of data point zero of our four, the point itself, and its east neighbour respectively. More...
     
    #define T1_SIGMA_N   T1_SIGMA_1
     
    #define T1_SIGMA_NE   T1_SIGMA_2
     
    #define T1_SIGMA_W   T1_SIGMA_3
     
    #define T1_SIGMA_THIS   T1_SIGMA_4
     
    #define T1_SIGMA_E   T1_SIGMA_5
     
    #define T1_SIGMA_SW   T1_SIGMA_6
     
    #define T1_SIGMA_S   T1_SIGMA_7
     
    #define T1_SIGMA_SE   T1_SIGMA_8
     
    #define T1_SIGMA_NEIGHBOURS   (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
     
    #define T1_CHI_THIS   T1_CHI_1
     
    #define T1_CHI_THIS_I   T1_CHI_1_I
     
    #define T1_MU_THIS   T1_MU_0
     
    #define T1_PI_THIS   T1_PI_0
     
    #define T1_CHI_S   T1_CHI_2
     
    #define T1_LUT_SGN_W   (1U << 0)
     
    #define T1_LUT_SIG_N   (1U << 1)
     
    #define T1_LUT_SGN_E   (1U << 2)
     
    #define T1_LUT_SIG_W   (1U << 3)
     
    #define T1_LUT_SGN_N   (1U << 4)
     
    #define T1_LUT_SIG_E   (1U << 5)
     
    #define T1_LUT_SGN_S   (1U << 6)
     
    #define T1_LUT_SIG_S   (1U << 7)
     
    + + + + + + + +

    +Typedefs

    typedef OPJ_UINT32 opj_flag_t
     Flags for 4 consecutive rows of a column. More...
     
    typedef struct opj_t1 opj_t1_t
     Tier-1 coding (coding of code-block coefficients) More...
     
    + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    OPJ_BOOL opj_t1_encode_cblks (opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     Encode the code-blocks of a tile. More...
     
    void opj_t1_decode_cblks (opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode the code-blocks of a tile. More...
     
    opj_t1_topj_t1_create (OPJ_BOOL isEncoder)
     Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder. More...
     
    void opj_t1_destroy (opj_t1_t *p_t1)
     Destroys a previously created T1 handle. More...
     
    +

    Detailed Description

    +

    Implementation of the tier-1 coding (coding of code-block coefficients) (T1)

    +

    The functions in T1.C have for goal to realize the tier-1 coding operation. The functions in T1.C are used by some function in TCD.C.

    +

    Macro Definition Documentation

    + +

    ◆ T1_CHI_0

    + +
    +
    + + + + +
    #define T1_CHI_0   (1U << 18)
    +
    + +
    +
    + +

    ◆ T1_CHI_0_I

    + +
    +
    + + + + +
    #define T1_CHI_0_I   18
    +
    + +
    +
    + +

    ◆ T1_CHI_1

    + +
    +
    + + + + +
    #define T1_CHI_1   (1U << 19)
    +
    + +
    +
    + +

    ◆ T1_CHI_1_I

    + +
    +
    + + + + +
    #define T1_CHI_1_I   19
    +
    + +
    +
    + +

    ◆ T1_CHI_2

    + +
    +
    + + + + +
    #define T1_CHI_2   (1U << 22)
    +
    + +
    +
    + +

    ◆ T1_CHI_2_I

    + +
    +
    + + + + +
    #define T1_CHI_2_I   22
    +
    + +
    +
    + +

    ◆ T1_CHI_3

    + +
    +
    + + + + +
    #define T1_CHI_3   (1U << 25)
    +
    + +
    +
    + +

    ◆ T1_CHI_4

    + +
    +
    + + + + +
    #define T1_CHI_4   (1U << 28)
    +
    + +
    +
    + +

    ◆ T1_CHI_5

    + +
    +
    + + + + +
    #define T1_CHI_5   (1U << 31)
    +
    + +
    +
    + +

    ◆ T1_CHI_5_I

    + +
    +
    + + + + +
    #define T1_CHI_5_I   31
    +
    + +
    +
    + +

    ◆ T1_CHI_S

    + +
    +
    + + + + +
    #define T1_CHI_S   T1_CHI_2
    +
    + +
    +
    + +

    ◆ T1_CHI_THIS

    + +
    +
    + + + + +
    #define T1_CHI_THIS   T1_CHI_1
    +
    + +
    +
    + +

    ◆ T1_CHI_THIS_I

    + +
    +
    + + + + +
    #define T1_CHI_THIS_I   T1_CHI_1_I
    +
    + +
    +
    + +

    ◆ T1_CTXNO_AGG

    + +
    +
    + + + + +
    #define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
    +
    + +
    +
    + +

    ◆ T1_CTXNO_MAG

    + +
    +
    + + + + +
    #define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)
    +
    + +
    +
    + +

    ◆ T1_CTXNO_SC

    + +
    +
    + + + + +
    #define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
    +
    + +
    +
    + +

    ◆ T1_CTXNO_UNI

    + +
    +
    + + + + +
    #define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
    +
    + +
    +
    + +

    ◆ T1_CTXNO_ZC

    + +
    +
    + + + + +
    #define T1_CTXNO_ZC   0
    +
    + +
    +
    + +

    ◆ T1_LUT_SGN_E

    + +
    +
    + + + + +
    #define T1_LUT_SGN_E   (1U << 2)
    +
    + +
    +
    + +

    ◆ T1_LUT_SGN_N

    + +
    +
    + + + + +
    #define T1_LUT_SGN_N   (1U << 4)
    +
    + +
    +
    + +

    ◆ T1_LUT_SGN_S

    + +
    +
    + + + + +
    #define T1_LUT_SGN_S   (1U << 6)
    +
    + +
    +
    + +

    ◆ T1_LUT_SGN_W

    + +
    +
    + + + + +
    #define T1_LUT_SGN_W   (1U << 0)
    +
    + +
    +
    + +

    ◆ T1_LUT_SIG_E

    + +
    +
    + + + + +
    #define T1_LUT_SIG_E   (1U << 5)
    +
    + +
    +
    + +

    ◆ T1_LUT_SIG_N

    + +
    +
    + + + + +
    #define T1_LUT_SIG_N   (1U << 1)
    +
    + +
    +
    + +

    ◆ T1_LUT_SIG_S

    + +
    +
    + + + + +
    #define T1_LUT_SIG_S   (1U << 7)
    +
    + +
    +
    + +

    ◆ T1_LUT_SIG_W

    + +
    +
    + + + + +
    #define T1_LUT_SIG_W   (1U << 3)
    +
    + +
    +
    + +

    ◆ T1_MU_0

    + +
    +
    + + + + +
    #define T1_MU_0   (1U << 20)
    +
    + +
    +
    + +

    ◆ T1_MU_1

    + +
    +
    + + + + +
    #define T1_MU_1   (1U << 23)
    +
    + +
    +
    + +

    ◆ T1_MU_2

    + +
    +
    + + + + +
    #define T1_MU_2   (1U << 26)
    +
    + +
    +
    + +

    ◆ T1_MU_3

    + +
    +
    + + + + +
    #define T1_MU_3   (1U << 29)
    +
    + +
    +
    + +

    ◆ T1_MU_THIS

    + +
    +
    + + + + +
    #define T1_MU_THIS   T1_MU_0
    +
    + +
    +
    + +

    ◆ T1_NMSEDEC_BITS

    + +
    +
    + + + + +
    #define T1_NMSEDEC_BITS   7
    +
    + +
    +
    + +

    ◆ T1_NMSEDEC_FRACBITS

    + +
    +
    + + + + +
    #define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS

    + +
    +
    + + + + +
    #define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS_AGG

    + +
    +
    + + + + +
    #define T1_NUMCTXS_AGG   1
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS_MAG

    + +
    +
    + + + + +
    #define T1_NUMCTXS_MAG   3
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS_SC

    + +
    +
    + + + + +
    #define T1_NUMCTXS_SC   5
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS_UNI

    + +
    +
    + + + + +
    #define T1_NUMCTXS_UNI   1
    +
    + +
    +
    + +

    ◆ T1_NUMCTXS_ZC

    + +
    +
    + + + + +
    #define T1_NUMCTXS_ZC   9
    +
    + +
    +
    + +

    ◆ T1_PI_0

    + +
    +
    + + + + +
    #define T1_PI_0   (1U << 21)
    +
    + +
    +
    + +

    ◆ T1_PI_1

    + +
    +
    + + + + +
    #define T1_PI_1   (1U << 24)
    +
    + +
    +
    + +

    ◆ T1_PI_2

    + +
    +
    + + + + +
    #define T1_PI_2   (1U << 27)
    +
    + +
    +
    + +

    ◆ T1_PI_3

    + +
    +
    + + + + +
    #define T1_PI_3   (1U << 30)
    +
    + +
    +
    + +

    ◆ T1_PI_THIS

    + +
    +
    + + + + +
    #define T1_PI_THIS   T1_PI_0
    +
    + +
    +
    + +

    ◆ T1_SIGMA_0

    + +
    +
    + + + + +
    #define T1_SIGMA_0   (1U << 0)
    +
    + +

    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to hold the state of 4 data points.

    +

    This corresponds to the 4-point-high columns that the data is processed in.

    +

    These #defines declare the layout of a 32-bit flags word.

    +

    This is currently done for encoding only. The values must NOT be changed, otherwise this is going to break a lot of assumptions.

    + +
    +
    + +

    ◆ T1_SIGMA_1

    + +
    +
    + + + + +
    #define T1_SIGMA_1   (1U << 1)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_10

    + +
    +
    + + + + +
    #define T1_SIGMA_10   (1U << 10)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_11

    + +
    +
    + + + + +
    #define T1_SIGMA_11   (1U << 11)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_12

    + +
    +
    + + + + +
    #define T1_SIGMA_12   (1U << 12)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_13

    + +
    +
    + + + + +
    #define T1_SIGMA_13   (1U << 13)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_14

    + +
    +
    + + + + +
    #define T1_SIGMA_14   (1U << 14)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_15

    + +
    +
    + + + + +
    #define T1_SIGMA_15   (1U << 15)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_16

    + +
    +
    + + + + +
    #define T1_SIGMA_16   (1U << 16)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_17

    + +
    +
    + + + + +
    #define T1_SIGMA_17   (1U << 17)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_2

    + +
    +
    + + + + +
    #define T1_SIGMA_2   (1U << 2)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_3

    + +
    +
    + + + + +
    #define T1_SIGMA_3   (1U << 3)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_4

    + +
    +
    + + + + +
    #define T1_SIGMA_4   (1U << 4)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_5

    + +
    +
    + + + + +
    #define T1_SIGMA_5   (1U << 5)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_6

    + +
    +
    + + + + +
    #define T1_SIGMA_6   (1U << 6)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_7

    + +
    +
    + + + + +
    #define T1_SIGMA_7   (1U << 7)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_8

    + +
    +
    + + + + +
    #define T1_SIGMA_8   (1U << 8)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_9

    + +
    +
    + + + + +
    #define T1_SIGMA_9   (1U << 9)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_E

    + +
    +
    + + + + +
    #define T1_SIGMA_E   T1_SIGMA_5
    +
    + +
    +
    + +

    ◆ T1_SIGMA_N

    + +
    +
    + + + + +
    #define T1_SIGMA_N   T1_SIGMA_1
    +
    + +
    +
    + +

    ◆ T1_SIGMA_NE

    + +
    +
    + + + + +
    #define T1_SIGMA_NE   T1_SIGMA_2
    +
    + +
    +
    + +

    ◆ T1_SIGMA_NEIGHBOURS

    + +
    +
    + + + + +
    #define T1_SIGMA_NEIGHBOURS   (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
    +
    + +
    +
    + +

    ◆ T1_SIGMA_NW

    + +
    +
    + + + + +
    #define T1_SIGMA_NW   T1_SIGMA_0
    +
    + +

    As an example, the bits T1_SIGMA_3, T1_SIGMA_4 and T1_SIGMA_5 indicate the significance state of the west neighbour of data point zero of our four, the point itself, and its east neighbour respectively.

    +

    Many of the bits are arranged so that given a flags word, you can look at the values for the data point 0, then shift the flags word right by 3 bits and look at the same bit positions to see the values for data point 1.

    +

    The #defines below help a bit with this; say you have a flags word f, you can do things like

    +

    (f & T1_SIGMA_THIS)

    +

    to see the significance bit of data point 0, then do

    +

    ((f >> 3) & T1_SIGMA_THIS)

    +

    to see the significance bit of data point 1.

    + +
    +
    + +

    ◆ T1_SIGMA_S

    + +
    +
    + + + + +
    #define T1_SIGMA_S   T1_SIGMA_7
    +
    + +
    +
    + +

    ◆ T1_SIGMA_SE

    + +
    +
    + + + + +
    #define T1_SIGMA_SE   T1_SIGMA_8
    +
    + +
    +
    + +

    ◆ T1_SIGMA_SW

    + +
    +
    + + + + +
    #define T1_SIGMA_SW   T1_SIGMA_6
    +
    + +
    +
    + +

    ◆ T1_SIGMA_THIS

    + +
    +
    + + + + +
    #define T1_SIGMA_THIS   T1_SIGMA_4
    +
    + +
    +
    + +

    ◆ T1_SIGMA_W

    + +
    +
    + + + + +
    #define T1_SIGMA_W   T1_SIGMA_3
    +
    + +
    +
    + +

    ◆ T1_TYPE_MQ

    + +
    +
    + + + + +
    #define T1_TYPE_MQ   0
    +
    + +

    Normal coding using entropy coder.

    + +
    +
    + +

    ◆ T1_TYPE_RAW

    + +
    +
    + + + + +
    #define T1_TYPE_RAW   1
    +
    + +

    No encoding the information is store under raw format in codestream (mode switch RAW)

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ opj_flag_t

    + +
    +
    + + + + +
    typedef OPJ_UINT32 opj_flag_t
    +
    + +

    Flags for 4 consecutive rows of a column.

    + +
    +
    + +

    ◆ opj_t1_t

    + +
    +
    + + + + +
    typedef struct opj_t1 opj_t1_t
    +
    + +

    Tier-1 coding (coding of code-block coefficients)

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_t1_create()

    + +
    +
    + + + + + + + + +
    opj_t1_t* opj_t1_create (OPJ_BOOL isEncoder)
    +
    + +

    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.

    +
    Returns
    a new T1 handle if successful, returns NULL otherwise
    + +

    References opj_t1::encoder, and opj_calloc().

    + +

    Referenced by opj_t1_clbl_decode_processor(), and opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_t1_decode_cblks()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_t1_decode_cblks (opj_tcd_ttcd,
    volatile OPJ_BOOLpret,
    opj_tcd_tilecomp_ttilec,
    opj_tccp_ttccp,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    +
    + +

    Decode the code-blocks of a tile.

    +
    Parameters
    + + + + + + + + +
    tcdTCD handle
    pretPointer to return value
    tilecThe tile to decode
    tccpTile coding parameters
    p_managerthe event manager
    p_manager_mutexmutex for the event manager
    check_ptermwhether PTERM correct termination should be checked
    +
    +
    + +

    References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_decode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_tcd_tilecomp::compno, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_tcd_resolution::numbands, opj_aligned_free(), opj_calloc(), OPJ_FALSE, OPJ_RESTRICT, opj_t1_clbl_decode_processor(), opj_tcd_is_subband_area_of_interest(), opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_tcd_resolution::ph, opj_t1_cblk_decode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_decode_processing_job_t::tccp, opj_tcd::thread_pool, opj_t1_cblk_decode_processing_job_t::tilec, opj_tcd::whole_tile_decoding, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_cblk_dec::y1, and opj_tcd_precinct::y1.

    + +

    Referenced by opj_tcd_t1_decode().

    + +
    +
    + +

    ◆ opj_t1_destroy()

    + +
    +
    + + + + + + + + +
    void opj_t1_destroy (opj_t1_tp_t1)
    +
    + +

    Destroys a previously created T1 handle.

    +
    Parameters
    + + +
    p_t1Tier 1 handle to destroy
    +
    +
    + +

    References opj_t1::cblkdatabuffer, opj_t1::data, opj_t1::encoder, opj_t1::flags, opj_aligned_free(), and opj_free().

    + +

    Referenced by opj_t1_clbl_decode_processor(), opj_t1_destroy_wrapper(), and opj_tcd_t1_encode().

    + +
    +
    + +

    ◆ opj_t1_encode_cblks()

    + + +
    + + + + diff --git a/build/doc/html/t1_8h_source.html b/build/doc/html/t1_8h_source.html new file mode 100644 index 000000000..5701fa378 --- /dev/null +++ b/build/doc/html/t1_8h_source.html @@ -0,0 +1,519 @@ + + + + + + + +OpenJPEG: t1.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    t1.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2012, Carl Hetherington
    +
    15  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    +
    16  * All rights reserved.
    +
    17  *
    +
    18  * Redistribution and use in source and binary forms, with or without
    +
    19  * modification, are permitted provided that the following conditions
    +
    20  * are met:
    +
    21  * 1. Redistributions of source code must retain the above copyright
    +
    22  * notice, this list of conditions and the following disclaimer.
    +
    23  * 2. Redistributions in binary form must reproduce the above copyright
    +
    24  * notice, this list of conditions and the following disclaimer in the
    +
    25  * documentation and/or other materials provided with the distribution.
    +
    26  *
    +
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    37  * POSSIBILITY OF SUCH DAMAGE.
    +
    38  */
    +
    39 #ifndef OPJ_T1_H
    +
    40 #define OPJ_T1_H
    +
    41 
    +
    51 
    +
    52 /* ----------------------------------------------------------------------- */
    +
    53 #define T1_NMSEDEC_BITS 7
    +
    54 
    +
    55 #define T1_NUMCTXS_ZC 9
    +
    56 #define T1_NUMCTXS_SC 5
    +
    57 #define T1_NUMCTXS_MAG 3
    +
    58 #define T1_NUMCTXS_AGG 1
    +
    59 #define T1_NUMCTXS_UNI 1
    +
    60 
    +
    61 #define T1_CTXNO_ZC 0
    +
    62 #define T1_CTXNO_SC (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
    +
    63 #define T1_CTXNO_MAG (T1_CTXNO_SC+T1_NUMCTXS_SC)
    +
    64 #define T1_CTXNO_AGG (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
    +
    65 #define T1_CTXNO_UNI (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
    +
    66 #define T1_NUMCTXS (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
    +
    67 
    +
    68 #define T1_NMSEDEC_FRACBITS (T1_NMSEDEC_BITS-1)
    +
    69 
    +
    70 #define T1_TYPE_MQ 0
    +
    71 #define T1_TYPE_RAW 1
    +
    73 /* BEGINNING of flags that apply to opj_flag_t */
    +
    74 
    +
    85 /* SIGMA: significance state (3 cols x 6 rows)
    +
    86  * CHI: state for negative sample value (1 col x 6 rows)
    +
    87  * MU: state for visited in refinement pass (1 col x 4 rows)
    +
    88  * PI: state for visited in significance pass (1 col * 4 rows)
    +
    89  */
    +
    90 
    +
    91 #define T1_SIGMA_0 (1U << 0)
    +
    92 #define T1_SIGMA_1 (1U << 1)
    +
    93 #define T1_SIGMA_2 (1U << 2)
    +
    94 #define T1_SIGMA_3 (1U << 3)
    +
    95 #define T1_SIGMA_4 (1U << 4)
    +
    96 #define T1_SIGMA_5 (1U << 5)
    +
    97 #define T1_SIGMA_6 (1U << 6)
    +
    98 #define T1_SIGMA_7 (1U << 7)
    +
    99 #define T1_SIGMA_8 (1U << 8)
    +
    100 #define T1_SIGMA_9 (1U << 9)
    +
    101 #define T1_SIGMA_10 (1U << 10)
    +
    102 #define T1_SIGMA_11 (1U << 11)
    +
    103 #define T1_SIGMA_12 (1U << 12)
    +
    104 #define T1_SIGMA_13 (1U << 13)
    +
    105 #define T1_SIGMA_14 (1U << 14)
    +
    106 #define T1_SIGMA_15 (1U << 15)
    +
    107 #define T1_SIGMA_16 (1U << 16)
    +
    108 #define T1_SIGMA_17 (1U << 17)
    +
    109 
    +
    110 #define T1_CHI_0 (1U << 18)
    +
    111 #define T1_CHI_0_I 18
    +
    112 #define T1_CHI_1 (1U << 19)
    +
    113 #define T1_CHI_1_I 19
    +
    114 #define T1_MU_0 (1U << 20)
    +
    115 #define T1_PI_0 (1U << 21)
    +
    116 #define T1_CHI_2 (1U << 22)
    +
    117 #define T1_CHI_2_I 22
    +
    118 #define T1_MU_1 (1U << 23)
    +
    119 #define T1_PI_1 (1U << 24)
    +
    120 #define T1_CHI_3 (1U << 25)
    +
    121 #define T1_MU_2 (1U << 26)
    +
    122 #define T1_PI_2 (1U << 27)
    +
    123 #define T1_CHI_4 (1U << 28)
    +
    124 #define T1_MU_3 (1U << 29)
    +
    125 #define T1_PI_3 (1U << 30)
    +
    126 #define T1_CHI_5 (1U << 31)
    +
    127 #define T1_CHI_5_I 31
    +
    128 
    +
    149 #define T1_SIGMA_NW T1_SIGMA_0
    +
    150 #define T1_SIGMA_N T1_SIGMA_1
    +
    151 #define T1_SIGMA_NE T1_SIGMA_2
    +
    152 #define T1_SIGMA_W T1_SIGMA_3
    +
    153 #define T1_SIGMA_THIS T1_SIGMA_4
    +
    154 #define T1_SIGMA_E T1_SIGMA_5
    +
    155 #define T1_SIGMA_SW T1_SIGMA_6
    +
    156 #define T1_SIGMA_S T1_SIGMA_7
    +
    157 #define T1_SIGMA_SE T1_SIGMA_8
    +
    158 #define T1_SIGMA_NEIGHBOURS (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
    +
    159 
    +
    160 #define T1_CHI_THIS T1_CHI_1
    +
    161 #define T1_CHI_THIS_I T1_CHI_1_I
    +
    162 #define T1_MU_THIS T1_MU_0
    +
    163 #define T1_PI_THIS T1_PI_0
    +
    164 #define T1_CHI_S T1_CHI_2
    +
    165 
    +
    166 #define T1_LUT_SGN_W (1U << 0)
    +
    167 #define T1_LUT_SIG_N (1U << 1)
    +
    168 #define T1_LUT_SGN_E (1U << 2)
    +
    169 #define T1_LUT_SIG_W (1U << 3)
    +
    170 #define T1_LUT_SGN_N (1U << 4)
    +
    171 #define T1_LUT_SIG_E (1U << 5)
    +
    172 #define T1_LUT_SGN_S (1U << 6)
    +
    173 #define T1_LUT_SIG_S (1U << 7)
    +
    174 /* END of flags that apply to opj_flag_t */
    +
    175 
    +
    176 /* ----------------------------------------------------------------------- */
    +
    177 
    + +
    180 
    +
    184 typedef struct opj_t1 {
    +
    185 
    + +
    188 
    + + +
    196 
    + + + + + + +
    203 
    +
    204  /* Thre 3 variables below are only used by the decoder */
    +
    205  /* set to TRUE in multithreaded context */
    + +
    207  /* Temporary buffer to concatenate all chunks of a codebock */
    + +
    209  /* Maximum size available in cblkdatabuffer */
    + +
    211 } opj_t1_t;
    +
    212 
    +
    215 /* ----------------------------------------------------------------------- */
    +
    216 
    + +
    226  opj_tcd_tile_t *tile,
    +
    227  opj_tcp_t *tcp,
    +
    228  const OPJ_FLOAT64 * mct_norms,
    +
    229  OPJ_UINT32 mct_numcomps);
    +
    230 
    + +
    242  volatile OPJ_BOOL* pret,
    +
    243  opj_tcd_tilecomp_t* tilec,
    +
    244  opj_tccp_t* tccp,
    +
    245  opj_event_mgr_t *p_manager,
    +
    246  opj_mutex_t* p_manager_mutex,
    +
    247  OPJ_BOOL check_pterm);
    +
    248 
    +
    249 
    +
    250 
    +
    256 opj_t1_t* opj_t1_create(OPJ_BOOL isEncoder);
    +
    257 
    +
    263 void opj_t1_destroy(opj_t1_t *p_t1);
    +
    264 /* ----------------------------------------------------------------------- */
    +
    268 
    +
    269 #endif /* OPJ_T1_H */
    +
    +
    static void opj_t1_dec_sigpass_mqc_64x64_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:665
    +
    #define T1_MU_THIS
    Definition: t1.h:162
    +
    OPJ_UINT32 cw
    Definition: tcd.h:145
    +
    #define J2K_CCP_CBLKSTY_PTERM
    Predictable termination.
    Definition: j2k.h:62
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    Definition: thread.c:504
    +
    static void opj_t1_encode_cblk(opj_t1_t *t1, opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 cblksty, OPJ_UINT32 numcomps, opj_tcd_tile_t *tile, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    mod fixed_quality
    Definition: t1.c:2269
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    +
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    +
    #define opj_t1_dec_sigpass_mqc_internal(t1, bpno, vsc, w, h, flags_stride)
    Definition: t1.c:621
    +
    #define T1_CHI_2_I
    Definition: t1.h:117
    +
    OPJ_INT32 x0
    Definition: tcd.h:81
    +
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    +
    MQ coder.
    Definition: mqc.h:74
    +
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    +
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    +
    #define J2K_CCP_CBLKSTY_SEGSYM
    Segmentation symbols are used.
    Definition: j2k.h:63
    +
    opj_flag_t * flags
    Flags used by decoder and encoder.
    Definition: t1.h:195
    +
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    +
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    +
    static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a)
    Definition: opj_intmath.h:152
    +
    FIXME DOC.
    Definition: tcd.h:77
    +
    const opj_mqc_state_t ** curctx
    Active context.
    Definition: mqc.h:92
    +
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    +
    OPJ_UINT32 data_stride
    Definition: t1.h:201
    +
    #define T1_CTXNO_UNI
    Definition: t1.h:65
    +
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    +
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: j2k.h:195
    +
    static INLINE void opj_t1_enc_sigpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci, OPJ_UINT32 vsc)
    Encode significant pass.
    Definition: t1.c:332
    +
    #define T1_SIGMA_10
    Definition: t1.h:101
    +
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    +
    OPJ_INT32 x0
    Definition: tcd.h:159
    +
    Segment of a code-block.
    Definition: tcd.h:105
    +
    opj_tcd_band_t * band
    Definition: t1.c:1583
    +
    #define T1_PI_3
    Definition: t1.h:125
    +
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    + +
    OPJ_INT32 x0
    Definition: tcd.h:173
    +
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    +
    #define T1_CTXNO_AGG
    Definition: t1.h:64
    +
    OPJ_INT32 y1
    Definition: tcd.h:173
    +
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    +
    static void opj_t1_dec_clnpass_check_segsym(opj_t1_t *t1, OPJ_INT32 cblksty)
    Definition: t1.c:1333
    + +
    OPJ_INT32 y1
    Definition: tcd.h:144
    +
    OPJ_INT32 x1
    Definition: tcd.h:173
    +
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    +
    #define T1_PI_0
    Definition: t1.h:115
    +
    static INLINE void opj_t1_update_flags(opj_flag_t *flagsp, OPJ_UINT32 ci, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 vsc)
    Definition: t1.c:322
    +
    #define T1_SIGMA_4
    Definition: t1.h:95
    +
    static void opj_t1_dec_clnpass_generic_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1368
    +
    OPJ_INT32 x1
    Definition: tcd.h:124
    +
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    +
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    #define J2K_CCP_CBLKSTY_LAZY
    Selective arithmetic coding bypass.
    Definition: j2k.h:58
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    #define T1_SIGMA_NEIGHBOURS
    Definition: t1.h:158
    +
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    +
    static void opj_t1_clbl_decode_processor(void *user_data, opj_tls_t *tls)
    Definition: t1.c:1598
    +
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    +
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    +
    static const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:138
    +
    #define T1_PI_2
    Definition: t1.h:122
    +
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    +
    @ tcp
    Definition: query_parser.h:41
    +
    static void opj_t1_enc_clnpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
    Encode clean-up pass.
    Definition: t1.c:1160
    +
    OPJ_UINT32 w
    Definition: t1.h:197
    +
    OPJ_UINT32 h
    Definition: t1.h:198
    +
    OPJ_INT32 x1
    Definition: tcd.h:191
    +
    Message handler object used for.
    Definition: event.h:50
    +
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    OPJ_UINT32 ph
    Definition: tcd.h:175
    +
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    +
    OPJ_UINT32 len
    Definition: tcd.h:60
    +
    #define opj_t1_dec_clnpass_step_macro(check_flags, partial, flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
    Definition: t1.c:1115
    +
    struct opj_t1 opj_t1_t
    Tier-1 coding (coding of code-block coefficients)
    +
    OPJ_INT32 y1
    Definition: tcd.h:124
    +
    static void opj_t1_dec_refpass_mqc_64x64(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1005
    +
    #define OPJ_TLS_KEY_T1
    Definition: tls_keys.h:35
    +
    static const OPJ_BYTE lut_ctxno_zc[2048]
    Definition: t1_luts.h:3
    +
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    +
    OPJ_BYTE * data
    Definition: tcd.h:78
    +
    OPJ_UINT32 a
    only used by MQ decoder
    Definition: mqc.h:78
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos)
    Definition: t1.c:284
    +
    opj_tccp_t * tccp
    Definition: t1.c:1585
    +
    static void opj_t1_dec_refpass_raw(opj_t1_t *t1, OPJ_INT32 bpno)
    Decode refinement pass.
    Definition: t1.c:907
    +
    static INLINE void opj_t1_enc_refpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci)
    Encode refinement pass step.
    Definition: t1.c:718
    +
    static void opj_t1_dec_sigpass_mqc_generic_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:679
    +
    #define T1_CHI_THIS_I
    Definition: t1.h:161
    +
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    OPJ_INT32 x0
    Definition: tcd.h:191
    +
    OPJ_UINT32 pw
    Definition: tcd.h:175
    +
    OPJ_INT32 x0
    Definition: tcd.h:124
    +
    static OPJ_FLOAT64 opj_t1_getwmsedec(OPJ_INT32 nmsedec, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 numcomps, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    mod fixed_quality
    Definition: t1.c:1407
    +
    OPJ_UINT32 resno
    Definition: t1.c:1581
    +
    OPJ_BOOL check_pterm
    Definition: t1.c:1590
    +
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    +
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    +
    Tier-1 coding (coding of code-block coefficients)
    Definition: t1.h:184
    +
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    +
    #define opj_t1_dec_sigpass_step_mqc_macro(flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
    Definition: t1.c:413
    +
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index(OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
    Definition: t1.c:228
    +
    opj_tcd_cblk_dec_t * cblk
    Definition: t1.c:1582
    +
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    +
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    +
    OPJ_INT32 x1
    Definition: tcd.h:144
    +
    static int opj_t1_enc_is_term_pass(opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
    Definition: t1.c:2238
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    OPJ_UINT32 opj_flag_t
    Flags for 4 consecutive rows of a column.
    Definition: t1.h:179
    +
    Precinct structure.
    Definition: tcd.h:142
    +
    static void opj_t1_dec_sigpass_mqc_64x64_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:672
    +
    static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
    Definition: t1.c:258
    + +
    OPJ_INT32 y0
    Definition: tcd.h:81
    +
    static OPJ_INT16 opj_t1_getnmsedec_sig(OPJ_UINT32 x, OPJ_UINT32 bitpos)
    Definition: t1.c:275
    +
    #define opj_t1_dec_clnpass_internal(t1, bpno, vsc, w, h, flags_stride)
    Definition: t1.c:1244
    +
    static INLINE OPJ_INT32 opj_int_fix_mul_t1(OPJ_INT32 a, OPJ_INT32 b)
    Definition: opj_intmath.h:265
    +
    OPJ_INT32 x0
    Definition: tcd.h:144
    +
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    +
    volatile OPJ_BOOL * pret
    Definition: t1.c:1587
    +
    #define T1_SIGMA_1
    Definition: t1.h:92
    +
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    +
    FIXME DOC.
    Definition: tcd.h:57
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    #define T1_MU_0
    Definition: t1.h:114
    +
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    +
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: mqc.h:88
    +
    static INLINE void opj_t1_dec_sigpass_step_mqc(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 flags_stride, OPJ_UINT32 vsc)
    Definition: t1.c:439
    +
    OPJ_INT32 x1
    Definition: tcd.h:81
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    Sub-band structure.
    Definition: tcd.h:157
    +
    OPJ_UINT32 totalpasses
    Definition: tcd.h:89
    +
    OPJ_INT32 * data
    Definition: t1.h:189
    +
    static const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:119
    +
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    +
    OPJ_BOOL encoder
    Definition: t1.h:202
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    #define opj_mqc_setcurctx(mqc, ctxno)
    Set the current context used for coding/decoding.
    Definition: mqc.h:137
    +
    OPJ_BYTE * cblkdatabuffer
    Definition: t1.h:208
    +
    #define opj_t1_dec_refpass_mqc_internal(t1, bpno, w, h, flags_stride)
    Definition: t1.c:963
    +
    OPJ_BITFIELD term
    Definition: tcd.h:61
    +
    static void opj_t1_dec_clnpass_64x64_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1361
    +
    OPJ_FLOAT64 distortiondec
    Definition: tcd.h:59
    +
    OPJ_INT32 y0
    Definition: tcd.h:173
    +
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    +
    #define T1_SIGMA_13
    Definition: t1.h:104
    +
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    +
    #define T1_TYPE_MQ
    Normal coding using entropy coder.
    Definition: t1.h:70
    +
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    +
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    +
    OPJ_UINT32 datasize
    Definition: t1.h:199
    +
    OPJ_BOOL mustuse_cblkdatabuffer
    Definition: t1.h:206
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    opj_mutex_t * p_manager_mutex
    Definition: t1.c:1589
    +
    static void opj_t1_destroy_wrapper(void *t1)
    Definition: t1.c:1593
    +
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: mqc.h:86
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_FLOAT64 distotile
    Definition: tcd.h:234
    +
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    +
    static void opj_t1_dec_clnpass_64x64_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1354
    +
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    +
    static const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:157
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    +
    static void opj_t1_dec_sigpass_raw(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Decode significant pass.
    Definition: t1.c:557
    +
    static void opj_t1_enc_refpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
    Encode refinement pass.
    Definition: t1.c:800
    +
    static const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:100
    +
    union opj_tcd_precinct::@3 cblks
    +
    static INLINE void opj_t1_dec_sigpass_step_raw(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 vsc, OPJ_UINT32 row)
    Decode significant pass.
    Definition: t1.c:389
    +
    OPJ_INT32 y0
    Definition: tcd.h:144
    +
    static void opj_t1_dec_sigpass_mqc_generic_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:687
    +
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    +
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    +
    #define T1_FLAGS(x, y)
    Definition: t1.c:60
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    +
    #define T1_SIGMA_3
    Definition: t1.h:94
    +
    static void opj_t1_dec_clnpass_generic_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1376
    +
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    +
    static void opj_t1_dec_clnpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 vsc)
    Decode clean-up pass.
    Definition: t1.c:1143
    +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    +
    OPJ_UINT32 len
    Definition: tcd.h:99
    +
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    +
    static OPJ_BOOL opj_t1_allocate_buffers(opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
    Definition: t1.c:1438
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    OPJ_INT32 y0
    Definition: tcd.h:159
    +
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    +
    static void opj_t1_dec_refpass_mqc_generic(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1012
    +
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    +
    #define T1_SIGMA_5
    Definition: t1.h:96
    +
    Code-block for decoding.
    Definition: tcd.h:120
    +
    OPJ_FLOAT32 stepsize
    Definition: tcd.h:167
    +
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    +
    #define T1_CTXNO_MAG
    Definition: t1.h:63
    +
    Tile-component coding parameters.
    Definition: j2k.h:175
    +
    OPJ_INT32 * data
    Definition: tcd.h:204
    +
    static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
    Definition: t1.c:223
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    +
    #define T1_SIGMA_7
    Definition: t1.h:98
    +
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    +
    FIXME DOC.
    Definition: tcd.h:228
    +
    static INLINE OPJ_UINT32 opj_mqc_raw_decode(opj_mqc_t *mqc)
    Decode a symbol using raw-decoder.
    Definition: mqc_inl.h:74
    +
    OPJ_UINT32 compno
    Definition: tcd.h:193
    +
    #define T1_PI_1
    Definition: t1.h:119
    +
    OPJ_INT32 y0
    Definition: tcd.h:124
    +
    opj_event_mgr_t * p_manager
    Definition: t1.c:1588
    +
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    +
    OPJ_UINT32 len
    Definition: tcd.h:106
    +
    #define J2K_CCP_CBLKSTY_RESET
    Reset context probabilities on coding pass boundaries.
    Definition: j2k.h:59
    +
    static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
    Definition: t1.c:270
    +
    static void opj_t1_dec_clnpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Definition: t1.c:1384
    +
    #define opj_t1_dec_refpass_step_mqc_macro(flags, data, data_stride, ci, mqc, curctx, v, a, c, ct, poshalf)
    Definition: t1.c:772
    +
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    +
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    +
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    +
    OPJ_BYTE * data
    Definition: tcd.h:98
    +
    OPJ_UINT32 cblkdatabuffersize
    Definition: t1.h:210
    +
    #define T1_SIGMA_THIS
    Definition: t1.h:153
    +
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    +
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    +
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    +
    #define T1_CHI_1_I
    Definition: t1.h:113
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    static INLINE void opj_t1_dec_refpass_step_raw(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
    Decode refinement pass.
    Definition: t1.c:753
    +
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    +
    static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1, opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 roishift, OPJ_UINT32 cblksty, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode 1 code-block.
    Definition: t1.c:1934
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    static const OPJ_BYTE lut_ctxno_sc[256]
    Definition: t1_luts.h:70
    +
    static void opj_t1_enc_sigpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
    Encode significant pass.
    Definition: t1.c:456
    +
    OPJ_BOOL mustuse_cblkdatabuffer
    Definition: t1.c:1586
    +
    #define J2K_CCP_CBLKSTY_TERMALL
    Termination on each coding pass.
    Definition: j2k.h:60
    +
    #define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
    Definition: t1.c:293
    +
    #define T1_CHI_0_I
    Definition: t1.h:111
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    +
    static void opj_t1_enc_clnpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 agg, OPJ_UINT32 runlen, OPJ_UINT32 lim, OPJ_UINT32 cblksty)
    Encode clean-up pass step.
    Definition: t1.c:1033
    +
    OPJ_INT32 y1
    Definition: tcd.h:82
    +
    OPJ_UINT32 rate
    Definition: tcd.h:58
    +
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    +
    static void opj_t1_dec_refpass_mqc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1019
    +
    static const OPJ_BYTE lut_spb[256]
    Definition: t1_luts.h:89
    +
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    +
    static INLINE void opj_t1_dec_refpass_step_mqc(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
    Definition: t1.c:785
    +
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    +
    opj_mqc_t mqc
    MQC component.
    Definition: t1.h:187
    +
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    +
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    +
    #define T1_PI_THIS
    Definition: t1.h:163
    +
    OPJ_UINT32 flagssize
    Definition: t1.h:200
    +
    #define T1_TYPE_RAW
    No encoding the information is store under raw format in codestream (mode switch RAW)
    Definition: t1.h:71
    +
    OPJ_BOOL whole_tile_decoding
    Definition: t1.c:1580
    +
    OPJ_UINT32 end_of_byte_stream_counter
    Definition: mqc.h:82
    +
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
    Definition: t1.c:263
    +
    OPJ_UINT32 ch
    Definition: tcd.h:145
    +
    static void opj_t1_dec_sigpass_mqc(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Definition: t1.c:695
    +
    Definition: thread.c:605
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    opj_tcd_tilecomp_t * tilec
    Definition: t1.c:1584
    +
    #define J2K_CCP_CBLKSTY_VSC
    Vertically stripe causal context.
    Definition: j2k.h:61
    +
    #define T1_NMSEDEC_BITS
    Definition: t1.h:53
    +
    #define opj_mqc_decode(d, mqc)
    Decode a symbol.
    Definition: mqc_inl.h:193
    +
    const OPJ_BYTE * lut_ctxno_zc_orient
    Definition: mqc.h:94
    + + + + diff --git a/build/doc/html/t1__generate__luts_8c.html b/build/doc/html/t1__generate__luts_8c.html new file mode 100644 index 000000000..a83cdee5d --- /dev/null +++ b/build/doc/html/t1__generate__luts_8c.html @@ -0,0 +1,244 @@ + + + + + + + +OpenJPEG: t1_generate_luts.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    t1_generate_luts.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + +

    +Functions

    static int t1_init_ctxno_zc (OPJ_UINT32 f, OPJ_UINT32 orient)
     
    static int t1_init_ctxno_sc (OPJ_UINT32 f)
     
    static int t1_init_spb (OPJ_UINT32 f)
     
    static void dump_array16 (int array[], int size)
     
    int main (int argc, char **argv)
     
    +

    Function Documentation

    + +

    ◆ dump_array16()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void dump_array16 (int array[],
    int size 
    )
    +
    +static
    +
    + +

    Referenced by main().

    + +
    +
    + +

    ◆ main()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int main (int argc,
    char ** argv 
    )
    +
    +
    + +

    ◆ t1_init_ctxno_sc()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static int t1_init_ctxno_sc (OPJ_UINT32 f)
    +
    +static
    +
    +
    + +

    ◆ t1_init_ctxno_zc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static int t1_init_ctxno_zc (OPJ_UINT32 f,
    OPJ_UINT32 orient 
    )
    +
    +static
    +
    +
    + +

    ◆ t1_init_spb()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static int t1_init_spb (OPJ_UINT32 f)
    +
    +static
    +
    +
    +
    + + + + diff --git a/build/doc/html/t1__luts_8h.html b/build/doc/html/t1__luts_8h.html new file mode 100644 index 000000000..1e4b0fc94 --- /dev/null +++ b/build/doc/html/t1__luts_8h.html @@ -0,0 +1,349 @@ + + + + + + + +OpenJPEG: t1_luts.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    t1_luts.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + +

    +Variables

    static const OPJ_BYTE lut_ctxno_zc [2048]
     
    static const OPJ_BYTE lut_ctxno_sc [256]
     
    static const OPJ_BYTE lut_spb [256]
     
    static const OPJ_INT16 lut_nmsedec_sig [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_sig0 [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_ref [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_ref0 [1U<< T1_NMSEDEC_BITS]
     
    +

    Variable Documentation

    + +

    ◆ lut_ctxno_sc

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_BYTE lut_ctxno_sc[256]
    +
    +static
    +
    +Initial value:
    = {
    +
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    +
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    +
    0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    +
    0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    +
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    +
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    +
    0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    +
    0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    +
    0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb,
    +
    0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc,
    +
    0xd, 0xd, 0xd, 0xd, 0xb, 0xb, 0xb, 0xb, 0xd, 0xa, 0xd, 0xa, 0xa, 0xb, 0xa, 0xb,
    +
    0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xa, 0xc, 0x9, 0xa, 0xb, 0x9, 0xc,
    +
    0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc,
    +
    0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd,
    +
    0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xa, 0xc, 0x9, 0xa, 0xd, 0x9, 0xc,
    +
    0xb, 0xb, 0xb, 0xb, 0xd, 0xd, 0xd, 0xd, 0xb, 0xa, 0xb, 0xa, 0xa, 0xd, 0xa, 0xd
    +
    }
    +
    +

    Referenced by opj_t1_getctxno_sc().

    + +
    +
    + +

    ◆ lut_ctxno_zc

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_BYTE lut_ctxno_zc[2048]
    +
    +static
    +
    + +

    Referenced by main(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    + +
    +
    + +

    ◆ lut_nmsedec_ref

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    +
    +static
    +
    +Initial value:
    = {
    +
    0x1800, 0x1780, 0x1700, 0x1680, 0x1600, 0x1580, 0x1500, 0x1480,
    +
    0x1400, 0x1380, 0x1300, 0x1280, 0x1200, 0x1180, 0x1100, 0x1080,
    +
    0x1000, 0x0f80, 0x0f00, 0x0e80, 0x0e00, 0x0d80, 0x0d00, 0x0c80,
    +
    0x0c00, 0x0b80, 0x0b00, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    +
    0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0500, 0x0480,
    +
    0x0400, 0x0380, 0x0300, 0x0280, 0x0200, 0x0180, 0x0100, 0x0080,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0080, 0x0100, 0x0180, 0x0200, 0x0280, 0x0300, 0x0380,
    +
    0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b00, 0x0b80,
    +
    0x0c00, 0x0c80, 0x0d00, 0x0d80, 0x0e00, 0x0e80, 0x0f00, 0x0f80,
    +
    0x1000, 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
    +
    0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780
    +
    }
    +
    +

    Referenced by main(), and opj_t1_getnmsedec_ref().

    + +
    +
    + +

    ◆ lut_nmsedec_ref0

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    +
    +static
    +
    +Initial value:
    = {
    +
    0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x1b00, 0x1a80, 0x1980,
    +
    0x1880, 0x1780, 0x1700, 0x1600, 0x1500, 0x1480, 0x1380, 0x1300,
    +
    0x1200, 0x1180, 0x1080, 0x1000, 0x0f00, 0x0e80, 0x0e00, 0x0d00,
    +
    0x0c80, 0x0c00, 0x0b80, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    +
    0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0580, 0x0500,
    +
    0x0480, 0x0400, 0x0400, 0x0380, 0x0300, 0x0300, 0x0280, 0x0280,
    +
    0x0200, 0x0200, 0x0180, 0x0180, 0x0100, 0x0100, 0x0100, 0x0080,
    +
    0x0080, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    +
    0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    +
    0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    +
    0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    +
    0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    +
    0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    +
    0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00
    +
    }
    +
    +

    Referenced by main(), and opj_t1_getnmsedec_ref().

    + +
    +
    + +

    ◆ lut_nmsedec_sig

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    +
    +static
    +
    +Initial value:
    = {
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    0x0000, 0x0180, 0x0300, 0x0480, 0x0600, 0x0780, 0x0900, 0x0a80,
    +
    0x0c00, 0x0d80, 0x0f00, 0x1080, 0x1200, 0x1380, 0x1500, 0x1680,
    +
    0x1800, 0x1980, 0x1b00, 0x1c80, 0x1e00, 0x1f80, 0x2100, 0x2280,
    +
    0x2400, 0x2580, 0x2700, 0x2880, 0x2a00, 0x2b80, 0x2d00, 0x2e80,
    +
    0x3000, 0x3180, 0x3300, 0x3480, 0x3600, 0x3780, 0x3900, 0x3a80,
    +
    0x3c00, 0x3d80, 0x3f00, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    +
    0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5100, 0x5280,
    +
    0x5400, 0x5580, 0x5700, 0x5880, 0x5a00, 0x5b80, 0x5d00, 0x5e80,
    +
    0x6000, 0x6180, 0x6300, 0x6480, 0x6600, 0x6780, 0x6900, 0x6a80,
    +
    0x6c00, 0x6d80, 0x6f00, 0x7080, 0x7200, 0x7380, 0x7500, 0x7680
    +
    }
    +
    +

    Referenced by main(), and opj_t1_getnmsedec_sig().

    + +
    +
    + +

    ◆ lut_nmsedec_sig0

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    +
    +static
    +
    +Initial value:
    = {
    +
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    +
    0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    +
    0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    +
    0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    +
    0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    +
    0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    +
    0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00,
    +
    0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2680, 0x2780,
    +
    0x2880, 0x2980, 0x2b00, 0x2c00, 0x2d00, 0x2e80, 0x2f80, 0x3100,
    +
    0x3200, 0x3380, 0x3480, 0x3600, 0x3700, 0x3880, 0x3a00, 0x3b00,
    +
    0x3c80, 0x3e00, 0x3f80, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    +
    0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5180, 0x5300,
    +
    0x5480, 0x5600, 0x5800, 0x5980, 0x5b00, 0x5d00, 0x5e80, 0x6080,
    +
    0x6200, 0x6400, 0x6580, 0x6780, 0x6900, 0x6b00, 0x6d00, 0x6e80,
    +
    0x7080, 0x7280, 0x7480, 0x7600, 0x7800, 0x7a00, 0x7c00, 0x7e00
    +
    }
    +
    +

    Referenced by main(), and opj_t1_getnmsedec_sig().

    + +
    +
    + +

    ◆ lut_spb

    + +
    +
    + + + + + +
    + + + + +
    const OPJ_BYTE lut_spb[256]
    +
    +static
    +
    +Initial value:
    = {
    +
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    +
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    +
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1,
    +
    1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1
    +
    }
    +
    +

    Referenced by opj_t1_getspb().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/t1__luts_8h_source.html b/build/doc/html/t1__luts_8h_source.html new file mode 100644 index 000000000..fa98b7cca --- /dev/null +++ b/build/doc/html/t1__luts_8h_source.html @@ -0,0 +1,271 @@ + + + + + + + +OpenJPEG: t1_luts.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    t1_luts.h
    +
    +
    +Go to the documentation of this file.
    1 /* This file was automatically generated by t1_generate_luts.c */
    +
    2 
    +
    3 static const OPJ_BYTE lut_ctxno_zc[2048] = {
    +
    4  0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7, 0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7,
    +
    5  5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    6  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    7  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    8  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    9  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    10  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    11  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    12  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    13  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    14  2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    15  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    16  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    17  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    18  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    19  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    20  0, 1, 5, 6, 1, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 0, 1, 5, 6, 1, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    +
    21  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    +
    22  1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    +
    23  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    +
    24  5, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 5, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    25  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    26  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    27  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    28  1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    +
    29  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    +
    30  2, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 2, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    +
    31  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    +
    32  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    33  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    34  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    35  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    +
    36  0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7, 0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7,
    +
    37  5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    38  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    39  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    40  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    41  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    42  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    43  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    44  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    45  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    46  2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    +
    47  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    48  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    49  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    50  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    +
    51  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    +
    52  0, 3, 1, 4, 3, 6, 4, 7, 1, 4, 2, 5, 4, 7, 5, 7, 0, 3, 1, 4, 3, 6, 4, 7, 1, 4, 2, 5, 4, 7, 5, 7,
    +
    53  1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    +
    54  3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8,
    +
    55  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    56  1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    +
    57  2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    +
    58  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    59  5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    60  3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8,
    +
    61  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    62  6, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 6, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    +
    63  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    +
    64  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    65  5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    +
    66  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    +
    67  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8
    +
    68 };
    +
    69 
    +
    70 static const OPJ_BYTE lut_ctxno_sc[256] = {
    +
    71  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    +
    72  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    +
    73  0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    +
    74  0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    +
    75  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    +
    76  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    +
    77  0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    +
    78  0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    +
    79  0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb,
    +
    80  0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc,
    +
    81  0xd, 0xd, 0xd, 0xd, 0xb, 0xb, 0xb, 0xb, 0xd, 0xa, 0xd, 0xa, 0xa, 0xb, 0xa, 0xb,
    +
    82  0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xa, 0xc, 0x9, 0xa, 0xb, 0x9, 0xc,
    +
    83  0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc,
    +
    84  0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd,
    +
    85  0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xa, 0xc, 0x9, 0xa, 0xd, 0x9, 0xc,
    +
    86  0xb, 0xb, 0xb, 0xb, 0xd, 0xd, 0xd, 0xd, 0xb, 0xa, 0xb, 0xa, 0xa, 0xd, 0xa, 0xd
    +
    87 };
    +
    88 
    +
    89 static const OPJ_BYTE lut_spb[256] = {
    +
    90  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    91  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    +
    92  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    93  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    +
    94  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    95  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1,
    +
    96  1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    +
    97  0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1
    +
    98 };
    +
    99 
    + +
    101  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    102  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    103  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    104  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    105  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    106  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    107  0x0000, 0x0180, 0x0300, 0x0480, 0x0600, 0x0780, 0x0900, 0x0a80,
    +
    108  0x0c00, 0x0d80, 0x0f00, 0x1080, 0x1200, 0x1380, 0x1500, 0x1680,
    +
    109  0x1800, 0x1980, 0x1b00, 0x1c80, 0x1e00, 0x1f80, 0x2100, 0x2280,
    +
    110  0x2400, 0x2580, 0x2700, 0x2880, 0x2a00, 0x2b80, 0x2d00, 0x2e80,
    +
    111  0x3000, 0x3180, 0x3300, 0x3480, 0x3600, 0x3780, 0x3900, 0x3a80,
    +
    112  0x3c00, 0x3d80, 0x3f00, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    +
    113  0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5100, 0x5280,
    +
    114  0x5400, 0x5580, 0x5700, 0x5880, 0x5a00, 0x5b80, 0x5d00, 0x5e80,
    +
    115  0x6000, 0x6180, 0x6300, 0x6480, 0x6600, 0x6780, 0x6900, 0x6a80,
    +
    116  0x6c00, 0x6d80, 0x6f00, 0x7080, 0x7200, 0x7380, 0x7500, 0x7680
    +
    117 };
    +
    118 
    + +
    120  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    +
    121  0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    +
    122  0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    +
    123  0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    124  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    +
    125  0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    +
    126  0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    +
    127  0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00,
    +
    128  0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2680, 0x2780,
    +
    129  0x2880, 0x2980, 0x2b00, 0x2c00, 0x2d00, 0x2e80, 0x2f80, 0x3100,
    +
    130  0x3200, 0x3380, 0x3480, 0x3600, 0x3700, 0x3880, 0x3a00, 0x3b00,
    +
    131  0x3c80, 0x3e00, 0x3f80, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    +
    132  0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5180, 0x5300,
    +
    133  0x5480, 0x5600, 0x5800, 0x5980, 0x5b00, 0x5d00, 0x5e80, 0x6080,
    +
    134  0x6200, 0x6400, 0x6580, 0x6780, 0x6900, 0x6b00, 0x6d00, 0x6e80,
    +
    135  0x7080, 0x7280, 0x7480, 0x7600, 0x7800, 0x7a00, 0x7c00, 0x7e00
    +
    136 };
    +
    137 
    + +
    139  0x1800, 0x1780, 0x1700, 0x1680, 0x1600, 0x1580, 0x1500, 0x1480,
    +
    140  0x1400, 0x1380, 0x1300, 0x1280, 0x1200, 0x1180, 0x1100, 0x1080,
    +
    141  0x1000, 0x0f80, 0x0f00, 0x0e80, 0x0e00, 0x0d80, 0x0d00, 0x0c80,
    +
    142  0x0c00, 0x0b80, 0x0b00, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    +
    143  0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0500, 0x0480,
    +
    144  0x0400, 0x0380, 0x0300, 0x0280, 0x0200, 0x0180, 0x0100, 0x0080,
    +
    145  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    146  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    147  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    148  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    149  0x0000, 0x0080, 0x0100, 0x0180, 0x0200, 0x0280, 0x0300, 0x0380,
    +
    150  0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    151  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b00, 0x0b80,
    +
    152  0x0c00, 0x0c80, 0x0d00, 0x0d80, 0x0e00, 0x0e80, 0x0f00, 0x0f80,
    +
    153  0x1000, 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
    +
    154  0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780
    +
    155 };
    +
    156 
    + +
    158  0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x1b00, 0x1a80, 0x1980,
    +
    159  0x1880, 0x1780, 0x1700, 0x1600, 0x1500, 0x1480, 0x1380, 0x1300,
    +
    160  0x1200, 0x1180, 0x1080, 0x1000, 0x0f00, 0x0e80, 0x0e00, 0x0d00,
    +
    161  0x0c80, 0x0c00, 0x0b80, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    +
    162  0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0580, 0x0500,
    +
    163  0x0480, 0x0400, 0x0400, 0x0380, 0x0300, 0x0300, 0x0280, 0x0280,
    +
    164  0x0200, 0x0200, 0x0180, 0x0180, 0x0100, 0x0100, 0x0100, 0x0080,
    +
    165  0x0080, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    +
    166  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    +
    167  0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    +
    168  0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    +
    169  0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    +
    170  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    +
    171  0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    +
    172  0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    +
    173  0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00
    +
    174 };
    +
    175 
    +
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    #define T1_LUT_SGN_N
    Definition: t1.h:170
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    int main(int argc, char **argv)
    Definition: t1_generate_luts.c:205
    +
    #define T1_SIGMA_2
    Definition: t1.h:93
    +
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    +
    static const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:138
    +
    #define T1_CTXNO_SC
    Definition: t1.h:62
    +
    static const OPJ_BYTE lut_ctxno_zc[2048]
    Definition: t1_luts.h:3
    +
    static void dump_array16(int array[], int size)
    Definition: t1_generate_luts.c:190
    +
    #define T1_SIGMA_6
    Definition: t1.h:97
    +
    static int t1_init_spb(OPJ_UINT32 f)
    Definition: t1_generate_luts.c:163
    + +
    #define T1_SIGMA_0
    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to ho...
    Definition: t1.h:91
    +
    #define T1_SIGMA_1
    Definition: t1.h:92
    +
    static int t1_init_ctxno_zc(OPJ_UINT32 f, OPJ_UINT32 orient)
    Definition: t1_generate_luts.c:42
    +
    #define T1_LUT_SIG_S
    Definition: t1.h:173
    +
    static const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:119
    +
    #define T1_LUT_SGN_W
    Definition: t1.h:166
    +
    static int t1_init_ctxno_sc(OPJ_UINT32 f)
    Definition: t1_generate_luts.c:119
    +
    #define T1_LUT_SIG_E
    Definition: t1.h:171
    +
    #define T1_SIGMA_8
    Definition: t1.h:99
    +
    static const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:157
    +
    static const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:100
    +
    #define T1_SIGMA_3
    Definition: t1.h:94
    +
    #define T1_LUT_SIG_W
    Definition: t1.h:169
    +
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    #define T1_LUT_SGN_S
    Definition: t1.h:172
    +
    #define T1_SIGMA_5
    Definition: t1.h:96
    +
    #define T1_SIGMA_7
    Definition: t1.h:98
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    #define T1_LUT_SGN_E
    Definition: t1.h:168
    +
    #define T1_LUT_SIG_N
    Definition: t1.h:167
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    static const OPJ_BYTE lut_ctxno_sc[256]
    Definition: t1_luts.h:70
    +
    static const OPJ_BYTE lut_spb[256]
    Definition: t1_luts.h:89
    +
    #define T1_NMSEDEC_BITS
    Definition: t1.h:53
    + + + + diff --git a/build/doc/html/t2_8c.html b/build/doc/html/t2_8c.html new file mode 100644 index 000000000..a07f05259 --- /dev/null +++ b/build/doc/html/t2_8c.html @@ -0,0 +1,1183 @@ + + + + + + + +OpenJPEG: t2.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    t2.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include "opj_common.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Local static functions

    #define JAS_FPRINTF   opj_null_jas_fprintf
     
    static void opj_t2_putcommacode (opj_bio_t *bio, OPJ_INT32 n)
     
    static OPJ_UINT32 opj_t2_getcommacode (opj_bio_t *bio)
     
    static void opj_t2_putnumpasses (opj_bio_t *bio, OPJ_UINT32 n)
     Variable length code for signalling delta Zil (truncation point) More...
     
    static OPJ_UINT32 opj_t2_getnumpasses (opj_bio_t *bio)
     
    static OPJ_BOOL opj_t2_encode_packet (OPJ_UINT32 tileno, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
     Encode a packet of a tile to a destination buffer. More...
     
    static OPJ_BOOL opj_t2_decode_packet (opj_t2_t *t2, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *src, OPJ_UINT32 *data_read, OPJ_UINT32 max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     Decode a packet of a tile from a source buffer. More...
     
    static OPJ_BOOL opj_t2_skip_packet (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_read_packet_header (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BOOL *p_is_data_present, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_read_packet_data (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_skip_packet_data (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_init_seg (opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 index, OPJ_UINT32 cblksty, OPJ_UINT32 first)
     
    OPJ_BOOL opj_t2_encode_packets (opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
     Encode the packets of a tile to a destination buffer. More...
     
    static void opj_null_jas_fprintf (FILE *file, const char *format,...)
     
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     Decode the packets of a tile from a source buffer. More...
     
    opj_t2_topj_t2_create (opj_image_t *p_image, opj_cp_t *p_cp)
     Creates a Tier 2 handle. More...
     
    void opj_t2_destroy (opj_t2_t *t2)
     Destroy a T2 handle. More...
     
    +

    Macro Definition Documentation

    + +

    ◆ JAS_FPRINTF

    + +
    +
    + + + + +
    #define JAS_FPRINTF   opj_null_jas_fprintf
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_null_jas_fprintf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void opj_null_jas_fprintf (FILE * file,
    const char * format,
     ... 
    )
    +
    +static
    +
    + +
    +
    + +

    ◆ opj_t2_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_t2_t* opj_t2_create (opj_image_tp_image,
    opj_cp_tp_cp 
    )
    +
    + +

    Creates a Tier 2 handle.

    +
    Parameters
    + + + +
    p_imageSource or destination image
    p_cpImage coding parameters.
    +
    +
    +
    Returns
    a new T2 handle if successful, NULL otherwise.
    + +

    References opj_t2::cp, opj_t2::image, and opj_calloc().

    + +

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ opj_t2_decode_packet()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t2_decode_packet (opj_t2_tt2,
    opj_tcd_tile_ttile,
    opj_tcp_ttcp,
    opj_pi_iterator_tpi,
    OPJ_BYTEsrc,
    OPJ_UINT32data_read,
    OPJ_UINT32 max_length,
    opj_packet_info_tpack_info,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Decode a packet of a tile from a source buffer.

    +
    Parameters
    + + + + + + + + + + +
    t2T2 handle
    tileTile for which to write the packets
    tcpTile coding parameters
    piPacket identity
    srcSource buffer
    data_readFIXME DOC
    max_lengthFIXME DOC
    pack_infoPacket information
    p_managerthe user event manager
    +
    +
    +
    Returns
    FIXME DOC
    + +

    References OPJ_FALSE, opj_t2_read_packet_data(), opj_t2_read_packet_header(), and OPJ_TRUE.

    + +

    Referenced by opj_t2_decode_packets().

    + +
    +
    + +

    ◆ opj_t2_decode_packets()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_ttcd,
    opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_BYTEsrc,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 len,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_t2_destroy()

    + +
    +
    + + + + + + + + +
    void opj_t2_destroy (opj_t2_tt2)
    +
    + +

    Destroy a T2 handle.

    +
    Parameters
    + + +
    t2T2 handle to destroy
    +
    +
    + +

    References opj_free().

    + +

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ opj_t2_encode_packet()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t2_encode_packet (OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    opj_tcp_ttcp,
    opj_pi_iterator_tpi,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    J2K_T2_MODE p_t2_mode,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    + +

    Encode a packet of a tile to a destination buffer.

    +
    Parameters
    + + + + + + + + + + + +
    tilenoNumber of the tile encoded
    tileTile for which to write the packets
    tcpTile coding parameters
    piPacket identity
    destDestination buffer
    p_data_writtenFIXME DOC
    lenLength of the destination buffer
    cstr_infoCodestream information structure
    p_t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    +
    +
    +
    Returns
    + +

    References opj_tcd_resolution::bands, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_pi_iterator::compno, opj_tcd_tile::comps, opj_tcd_precinct::cw, opj_codestream_info::D_max, opj_tcd_layer::data, opj_tcd_layer::disto, opj_packet_info::disto, opj_tcd_precinct::enc, opj_packet_info::end_ph_pos, EVT_ERROR, FINAL_PASS, opj_tcd_precinct::imsbtree, opj_tcd_precinct::incltree, opj_codestream_info::index_write, J2K_CP_CSTY_EPH, J2K_CP_CSTY_SOP, opj_tcd_cblk_enc::layers, opj_pi_iterator::layno, opj_tcd_pass::len, opj_tcd_layer::len, opj_tcd_resolution::numbands, opj_tcd_cblk_enc::numbps, opj_tcd_band::numbps, opj_tcd_cblk_enc::numlenbits, opj_tcd_layer::numpasses, opj_tcd_cblk_enc::numpasses, opj_bio_create(), opj_bio_destroy(), opj_bio_flush(), opj_bio_init_enc(), opj_bio_numbytes(), opj_bio_write(), opj_event_msg(), OPJ_FALSE, opj_int_floorlog2(), opj_int_max(), opj_t2_putcommacode(), opj_t2_putnumpasses(), opj_tcd_is_band_empty(), opj_tgt_encode(), opj_tgt_reset(), opj_tgt_setvalue(), OPJ_TRUE, opj_tile_info::packet, opj_tcd_tile::packno, opj_codestream_info::packno, opj_tcd_cblk_enc::passes, opj_tcd_band::precincts, opj_pi_iterator::precno, opj_pi_iterator::resno, opj_tcd_tilecomp::resolutions, tcp, opj_tcd_pass::term, and opj_codestream_info::tile.

    + +

    Referenced by opj_t2_encode_packets().

    + +
    +
    + +

    ◆ opj_t2_encode_packets()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_t2_encode_packets (opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_UINT32 maxlayers,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_tcd_marker_info_tp_marker_info,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    OPJ_UINT32 pino,
    J2K_T2_MODE t2_mode,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encode the packets of a tile to a destination buffer.

    +
    Parameters
    + + + + + + + + + + + + + + + +
    t2T2 handle
    tilenonumber of the tile encoded
    tilethe tile for which to write the packets
    maxlayersmaximum number of layers
    destthe destination buffer
    p_data_writtenFIXME DOC
    lenthe length of the destination buffer
    cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    pinoFIXME DOC
    t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    +
    +
    + +

    References opj_t2::cp, opj_tile_info::end_header, opj_packet_info::end_ph_pos, opj_packet_info::end_pos, opj_t2::image, opj_codestream_info::index_write, opj_pi_iterator::layno, opj_cp::m_enc, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, opj_tcd_marker_info::need_PLT, opj_image::numcomps, opj_tcp::numpocs, OPJ_FALSE, opj_get_encoding_packet_count(), opj_malloc(), opj_pi_create_encode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next(), OPJ_PROFILE_CINEMA_4K, OPJ_PROG_UNKNOWN, opj_t2_encode_packet(), OPJ_TRUE, opj_tcd_marker_info::p_packet_size, opj_tile_info::packet, opj_tcd_marker_info::packet_count, opj_tcd_tile::packno, opj_codestream_info::packno, opj_pi_iterator::poc, opj_tcp::POC, opj_poc::prg, opj_cp::rsiz, opj_packet_info::start_pos, opj_cp::tcps, THRESH_CALC, and opj_codestream_info::tile.

    + +

    Referenced by opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ opj_t2_getcommacode()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_t2_getcommacode (opj_bio_tbio)
    +
    +static
    +
    + +

    References opj_bio_read().

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_t2_getnumpasses()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_UINT32 opj_t2_getnumpasses (opj_bio_tbio)
    +
    +static
    +
    + +

    References opj_bio_read().

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_t2_init_seg()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t2_init_seg (opj_tcd_cblk_dec_tcblk,
    OPJ_UINT32 index,
    OPJ_UINT32 cblksty,
    OPJ_UINT32 first 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t2_putcommacode()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t2_putcommacode (opj_bio_tbio,
    OPJ_INT32 n 
    )
    +
    +static
    +
    + +

    References opj_bio_write().

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_t2_putnumpasses()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void opj_t2_putnumpasses (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    +
    +static
    +
    + +

    Variable length code for signalling delta Zil (truncation point)

    +
    Parameters
    + + + +
    bioBit Input/Output component
    ndelta Zil
    +
    +
    + +

    References opj_bio_write().

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_t2_read_packet_data()

    + + + +

    ◆ opj_t2_read_packet_header()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t2_read_packet_header (opj_t2_tp_t2,
    opj_tcd_tile_tp_tile,
    opj_tcp_tp_tcp,
    opj_pi_iterator_tp_pi,
    OPJ_BOOLp_is_data_present,
    OPJ_BYTEp_src_data,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_length,
    opj_packet_info_tp_pack_info,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t2_skip_packet()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_t2_skip_packet (opj_t2_tp_t2,
    opj_tcd_tile_tp_tile,
    opj_tcp_tp_tcp,
    opj_pi_iterator_tp_pi,
    OPJ_BYTEp_src,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_length,
    opj_packet_info_tp_pack_info,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_t2_skip_packet_data()

    + + +
    + + + + diff --git a/build/doc/html/t2_8h.html b/build/doc/html/t2_8h.html new file mode 100644 index 000000000..13ff0ea13 --- /dev/null +++ b/build/doc/html/t2_8h.html @@ -0,0 +1,403 @@ + + + + + + + +OpenJPEG: t2.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    t2.h File Reference
    +
    +
    + +

    Implementation of a tier-2 coding (packetization of code-block data) (T2) +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  opj_t2
     Tier-2 coding. More...
     
    + + + + +

    +Typedefs

    typedef struct opj_t2 opj_t2_t
     Tier-2 coding. More...
     
    + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    OPJ_BOOL opj_t2_encode_packets (opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_UINT32 maxlayers, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 tpnum, OPJ_INT32 tppos, OPJ_UINT32 pino, J2K_T2_MODE t2_mode, opj_event_mgr_t *p_manager)
     Encode the packets of a tile to a destination buffer. More...
     
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_t *tcd, opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_BYTE *src, OPJ_UINT32 *p_data_read, OPJ_UINT32 len, opj_codestream_index_t *cstr_info, opj_event_mgr_t *p_manager)
     Decode the packets of a tile from a source buffer. More...
     
    opj_t2_topj_t2_create (opj_image_t *p_image, opj_cp_t *p_cp)
     Creates a Tier 2 handle. More...
     
    void opj_t2_destroy (opj_t2_t *t2)
     Destroy a T2 handle. More...
     
    +

    Detailed Description

    +

    Implementation of a tier-2 coding (packetization of code-block data) (T2)

    +

    Typedef Documentation

    + +

    ◆ opj_t2_t

    + +
    +
    + + + + +
    typedef struct opj_t2 opj_t2_t
    +
    + +

    Tier-2 coding.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_t2_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_t2_t* opj_t2_create (opj_image_tp_image,
    opj_cp_tp_cp 
    )
    +
    + +

    Creates a Tier 2 handle.

    +
    Parameters
    + + + +
    p_imageSource or destination image
    p_cpImage coding parameters.
    +
    +
    +
    Returns
    a new T2 handle if successful, NULL otherwise.
    + +

    References opj_t2::cp, opj_t2::image, and opj_calloc().

    + +

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ opj_t2_decode_packets()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_ttcd,
    opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_BYTEsrc,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 len,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_t2_destroy()

    + +
    +
    + + + + + + + + +
    void opj_t2_destroy (opj_t2_tt2)
    +
    + +

    Destroy a T2 handle.

    +
    Parameters
    + + +
    t2T2 handle to destroy
    +
    +
    + +

    References opj_free().

    + +

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    + +
    +
    + +

    ◆ opj_t2_encode_packets()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_t2_encode_packets (opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_UINT32 maxlayers,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_tcd_marker_info_tp_marker_info,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    OPJ_UINT32 pino,
    J2K_T2_MODE t2_mode,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encode the packets of a tile to a destination buffer.

    +
    Parameters
    + + + + + + + + + + + + + + + +
    t2T2 handle
    tilenonumber of the tile encoded
    tilethe tile for which to write the packets
    maxlayersmaximum number of layers
    destthe destination buffer
    p_data_writtenFIXME DOC
    lenthe length of the destination buffer
    cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    pinoFIXME DOC
    t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    +
    +
    + +

    References opj_t2::cp, opj_tile_info::end_header, opj_packet_info::end_ph_pos, opj_packet_info::end_pos, opj_t2::image, opj_codestream_info::index_write, opj_pi_iterator::layno, opj_cp::m_enc, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, opj_tcd_marker_info::need_PLT, opj_image::numcomps, opj_tcp::numpocs, OPJ_FALSE, opj_get_encoding_packet_count(), opj_malloc(), opj_pi_create_encode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next(), OPJ_PROFILE_CINEMA_4K, OPJ_PROG_UNKNOWN, opj_t2_encode_packet(), OPJ_TRUE, opj_tcd_marker_info::p_packet_size, opj_tile_info::packet, opj_tcd_marker_info::packet_count, opj_tcd_tile::packno, opj_codestream_info::packno, opj_pi_iterator::poc, opj_tcp::POC, opj_poc::prg, opj_cp::rsiz, opj_packet_info::start_pos, opj_cp::tcps, THRESH_CALC, and opj_codestream_info::tile.

    + +

    Referenced by opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/t2_8h_source.html b/build/doc/html/t2_8h_source.html new file mode 100644 index 000000000..a4f1c3953 --- /dev/null +++ b/build/doc/html/t2_8h_source.html @@ -0,0 +1,342 @@ + + + + + + + +OpenJPEG: t2.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    t2.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    16  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    +
    17  * All rights reserved.
    +
    18  *
    +
    19  * Redistribution and use in source and binary forms, with or without
    +
    20  * modification, are permitted provided that the following conditions
    +
    21  * are met:
    +
    22  * 1. Redistributions of source code must retain the above copyright
    +
    23  * notice, this list of conditions and the following disclaimer.
    +
    24  * 2. Redistributions in binary form must reproduce the above copyright
    +
    25  * notice, this list of conditions and the following disclaimer in the
    +
    26  * documentation and/or other materials provided with the distribution.
    +
    27  *
    +
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    38  * POSSIBILITY OF SUCH DAMAGE.
    +
    39  */
    +
    40 #ifndef OPJ_T2_H
    +
    41 #define OPJ_T2_H
    +
    42 
    +
    50 
    +
    54 typedef struct opj_t2 {
    +
    55 
    + + +
    60 } opj_t2_t;
    +
    61 
    +
    64 /* ----------------------------------------------------------------------- */
    +
    65 
    + +
    84  OPJ_UINT32 tileno,
    +
    85  opj_tcd_tile_t *tile,
    +
    86  OPJ_UINT32 maxlayers,
    +
    87  OPJ_BYTE *dest,
    +
    88  OPJ_UINT32 * p_data_written,
    +
    89  OPJ_UINT32 len,
    +
    90  opj_codestream_info_t *cstr_info,
    +
    91  opj_tcd_marker_info_t* p_marker_info,
    +
    92  OPJ_UINT32 tpnum,
    +
    93  OPJ_INT32 tppos,
    +
    94  OPJ_UINT32 pino,
    +
    95  J2K_T2_MODE t2_mode,
    +
    96  opj_event_mgr_t *p_manager);
    +
    97 
    + +
    113  opj_t2_t *t2,
    +
    114  OPJ_UINT32 tileno,
    +
    115  opj_tcd_tile_t *tile,
    +
    116  OPJ_BYTE *src,
    +
    117  OPJ_UINT32 * p_data_read,
    +
    118  OPJ_UINT32 len,
    +
    119  opj_codestream_index_t *cstr_info,
    +
    120  opj_event_mgr_t *p_manager);
    +
    121 
    +
    129 opj_t2_t* opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp);
    +
    130 
    +
    135 void opj_t2_destroy(opj_t2_t *t2);
    +
    136 
    +
    137 /* ----------------------------------------------------------------------- */
    +
    141 
    +
    142 #endif /* OPJ_T2_H */
    +
    +
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    +
    OPJ_UINT32 cw
    Definition: tcd.h:145
    +
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    +
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    +
    Packet iterator.
    Definition: pi.h:73
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    +
    FIXME DOC.
    Definition: tcd.h:77
    +
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    +
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    +
    static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1447
    +
    OPJ_INT32 x0
    Definition: tcd.h:159
    +
    OPJ_UINT32 compno
    component that identify the packet
    Definition: pi.h:89
    +
    Segment of a code-block.
    Definition: tcd.h:105
    +
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    +
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    OPJ_UINT32 maxpasses
    Definition: tcd.h:112
    +
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    +
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    +
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    +
    double D_max
    maximum distortion reduction on the whole image (add for Marcela)
    Definition: openjpeg.h:847
    +
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    +
    static OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio)
    Definition: t2.c:175
    +
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    +
    OPJ_INT32 y1
    Definition: tcd.h:144
    +
    opj_image_t * image
    Encoding: pointer to the src image.
    Definition: t2.h:57
    +
    #define OPJ_J2K_DEFAULT_NB_SEGS
    Definition: openjpeg.h:149
    +
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    + +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    OPJ_UINT32 precincts_data_size
    Definition: tcd.h:165
    +
    opj_tcd_layer_t * layers
    Definition: tcd.h:79
    +
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    +
    Tier-2 coding.
    Definition: t2.h:54
    +
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    +
    @ THRESH_CALC
    Definition: j2k.h:158
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    OPJ_UINT32 ppm_len
    size of the ppm_data
    Definition: j2k.h:375
    +
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    +
    #define J2K_CCP_CBLKSTY_LAZY
    Selective arithmetic coding bypass.
    Definition: j2k.h:58
    +
    static OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio)
    Definition: t2.c:199
    +
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    +
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    +
    OPJ_BITFIELD ppt
    If ppt == 1 --> there was a PPT marker for the present tile.
    Definition: j2k.h:307
    +
    static OPJ_BOOL opj_t2_skip_packet(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:989
    +
    #define OPJ_PROFILE_CINEMA_4K
    Definition: openjpeg.h:199
    +
    double disto
    packet distorsion
    Definition: openjpeg.h:768
    +
    OPJ_INT32 y1
    Definition: tcd.h:159
    +
    @ tcp
    Definition: query_parser.h:41
    +
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    +
    OPJ_BYTE * ppt_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:264
    +
    OPJ_INT32 x1
    Definition: tcd.h:159
    +
    OPJ_BITFIELD ppm
    if ppm == 1 --> there was a PPM marker
    Definition: j2k.h:448
    +
    Message handler object used for.
    Definition: event.h:50
    +
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    +
    OPJ_UINT32 len
    Definition: tcd.h:60
    +
    OPJ_UINT32 m_max_comp_size
    Maximum rate for each component.
    Definition: j2k.h:317
    +
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    +
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    +
    Coding parameters.
    Definition: j2k.h:347
    +
    static void opj_t2_putcommacode(opj_bio_t *bio, OPJ_INT32 n)
    Definition: t2.c:167
    +
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:243
    +
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    +
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    +
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    +
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    +
    static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1317
    +
    FIXME DOC.
    Definition: tcd.h:67
    +
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    +
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    +
    OPJ_INT32 x1
    Definition: tcd.h:144
    +
    int end_header
    end position of the header
    Definition: openjpeg.h:813
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    struct opj_t2 opj_t2_t
    Tier-2 coding.
    +
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    +
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    opj_tgt_tree_t * imsbtree
    Definition: tcd.h:153
    +
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    +
    Precinct structure.
    Definition: tcd.h:142
    +
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    +
    OPJ_UINT32 precno
    precinct that identify the packet
    Definition: pi.h:93
    + +
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    +
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    +
    void opj_tgt_reset(opj_tgt_tree_t *p_tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    +
    OPJ_INT32 x0
    Definition: tcd.h:144
    +
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    +
    opj_tgt_tree_t * incltree
    Definition: tcd.h:152
    +
    FIXME DOC.
    Definition: tcd.h:57
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    static OPJ_BOOL opj_t2_decode_packet(opj_t2_t *t2, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *src, OPJ_UINT32 *data_read, OPJ_UINT32 max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Decode a packet of a tile from a source buffer.
    Definition: t2.c:621
    +
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    +
    Sub-band structure.
    Definition: tcd.h:157
    +
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    +
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_UINT32 m_current_max_segs
    Definition: tcd.h:134
    +
    static INLINE OPJ_UINT32 opj_uint_floorlog2(OPJ_UINT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:237
    +
    OPJ_BYTE * ppm_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:373
    +
    OPJ_BITFIELD term
    Definition: tcd.h:61
    +
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    +
    OPJ_UINT32 numlenbits
    Definition: tcd.h:84
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    +
    OPJ_UINT32 numchunksalloc
    Definition: tcd.h:136
    +
    int packno
    packet number
    Definition: openjpeg.h:849
    +
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    +
    OPJ_UINT32 numlenbits
    Definition: tcd.h:127
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:114
    +
    static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BOOL *p_is_data_present, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1031
    +
    Tile coding parameters information.
    Definition: openjpeg.h:935
    +
    #define J2K_CP_CSTY_SOP
    Definition: j2k.h:55
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    #define J2K_CP_CSTY_EPH
    Definition: j2k.h:56
    +
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_UINT32 maxlayers, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 tpnum, OPJ_INT32 tppos, OPJ_UINT32 pino, J2K_T2_MODE t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    +
    Chunk of codestream data that is part of a code block.
    Definition: tcd.h:94
    +
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    +
    union opj_tcd_precinct::@3 cblks
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    +
    static void opj_null_jas_fprintf(FILE *file, const char *format,...)
    Definition: t2.c:385
    +
    OPJ_INT32 y0
    Definition: tcd.h:144
    +
    OPJ_BOOL need_PLT
    In: Whether information to generate PLT markers in needed.
    Definition: tcd.h:293
    +
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    +
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:87
    +
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    +
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    +
    OPJ_UINT32 ppt_len
    size of ppt_data
    Definition: j2k.h:270
    +
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    +
    OPJ_UINT32 len
    Definition: tcd.h:99
    +
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:68
    +
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    +
    OPJ_UINT32 resno
    resolution that identify the packet
    Definition: pi.h:91
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    OPJ_INT32 y0
    Definition: tcd.h:159
    +
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    +
    Code-block for decoding.
    Definition: tcd.h:120
    +
    OPJ_INT32 numbps
    Definition: tcd.h:166
    +
    static OPJ_BOOL opj_t2_init_seg(opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 index, OPJ_UINT32 cblksty, OPJ_UINT32 first)
    Definition: t2.c:1553
    +
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    +
    FIXME DOC.
    Definition: tcd.h:228
    +
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    OPJ_UINT32 packno
    Definition: tcd.h:236
    +
    OPJ_UINT32 len
    Definition: tcd.h:69
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    opj_cp_t * cp
    pointer to the image coding parameters
    Definition: t2.h:59
    +
    OPJ_UINT32 len
    Definition: tcd.h:106
    +
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    +
    OPJ_FLOAT64 disto
    Definition: tcd.h:70
    +
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    OPJ_BYTE * data
    Definition: tcd.h:71
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    +
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    +
    OPJ_BYTE * data
    Definition: tcd.h:98
    +
    #define JAS_FPRINTF
    Definition: t2.c:390
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:108
    +
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    +
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:129
    +
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_BYTE *src, OPJ_UINT32 *p_data_read, OPJ_UINT32 len, opj_codestream_index_t *cstr_info, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    +
    #define J2K_CCP_CBLKSTY_TERMALL
    Termination on each coding pass.
    Definition: j2k.h:60
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    +
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    +
    static void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n)
    Variable length code for signalling delta Zil (truncation point)
    Definition: t2.c:184
    +
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    +
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    +
    opj_poc_t poc
    progression order change information
    Definition: pi.h:99
    +
    OPJ_UINT32 numsegs
    Definition: tcd.h:131
    +
    OPJ_UINT32 ch
    Definition: tcd.h:145
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    union opj_cp::@0 m_specific_param
    +
    static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode a packet of a tile to a destination buffer.
    Definition: t2.c:663
    +
    OPJ_UINT32 layno
    layer that identify the packet
    Definition: pi.h:95
    +
    OPJ_UINT32 newlen
    Definition: tcd.h:116
    + + + + diff --git a/build/doc/html/tab_a.png b/build/doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/build/doc/html/tab_b.png b/build/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/build/doc/html/tabs.css b/build/doc/html/tabs.css new file mode 100644 index 000000000..85a0cd5b5 --- /dev/null +++ b/build/doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/build/doc/html/target__manager_8c.html b/build/doc/html/target__manager_8c.html new file mode 100644 index 000000000..26904523f --- /dev/null +++ b/build/doc/html/target__manager_8c.html @@ -0,0 +1,615 @@ + + + + + + + +OpenJPEG: target_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    target_manager.c File Reference
    +
    +
    +
    #include <stdlib.h>
    +#include <string.h>
    +#include <stdio.h>
    +#include <assert.h>
    +#include <sys/types.h>
    +#include <unistd.h>
    +#include <sys/stat.h>
    +#include <fcntl.h>
    +#include <time.h>
    +#include "target_manager.h"
    +
    + + + + + + + +

    +Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    targetlist_param_tgene_targetlist (void)
     generate a target list More...
     
    int open_jp2file (const char filepath[], char tmpfname[])
     open jp2 format image file More...
     
    target_param_tgene_target (targetlist_param_t *targetlist, char *targetpath)
     generate a target More...
     
    void refer_target (target_param_t *reftarget, target_param_t **ptr)
     refer a target, used to make a new cache model More...
     
    void unrefer_target (target_param_t *target)
     refer a target, used to make a new cache model More...
     
    void delete_target (target_param_t **target)
     delete a target More...
     
    void delete_target_in_list (target_param_t **target, targetlist_param_t *targetlist)
     delete a target in list More...
     
    void delete_targetlist (targetlist_param_t **targetlist)
     delete target list More...
     
    void print_target (target_param_t *target)
     print target parameters More...
     
    void print_alltarget (targetlist_param_t *targetlist)
     print all target parameters More...
     
    target_param_tsearch_target (const char targetname[], targetlist_param_t *targetlist)
     search a target by target name More...
     
    target_param_tsearch_targetBytid (const char tid[], targetlist_param_t *targetlist)
     search a target by tid More...
     
    int open_remotefile (const char filepath[], char tmpfname[])
     
    +

    Macro Definition Documentation

    + +

    ◆ FCGI_stderr

    + +
    +
    + + + + +
    #define FCGI_stderr   stderr
    +
    + +
    +
    + +

    ◆ FCGI_stdout

    + +
    +
    + + + + +
    #define FCGI_stdout   stdout
    +
    + +
    +
    + +

    ◆ logstream

    + +
    +
    + + + + +
    #define logstream   stderr
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_target()

    + +
    +
    + + + + + + + + +
    void delete_target (target_param_t ** target)
    +
    + +

    delete a target

    +
    Parameters
    + + +
    [in,out]targetaddress of the deleting target pointer
    +
    +
    + +

    References delete_index(), FCGI_stderr, logstream, and opj_free().

    + +

    Referenced by delete_target_in_list(), and delete_targetlist().

    + +
    +
    + +

    ◆ delete_target_in_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_target_in_list (target_param_t ** target,
    targetlist_param_ttargetlist 
    )
    +
    + +

    delete a target in list

    +
    Parameters
    + + + +
    [in,out]targetaddress of the deleting target pointer
    [in]targetlisttarget list pointer
    +
    +
    + +

    References delete_target(), targetlist_param::first, targetlist_param::last, and target_param::next.

    + +
    +
    + +

    ◆ delete_targetlist()

    + +
    +
    + + + + + + + + +
    void delete_targetlist (targetlist_param_t ** targetlist)
    +
    + +

    delete target list

    +
    Parameters
    + + +
    [in,out]targetlistaddress of the target list pointer
    +
    +
    + +

    References delete_target(), target_param::next, and opj_free().

    + +
    +
    + +

    ◆ gene_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* gene_target (targetlist_param_ttargetlist,
    char * targetpath 
    )
    +
    + +

    generate a target

    +
    Parameters
    + + + +
    [in]targetlisttarget list to insert the generated target
    [in]targetpathfile path or URL of the target
    +
    +
    +
    Returns
    pointer to the generated target
    + +

    References target_param::codeidx, target_param::csn, FCGI_stderr, FCGI_stdout, target_param::fd, targetlist_param::first, isJPTfeasible(), target_param::jppstream, target_param::jptstream, targetlist_param::last, logstream, MAX_LENOFTID, target_param::next, target_param::num_of_use, open_jp2file(), opj_malloc(), OPJ_TRUE, parse_jp2file(), target_param::targetname, and target_param::tid.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ gene_targetlist()

    + +
    +
    + + + + + + + + +
    targetlist_param_t* gene_targetlist (void )
    +
    + +

    generate a target list

    +
    Returns
    pointer to the generated target list
    + +

    References targetlist_param::first, targetlist_param::last, and opj_malloc().

    + +
    +
    + +

    ◆ open_jp2file()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int open_jp2file (const char filepath[],
    char tmpfname[] 
    )
    +
    + +

    open jp2 format image file

    +
    Parameters
    + + + +
    [in]filepathfile name (.jp2)
    [out]tmpfnamenew file name if filepath is a URL
    +
    +
    +
    Returns
    file descriptor
    + +

    References FCGI_stdout, open_remotefile(), opj_free(), and opj_malloc().

    + +

    Referenced by gene_target().

    + +
    +
    + +

    ◆ open_remotefile()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int open_remotefile (const char filepath[],
    char tmpfname[] 
    )
    +
    + +

    References FCGI_stderr, FCGI_stdout, and MAX_LENOFTID.

    + +

    Referenced by open_jp2file().

    + +
    +
    + +

    ◆ print_alltarget()

    + +
    +
    + + + + + + + + +
    void print_alltarget (targetlist_param_ttargetlist)
    +
    + +

    print all target parameters

    +
    Parameters
    + + +
    [in]targetlisttarget list pointer
    +
    +
    + +

    References targetlist_param::first, target_param::next, and print_target().

    + +
    +
    + +

    ◆ print_target()

    + +
    +
    + + + + + + + + +
    void print_target (target_param_ttarget)
    +
    + +

    print target parameters

    +
    Parameters
    + + +
    [in]targettarget pointer
    +
    +
    + +

    References target_param::csn, logstream, target_param::targetname, and target_param::tid.

    + +

    Referenced by print_allsession(), and print_alltarget().

    + +
    +
    + +

    ◆ refer_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void refer_target (target_param_treftarget,
    target_param_t ** ptr 
    )
    +
    + +

    refer a target, used to make a new cache model

    +
    Parameters
    + + + +
    [in]reftargetreference target pointer
    [out]ptraddress of feeding target pointer
    +
    +
    + +

    References target_param::num_of_use.

    + +

    Referenced by gene_cachemodel().

    + +
    +
    + +

    ◆ search_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* search_target (const char targetname[],
    targetlist_param_ttargetlist 
    )
    +
    + +

    search a target by target name

    +
    Parameters
    + + + +
    [in]targetnametarget name
    [in]targetlisttarget list pointer
    +
    +
    +
    Returns
    found target pointer
    + +

    References targetlist_param::first, target_param::next, and target_param::targetname.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ search_targetBytid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* search_targetBytid (const char tid[],
    targetlist_param_ttargetlist 
    )
    +
    + +

    search a target by tid

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]targetlisttarget list pointer
    +
    +
    +
    Returns
    found target pointer
    + +

    References targetlist_param::first, target_param::next, and target_param::tid.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ unrefer_target()

    + +
    +
    + + + + + + + + +
    void unrefer_target (target_param_ttarget)
    +
    + +

    refer a target, used to make a new cache model

    +
    Parameters
    + + +
    [in]targetreference pointer to the target
    +
    +
    + +

    References target_param::num_of_use.

    + +

    Referenced by delete_cachemodel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/target__manager_8h.html b/build/doc/html/target__manager_8h.html new file mode 100644 index 000000000..0049fe8ce --- /dev/null +++ b/build/doc/html/target__manager_8h.html @@ -0,0 +1,553 @@ + + + + + + + +OpenJPEG: target_manager.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    target_manager.h File Reference
    +
    +
    +
    #include "index_manager.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  target_param
     target parameters More...
     
    struct  targetlist_param
     Target list parameters. More...
     
    + + + + +

    +Macros

    #define MAX_LENOFTID   30
     maximum length of target identifier More...
     
    + + + + + + + +

    +Typedefs

    typedef struct target_param target_param_t
     target parameters More...
     
    typedef struct targetlist_param targetlist_param_t
     Target list parameters. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    targetlist_param_tgene_targetlist (void)
     generate a target list More...
     
    target_param_tgene_target (targetlist_param_t *targetlist, char *targetpath)
     generate a target More...
     
    void refer_target (target_param_t *reftarget, target_param_t **ptr)
     refer a target, used to make a new cache model More...
     
    void unrefer_target (target_param_t *target)
     refer a target, used to make a new cache model More...
     
    void delete_target (target_param_t **target)
     delete a target More...
     
    void delete_target_in_list (target_param_t **target, targetlist_param_t *targetlist)
     delete a target in list More...
     
    void delete_targetlist (targetlist_param_t **targetlist)
     delete target list More...
     
    void print_target (target_param_t *target)
     print target parameters More...
     
    void print_alltarget (targetlist_param_t *targetlist)
     print all target parameters More...
     
    target_param_tsearch_target (const char targetname[], targetlist_param_t *targetlist)
     search a target by target name More...
     
    target_param_tsearch_targetBytid (const char tid[], targetlist_param_t *targetlist)
     search a target by tid More...
     
    +

    Macro Definition Documentation

    + +

    ◆ MAX_LENOFTID

    + +
    +
    + + + + +
    #define MAX_LENOFTID   30
    +
    + +

    maximum length of target identifier

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ target_param_t

    + +
    +
    + + + + +
    typedef struct target_param target_param_t
    +
    + +

    target parameters

    + +
    +
    + +

    ◆ targetlist_param_t

    + +
    +
    + + + + +
    typedef struct targetlist_param targetlist_param_t
    +
    + +

    Target list parameters.

    + +
    +
    +

    Function Documentation

    + +

    ◆ delete_target()

    + +
    +
    + + + + + + + + +
    void delete_target (target_param_t ** target)
    +
    + +

    delete a target

    +
    Parameters
    + + +
    [in,out]targetaddress of the deleting target pointer
    +
    +
    + +

    References delete_index(), FCGI_stderr, logstream, and opj_free().

    + +

    Referenced by delete_target_in_list(), and delete_targetlist().

    + +
    +
    + +

    ◆ delete_target_in_list()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void delete_target_in_list (target_param_t ** target,
    targetlist_param_ttargetlist 
    )
    +
    + +

    delete a target in list

    +
    Parameters
    + + + +
    [in,out]targetaddress of the deleting target pointer
    [in]targetlisttarget list pointer
    +
    +
    + +

    References delete_target(), targetlist_param::first, targetlist_param::last, and target_param::next.

    + +
    +
    + +

    ◆ delete_targetlist()

    + +
    +
    + + + + + + + + +
    void delete_targetlist (targetlist_param_t ** targetlist)
    +
    + +

    delete target list

    +
    Parameters
    + + +
    [in,out]targetlistaddress of the target list pointer
    +
    +
    + +

    References delete_target(), target_param::next, and opj_free().

    + +
    +
    + +

    ◆ gene_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* gene_target (targetlist_param_ttargetlist,
    char * targetpath 
    )
    +
    + +

    generate a target

    +
    Parameters
    + + + +
    [in]targetlisttarget list to insert the generated target
    [in]targetpathfile path or URL of the target
    +
    +
    +
    Returns
    pointer to the generated target
    + +

    References target_param::codeidx, target_param::csn, FCGI_stderr, FCGI_stdout, target_param::fd, targetlist_param::first, isJPTfeasible(), target_param::jppstream, target_param::jptstream, targetlist_param::last, logstream, MAX_LENOFTID, target_param::next, target_param::num_of_use, open_jp2file(), opj_malloc(), OPJ_TRUE, parse_jp2file(), target_param::targetname, and target_param::tid.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ gene_targetlist()

    + +
    +
    + + + + + + + + +
    targetlist_param_t* gene_targetlist (void )
    +
    + +

    generate a target list

    +
    Returns
    pointer to the generated target list
    + +

    References targetlist_param::first, targetlist_param::last, and opj_malloc().

    + +
    +
    + +

    ◆ print_alltarget()

    + +
    +
    + + + + + + + + +
    void print_alltarget (targetlist_param_ttargetlist)
    +
    + +

    print all target parameters

    +
    Parameters
    + + +
    [in]targetlisttarget list pointer
    +
    +
    + +

    References targetlist_param::first, target_param::next, and print_target().

    + +
    +
    + +

    ◆ print_target()

    + +
    +
    + + + + + + + + +
    void print_target (target_param_ttarget)
    +
    + +

    print target parameters

    +
    Parameters
    + + +
    [in]targettarget pointer
    +
    +
    + +

    References target_param::csn, logstream, target_param::targetname, and target_param::tid.

    + +

    Referenced by print_allsession(), and print_alltarget().

    + +
    +
    + +

    ◆ refer_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void refer_target (target_param_treftarget,
    target_param_t ** ptr 
    )
    +
    + +

    refer a target, used to make a new cache model

    +
    Parameters
    + + + +
    [in]reftargetreference target pointer
    [out]ptraddress of feeding target pointer
    +
    +
    + +

    References target_param::num_of_use.

    + +

    Referenced by gene_cachemodel().

    + +
    +
    + +

    ◆ search_target()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* search_target (const char targetname[],
    targetlist_param_ttargetlist 
    )
    +
    + +

    search a target by target name

    +
    Parameters
    + + + +
    [in]targetnametarget name
    [in]targetlisttarget list pointer
    +
    +
    +
    Returns
    found target pointer
    + +

    References targetlist_param::first, target_param::next, and target_param::targetname.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ search_targetBytid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    target_param_t* search_targetBytid (const char tid[],
    targetlist_param_ttargetlist 
    )
    +
    + +

    search a target by tid

    +
    Parameters
    + + + +
    [in]tidtarget identifier
    [in]targetlisttarget list pointer
    +
    +
    +
    Returns
    found target pointer
    + +

    References targetlist_param::first, target_param::next, and target_param::tid.

    + +

    Referenced by identify_target().

    + +
    +
    + +

    ◆ unrefer_target()

    + +
    +
    + + + + + + + + +
    void unrefer_target (target_param_ttarget)
    +
    + +

    refer a target, used to make a new cache model

    +
    Parameters
    + + +
    [in]targetreference pointer to the target
    +
    +
    + +

    References target_param::num_of_use.

    + +

    Referenced by delete_cachemodel().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/target__manager_8h_source.html b/build/doc/html/target__manager_8h_source.html new file mode 100644 index 000000000..941666c82 --- /dev/null +++ b/build/doc/html/target__manager_8h_source.html @@ -0,0 +1,208 @@ + + + + + + + +OpenJPEG: target_manager.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    target_manager.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * $Id$
    +
    3  *
    +
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    +
    7  * All rights reserved.
    +
    8  *
    +
    9  * Redistribution and use in source and binary forms, with or without
    +
    10  * modification, are permitted provided that the following conditions
    +
    11  * are met:
    +
    12  * 1. Redistributions of source code must retain the above copyright
    +
    13  * notice, this list of conditions and the following disclaimer.
    +
    14  * 2. Redistributions in binary form must reproduce the above copyright
    +
    15  * notice, this list of conditions and the following disclaimer in the
    +
    16  * documentation and/or other materials provided with the distribution.
    +
    17  *
    +
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    28  * POSSIBILITY OF SUCH DAMAGE.
    +
    29  */
    +
    30 
    +
    31 #ifndef TARGET_MANAGER_H_
    +
    32 # define TARGET_MANAGER_H_
    +
    33 
    +
    34 #include "index_manager.h"
    +
    35 
    +
    37 #define MAX_LENOFTID 30
    +
    38 
    +
    40 typedef struct target_param {
    +
    41  char tid[MAX_LENOFTID];
    +
    42  char *targetname;
    +
    43  int fd;
    +
    44 #ifdef SERVER
    +
    45  char *tmpfname;
    +
    46 #endif
    +
    47  int csn;
    + + +
    50  int num_of_use;
    + + +
    53  struct target_param
    +
    54  *next;
    + +
    56 
    +
    57 
    +
    59 typedef struct targetlist_param {
    + + + +
    63 
    +
    64 
    +
    65 
    + +
    72 
    +
    73 
    +
    81 target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath);
    +
    82 
    +
    83 
    +
    90 void refer_target(target_param_t *reftarget, target_param_t **ptr);
    +
    91 
    +
    92 
    +
    98 void unrefer_target(target_param_t *target);
    +
    99 
    +
    105 void delete_target(target_param_t **target);
    +
    106 
    +
    107 
    + +
    115  targetlist_param_t *targetlist);
    +
    116 
    +
    117 
    +
    123 void delete_targetlist(targetlist_param_t **targetlist);
    +
    124 
    +
    125 
    +
    131 void print_target(target_param_t *target);
    +
    132 
    +
    138 void print_alltarget(targetlist_param_t *targetlist);
    +
    139 
    +
    140 
    +
    148 target_param_t * search_target(const char targetname[],
    +
    149  targetlist_param_t *targetlist);
    +
    150 
    +
    151 
    +
    159 target_param_t * search_targetBytid(const char tid[],
    +
    160  targetlist_param_t *targetlist);
    +
    161 
    +
    162 #endif /* !TARGET_MANAGER_H_ */
    +
    163 
    +
    +
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    +
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    +
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    +
    int csn
    codestream number
    Definition: target_manager.h:47
    +
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    +
    #define FCGI_stdout
    Definition: target_manager.c:52
    +
    #define logstream
    Definition: target_manager.c:54
    +
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    +
    OPJ_BOOL jppstream
    if this target can return JPP-stream
    Definition: target_manager.h:51
    +
    index parameters
    Definition: index_manager.h:86
    +
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    +
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    +
    void delete_target_in_list(target_param_t **target, targetlist_param_t *targetlist)
    delete a target in list
    Definition: target_manager.c:170
    +
    struct target_param * next
    pointer to the next target
    Definition: target_manager.h:53
    +
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    +
    #define MAX_LENOFTID
    maximum length of target identifier
    Definition: target_manager.h:37
    +
    target_param_t * last
    last target pointer of the list
    Definition: target_manager.h:61
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    +
    OPJ_BOOL jptstream
    if this target can return JPP-stream
    Definition: target_manager.h:52
    + +
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    +
    int open_jp2file(const char filepath[], char tmpfname[])
    open jp2 format image file
    Definition: target_manager.c:263
    +
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void delete_target(target_param_t **target)
    delete a target
    Definition: target_manager.c:146
    +
    int num_of_use
    numbers of sessions referring to this target
    Definition: target_manager.h:50
    +
    int open_remotefile(const char filepath[], char tmpfname[])
    Definition: target_manager.c:314
    +
    void delete_target(target_param_t **target)
    delete a target
    Definition: target_manager.c:146
    +
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    +
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    +
    void delete_target_in_list(target_param_t **target, targetlist_param_t *targetlist)
    delete a target in list
    Definition: target_manager.c:170
    +
    Target list parameters.
    Definition: target_manager.h:59
    +
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    +
    char tid[MAX_LENOFTID]
    target identifier
    Definition: target_manager.h:41
    +
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    +
    int fd
    file descriptor
    Definition: target_manager.h:43
    +
    target parameters
    Definition: target_manager.h:40
    +
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    +
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    +
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    +
    struct targetlist_param targetlist_param_t
    Target list parameters.
    + +
    #define FCGI_stderr
    Definition: target_manager.c:53
    +
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    +
    target_param_t * first
    first target pointer of the list
    Definition: target_manager.h:60
    +
    struct target_param target_param_t
    target parameters
    +
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    +
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    +
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    + + + + diff --git a/build/doc/html/tcd_8c.html b/build/doc/html/tcd_8c.html new file mode 100644 index 000000000..18a87b3b3 --- /dev/null +++ b/build/doc/html/tcd_8c.html @@ -0,0 +1,1867 @@ + + + + + + + +OpenJPEG: tcd.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tcd.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +#include "opj_common.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    static INLINE OPJ_BOOL opj_tcd_init_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BOOL isEncoder, OPJ_FLOAT32 fraction, OPJ_SIZE_T sizeof_block, opj_event_mgr_t *manager)
     Initializes tile coding/decoding. More...
     
    static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t *p_code_block)
     Allocates memory for a decoding code block. More...
     
    static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_t *p_precinct)
     Deallocates the decoding data of the given precinct. More...
     
    static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t *p_code_block)
     Allocates memory for an encoding code block (but not data). More...
     
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_t *p_code_block)
     Allocates data for an encoding code block. More...
     
    static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_t *p_precinct)
     Deallocates the encoding data of the given precinct. More...
     
    static void opj_tcd_free_tile (opj_tcd_t *tcd)
     Free the memory allocated for encoding. More...
     
    static OPJ_BOOL opj_tcd_t2_decode (opj_tcd_t *p_tcd, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_src_size, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_t1_decode (opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_dwt_decode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_mct_decode (opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_dc_level_shift_decode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_dc_level_shift_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_mct_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_dwt_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_t1_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_t2_encode (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_rate_allocate_encode (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding (opj_tcd_t *p_tcd, OPJ_UINT32 compno)
     Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members. More...
     
    opj_tcd_topj_tcd_create (OPJ_BOOL p_is_decoder)
     Create a new TCD handle. More...
     
    void opj_tcd_rateallocate_fixed (opj_tcd_t *tcd)
     
    void opj_tcd_makelayer (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
     
    void opj_tcd_makelayer_fixed (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
     
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_tcd_init (opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
     Initialize the tile coder and may reuse some memory. More...
     
    void opj_tcd_destroy (opj_tcd_t *tcd)
     Destroy a previously created TCD handle. More...
     
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_t *l_tilec)
     Allocates tile component data. More...
     
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Initialize the tile coder and may reuse some meory. More...
     
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Allocates memory for decoding a specific tile. More...
     
    void opj_tcd_reinit_segment (opj_tcd_seg_t *seg)
     Reinitialize a segment. More...
     
    OPJ_UINT32 opj_tcd_get_decoded_tile_size (opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
     Gets the maximum tile size that will be taken by the tile once decoded. More...
     
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     Encodes a tile from the raw image into the given buffer. More...
     
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     Decode a tile from a buffer into a raw image. More...
     
    OPJ_BOOL opj_tcd_update_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
     Copies tile data from the system onto the given memory block. More...
     
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_t *p_tcd)
     Get the size in bytes of the input buffer provided before encoded. More...
     
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
     Copies tile data from the given memory block onto the system. More...
     
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_t *band)
     Returns whether a sub-band is empty (i.e. More...
     
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
     Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1. More...
     
    opj_tcd_marker_info_topj_tcd_marker_info_create (OPJ_BOOL need_PLT)
     Create a new opj_tcd_marker_info_t* structure. More...
     
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_t *p_tcd_marker_info)
     Destroy a previously created opj_tcd_marker_info_t* structure. More...
     
    +

    Function Documentation

    + +

    ◆ opj_alloc_tile_component_data()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_tl_tilec)
    +
    +
    + +

    ◆ opj_tcd_code_block_dec_allocate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_tp_code_block)
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_code_block_dec_deallocate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_tp_precinct)
    +
    +static
    +
    + +

    Deallocates the decoding data of the given precinct.

    +

    Deallocates the encoding data of the given precinct.

    + +

    References opj_tcd_precinct::block_size, opj_tcd_precinct::cblks, opj_tcd_cblk_dec::chunks, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_aligned_free(), opj_free(), and opj_tcd_cblk_dec::segs.

    + +

    Referenced by opj_tcd_free_tile().

    + +
    +
    + +

    ◆ opj_tcd_code_block_enc_allocate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_tp_code_block)
    +
    +static
    +
    + +

    Allocates memory for an encoding code block (but not data).

    +

    Allocates memory for an encoding code block (but not data memory).

    + +

    References opj_tcd_cblk_enc::layers, opj_calloc(), OPJ_FALSE, OPJ_TRUE, and opj_tcd_cblk_enc::passes.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tcd_code_block_enc_allocate_data()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_tp_code_block)
    +
    +static
    +
    + +

    Allocates data for an encoding code block.

    +

    Allocates data memory for an encoding code block.

    + +

    References opj_tcd_cblk_enc::data, opj_tcd_cblk_enc::data_size, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, opj_tcd_cblk_enc::x0, opj_tcd_cblk_enc::x1, opj_tcd_cblk_enc::y0, and opj_tcd_cblk_enc::y1.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tcd_code_block_enc_deallocate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_tp_precinct)
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_copy_tile_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_src,
    OPJ_SIZE_T p_src_length 
    )
    +
    +
    + +

    ◆ opj_tcd_create()

    + +
    +
    + + + + + + + + +
    opj_tcd_t* opj_tcd_create (OPJ_BOOL p_is_decoder)
    +
    + +

    Create a new TCD handle.

    +

    Dump the content of a tcd structure.

    + +

    References opj_tcd::m_is_decoder, opj_calloc(), opj_free(), and opj_tcd::tcd_image.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    + +
    +
    + +

    ◆ opj_tcd_dc_level_shift_decode()

    + + + +

    ◆ opj_tcd_dc_level_shift_encode()

    + + + +

    ◆ opj_tcd_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_ttcd,
    OPJ_UINT32 win_x0,
    OPJ_UINT32 win_y0,
    OPJ_UINT32 win_x1,
    OPJ_UINT32 win_y1,
    OPJ_UINT32 numcomps_to_decode,
    const OPJ_UINT32comps_indices,
    OPJ_BYTEsrc,
    OPJ_UINT32 len,
    OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tmanager 
    )
    +
    + +

    Decode a tile from a buffer into a raw image.

    +
    Parameters
    + + + + + + + + + + + + + +
    tcdTCD handle
    win_x0Upper left x of region to decode (in grid coordinates)
    win_y0Upper left y of region to decode (in grid coordinates)
    win_x1Lower right x of region to decode (in grid coordinates)
    win_y1Lower right y of region to decode (in grid coordinates)
    numcomps_to_decodeSize of the comps_indices array, or 0 if decoding all components.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0). Or NULL if decoding all components.
    srcSource buffer
    lenLength of source buffer
    tilenoNumber that identifies one of the tiles to be decoded
    cstr_infoFIXME DOC
    managerthe event manager.
    +
    +
    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_image::numcomps, opj_tcd_tilecomp::numresolutions, opj_alloc_tile_component_data(), opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_alloc(), opj_image_data_free(), opj_malloc(), opj_tcd_dc_level_shift_decode(), opj_tcd_dwt_decode(), opj_tcd_is_whole_tilecomp_decoding(), opj_tcd_mct_decode(), opj_tcd_t1_decode(), opj_tcd_t2_decode(), OPJ_TRUE, opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, SIZE_MAX, opj_tcd::tcd_image, opj_tcd::tcd_tileno, tcp, opj_tcd::tcp, opj_cp::tcps, opj_tcd_image::tiles, opj_tcd::used_component, opj_tcd::whole_tile_decoding, opj_tcd_resolution::win_x0, opj_tcd_tilecomp::win_x0, opj_tcd::win_x0, opj_tcd_resolution::win_x1, opj_tcd_tilecomp::win_x1, opj_tcd::win_x1, opj_tcd_resolution::win_y0, opj_tcd_tilecomp::win_y0, opj_tcd::win_y0, opj_tcd_resolution::win_y1, opj_tcd_tilecomp::win_y1, opj_tcd::win_y1, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_resolution::y1, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_j2k_decode_tile().

    + +
    +
    + +

    ◆ opj_tcd_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tcd_destroy (opj_tcd_ttcd)
    +
    + +

    Destroy a previously created TCD handle.

    +
    Parameters
    + + +
    tcdTCD handle to destroy
    +
    +
    + +

    References opj_free(), opj_tcd_free_tile(), opj_tcd::tcd_image, and opj_tcd::used_component.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_destroy(), and opj_j2k_end_encoding().

    + +
    +
    + +

    ◆ opj_tcd_dwt_decode()

    + + + +

    ◆ opj_tcd_dwt_encode()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static OPJ_BOOL opj_tcd_dwt_encode (opj_tcd_tp_tcd)
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_encode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BYTEp_dest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_len,
    struct opj_codestream_infop_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encodes a tile from the raw image into the given buffer.

    +
    Parameters
    + + + + + + + + + +
    p_tcdTile Coder handle
    p_tile_noIndex of the tile to encode.
    p_destDestination buffer
    p_data_writtenpointer to an int that is incremented by the number of bytes really written on p_dest
    p_lenMaximum length of the destination buffer
    p_cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the coding is successful.
    + +

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::cur_tp_num, opj_codestream_info::index_write, opj_codestream_info::numcomps, opj_codestream_info::numlayers, opj_tcd_tilecomp::numresolutions, opj_calloc(), OPJ_FALSE, opj_tcd_dc_level_shift_encode(), opj_tcd_dwt_encode(), opj_tcd_mct_encode(), opj_tcd_rate_allocate_encode(), opj_tcd_t1_encode(), opj_tcd_t2_encode(), OPJ_TRUE, opj_tile_info::packet, opj_tile_info::pdx, opj_tile_info::pdy, opj_tcd_resolution::ph, opj_tile_info::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_tile_info::pw, opj_tcd_tilecomp::resolutions, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcd_tileno, opj_tcd::tcp, opj_cp::tcps, opj_codestream_info::tile, and opj_tcd_image::tiles.

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_free_tile()

    + + + +

    ◆ opj_tcd_get_decoded_tile_size()

    + + + +

    ◆ opj_tcd_get_encoder_input_buffer_size()

    + +
    +
    + + + + + + + + +
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_tp_tcd)
    +
    + +

    Get the size in bytes of the input buffer provided before encoded.

    +

    This must be the size provided to the p_src_length argument of opj_tcd_copy_tile_data()

    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::image, opj_image::numcomps, opj_image_comp::prec, opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_j2k_encode(), and opj_tcd_copy_tile_data().

    + +
    +
    + +

    ◆ opj_tcd_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init (opj_tcd_tp_tcd,
    opj_image_tp_image,
    opj_cp_tp_cp,
    opj_thread_pool_tp_tp 
    )
    +
    + +

    Initialize the tile coder and may reuse some memory.

    +
    Parameters
    + + + + + +
    p_tcdTCD handle.
    p_imageraw image.
    p_cpcoding parameters.
    p_tpthread pool
    +
    +
    +
    Returns
    true if the encoding values could be set (false otherwise).
    + +

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::image, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_pos, opj_tcd_tile::numcomps, opj_image::numcomps, opj_calloc(), OPJ_FALSE, OPJ_TRUE, opj_tcd::tcd_image, opj_tcd::thread_pool, opj_tcd_image::tiles, and opj_tcd::tp_pos.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    + +
    +
    + +

    ◆ opj_tcd_init_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Allocates memory for decoding a specific tile.

    +
    Parameters
    + + + + +
    p_tcdthe tile decoder.
    p_tile_nothe index of the tile received in sequence. This not necessarily lead to the tile at index p_tile_no.
    p_managerthe event manager.
    +
    +
    +
    Returns
    true if the remaining data is sufficient.
    + +

    References OPJ_FALSE, and opj_tcd_init_tile().

    + +

    Referenced by opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ opj_tcd_init_encode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Initialize the tile coder and may reuse some meory.

    +
    Parameters
    + + + + +
    p_tcdTCD handle.
    p_tile_nocurrent tile index to encode.
    p_managerthe event manager.
    +
    +
    +
    Returns
    true if the encoding values could be set (false otherwise).
    + +

    References opj_tcd_init_tile(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_pre_write_tile().

    + +
    +
    + +

    ◆ opj_tcd_init_tile()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static INLINE OPJ_BOOL opj_tcd_init_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BOOL isEncoder,
    OPJ_FLOAT32 fraction,
    OPJ_SIZE_T sizeof_block,
    opj_event_mgr_tmanager 
    )
    +
    +static
    +
    + +

    Initializes tile coding/decoding.

    +

    avoid an if with storing function pointer

    + +

    References opj_tcd_band::bandno, opj_tcd_resolution::bands, opj_tcd_precinct::block_size, opj_tcd_precinct::blocks, opj_tccp::cblkh, opj_tcd_precinct::cblks, opj_tccp::cblkw, opj_tcd_precinct::ch, opj_tcd_tilecomp::compno, opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_precinct::cw, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_tcd_precinct::dec, opj_image_comp::dx, opj_image_comp::dy, opj_tcd_precinct::enc, EVT_ERROR, opj_stepsize::expn, opj_tcd::image, opj_tcd_precinct::imsbtree, opj_tcd_precinct::incltree, opj_cp::m_dec, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_stepsize::mant, opj_tcd_tilecomp::minimum_num_resolutions, opj_tcd_resolution::numbands, opj_tcd_tile::numcomps, opj_tccp::numgbits, opj_tccp::numresolutions, opj_tcd_tilecomp::numresolutions, opj_dwt_getgain(), opj_dwt_getgain_real(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_free(), opj_int64_ceildivpow2(), opj_int_ceildiv(), opj_int_ceildivpow2(), opj_int_floordivpow2(), opj_int_max(), opj_int_min(), opj_malloc(), opj_realloc(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_is_band_empty(), opj_tgt_create(), opj_tgt_init(), OPJ_TRUE, opj_uint_adds(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_image_comp::prec, opj_tcd_resolution::pw, opj_tccp::qmfbid, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, opj_tcd_tilecomp::resolutions_size, SIZE_MAX, opj_tccp::stepsizes, opj_tcp::tccps, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_tcd_image::tiles, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_tcd_tilecomp::win_x0, opj_tcd_tilecomp::win_x1, opj_tcd_tilecomp::win_y0, opj_tcd_tilecomp::win_y1, opj_tcd_cblk_enc::x0, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_tile::x0, opj_image::x0, opj_tcd_cblk_enc::x1, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_tile::x1, opj_image::x1, opj_tcd_cblk_enc::y0, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_tile::y0, opj_image::y0, opj_tcd_cblk_enc::y1, opj_tcd_cblk_dec::y1, opj_tcd_precinct::y1, opj_tcd_resolution::y1, opj_tcd_tilecomp::y1, opj_tcd_tile::y1, and opj_image::y1.

    + +

    Referenced by opj_tcd_init_decode_tile(), and opj_tcd_init_encode_tile().

    + +
    +
    + +

    ◆ opj_tcd_is_band_empty()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_tband)
    +
    + +

    Returns whether a sub-band is empty (i.e.

    +

    whether it has a null area)

    Parameters
    + + +
    bandSub-band handle.
    +
    +
    +
    Returns
    OPJ_TRUE whether the sub-band is empty.
    + +

    References opj_tcd_band::x0, opj_tcd_band::x1, opj_tcd_band::y0, and opj_tcd_band::y1.

    + +

    Referenced by opj_t1_encode_cblks(), opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_tcd_makelayer(), opj_tcd_makelayer_fixed(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ opj_tcd_is_subband_area_of_interest()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_ttcd,
    OPJ_UINT32 compno,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    +
    + +

    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1.

    +
    Parameters
    + + + + + + + + + +
    tcdTCD handle.
    compnoComponent number
    resnoResolution number
    bandnoBand number (not band index, ie 0, 1, 2 or 3)
    x0Upper left x in subband coordinates
    y0Upper left y in subband coordinates
    x1Lower right x in subband coordinates
    y1Lower right y in subband coordinates
    +
    +
    +
    Returns
    OPJ_TRUE whether the sub-band region contributs to the area of interest.
    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::qmfbid, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcp, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_t1_decode_cblks(), and opj_t2_decode_packets().

    + +
    +
    + +

    ◆ opj_tcd_is_whole_tilecomp_decoding()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding (opj_tcd_tp_tcd,
    OPJ_UINT32 compno 
    )
    +
    +static
    +
    + +

    Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members.

    +
    Parameters
    + + + +
    p_tcdTCD handle.
    compnoComponent number
    +
    +
    +
    Returns
    OPJ_TRUE whether the tile componenent is fully decoded
    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_tcd_tilecomp::numresolutions, opj_uint_ceildiv(), opj_uint_max(), opj_uint_min(), opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_tcd_decode_tile().

    + +
    +
    + +

    ◆ opj_tcd_makelayer()

    + + + +

    ◆ opj_tcd_makelayer_fixed()

    + + + +

    ◆ opj_tcd_marker_info_create()

    + +
    +
    + + + + + + + + +
    opj_tcd_marker_info_t* opj_tcd_marker_info_create (OPJ_BOOL need_PLT)
    +
    + +

    Create a new opj_tcd_marker_info_t* structure.

    +
    Parameters
    + + +
    need_PLTWhether information is needed to generate PLT markers.
    +
    +
    + +

    References opj_tcd_marker_info::need_PLT, and opj_calloc().

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_marker_info_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_tp_tcd_marker_info)
    +
    + +

    Destroy a previously created opj_tcd_marker_info_t* structure.

    +
    Parameters
    + + +
    p_tcd_marker_infoStructure to destroy
    +
    +
    + +

    References opj_free(), and opj_tcd_marker_info::p_packet_size.

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_mct_decode()

    + + + +

    ◆ opj_tcd_mct_encode()

    + + + +

    ◆ opj_tcd_rate_allocate_encode()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_tcd_rate_allocate_encode (opj_tcd_tp_tcd,
    OPJ_BYTEp_dest_data,
    OPJ_UINT32 p_max_dest_size,
    opj_codestream_info_tp_cstr_info,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_rateallocate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_ttcd,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_tcd_rateallocate_fixed()

    + +
    +
    + + + + + + + + +
    void opj_tcd_rateallocate_fixed (opj_tcd_ttcd)
    +
    +
    + +

    ◆ opj_tcd_reinit_segment()

    + +
    +
    + + + + + + + + +
    void opj_tcd_reinit_segment (opj_tcd_seg_tseg)
    +
    + +

    Reinitialize a segment.

    + +

    Referenced by opj_t2_init_seg(), and opj_tcd_code_block_dec_allocate().

    + +
    +
    + +

    ◆ opj_tcd_t1_decode()

    + + + +

    ◆ opj_tcd_t1_encode()

    + + + +

    ◆ opj_tcd_t2_decode()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_tcd_t2_decode (opj_tcd_tp_tcd,
    OPJ_BYTEp_src_data,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_src_size,
    opj_codestream_index_tp_cstr_index,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_t2_encode()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static OPJ_BOOL opj_tcd_t2_encode (opj_tcd_tp_tcd,
    OPJ_BYTEp_dest_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_max_dest_size,
    opj_codestream_info_tp_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    +
    +static
    +
    +
    + +

    ◆ opj_tcd_update_tile_data()

    + + +
    + + + + diff --git a/build/doc/html/tcd_8h.html b/build/doc/html/tcd_8h.html new file mode 100644 index 000000000..b92b16599 --- /dev/null +++ b/build/doc/html/tcd_8h.html @@ -0,0 +1,1383 @@ + + + + + + + +OpenJPEG: tcd.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tcd.h File Reference
    +
    +
    + +

    Implementation of a tile coder/decoder (TCD) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  opj_tcd_pass
     FIXME DOC. More...
     
    struct  opj_tcd_layer
     FIXME DOC. More...
     
    struct  opj_tcd_cblk_enc
     FIXME DOC. More...
     
    struct  opj_tcd_seg_data_chunk
     Chunk of codestream data that is part of a code block. More...
     
    struct  opj_tcd_seg
     Segment of a code-block. More...
     
    struct  opj_tcd_cblk_dec
     Code-block for decoding. More...
     
    struct  opj_tcd_precinct
     Precinct structure. More...
     
    struct  opj_tcd_band
     Sub-band structure. More...
     
    struct  opj_tcd_resolution
     Tile-component resolution structure. More...
     
    struct  opj_tcd_tilecomp
     Tile-component structure. More...
     
    struct  opj_tcd_tile
     FIXME DOC. More...
     
    struct  opj_tcd_image
     FIXME DOC. More...
     
    struct  opj_tcd
     Tile coder/decoder. More...
     
    struct  opj_tcd_marker_info
     Structure to hold information needed to generate some markers. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct opj_tcd_pass opj_tcd_pass_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_layer opj_tcd_layer_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_seg_data_chunk opj_tcd_seg_data_chunk_t
     Chunk of codestream data that is part of a code block. More...
     
    typedef struct opj_tcd_seg opj_tcd_seg_t
     Segment of a code-block. More...
     
    typedef struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
     Code-block for decoding. More...
     
    typedef struct opj_tcd_precinct opj_tcd_precinct_t
     Precinct structure. More...
     
    typedef struct opj_tcd_band opj_tcd_band_t
     Sub-band structure. More...
     
    typedef struct opj_tcd_resolution opj_tcd_resolution_t
     Tile-component resolution structure. More...
     
    typedef struct opj_tcd_tilecomp opj_tcd_tilecomp_t
     Tile-component structure. More...
     
    typedef struct opj_tcd_tile opj_tcd_tile_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_image opj_tcd_image_t
     FIXME DOC. More...
     
    typedef struct opj_tcd opj_tcd_t
     Tile coder/decoder. More...
     
    typedef struct opj_tcd_marker_info opj_tcd_marker_info_t
     Structure to hold information needed to generate some markers. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    opj_tcd_topj_tcd_create (OPJ_BOOL p_is_decoder)
     Dump the content of a tcd structure. More...
     
    void opj_tcd_destroy (opj_tcd_t *tcd)
     Destroy a previously created TCD handle. More...
     
    opj_tcd_marker_info_topj_tcd_marker_info_create (OPJ_BOOL need_PLT)
     Create a new opj_tcd_marker_info_t* structure. More...
     
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_t *p_tcd_marker_info)
     Destroy a previously created opj_tcd_marker_info_t* structure. More...
     
    OPJ_BOOL opj_tcd_init (opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
     Initialize the tile coder and may reuse some memory. More...
     
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Allocates memory for decoding a specific tile. More...
     
    void opj_tcd_makelayer_fixed (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
     
    void opj_tcd_rateallocate_fixed (opj_tcd_t *tcd)
     
    void opj_tcd_makelayer (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
     
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
     
    OPJ_UINT32 opj_tcd_get_decoded_tile_size (opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
     Gets the maximum tile size that will be taken by the tile once decoded. More...
     
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_len, struct opj_codestream_info *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     Encodes a tile from the raw image into the given buffer. More...
     
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_t *tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *src, OPJ_UINT32 len, OPJ_UINT32 tileno, opj_codestream_index_t *cstr_info, opj_event_mgr_t *manager)
     Decode a tile from a buffer into a raw image. More...
     
    OPJ_BOOL opj_tcd_update_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
     Copies tile data from the system onto the given memory block. More...
     
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_t *p_tcd)
     Get the size in bytes of the input buffer provided before encoded. More...
     
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Initialize the tile coder and may reuse some meory. More...
     
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
     Copies tile data from the given memory block onto the system. More...
     
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_t *l_tilec)
     Allocates tile component data. More...
     
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_t *band)
     Returns whether a sub-band is empty (i.e. More...
     
    void opj_tcd_reinit_segment (opj_tcd_seg_t *seg)
     Reinitialize a segment. More...
     
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1. More...
     
    +

    Detailed Description

    +

    Implementation of a tile coder/decoder (TCD)

    +

    The functions in TCD.C encode or decode each tile independently from each other. The functions in TCD.C are used by other functions in J2K.C.

    +

    Typedef Documentation

    + +

    ◆ opj_tcd_band_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_band opj_tcd_band_t
    +
    + +

    Sub-band structure.

    + +
    +
    + +

    ◆ opj_tcd_cblk_dec_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
    +
    + +

    Code-block for decoding.

    + +
    +
    + +

    ◆ opj_tcd_cblk_enc_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_tcd_image_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_image opj_tcd_image_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_tcd_layer_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_layer opj_tcd_layer_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_tcd_marker_info_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_marker_info opj_tcd_marker_info_t
    +
    + +

    Structure to hold information needed to generate some markers.

    +

    Used by encoder.

    + +
    +
    + +

    ◆ opj_tcd_pass_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_pass opj_tcd_pass_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_tcd_precinct_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_precinct opj_tcd_precinct_t
    +
    + +

    Precinct structure.

    + +
    +
    + +

    ◆ opj_tcd_resolution_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_resolution opj_tcd_resolution_t
    +
    + +

    Tile-component resolution structure.

    + +
    +
    + +

    ◆ opj_tcd_seg_data_chunk_t

    + +
    +
    + +

    Chunk of codestream data that is part of a code block.

    + +
    +
    + +

    ◆ opj_tcd_seg_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_seg opj_tcd_seg_t
    +
    + +

    Segment of a code-block.

    +

    A segment represent a number of consecutive coding passes, without termination of MQC or RAW between them.

    + +
    +
    + +

    ◆ opj_tcd_t

    + +
    +
    + + + + +
    typedef struct opj_tcd opj_tcd_t
    +
    + +

    Tile coder/decoder.

    + +
    +
    + +

    ◆ opj_tcd_tile_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_tile opj_tcd_tile_t
    +
    + +

    FIXME DOC.

    + +
    +
    + +

    ◆ opj_tcd_tilecomp_t

    + +
    +
    + + + + +
    typedef struct opj_tcd_tilecomp opj_tcd_tilecomp_t
    +
    + +

    Tile-component structure.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_alloc_tile_component_data()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_tl_tilec)
    +
    +
    + +

    ◆ opj_tcd_copy_tile_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_src,
    OPJ_SIZE_T p_src_length 
    )
    +
    +
    + +

    ◆ opj_tcd_create()

    + +
    +
    + + + + + + + + +
    opj_tcd_t* opj_tcd_create (OPJ_BOOL p_is_decoder)
    +
    + +

    Dump the content of a tcd structure.

    +

    Create a new TCD handle

    Parameters
    + + +
    p_is_decoderFIXME DOC
    +
    +
    +
    Returns
    Returns a new TCD handle if successful returns NULL otherwise
    +

    Dump the content of a tcd structure.

    + +

    References opj_tcd::m_is_decoder, opj_calloc(), opj_free(), and opj_tcd::tcd_image.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    + +
    +
    + +

    ◆ opj_tcd_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_ttcd,
    OPJ_UINT32 win_x0,
    OPJ_UINT32 win_y0,
    OPJ_UINT32 win_x1,
    OPJ_UINT32 win_y1,
    OPJ_UINT32 numcomps_to_decode,
    const OPJ_UINT32comps_indices,
    OPJ_BYTEsrc,
    OPJ_UINT32 len,
    OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tmanager 
    )
    +
    + +

    Decode a tile from a buffer into a raw image.

    +
    Parameters
    + + + + + + + + + + + + + +
    tcdTCD handle
    win_x0Upper left x of region to decode (in grid coordinates)
    win_y0Upper left y of region to decode (in grid coordinates)
    win_x1Lower right x of region to decode (in grid coordinates)
    win_y1Lower right y of region to decode (in grid coordinates)
    numcomps_to_decodeSize of the comps_indices array, or 0 if decoding all components.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0). Or NULL if decoding all components.
    srcSource buffer
    lenLength of source buffer
    tilenoNumber that identifies one of the tiles to be decoded
    cstr_infoFIXME DOC
    managerthe event manager.
    +
    +
    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_image::numcomps, opj_tcd_tilecomp::numresolutions, opj_alloc_tile_component_data(), opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_alloc(), opj_image_data_free(), opj_malloc(), opj_tcd_dc_level_shift_decode(), opj_tcd_dwt_decode(), opj_tcd_is_whole_tilecomp_decoding(), opj_tcd_mct_decode(), opj_tcd_t1_decode(), opj_tcd_t2_decode(), OPJ_TRUE, opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, SIZE_MAX, opj_tcd::tcd_image, opj_tcd::tcd_tileno, tcp, opj_tcd::tcp, opj_cp::tcps, opj_tcd_image::tiles, opj_tcd::used_component, opj_tcd::whole_tile_decoding, opj_tcd_resolution::win_x0, opj_tcd_tilecomp::win_x0, opj_tcd::win_x0, opj_tcd_resolution::win_x1, opj_tcd_tilecomp::win_x1, opj_tcd::win_x1, opj_tcd_resolution::win_y0, opj_tcd_tilecomp::win_y0, opj_tcd::win_y0, opj_tcd_resolution::win_y1, opj_tcd_tilecomp::win_y1, opj_tcd::win_y1, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_resolution::y1, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_j2k_decode_tile().

    + +
    +
    + +

    ◆ opj_tcd_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tcd_destroy (opj_tcd_ttcd)
    +
    + +

    Destroy a previously created TCD handle.

    +
    Parameters
    + + +
    tcdTCD handle to destroy
    +
    +
    + +

    References opj_free(), opj_tcd_free_tile(), opj_tcd::tcd_image, and opj_tcd::used_component.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_destroy(), and opj_j2k_end_encoding().

    + +
    +
    + +

    ◆ opj_tcd_encode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BYTEp_dest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_len,
    struct opj_codestream_infop_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Encodes a tile from the raw image into the given buffer.

    +
    Parameters
    + + + + + + + + + +
    p_tcdTile Coder handle
    p_tile_noIndex of the tile to encode.
    p_destDestination buffer
    p_data_writtenpointer to an int that is incremented by the number of bytes really written on p_dest
    p_lenMaximum length of the destination buffer
    p_cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    p_managerthe user event manager
    +
    +
    +
    Returns
    true if the coding is successful.
    + +

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::cur_tp_num, opj_codestream_info::index_write, opj_codestream_info::numcomps, opj_codestream_info::numlayers, opj_tcd_tilecomp::numresolutions, opj_calloc(), OPJ_FALSE, opj_tcd_dc_level_shift_encode(), opj_tcd_dwt_encode(), opj_tcd_mct_encode(), opj_tcd_rate_allocate_encode(), opj_tcd_t1_encode(), opj_tcd_t2_encode(), OPJ_TRUE, opj_tile_info::packet, opj_tile_info::pdx, opj_tile_info::pdy, opj_tcd_resolution::ph, opj_tile_info::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_tile_info::pw, opj_tcd_tilecomp::resolutions, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcd_tileno, opj_tcd::tcp, opj_cp::tcps, opj_codestream_info::tile, and opj_tcd_image::tiles.

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_get_decoded_tile_size()

    + + + +

    ◆ opj_tcd_get_encoder_input_buffer_size()

    + +
    +
    + + + + + + + + +
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_tp_tcd)
    +
    + +

    Get the size in bytes of the input buffer provided before encoded.

    +

    This must be the size provided to the p_src_length argument of opj_tcd_copy_tile_data()

    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::image, opj_image::numcomps, opj_image_comp::prec, opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_j2k_encode(), and opj_tcd_copy_tile_data().

    + +
    +
    + +

    ◆ opj_tcd_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init (opj_tcd_tp_tcd,
    opj_image_tp_image,
    opj_cp_tp_cp,
    opj_thread_pool_tp_tp 
    )
    +
    + +

    Initialize the tile coder and may reuse some memory.

    +
    Parameters
    + + + + + +
    p_tcdTCD handle.
    p_imageraw image.
    p_cpcoding parameters.
    p_tpthread pool
    +
    +
    +
    Returns
    true if the encoding values could be set (false otherwise).
    + +

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::image, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_pos, opj_tcd_tile::numcomps, opj_image::numcomps, opj_calloc(), OPJ_FALSE, OPJ_TRUE, opj_tcd::tcd_image, opj_tcd::thread_pool, opj_tcd_image::tiles, and opj_tcd::tp_pos.

    + +

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    + +
    +
    + +

    ◆ opj_tcd_init_decode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Allocates memory for decoding a specific tile.

    +
    Parameters
    + + + + +
    p_tcdthe tile decoder.
    p_tile_nothe index of the tile received in sequence. This not necessarily lead to the tile at index p_tile_no.
    p_managerthe event manager.
    +
    +
    +
    Returns
    true if the remaining data is sufficient.
    + +

    References OPJ_FALSE, and opj_tcd_init_tile().

    + +

    Referenced by opj_j2k_read_tile_header().

    + +
    +
    + +

    ◆ opj_tcd_init_encode_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Initialize the tile coder and may reuse some meory.

    +
    Parameters
    + + + + +
    p_tcdTCD handle.
    p_tile_nocurrent tile index to encode.
    p_managerthe event manager.
    +
    +
    +
    Returns
    true if the encoding values could be set (false otherwise).
    + +

    References opj_tcd_init_tile(), and OPJ_TRUE.

    + +

    Referenced by opj_j2k_pre_write_tile().

    + +
    +
    + +

    ◆ opj_tcd_is_band_empty()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_tband)
    +
    + +

    Returns whether a sub-band is empty (i.e.

    +

    whether it has a null area)

    Parameters
    + + +
    bandSub-band handle.
    +
    +
    +
    Returns
    OPJ_TRUE whether the sub-band is empty.
    + +

    References opj_tcd_band::x0, opj_tcd_band::x1, opj_tcd_band::y0, and opj_tcd_band::y1.

    + +

    Referenced by opj_t1_encode_cblks(), opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_tcd_makelayer(), opj_tcd_makelayer_fixed(), and opj_tcd_rateallocate().

    + +
    +
    + +

    ◆ opj_tcd_is_subband_area_of_interest()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_ttcd,
    OPJ_UINT32 compno,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    +
    + +

    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1.

    +
    Parameters
    + + + + + + + + + +
    tcdTCD handle.
    compnoComponent number
    resnoResolution number
    bandnoBand number (not band index, ie 0, 1, 2 or 3)
    x0Upper left x in subband coordinates
    y0Upper left y in subband coordinates
    x1Lower right x in subband coordinates
    y1Lower right y in subband coordinates
    +
    +
    +
    Returns
    OPJ_TRUE whether the sub-band region contributs to the area of interest.
    + +

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::qmfbid, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcp, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    + +

    Referenced by opj_t1_decode_cblks(), and opj_t2_decode_packets().

    + +
    +
    + +

    ◆ opj_tcd_makelayer()

    + + + +

    ◆ opj_tcd_makelayer_fixed()

    + + + +

    ◆ opj_tcd_marker_info_create()

    + +
    +
    + + + + + + + + +
    opj_tcd_marker_info_t* opj_tcd_marker_info_create (OPJ_BOOL need_PLT)
    +
    + +

    Create a new opj_tcd_marker_info_t* structure.

    +
    Parameters
    + + +
    need_PLTWhether information is needed to generate PLT markers.
    +
    +
    + +

    References opj_tcd_marker_info::need_PLT, and opj_calloc().

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_marker_info_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_tp_tcd_marker_info)
    +
    + +

    Destroy a previously created opj_tcd_marker_info_t* structure.

    +
    Parameters
    + + +
    p_tcd_marker_infoStructure to destroy
    +
    +
    + +

    References opj_free(), and opj_tcd_marker_info::p_packet_size.

    + +

    Referenced by opj_j2k_write_sod().

    + +
    +
    + +

    ◆ opj_tcd_rateallocate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_ttcd,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_tcd_rateallocate_fixed()

    + +
    +
    + + + + + + + + +
    void opj_tcd_rateallocate_fixed (opj_tcd_ttcd)
    +
    +
    + +

    ◆ opj_tcd_reinit_segment()

    + +
    +
    + + + + + + + + +
    void opj_tcd_reinit_segment (opj_tcd_seg_tseg)
    +
    + +

    Reinitialize a segment.

    + +

    Referenced by opj_t2_init_seg(), and opj_tcd_code_block_dec_allocate().

    + +
    +
    + +

    ◆ opj_tcd_update_tile_data()

    + + +
    + + + + diff --git a/build/doc/html/tcd_8h_source.html b/build/doc/html/tcd_8h_source.html new file mode 100644 index 000000000..5155583be --- /dev/null +++ b/build/doc/html/tcd_8h_source.html @@ -0,0 +1,770 @@ + + + + + + + +OpenJPEG: tcd.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    tcd.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    +
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    16  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    +
    17  * All rights reserved.
    +
    18  *
    +
    19  * Redistribution and use in source and binary forms, with or without
    +
    20  * modification, are permitted provided that the following conditions
    +
    21  * are met:
    +
    22  * 1. Redistributions of source code must retain the above copyright
    +
    23  * notice, this list of conditions and the following disclaimer.
    +
    24  * 2. Redistributions in binary form must reproduce the above copyright
    +
    25  * notice, this list of conditions and the following disclaimer in the
    +
    26  * documentation and/or other materials provided with the distribution.
    +
    27  *
    +
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    38  * POSSIBILITY OF SUCH DAMAGE.
    +
    39  */
    +
    40 #ifndef OPJ_TCD_H
    +
    41 #define OPJ_TCD_H
    +
    42 
    +
    52 
    +
    53 
    +
    57 typedef struct opj_tcd_pass {
    + + + + + +
    63 
    +
    67 typedef struct opj_tcd_layer {
    +
    68  OPJ_UINT32 numpasses; /* Number of passes in the layer */
    +
    69  OPJ_UINT32 len; /* len of information */
    +
    70  OPJ_FLOAT64 disto; /* add for index (Cfr. Marcela) */
    +
    71  OPJ_BYTE *data; /* data */
    + +
    73 
    +
    77 typedef struct opj_tcd_cblk_enc {
    +
    78  OPJ_BYTE* data; /* Data */
    +
    79  opj_tcd_layer_t* layers; /* layer information */
    +
    80  opj_tcd_pass_t* passes; /* information about the passes */
    + +
    82  y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
    + + +
    85  OPJ_UINT32 data_size; /* Size of allocated data buffer */
    + +
    87  numpasses; /* number of pass already done for the code-blocks */
    +
    88  OPJ_UINT32 numpassesinlayers; /* number of passes in the layer */
    +
    89  OPJ_UINT32 totalpasses; /* total number of passes */
    + +
    91 
    +
    92 
    +
    94 typedef struct opj_tcd_seg_data_chunk {
    +
    95  /* Point to tilepart buffer. We don't make a copy !
    +
    96  So the tilepart buffer must be kept alive
    +
    97  as long as we need to decode the codeblocks */
    + +
    99  OPJ_UINT32 len; /* Usable length of data */
    + +
    101 
    +
    105 typedef struct opj_tcd_seg {
    +
    106  OPJ_UINT32 len; /* Size of data related to this segment */
    +
    107  /* Number of passes decoded. Including those that we skip */
    + +
    109  /* Number of passes actually to be decoded. To be used for code-block decoding */
    + +
    111  /* Maximum number of passes for this segment */
    + +
    113  /* Number of new passes for current packed. Transitory value */
    + +
    115  /* Codestream length for this segment for current packed. Transitory value */
    + +
    117 } opj_tcd_seg_t;
    +
    118 
    +
    120 typedef struct opj_tcd_cblk_dec {
    +
    121  opj_tcd_seg_t* segs; /* segments information */
    +
    122  opj_tcd_seg_data_chunk_t* chunks; /* Array of chunks */
    +
    123  /* position of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
    + + +
    126  /* number of bits for len, for the current packet. Transitory value */
    + +
    128  /* number of pass added to the code-blocks, for the current packet. Transitory value */
    + +
    130  /* number of segments, including those of packet we skip */
    + +
    132  /* number of segments, to be used for code block decoding */
    + +
    134  OPJ_UINT32 m_current_max_segs; /* allocated number of segs[] items */
    +
    135  OPJ_UINT32 numchunks; /* Number of valid chunks items */
    +
    136  OPJ_UINT32 numchunksalloc; /* Number of chunks item allocated */
    +
    137  /* Decoded code-block. Only used for subtile decoding. Otherwise tilec->data is directly updated */
    + + +
    140 
    +
    142 typedef struct opj_tcd_precinct {
    +
    143  /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
    + +
    145  OPJ_UINT32 cw, ch; /* number of code-blocks, in width and height */
    +
    146  union { /* code-blocks information */
    + + +
    149  void* blocks;
    +
    150  } cblks;
    +
    151  OPJ_UINT32 block_size; /* size taken by cblks (in bytes) */
    +
    152  opj_tgt_tree_t *incltree; /* inclusion tree */
    +
    153  opj_tgt_tree_t *imsbtree; /* IMSB tree */
    + +
    155 
    +
    157 typedef struct opj_tcd_band {
    +
    158  /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
    + +
    160  /* band number: for lowest resolution level (0=LL), otherwise (1=HL, 2=LH, 3=HH) */
    + +
    162  /* precinct information */
    + +
    164  /* size of data taken by precincts */
    + + + + +
    169 
    +
    171 typedef struct opj_tcd_resolution {
    +
    172  /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
    + +
    174  /* number of precincts, in width and height, for this resolution level */
    + +
    176  /* number of sub-bands for the resolution level (1 for lowest resolution level, 3 otherwise) */
    + +
    178  /* subband information */
    + +
    180 
    +
    181  /* dimension of the resolution limited to window of interest. Only valid if tcd->whole_tile_decoding is set */
    + + + + + +
    187 
    +
    189 typedef struct opj_tcd_tilecomp {
    +
    190  /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
    + +
    192  /* component number */
    + +
    194  /* number of resolutions level */
    + +
    196  /* number of resolutions level to decode (at max)*/
    + +
    198  /* resolutions information */
    + +
    200  /* size of data for resolutions (in bytes) */
    + +
    202 
    +
    203  /* data of the component. For decoding, only valid if tcd->whole_tile_decoding is set (so exclusive of data_win member) */
    + +
    205  /* if true, then need to free after usage, otherwise do not free */
    + +
    207  /* we may either need to allocate this amount of data, or re-use image data and ignore this value */
    + +
    209  /* size of the data of the component */
    +
    210  size_t data_size;
    +
    211 
    + +
    214  /* dimension of the component limited to window of interest. Only valid for decoding and if tcd->whole_tile_decoding is NOT set */
    + + + + +
    219 
    +
    220  /* add fixed_quality */
    + + +
    223 
    +
    224 
    +
    228 typedef struct opj_tcd_tile {
    +
    229  /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
    + +
    231  OPJ_UINT32 numcomps; /* number of components in tile */
    +
    232  opj_tcd_tilecomp_t *comps; /* Components information */
    +
    233  OPJ_INT32 numpix; /* add fixed_quality */
    +
    234  OPJ_FLOAT64 distotile; /* add fixed_quality */
    +
    235  OPJ_FLOAT64 distolayer[100]; /* add fixed_quality */
    +
    236  OPJ_UINT32 packno; /* packet number */
    + +
    238 
    +
    242 typedef struct opj_tcd_image {
    +
    243  opj_tcd_tile_t *tiles; /* Tiles information */
    +
    244 }
    + +
    246 
    +
    247 
    +
    251 typedef struct opj_tcd {
    + + + + + + + + + + + + + + + + + +
    283  /* Array of size image->numcomps indicating if a component must be decoded. NULL if all components must be decoded */
    + +
    285 } opj_tcd_t;
    +
    286 
    +
    291 typedef struct opj_tcd_marker_info {
    + +
    294 
    + +
    297 
    + + +
    302 
    +
    305 /* ----------------------------------------------------------------------- */
    +
    306 
    +
    310 /*void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);*/ /* TODO MSD shoul use the new v2 structures */
    +
    311 
    +
    317 opj_tcd_t* opj_tcd_create(OPJ_BOOL p_is_decoder);
    +
    318 
    +
    323 void opj_tcd_destroy(opj_tcd_t *tcd);
    +
    324 
    +
    325 
    + +
    331 
    +
    332 
    +
    337 void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info);
    +
    338 
    +
    339 
    + +
    350  opj_image_t * p_image,
    +
    351  opj_cp_t * p_cp,
    +
    352  opj_thread_pool_t* p_tp);
    +
    353 
    + +
    365  opj_event_mgr_t* p_manager);
    +
    366 
    + +
    368  OPJ_UINT32 final);
    +
    369 
    + +
    371 
    +
    372 void opj_tcd_makelayer(opj_tcd_t *tcd,
    +
    373  OPJ_UINT32 layno,
    +
    374  OPJ_FLOAT64 thresh,
    +
    375  OPJ_UINT32 final);
    +
    376 
    + +
    378  OPJ_BYTE *dest,
    +
    379  OPJ_UINT32 * p_data_written,
    +
    380  OPJ_UINT32 len,
    +
    381  opj_codestream_info_t *cstr_info,
    +
    382  opj_event_mgr_t *p_manager);
    +
    383 
    + +
    388  OPJ_BOOL take_into_account_partial_decoding);
    +
    389 
    + +
    403  OPJ_UINT32 p_tile_no,
    +
    404  OPJ_BYTE *p_dest,
    +
    405  OPJ_UINT32 * p_data_written,
    +
    406  OPJ_UINT32 p_len,
    +
    407  struct opj_codestream_info *p_cstr_info,
    +
    408  opj_tcd_marker_info_t* p_marker_info,
    +
    409  opj_event_mgr_t *p_manager);
    +
    410 
    +
    411 
    + +
    430  OPJ_UINT32 win_x0,
    +
    431  OPJ_UINT32 win_y0,
    +
    432  OPJ_UINT32 win_x1,
    +
    433  OPJ_UINT32 win_y1,
    +
    434  OPJ_UINT32 numcomps_to_decode,
    +
    435  const OPJ_UINT32 *comps_indices,
    +
    436  OPJ_BYTE *src,
    +
    437  OPJ_UINT32 len,
    +
    438  OPJ_UINT32 tileno,
    +
    439  opj_codestream_index_t *cstr_info,
    +
    440  opj_event_mgr_t *manager);
    +
    441 
    +
    442 
    + +
    447  OPJ_BYTE * p_dest,
    +
    448  OPJ_UINT32 p_dest_length);
    +
    449 
    + +
    456 
    + +
    467  OPJ_UINT32 p_tile_no, opj_event_mgr_t* p_manager);
    +
    468 
    + +
    475  OPJ_BYTE * p_src,
    +
    476  OPJ_SIZE_T p_src_length);
    +
    477 
    + +
    484 
    + +
    490 
    + +
    493 
    +
    494 
    + +
    510  OPJ_UINT32 compno,
    +
    511  OPJ_UINT32 resno,
    +
    512  OPJ_UINT32 bandno,
    +
    513  OPJ_UINT32 x0,
    +
    514  OPJ_UINT32 y0,
    +
    515  OPJ_UINT32 x1,
    +
    516  OPJ_UINT32 y1);
    +
    517 
    +
    518 /* ----------------------------------------------------------------------- */
    +
    522 
    +
    523 #endif /* OPJ_TCD_H */
    +
    +
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    +
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *src, OPJ_UINT32 len, OPJ_UINT32 tileno, opj_codestream_index_t *cstr_info, opj_event_mgr_t *manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    +
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    +
    OPJ_BOOL ownsData
    Definition: tcd.h:206
    +
    OPJ_UINT32 numpassesinlayers
    Definition: tcd.h:88
    +
    OPJ_UINT32 cw
    Definition: tcd.h:145
    +
    #define J2K_CCP_CBLKSTY_PTERM
    Predictable termination.
    Definition: j2k.h:62
    +
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    OPJ_BITFIELD m_fixed_quality
    add fixed_quality
    Definition: j2k.h:329
    +
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    +
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    +
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    +
    static INLINE OPJ_INT32 opj_int64_ceildivpow2(OPJ_INT64 a, OPJ_INT32 b)
    Divide a 64bits integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:189
    +
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    +
    OPJ_FLOAT32 * m_mct_coding_matrix
    the mct coding matrix
    Definition: j2k.h:288
    +
    OPJ_INT32 x0
    Definition: tcd.h:81
    +
    OPJ_UINT32 cur_pino
    Current Packet iterator number.
    Definition: tcd.h:261
    +
    struct opj_tcd_seg_data_chunk opj_tcd_seg_data_chunk_t
    Chunk of codestream data that is part of a code block.
    +
    OPJ_UINT32 win_x0
    Definition: tcd.h:215
    +
    opj_image_t * image
    image header
    Definition: tcd.h:265
    +
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    +
    OPJ_INT32 tp_pos
    Position of the tilepart flag in Progression order.
    Definition: tcd.h:253
    +
    FIXME DOC.
    Definition: tcd.h:77
    +
    static INLINE long opj_lrintf(float f)
    Definition: opj_includes.h:174
    +
    static void opj_tcd_code_block_dec_deallocate(opj_tcd_precinct_t *p_precinct)
    Deallocates the decoding data of the given precinct.
    Definition: tcd.c:2279
    +
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    +
    OPJ_INT32 x0
    Definition: tcd.h:159
    +
    struct opj_tcd_image opj_tcd_image_t
    FIXME DOC.
    +
    Segment of a code-block.
    Definition: tcd.h:105
    +
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    +
    double distotile
    add fixed_quality
    Definition: openjpeg.h:829
    +
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    +
    struct opj_tcd_seg opj_tcd_seg_t
    Segment of a code-block.
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:216
    +
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    +
    OPJ_UINT32 maxpasses
    Definition: tcd.h:112
    +
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    +
    OPJ_INT32 x0
    Definition: tcd.h:173
    +
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    +
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    +
    OPJ_INT32 y1
    Definition: tcd.h:173
    +
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms()
    FIXME DOC.
    Definition: mct.c:62
    +
    OPJ_INT32 y1
    Definition: tcd.h:144
    +
    OPJ_INT32 x1
    Definition: tcd.h:173
    +
    #define OPJ_J2K_DEFAULT_NB_SEGS
    Definition: openjpeg.h:149
    +
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    +
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    + +
    OPJ_INT32 m_tp_pos
    Position of tile part flag in progression order.
    Definition: j2k.h:319
    +
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    +
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    +
    OPJ_INT32 x1
    Definition: tcd.h:124
    +
    OPJ_UINT32 precincts_data_size
    Definition: tcd.h:165
    +
    opj_tcd_layer_t * layers
    Definition: tcd.h:79
    +
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    +
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    +
    Tier-2 coding.
    Definition: t2.h:54
    +
    static INLINE OPJ_BOOL opj_tcd_init_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BOOL isEncoder, OPJ_FLOAT32 fraction, OPJ_SIZE_T sizeof_block, opj_event_mgr_t *manager)
    Initializes tile coding/decoding.
    Definition: tcd.c:723
    +
    struct opj_tcd_marker_info opj_tcd_marker_info_t
    Structure to hold information needed to generate some markers.
    +
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    +
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    +
    @ THRESH_CALC
    Definition: j2k.h:158
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    +
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    +
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    +
    static OPJ_BOOL opj_tcd_mct_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2427
    +
    OPJ_INT32 y1
    Definition: tcd.h:159
    +
    size_t data_size_needed
    Definition: tcd.h:208
    +
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    +
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    +
    @ tcp
    Definition: query_parser.h:41
    +
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    +
    OPJ_INT32 x1
    Definition: tcd.h:159
    +
    OPJ_FLOAT32 rates[100]
    rates of layers
    Definition: j2k.h:252
    +
    OPJ_INT32 x1
    Definition: tcd.h:191
    +
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    +
    Message handler object used for.
    Definition: event.h:50
    +
    int pdy[33]
    precinct size (in power of 2), in Y for each resolution level
    Definition: openjpeg.h:823
    +
    #define INLINE
    Definition: openjpeg.h:65
    +
    OPJ_UINT32 ph
    Definition: tcd.h:175
    +
    OPJ_INT32 m_dc_level_shift
    the dc_level_shift
    Definition: j2k.h:201
    +
    OPJ_UINT32 cur_tp_num
    Current tile part number.
    Definition: tcd.h:257
    +
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    +
    OPJ_UINT32 len
    Definition: tcd.h:60
    +
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    +
    OPJ_INT32 y1
    Definition: tcd.h:124
    +
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    +
    static OPJ_BOOL opj_tcd_dwt_decode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2004
    +
    Defines a single image component.
    Definition: openjpeg.h:671
    +
    OPJ_BYTE * data
    Definition: tcd.h:78
    +
    static void opj_tcd_free_tile(opj_tcd_t *tcd)
    Free the memory allocated for encoding.
    Definition: tcd.c:1843
    +
    static OPJ_BOOL opj_tcd_dc_level_shift_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2387
    +
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    +
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    +
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    +
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    +
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    +
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    +
    Coding parameters.
    Definition: j2k.h:347
    +
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    +
    OPJ_INT32 x0
    Definition: tcd.h:191
    +
    OPJ_UINT32 pw
    Definition: tcd.h:175
    +
    OPJ_INT32 x0
    Definition: tcd.h:124
    +
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:278
    +
    void opj_tgt_destroy(opj_tgt_tree_t *p_tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    +
    static void opj_tcd_code_block_enc_deallocate(opj_tcd_precinct_t *p_precinct)
    Deallocates the encoding data of the given precinct.
    Definition: tcd.c:2321
    +
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    +
    OPJ_INT32 x1
    Definition: tcd.h:230
    +
    Quantization stepsize.
    Definition: j2k.h:165
    +
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    +
    FIXME DOC.
    Definition: tcd.h:242
    +
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    +
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    +
    Tier-1 coding (coding of code-block coefficients)
    Definition: t1.h:184
    +
    struct opj_tcd opj_tcd_t
    Tile coder/decoder.
    +
    void opj_tcd_makelayer_fixed(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
    Definition: tcd.c:338
    +
    OPJ_FLOAT32 * m_mct_decoding_matrix
    the mct decoding matrix
    Definition: j2k.h:286
    +
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    +
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    +
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    +
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    +
    OPJ_BOOL * used_component
    Definition: tcd.h:284
    +
    FIXME DOC.
    Definition: tcd.h:67
    +
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    +
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    +
    OPJ_INT32 x1
    Definition: tcd.h:144
    +
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    +
    opj_cp_t * cp
    coding parameters
    Definition: tcd.h:267
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    +
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    +
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    +
    opj_tgt_tree_t * imsbtree
    Definition: tcd.h:153
    +
    Precinct structure.
    Definition: tcd.h:142
    +
    struct opj_tcd_precinct opj_tcd_precinct_t
    Precinct structure.
    + +
    OPJ_INT32 y0
    Definition: tcd.h:81
    +
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    +
    OPJ_INT32 x0
    Definition: tcd.h:144
    +
    static OPJ_BOOL opj_tcd_t2_decode(opj_tcd_t *p_tcd, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_src_size, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Definition: tcd.c:1930
    +
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    +
    opj_tgt_tree_t * incltree
    Definition: tcd.h:152
    +
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    +
    FIXME DOC.
    Definition: tcd.h:57
    +
    Tile-component resolution structure.
    Definition: tcd.h:171
    +
    char OPJ_CHAR
    Definition: openjpeg.h:114
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:280
    +
    OPJ_INT32 x1
    Definition: tcd.h:81
    +
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    +
    Tile-component structure.
    Definition: tcd.h:189
    +
    Sub-band structure.
    Definition: tcd.h:157
    +
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    +
    OPJ_UINT32 totalpasses
    Definition: tcd.h:89
    +
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    +
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    +
    static OPJ_BOOL opj_tcd_code_block_dec_allocate(opj_tcd_cblk_dec_t *p_code_block)
    Allocates memory for a decoding code block.
    Definition: tcd.c:1277
    +
    static OPJ_BOOL opj_tcd_t1_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2507
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_len, struct opj_codestream_info *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    +
    OPJ_UINT32 resolutions_size
    Definition: tcd.h:201
    +
    opj_decoding_param_t m_dec
    Definition: j2k.h:396
    +
    static OPJ_BOOL opj_tcd_t1_decode(opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
    Definition: tcd.c:1965
    +
    OPJ_UINT32 m_current_max_segs
    Definition: tcd.h:134
    +
    OPJ_UINT32 data_size
    Definition: tcd.h:85
    +
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: j2k.h:250
    +
    struct opj_tcd_tile opj_tcd_tile_t
    FIXME DOC.
    +
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    +
    OPJ_BITFIELD term
    Definition: tcd.h:61
    +
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    +
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    +
    OPJ_FLOAT64 distortiondec
    Definition: tcd.h:59
    +
    OPJ_INT32 y0
    Definition: tcd.h:173
    +
    OPJ_UINT32 numlenbits
    Definition: tcd.h:84
    +
    struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
    FIXME DOC.
    +
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    +
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    +
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    +
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    +
    static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2543
    +
    static INLINE OPJ_INT64 opj_int64_clamp(OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:137
    +
    int pdx[33]
    precinct size (in power of 2), in X for each resolution level
    Definition: openjpeg.h:821
    +
    OPJ_INT32 x0
    Definition: tcd.h:230
    +
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:218
    +
    OPJ_INT32 numpix
    Definition: tcd.h:233
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    opj_tcp_t * tcp
    coding/decoding parameters common to all tiles
    Definition: tcd.h:269
    +
    OPJ_UINT32 cblkw
    code-blocks width
    Definition: j2k.h:181
    +
    static OPJ_BOOL opj_tcd_dwt_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2482
    +
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    +
    OPJ_UINT32 numchunksalloc
    Definition: tcd.h:136
    +
    struct opj_tcd_tilecomp opj_tcd_tilecomp_t
    Tile-component structure.
    +
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    +
    OPJ_UINT32 tcd_tileno
    current encoded/decoded tile
    Definition: tcd.h:271
    +
    OPJ_UINT32 numlenbits
    Definition: tcd.h:127
    +
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    +
    OPJ_FLOAT64 distotile
    Definition: tcd.h:234
    +
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    +
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    +
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:114
    +
    OPJ_INT32 y1
    Definition: tcd.h:230
    +
    size_t data_size
    Definition: tcd.h:210
    +
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    +
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real()
    FIXME DOC.
    Definition: mct.c:67
    +
    OPJ_INT32 y0
    Definition: tcd.h:191
    +
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    +
    struct opj_tcd_pass opj_tcd_pass_t
    FIXME DOC.
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:279
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    +
    Chunk of codestream data that is part of a code block.
    Definition: tcd.h:94
    +
    OPJ_UINT32 block_size
    Definition: tcd.h:151
    +
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    +
    union opj_tcd_precinct::@3 cblks
    +
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    +
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    +
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    +
    void opj_tcd_makelayer(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
    Definition: tcd.c:237
    +
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    +
    OPJ_INT32 y0
    Definition: tcd.h:144
    +
    OPJ_BOOL need_PLT
    In: Whether information to generate PLT markers in needed.
    Definition: tcd.h:293
    +
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    +
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    +
    int numpix
    add fixed_quality
    Definition: openjpeg.h:827
    +
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:87
    +
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    +
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    +
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    +
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    +
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    +
    OPJ_UINT32 len
    Definition: tcd.h:99
    +
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    +
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:68
    +
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    +
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    +
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    +
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    +
    OPJ_INT32 y0
    Definition: tcd.h:159
    +
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    +
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    +
    void opj_tcd_rateallocate_fixed(opj_tcd_t *tcd)
    Definition: tcd.c:227
    +
    Code-block for decoding.
    Definition: tcd.h:120
    +
    OPJ_FLOAT32 stepsize
    Definition: tcd.h:167
    +
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    +
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    +
    OPJ_INT32 numbps
    Definition: tcd.h:166
    +
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:452
    +
    Tile-component coding parameters.
    Definition: j2k.h:175
    +
    OPJ_INT32 * data
    Definition: tcd.h:204
    +
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data(opj_tcd_cblk_enc_t *p_code_block)
    Allocates data for an encoding code block.
    Definition: tcd.c:1234
    +
    static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:116
    +
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    +
    static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:207
    +
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    +
    OPJ_FLOAT32 distoratio[100]
    add fixed_quality
    Definition: j2k.h:272
    +
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    +
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    +
    OPJ_BITFIELD m_is_decoder
    tell if the tcd is a decoder.
    Definition: tcd.h:273
    +
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    +
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an existing one.
    Definition: tgt.c:136
    +
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Create a new TCD handle.
    Definition: tcd.c:203
    +
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    +
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    +
    FIXME DOC.
    Definition: tcd.h:228
    +
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    +
    OPJ_UINT32 compno
    Definition: tcd.h:193
    +
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    +
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    +
    OPJ_INT32 y0
    Definition: tcd.h:124
    +
    double * thresh
    value of thresh for each layer by tile cfr.
    Definition: openjpeg.h:807
    +
    OPJ_UINT32 packno
    Definition: tcd.h:236
    +
    OPJ_UINT32 len
    Definition: tcd.h:69
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    OPJ_UINT32 len
    Definition: tcd.h:106
    +
    OPJ_FLOAT64 disto
    Definition: tcd.h:70
    +
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    +
    struct opj_tcd_layer opj_tcd_layer_t
    FIXME DOC.
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    OPJ_INT32 y1
    Definition: tcd.h:191
    +
    void opj_tcd_makelayer_fixed(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
    Definition: tcd.c:338
    +
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    +
    OPJ_BYTE * data
    Definition: tcd.h:71
    +
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: j2k.h:193
    +
    OPJ_FLOAT64 * mct_norms
    encoding norms
    Definition: j2k.h:284
    +
    OPJ_UINT32 cur_totnum_tp
    Total number of tileparts of the current tile.
    Definition: tcd.h:259
    +
    OPJ_UINT32 m_reduce
    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
    Definition: j2k.h:337
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    +
    static OPJ_BOOL opj_tcd_rate_allocate_encode(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2584
    +
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    +
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    +
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding(opj_tcd_t *tcd, OPJ_UINT32 compno)
    Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members.
    Definition: tcd.c:2795
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:217
    +
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    +
    OPJ_BYTE * data
    Definition: tcd.h:98
    +
    OPJ_INT32 numpix
    Definition: tcd.h:221
    +
    OPJ_UINT32 numpasses
    Definition: tcd.h:108
    +
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    +
    OPJ_INT32 * m_matrice
    fixed layer
    Definition: j2k.h:321
    +
    Tag tree.
    Definition: tgt.h:67
    +
    struct opj_tcd_resolution opj_tcd_resolution_t
    Tile-component resolution structure.
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    OPJ_INT32 y0
    Definition: tcd.h:230
    +
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:129
    +
    OPJ_BITFIELD m_disto_alloc
    allocation by rate/distortion
    Definition: j2k.h:325
    +
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    +
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    +
    void opj_tcd_makelayer(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
    Definition: tcd.c:237
    +
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Dump the content of a tcd structure.
    Definition: tcd.c:203
    +
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    +
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    +
    OPJ_UINT32 win_x0
    Coordinates of the window of interest, in grid reference space.
    Definition: tcd.h:277
    +
    OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:443
    +
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    +
    OPJ_UINT32 cblkh
    code-blocks height
    Definition: j2k.h:183
    +
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    +
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    +
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    +
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    +
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    +
    OPJ_INT32 y1
    Definition: tcd.h:82
    +
    OPJ_UINT32 rate
    Definition: tcd.h:58
    +
    OPJ_FLOAT64 distolayer[100]
    Definition: tcd.h:235
    +
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    +
    OPJ_UINT32 tp_num
    Tile part number.
    Definition: tcd.h:255
    +
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    +
    static OPJ_BOOL opj_tcd_code_block_enc_allocate(opj_tcd_cblk_enc_t *p_code_block)
    Allocates memory for an encoding code block (but not data).
    Definition: tcd.c:1210
    +
    OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:443
    +
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    +
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    +
    static OPJ_BOOL opj_tcd_mct_decode(opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2035
    +
    void opj_tcd_rateallocate_fixed(opj_tcd_t *tcd)
    Definition: tcd.c:227
    +
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    +
    struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
    Code-block for decoding.
    +
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    +
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    +
    void * blocks
    Definition: tcd.h:149
    +
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    +
    struct opj_tcd_band opj_tcd_band_t
    Sub-band structure.
    +
    static OPJ_BOOL opj_tcd_dc_level_shift_decode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2186
    +
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    +
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    +
    OPJ_UINT32 numsegs
    Definition: tcd.h:131
    +
    OPJ_UINT32 ch
    Definition: tcd.h:145
    +
    Definition: thread.c:605
    +
    Tile coder/decoder.
    Definition: tcd.h:251
    +
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    +
    union opj_cp::@0 m_specific_param
    +
    OPJ_UINT32 newlen
    Definition: tcd.h:116
    +
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    +
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    +
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    + + + + diff --git a/build/doc/html/test__sparse__array_8c.html b/build/doc/html/test__sparse__array_8c.html new file mode 100644 index 000000000..f511ca885 --- /dev/null +++ b/build/doc/html/test__sparse__array_8c.html @@ -0,0 +1,87 @@ + + + + + + + +OpenJPEG: test_sparse_array.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    test_sparse_array.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + +

    +Functions

    int main ()
     
    +

    Function Documentation

    + +

    ◆ main()

    + + +
    + + + + diff --git a/build/doc/html/tgt_8c.html b/build/doc/html/tgt_8c.html new file mode 100644 index 000000000..bb576c15f --- /dev/null +++ b/build/doc/html/tgt_8c.html @@ -0,0 +1,411 @@ + + + + + + + +OpenJPEG: tgt.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tgt.c File Reference
    +
    +
    +
    #include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    opj_tgt_tree_topj_tgt_create (OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
     Create a tag-tree. More...
     
    opj_tgt_tree_topj_tgt_init (opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
     Reinitialises a tag-tree from an existing one. More...
     
    void opj_tgt_destroy (opj_tgt_tree_t *p_tree)
     Destroy a tag-tree, liberating memory. More...
     
    void opj_tgt_reset (opj_tgt_tree_t *p_tree)
     Reset a tag-tree (set all leaves to 0) More...
     
    void opj_tgt_setvalue (opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
     Set the value of a leaf of a tag-tree. More...
     
    void opj_tgt_encode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Encode the value of a leaf of the tag-tree up to a given threshold. More...
     
    OPJ_UINT32 opj_tgt_decode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Decode the value of a leaf of the tag-tree up to a given threshold. More...
     
    +

    Function Documentation

    + +

    ◆ opj_tgt_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_tgt_tree_t* opj_tgt_create (OPJ_UINT32 numleafsh,
    OPJ_UINT32 numleafsv,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Create a tag-tree.

    +
    Parameters
    + + + + +
    numleafshWidth of the array of leafs of the tree
    numleafsvHeight of the array of leafs of the tree
    p_managerthe event manager
    +
    +
    +
    Returns
    Returns a new tag-tree if successful, returns NULL otherwise
    + +

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_calloc(), opj_event_msg(), opj_free(), opj_tgt_reset(), and opj_tgt_node::parent.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tgt_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_tgt_decode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    +
    + +

    Decode the value of a leaf of the tag-tree up to a given threshold.

    +
    Parameters
    + + + + + +
    bioPointer to a BIO handle
    treeTag-tree to decode
    leafnoNumber that identifies the leaf to decode
    thresholdThreshold to use when decoding value of the leaf
    +
    +
    +
    Returns
    Returns 1 if the node's value < threshold, returns 0 otherwise
    + +

    References opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_read(), opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_tgt_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tgt_destroy (opj_tgt_tree_ttree)
    +
    + +

    Destroy a tag-tree, liberating memory.

    +
    Parameters
    + + +
    treeTag-tree to destroy
    +
    +
    + +

    References opj_tgt_tree::nodes, and opj_free().

    + +

    Referenced by opj_tcd_free_tile(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_tgt_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_tgt_encode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    +
    + +

    Encode the value of a leaf of the tag-tree up to a given threshold.

    +
    Parameters
    + + + + + +
    bioPointer to a BIO handle
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to encode
    thresholdThreshold to use when encoding value of the leaf
    +
    +
    + +

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_write(), opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_tgt_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_tgt_tree_t* opj_tgt_init (opj_tgt_tree_tp_tree,
    OPJ_UINT32 p_num_leafs_h,
    OPJ_UINT32 p_num_leafs_v,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reinitialises a tag-tree from an existing one.

    +

    Reinitialises a tag-tree from an exixting one.

    +
    Parameters
    + + + + +
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    +
    +
    +
    Returns
    a new tag-tree if successful, NULL otherwise
    + +

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_event_msg(), opj_realloc(), opj_tgt_destroy(), opj_tgt_reset(), and opj_tgt_node::parent.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tgt_reset()

    + +
    +
    + + + + + + + + +
    void opj_tgt_reset (opj_tgt_tree_ttree)
    +
    + +

    Reset a tag-tree (set all leaves to 0)

    +
    Parameters
    + + +
    treeTag-tree to reset
    +
    +
    + +

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_tgt_tree::numnodes, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_tgt_setvalue()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_tgt_setvalue (opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 value 
    )
    +
    + +

    Set the value of a leaf of a tag-tree.

    +
    Parameters
    + + + + +
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to modify
    valueNew value of the leaf
    +
    +
    + +

    References opj_tgt_tree::nodes, opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/tgt_8h.html b/build/doc/html/tgt_8h.html new file mode 100644 index 000000000..2bc811039 --- /dev/null +++ b/build/doc/html/tgt_8h.html @@ -0,0 +1,481 @@ + + + + + + + +OpenJPEG: tgt.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tgt.h File Reference
    +
    +
    + +

    Implementation of a tag-tree coder (TGT) +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  opj_tgt_node
     Tag node. More...
     
    struct  opj_tgt_tree
     Tag tree. More...
     
    + + + + + + + +

    +Typedefs

    typedef struct opj_tgt_node opj_tgt_node_t
     Tag node. More...
     
    typedef struct opj_tgt_tree opj_tgt_tree_t
     Tag tree. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    Exported functions
    opj_tgt_tree_topj_tgt_create (OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
     Create a tag-tree. More...
     
    opj_tgt_tree_topj_tgt_init (opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
     Reinitialises a tag-tree from an exixting one. More...
     
    void opj_tgt_destroy (opj_tgt_tree_t *tree)
     Destroy a tag-tree, liberating memory. More...
     
    void opj_tgt_reset (opj_tgt_tree_t *tree)
     Reset a tag-tree (set all leaves to 0) More...
     
    void opj_tgt_setvalue (opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
     Set the value of a leaf of a tag-tree. More...
     
    void opj_tgt_encode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Encode the value of a leaf of the tag-tree up to a given threshold. More...
     
    OPJ_UINT32 opj_tgt_decode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Decode the value of a leaf of the tag-tree up to a given threshold. More...
     
    +

    Detailed Description

    +

    Implementation of a tag-tree coder (TGT)

    +

    The functions in TGT.C have for goal to realize a tag-tree coder. The functions in TGT.C are used by some function in T2.C.

    +

    Typedef Documentation

    + +

    ◆ opj_tgt_node_t

    + +
    +
    + + + + +
    typedef struct opj_tgt_node opj_tgt_node_t
    +
    + +

    Tag node.

    + +
    +
    + +

    ◆ opj_tgt_tree_t

    + +
    +
    + + + + +
    typedef struct opj_tgt_tree opj_tgt_tree_t
    +
    + +

    Tag tree.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_tgt_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_tgt_tree_t* opj_tgt_create (OPJ_UINT32 numleafsh,
    OPJ_UINT32 numleafsv,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Create a tag-tree.

    +
    Parameters
    + + + + +
    numleafshWidth of the array of leafs of the tree
    numleafsvHeight of the array of leafs of the tree
    p_managerthe event manager
    +
    +
    +
    Returns
    Returns a new tag-tree if successful, returns NULL otherwise
    + +

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_calloc(), opj_event_msg(), opj_free(), opj_tgt_reset(), and opj_tgt_node::parent.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tgt_decode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_UINT32 opj_tgt_decode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    +
    + +

    Decode the value of a leaf of the tag-tree up to a given threshold.

    +
    Parameters
    + + + + + +
    bioPointer to a BIO handle
    treeTag-tree to decode
    leafnoNumber that identifies the leaf to decode
    thresholdThreshold to use when decoding value of the leaf
    +
    +
    +
    Returns
    Returns 1 if the node's value < threshold, returns 0 otherwise
    + +

    References opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_read(), opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_read_packet_header().

    + +
    +
    + +

    ◆ opj_tgt_destroy()

    + +
    +
    + + + + + + + + +
    void opj_tgt_destroy (opj_tgt_tree_ttree)
    +
    + +

    Destroy a tag-tree, liberating memory.

    +
    Parameters
    + + +
    treeTag-tree to destroy
    +
    +
    + +

    References opj_tgt_tree::nodes, and opj_free().

    + +

    Referenced by opj_tcd_free_tile(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_tgt_encode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_tgt_encode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    +
    + +

    Encode the value of a leaf of the tag-tree up to a given threshold.

    +
    Parameters
    + + + + + +
    bioPointer to a BIO handle
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to encode
    thresholdThreshold to use when encoding value of the leaf
    +
    +
    + +

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_write(), opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    + +

    ◆ opj_tgt_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    opj_tgt_tree_t* opj_tgt_init (opj_tgt_tree_tp_tree,
    OPJ_UINT32 p_num_leafs_h,
    OPJ_UINT32 p_num_leafs_v,
    opj_event_mgr_tp_manager 
    )
    +
    + +

    Reinitialises a tag-tree from an exixting one.

    +
    Parameters
    + + + + + +
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    p_managerthe event manager
    +
    +
    +
    Returns
    a new tag-tree if successful, NULL otherwise
    +

    Reinitialises a tag-tree from an exixting one.

    +
    Parameters
    + + + + +
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    +
    +
    +
    Returns
    a new tag-tree if successful, NULL otherwise
    + +

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_event_msg(), opj_realloc(), opj_tgt_destroy(), opj_tgt_reset(), and opj_tgt_node::parent.

    + +

    Referenced by opj_tcd_init_tile().

    + +
    +
    + +

    ◆ opj_tgt_reset()

    + +
    +
    + + + + + + + + +
    void opj_tgt_reset (opj_tgt_tree_ttree)
    +
    + +

    Reset a tag-tree (set all leaves to 0)

    +
    Parameters
    + + +
    treeTag-tree to reset
    +
    +
    + +

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_tgt_tree::numnodes, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tgt_create(), and opj_tgt_init().

    + +
    +
    + +

    ◆ opj_tgt_setvalue()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void opj_tgt_setvalue (opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 value 
    )
    +
    + +

    Set the value of a leaf of a tag-tree.

    +
    Parameters
    + + + + +
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to modify
    valueNew value of the leaf
    +
    +
    + +

    References opj_tgt_tree::nodes, opj_tgt_node::parent, and opj_tgt_node::value.

    + +

    Referenced by opj_t2_encode_packet().

    + +
    +
    +
    + + + + diff --git a/build/doc/html/tgt_8h_source.html b/build/doc/html/tgt_8h_source.html new file mode 100644 index 000000000..939700da5 --- /dev/null +++ b/build/doc/html/tgt_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +OpenJPEG: tgt.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    tgt.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    +
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    +
    9  * Copyright (c) 2001-2003, David Janssens
    +
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    +
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    +
    12  * Copyright (c) 2003-2014, Antonin Descampe
    +
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    +
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    +
    15  * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    +
    16  * Copyright (c) 2012, CS Systemes d'Information, France
    +
    17  * All rights reserved.
    +
    18  *
    +
    19  * Redistribution and use in source and binary forms, with or without
    +
    20  * modification, are permitted provided that the following conditions
    +
    21  * are met:
    +
    22  * 1. Redistributions of source code must retain the above copyright
    +
    23  * notice, this list of conditions and the following disclaimer.
    +
    24  * 2. Redistributions in binary form must reproduce the above copyright
    +
    25  * notice, this list of conditions and the following disclaimer in the
    +
    26  * documentation and/or other materials provided with the distribution.
    +
    27  *
    +
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    38  * POSSIBILITY OF SUCH DAMAGE.
    +
    39  */
    +
    40 
    +
    41 #ifndef OPJ_TGT_H
    +
    42 #define OPJ_TGT_H
    +
    43 
    +
    53 
    +
    57 typedef struct opj_tgt_node {
    + + + + + +
    63 
    +
    67 typedef struct opj_tgt_tree {
    + + + + +
    72  OPJ_UINT32 nodes_size; /* maximum size taken by nodes */
    + +
    74 
    +
    75 
    +
    78 /* ----------------------------------------------------------------------- */
    + +
    87  opj_event_mgr_t *p_manager);
    +
    88 
    + +
    99  OPJ_UINT32 p_num_leafs_h,
    +
    100  OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager);
    +
    105 void opj_tgt_destroy(opj_tgt_tree_t *tree);
    +
    110 void opj_tgt_reset(opj_tgt_tree_t *tree);
    + +
    118  OPJ_UINT32 leafno,
    +
    119  OPJ_INT32 value);
    +
    127 void opj_tgt_encode(opj_bio_t *bio,
    +
    128  opj_tgt_tree_t *tree,
    +
    129  OPJ_UINT32 leafno,
    +
    130  OPJ_INT32 threshold);
    + +
    140  opj_tgt_tree_t *tree,
    +
    141  OPJ_UINT32 leafno,
    +
    142  OPJ_INT32 threshold);
    +
    143 /* ----------------------------------------------------------------------- */
    +
    147 
    +
    148 #endif /* OPJ_TGT_H */
    +
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    struct opj_tgt_node opj_tgt_node_t
    Tag node.
    +
    int main()
    Definition: test_sparse_array.c:36
    +
    void opj_tgt_reset(opj_tgt_tree_t *tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    +
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    +
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    +
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    +
    Tag node.
    Definition: tgt.h:57
    +
    Message handler object used for.
    Definition: event.h:50
    +
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    +
    void opj_tgt_destroy(opj_tgt_tree_t *p_tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    +
    OPJ_UINT32 numleafsh
    Definition: tgt.h:68
    +
    OPJ_INT32 low
    Definition: tgt.h:60
    +
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    OPJ_INT32 value
    Definition: tgt.h:59
    +
    OPJ_UINT32 known
    Definition: tgt.h:61
    + +
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    +
    void opj_tgt_reset(opj_tgt_tree_t *p_tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    +
    OPJ_UINT32 numnodes
    Definition: tgt.h:70
    +
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    +
    void opj_tgt_destroy(opj_tgt_tree_t *tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    +
    opj_tgt_node_t * nodes
    Definition: tgt.h:71
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    Definition: sparse_array.c:35
    +
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    +
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    +
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    +
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    +
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    +
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an existing one.
    Definition: tgt.c:136
    +
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    +
    OPJ_UINT32 numleafsv
    Definition: tgt.h:69
    +
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    +
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    struct opj_tgt_node * parent
    Definition: tgt.h:58
    +
    Tag tree.
    Definition: tgt.h:67
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an exixting one.
    Definition: tgt.c:136
    +
    OPJ_UINT32 nodes_size
    Definition: tgt.h:72
    +
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    +
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    +
    struct opj_tgt_tree opj_tgt_tree_t
    Tag tree.
    + + + + diff --git a/build/doc/html/thix__manager_8c.html b/build/doc/html/thix__manager_8c.html new file mode 100644 index 000000000..177c0a7f9 --- /dev/null +++ b/build/doc/html/thix__manager_8c.html @@ -0,0 +1,169 @@ + + + + + + + +OpenJPEG: thix_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    thix_manager.c File Reference
    +
    +
    + +

    Modification of jpip.c from 2KAN indexer. +More...

    +
    #include "opj_includes.h"
    +
    + + + + + +

    +Functions

    int opj_write_thix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tilemhix (int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.c from 2KAN indexer.

    +

    Function Documentation

    + +

    ◆ opj_write_thix()

    + + + +

    ◆ opj_write_tilemhix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tilemhix (int coff,
    opj_codestream_info_t cstr_info,
    int tileno,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/thread_8c.html b/build/doc/html/thread_8c.html new file mode 100644 index 000000000..5f327831a --- /dev/null +++ b/build/doc/html/thread_8c.html @@ -0,0 +1,1034 @@ + + + + + + + +OpenJPEG: thread.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    thread.c File Reference
    +
    +
    +
    #include <assert.h>
    +#include "opj_includes.h"
    +
    + + + + + + + + + + + + + + + +

    +Data Structures

    struct  opj_tls_key_val_t
     
    struct  opj_tls_t
     
    struct  opj_worker_thread_job_t
     
    struct  opj_worker_thread_t
     
    struct  opj_job_list_t
     
    struct  opj_worker_thread_list_t
     
    struct  opj_thread_pool_t
     
    + + + + + +

    +Typedefs

    typedef struct opj_job_list_t opj_job_list_t
     
    typedef struct opj_worker_thread_list_t opj_worker_thread_list_t
     
    + + + +

    +Enumerations

    enum  opj_worker_thread_state { OPJWTS_OK, +OPJWTS_STOP, +OPJWTS_ERROR + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void)
     Returns if the library is built with thread support. More...
     
    int OPJ_CALLCONV opj_get_num_cpus (void)
     Return the number of virtual CPUs. More...
     
    opj_mutex_topj_mutex_create (void)
     Creates a mutex. More...
     
    void opj_mutex_lock (opj_mutex_t *mutex)
     Lock/acquire the mutex. More...
     
    void opj_mutex_unlock (opj_mutex_t *mutex)
     Unlock/release the mutex. More...
     
    void opj_mutex_destroy (opj_mutex_t *mutex)
     Destroy a mutex. More...
     
    opj_cond_topj_cond_create (void)
     Creates a condition. More...
     
    void opj_cond_wait (opj_cond_t *cond, opj_mutex_t *mutex)
     Wait for the condition to be signaled. More...
     
    void opj_cond_signal (opj_cond_t *cond)
     Signal waiting threads on a condition. More...
     
    void opj_cond_destroy (opj_cond_t *cond)
     Destroy a condition. More...
     
    opj_thread_topj_thread_create (opj_thread_fn thread_fn, void *user_data)
     Creates a new thread. More...
     
    void opj_thread_join (opj_thread_t *thread)
     Wait for a thread to be finished and release associated resources to the thread handle. More...
     
    static opj_tls_topj_tls_new (void)
     
    static void opj_tls_destroy (opj_tls_t *tls)
     
    void * opj_tls_get (opj_tls_t *tls, int key)
     Get a thread local value corresponding to the provided key. More...
     
    OPJ_BOOL opj_tls_set (opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
     Set a thread local value corresponding to the provided key. More...
     
    static OPJ_BOOL opj_thread_pool_setup (opj_thread_pool_t *tp, int num_threads)
     
    static opj_worker_thread_job_topj_thread_pool_get_next_job (opj_thread_pool_t *tp, opj_worker_thread_t *worker_thread, OPJ_BOOL signal_job_finished)
     
    opj_thread_pool_topj_thread_pool_create (int num_threads)
     Create a new thread pool. More...
     
    static void opj_worker_thread_function (void *user_data)
     
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
     Submit a new job to be run by one of the thread in the thread pool. More...
     
    void opj_thread_pool_wait_completion (opj_thread_pool_t *tp, int max_remaining_jobs)
     Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool. More...
     
    int opj_thread_pool_get_thread_count (opj_thread_pool_t *tp)
     Return the number of threads associated with the thread pool. More...
     
    void opj_thread_pool_destroy (opj_thread_pool_t *tp)
     Destroy a thread pool. More...
     
    +

    Typedef Documentation

    + +

    ◆ opj_job_list_t

    + +
    +
    + + + + +
    typedef struct opj_job_list_t opj_job_list_t
    +
    + +
    +
    + +

    ◆ opj_worker_thread_list_t

    + +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ opj_worker_thread_state

    + +
    +
    + + + + +
    enum opj_worker_thread_state
    +
    + + + + +
    Enumerator
    OPJWTS_OK 
    OPJWTS_STOP 
    OPJWTS_ERROR 
    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_cond_create()

    + +
    +
    + + + + + + + + +
    opj_cond_t* opj_cond_create (void )
    +
    + +

    Creates a condition.

    +
    Returns
    the condition or NULL in case of error (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_cond_destroy()

    + +
    +
    + + + + + + + + +
    void opj_cond_destroy (opj_cond_tcond)
    +
    + +

    Destroy a condition.

    +
    Parameters
    + + +
    condthe condition to destroy.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_cond_signal()

    + +
    +
    + + + + + + + + +
    void opj_cond_signal (opj_cond_tcond)
    +
    + +

    Signal waiting threads on a condition.

    +

    One of the thread waiting with opj_cond_wait() will be waken up. It is strongly advised that this call is done with the mutex that is used by opj_cond_wait(), in a acquired state.

    Parameters
    + + +
    condthe condition to signal.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), and opj_thread_pool_submit_job().

    + +
    +
    + +

    ◆ opj_cond_wait()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_cond_wait (opj_cond_tcond,
    opj_mutex_tmutex 
    )
    +
    + +

    Wait for the condition to be signaled.

    +

    The semantics is the same as the POSIX pthread_cond_wait. The provided mutex must be acquired before calling this function, and released afterwards. The mutex will be released by this function while it must wait for the condition and reacquired afterwards. In some particular situations, the function might return even if the condition is not signaled with opj_cond_signal(), hence the need to check with an application level mechanism.

    +

    Waiting thread :

    +
    while( !some_application_level_condition )
    +
    {
    + +
    }
    + +

    Signaling thread :

    +
    some_application_level_condition = TRUE;
    + + +
    Parameters
    + + + +
    condthe condition to wait.
    mutexthe mutex (in acquired state before calling this function)
    +
    +
    + +

    Referenced by opj_thread_pool_get_next_job(), opj_thread_pool_setup(), opj_thread_pool_submit_job(), and opj_thread_pool_wait_completion().

    + +
    +
    + +

    ◆ opj_get_num_cpus()

    + +
    +
    + + + + + + + + +
    int OPJ_CALLCONV opj_get_num_cpus (void )
    +
    + +

    Return the number of virtual CPUs.

    + +

    Referenced by opj_j2k_get_default_thread_count().

    + +
    +
    + +

    ◆ opj_has_thread_support()

    + +
    +
    + + + + + + + + +
    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void )
    +
    + +

    Returns if the library is built with thread support.

    +

    OPJ_TRUE if mutex, condition, thread, thread pool are available.

    + +

    References OPJ_FALSE.

    + +

    Referenced by opj_j2k_get_default_thread_count(), and opj_j2k_set_threads().

    + +
    +
    + +

    ◆ opj_mutex_create()

    + +
    +
    + + + + + + + + +
    opj_mutex_t* opj_mutex_create (void )
    +
    + +

    Creates a mutex.

    +
    Returns
    the mutex or NULL in case of error (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_create(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_mutex_destroy()

    + +
    +
    + + + + + + + + +
    void opj_mutex_destroy (opj_mutex_tmutex)
    +
    + +

    Destroy a mutex.

    +
    Parameters
    + + +
    mutexthe mutex to destroy.
    +
    +
    + +

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_destroy(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_mutex_lock()

    + +
    +
    + + + + + + + + +
    void opj_mutex_lock (opj_mutex_tmutex)
    +
    +
    + +

    ◆ opj_mutex_unlock()

    + +
    +
    + + + + + + + + +
    void opj_mutex_unlock (opj_mutex_tmutex)
    +
    +
    + +

    ◆ opj_thread_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_thread_t* opj_thread_create (opj_thread_fn thread_fn,
    void * user_data 
    )
    +
    + +

    Creates a new thread.

    +
    Parameters
    + + + +
    thread_fnFunction to run in the new thread.
    user_datauser data provided to the thread function. Might be NULL.
    +
    +
    +
    Returns
    a thread handle or NULL in case of failure (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_thread_join()

    + +
    +
    + + + + + + + + +
    void opj_thread_join (opj_thread_tthread)
    +
    + +

    Wait for a thread to be finished and release associated resources to the thread handle.

    +
    Parameters
    + + +
    threadthe thread to wait for being finished.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy().

    + +
    +
    + +

    ◆ opj_thread_pool_create()

    + +
    +
    + + + + + + + + +
    opj_thread_pool_t* opj_thread_pool_create (int num_threads)
    +
    + +

    Create a new thread pool.

    +

    num_thread must nominally be >= 1 to create a real thread pool. If num_threads is negative or null, then a dummy thread pool will be created. All functions operating on the thread pool will work, but job submission will be run synchronously in the calling thread.

    +
    Parameters
    + + +
    num_threadsthe number of threads to allocate for this thread pool.
    +
    +
    +
    Returns
    a thread pool handle, or NULL in case of failure (can for example happen if the library is built without thread support)
    + +

    References opj_thread_pool_t::mutex, opj_calloc(), opj_free(), opj_mutex_create(), opj_thread_pool_destroy(), opj_thread_pool_setup(), opj_tls_new(), OPJWTS_OK, opj_thread_pool_t::state, and opj_thread_pool_t::tls.

    + +

    Referenced by main(), opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_j2k_set_threads().

    + +
    +
    + +

    ◆ opj_thread_pool_destroy()

    + + + +

    ◆ opj_thread_pool_get_next_job()

    + + + +

    ◆ opj_thread_pool_get_thread_count()

    + +
    +
    + + + + + + + + +
    int opj_thread_pool_get_thread_count (opj_thread_pool_ttp)
    +
    + +

    Return the number of threads associated with the thread pool.

    +
    Parameters
    + + +
    tpthe thread pool handle.
    +
    +
    +
    Returns
    number of threads associated with the thread pool.
    + +

    References opj_thread_pool_t::worker_threads_count.

    + +

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    + +
    +
    + +

    ◆ opj_thread_pool_setup()

    + + + +

    ◆ opj_thread_pool_submit_job()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_ttp,
    opj_job_fn job_fn,
    void * user_data 
    )
    +
    + +

    Submit a new job to be run by one of the thread in the thread pool.

    +

    The job ( thread_fn, user_data ) will be added in the queue of jobs managed by the thread pool, and run by the first thread that is no longer busy.

    +
    Parameters
    + + + + +
    tpthe thread pool handle.
    job_fnFunction to run. Must not be NULL.
    user_dataUser data provided to thread_fn.
    +
    +
    +
    Returns
    OPJ_TRUE if the job was successfully submitted.
    + +

    References opj_worker_thread_t::cond, opj_thread_pool_t::cond, opj_job_list_t::job, opj_worker_thread_job_t::job_fn, opj_thread_pool_t::job_queue, opj_worker_thread_t::marked_as_waiting, opj_worker_thread_t::mutex, opj_thread_pool_t::mutex, opj_job_list_t::next, opj_worker_thread_list_t::next, opj_cond_signal(), opj_cond_wait(), OPJ_FALSE, opj_free(), opj_malloc(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_TRUE, opj_thread_pool_t::pending_jobs_count, opj_thread_pool_t::signaling_threshold, opj_thread_pool_t::tls, opj_worker_thread_job_t::user_data, opj_thread_pool_t::waiting_worker_thread_count, opj_thread_pool_t::waiting_worker_thread_list, opj_worker_thread_list_t::worker_thread, and opj_thread_pool_t::worker_threads_count.

    + +

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    + +
    +
    + +

    ◆ opj_thread_pool_wait_completion()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_thread_pool_wait_completion (opj_thread_pool_ttp,
    int max_remaining_jobs 
    )
    +
    + +

    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.

    +

    The aim of this function is to avoid submitting too many jobs while the thread pool cannot cope fast enough with them, which would result potentially in out-of-memory situations with too many job descriptions being queued.

    +
    Parameters
    + + + +
    tpthe thread pool handle
    max_remaining_jobsmaximum number of jobs allowed to be queued without waiting.
    +
    +
    + +

    References opj_thread_pool_t::cond, opj_thread_pool_t::mutex, opj_cond_wait(), opj_mutex_lock(), opj_mutex_unlock(), opj_thread_pool_t::pending_jobs_count, and opj_thread_pool_t::signaling_threshold.

    + +

    Referenced by opj_dwt_decode_tile(), opj_tcd_t1_decode(), and opj_thread_pool_destroy().

    + +
    +
    + +

    ◆ opj_tls_destroy()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_tls_destroy (opj_tls_ttls)
    +
    +static
    +
    +
    + +

    ◆ opj_tls_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_tls_get (opj_tls_ttls,
    int key 
    )
    +
    + +

    Get a thread local value corresponding to the provided key.

    +
    Parameters
    + + + +
    tlsthread local storage handle
    keykey whose value to retrieve.
    +
    +
    +
    Returns
    value associated with the key, or NULL is missing.
    + +

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, and opj_tls_key_val_t::value.

    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_tls_new()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static opj_tls_t* opj_tls_new (void )
    +
    +static
    +
    + +

    References opj_calloc().

    + +

    Referenced by opj_thread_pool_create(), and opj_worker_thread_function().

    + +
    +
    + +

    ◆ opj_tls_set()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tls_set (opj_tls_ttls,
    int key,
    void * value,
    opj_tls_free_func free_func 
    )
    +
    + +

    Set a thread local value corresponding to the provided key.

    +
    Parameters
    + + + + + +
    tlsthread local storage handle
    keykey whose value to set.
    valuevalue to set (may be NULL).
    free_funcfunction to call currently installed value.
    +
    +
    +
    Returns
    OPJ_TRUE if successful.
    + +

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, OPJ_FALSE, opj_tls_key_val_t::opj_free_func, opj_realloc(), OPJ_TRUE, and opj_tls_key_val_t::value.

    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_worker_thread_function()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static void opj_worker_thread_function (void * user_data)
    +
    +static
    +
    +
    +
    +
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    +
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    +
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    +
    opj_mutex_t * mutex
    Definition: thread.c:609
    +
    opj_cond_t * cond
    Definition: thread.c:608
    +
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    + + + + diff --git a/build/doc/html/thread_8h.html b/build/doc/html/thread_8h.html new file mode 100644 index 000000000..ae9f3055a --- /dev/null +++ b/build/doc/html/thread_8h.html @@ -0,0 +1,894 @@ + + + + + + + +OpenJPEG: thread.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    thread.h File Reference
    +
    +
    + +

    Thread API. +More...

    +
    #include "openjpeg.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Mutex

    typedef struct opj_mutex_t opj_mutex_t
     Opaque type for a mutex. More...
     
    opj_mutex_topj_mutex_create (void)
     Creates a mutex. More...
     
    void opj_mutex_lock (opj_mutex_t *mutex)
     Lock/acquire the mutex. More...
     
    void opj_mutex_unlock (opj_mutex_t *mutex)
     Unlock/release the mutex. More...
     
    void opj_mutex_destroy (opj_mutex_t *mutex)
     Destroy a mutex. More...
     
    + + + + + + + + + + + + + + + + +

    +Condition

    typedef struct opj_cond_t opj_cond_t
     Opaque type for a condition. More...
     
    opj_cond_topj_cond_create (void)
     Creates a condition. More...
     
    void opj_cond_wait (opj_cond_t *cond, opj_mutex_t *mutex)
     Wait for the condition to be signaled. More...
     
    void opj_cond_signal (opj_cond_t *cond)
     Signal waiting threads on a condition. More...
     
    void opj_cond_destroy (opj_cond_t *cond)
     Destroy a condition. More...
     
    + + + + + + + + + + + + + +

    +Thread

    typedef struct opj_thread_t opj_thread_t
     Opaque type for a thread handle. More...
     
    typedef void(* opj_thread_fn) (void *user_data)
     User function to execute in a thread. More...
     
    opj_thread_topj_thread_create (opj_thread_fn thread_fn, void *user_data)
     Creates a new thread. More...
     
    void opj_thread_join (opj_thread_t *thread)
     Wait for a thread to be finished and release associated resources to the thread handle. More...
     
    + + + + + + + + + + + + + +

    +Thread local storage

    typedef struct opj_tls_t opj_tls_t
     Opaque type for a thread local storage. More...
     
    typedef void(* opj_tls_free_func) (void *value)
     Type of the function used to free a TLS value. More...
     
    void * opj_tls_get (opj_tls_t *tls, int key)
     Get a thread local value corresponding to the provided key. More...
     
    OPJ_BOOL opj_tls_set (opj_tls_t *tls, int key, void *value, opj_tls_free_func free_func)
     Set a thread local value corresponding to the provided key. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Thread pool

    typedef struct opj_thread_pool_t opj_thread_pool_t
     Opaque type for a thread pool. More...
     
    typedef void(* opj_job_fn) (void *user_data, opj_tls_t *tls)
     User function to execute in a thread. More...
     
    opj_thread_pool_topj_thread_pool_create (int num_threads)
     Create a new thread pool. More...
     
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
     Submit a new job to be run by one of the thread in the thread pool. More...
     
    void opj_thread_pool_wait_completion (opj_thread_pool_t *tp, int max_remaining_jobs)
     Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool. More...
     
    int opj_thread_pool_get_thread_count (opj_thread_pool_t *tp)
     Return the number of threads associated with the thread pool. More...
     
    void opj_thread_pool_destroy (opj_thread_pool_t *tp)
     Destroy a thread pool. More...
     
    +

    Detailed Description

    +

    Thread API.

    +

    The functions in thread.c have for goal to manage mutex, conditions, thread creation and thread pools that accept jobs.

    +

    Typedef Documentation

    + +

    ◆ opj_cond_t

    + +
    +
    + + + + +
    typedef struct opj_cond_t opj_cond_t
    +
    + +

    Opaque type for a condition.

    + +
    +
    + +

    ◆ opj_job_fn

    + +
    +
    + + + + +
    typedef void(* opj_job_fn) (void *user_data, opj_tls_t *tls)
    +
    + +

    User function to execute in a thread.

    +
    Parameters
    + + + +
    user_datauser data provided with opj_thread_create()
    tlshandle to thread local storage
    +
    +
    + +
    +
    + +

    ◆ opj_mutex_t

    + +
    +
    + + + + +
    typedef struct opj_mutex_t opj_mutex_t
    +
    + +

    Opaque type for a mutex.

    + +
    +
    + +

    ◆ opj_thread_fn

    + +
    +
    + + + + +
    typedef void(* opj_thread_fn) (void *user_data)
    +
    + +

    User function to execute in a thread.

    +
    Parameters
    + + +
    user_datauser data provided with opj_thread_create()
    +
    +
    + +
    +
    + +

    ◆ opj_thread_pool_t

    + +
    +
    + + + + +
    typedef struct opj_thread_pool_t opj_thread_pool_t
    +
    + +

    Opaque type for a thread pool.

    + +
    +
    + +

    ◆ opj_thread_t

    + +
    +
    + + + + +
    typedef struct opj_thread_t opj_thread_t
    +
    + +

    Opaque type for a thread handle.

    + +
    +
    + +

    ◆ opj_tls_free_func

    + +
    +
    + + + + +
    typedef void(* opj_tls_free_func) (void *value)
    +
    + +

    Type of the function used to free a TLS value.

    + +
    +
    + +

    ◆ opj_tls_t

    + +
    +
    + + + + +
    typedef struct opj_tls_t opj_tls_t
    +
    + +

    Opaque type for a thread local storage.

    + +
    +
    +

    Function Documentation

    + +

    ◆ opj_cond_create()

    + +
    +
    + + + + + + + + +
    opj_cond_t* opj_cond_create (void )
    +
    + +

    Creates a condition.

    +
    Returns
    the condition or NULL in case of error (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_cond_destroy()

    + +
    +
    + + + + + + + + +
    void opj_cond_destroy (opj_cond_tcond)
    +
    + +

    Destroy a condition.

    +
    Parameters
    + + +
    condthe condition to destroy.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_cond_signal()

    + +
    +
    + + + + + + + + +
    void opj_cond_signal (opj_cond_tcond)
    +
    + +

    Signal waiting threads on a condition.

    +

    One of the thread waiting with opj_cond_wait() will be waken up. It is strongly advised that this call is done with the mutex that is used by opj_cond_wait(), in a acquired state.

    Parameters
    + + +
    condthe condition to signal.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), and opj_thread_pool_submit_job().

    + +
    +
    + +

    ◆ opj_cond_wait()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_cond_wait (opj_cond_tcond,
    opj_mutex_tmutex 
    )
    +
    + +

    Wait for the condition to be signaled.

    +

    The semantics is the same as the POSIX pthread_cond_wait. The provided mutex must be acquired before calling this function, and released afterwards. The mutex will be released by this function while it must wait for the condition and reacquired afterwards. In some particular situations, the function might return even if the condition is not signaled with opj_cond_signal(), hence the need to check with an application level mechanism.

    +

    Waiting thread :

    +
    while( !some_application_level_condition )
    +
    {
    + +
    }
    + +

    Signaling thread :

    +
    some_application_level_condition = TRUE;
    + + +
    Parameters
    + + + +
    condthe condition to wait.
    mutexthe mutex (in acquired state before calling this function)
    +
    +
    + +

    Referenced by opj_thread_pool_get_next_job(), opj_thread_pool_setup(), opj_thread_pool_submit_job(), and opj_thread_pool_wait_completion().

    + +
    +
    + +

    ◆ opj_mutex_create()

    + +
    +
    + + + + + + + + +
    opj_mutex_t* opj_mutex_create (void )
    +
    + +

    Creates a mutex.

    +
    Returns
    the mutex or NULL in case of error (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_create(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_mutex_destroy()

    + +
    +
    + + + + + + + + +
    void opj_mutex_destroy (opj_mutex_tmutex)
    +
    + +

    Destroy a mutex.

    +
    Parameters
    + + +
    mutexthe mutex to destroy.
    +
    +
    + +

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_destroy(), and opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_mutex_lock()

    + +
    +
    + + + + + + + + +
    void opj_mutex_lock (opj_mutex_tmutex)
    +
    +
    + +

    ◆ opj_mutex_unlock()

    + +
    +
    + + + + + + + + +
    void opj_mutex_unlock (opj_mutex_tmutex)
    +
    +
    + +

    ◆ opj_thread_create()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    opj_thread_t* opj_thread_create (opj_thread_fn thread_fn,
    void * user_data 
    )
    +
    + +

    Creates a new thread.

    +
    Parameters
    + + + +
    thread_fnFunction to run in the new thread.
    user_datauser data provided to the thread function. Might be NULL.
    +
    +
    +
    Returns
    a thread handle or NULL in case of failure (can for example happen if the library is built without thread support)
    + +

    Referenced by opj_thread_pool_setup().

    + +
    +
    + +

    ◆ opj_thread_join()

    + +
    +
    + + + + + + + + +
    void opj_thread_join (opj_thread_tthread)
    +
    + +

    Wait for a thread to be finished and release associated resources to the thread handle.

    +
    Parameters
    + + +
    threadthe thread to wait for being finished.
    +
    +
    + +

    Referenced by opj_thread_pool_destroy().

    + +
    +
    + +

    ◆ opj_thread_pool_create()

    + +
    +
    + + + + + + + + +
    opj_thread_pool_t* opj_thread_pool_create (int num_threads)
    +
    + +

    Create a new thread pool.

    +

    num_thread must nominally be >= 1 to create a real thread pool. If num_threads is negative or null, then a dummy thread pool will be created. All functions operating on the thread pool will work, but job submission will be run synchronously in the calling thread.

    +
    Parameters
    + + +
    num_threadsthe number of threads to allocate for this thread pool.
    +
    +
    +
    Returns
    a thread pool handle, or NULL in case of failure (can for example happen if the library is built without thread support)
    + +

    References opj_thread_pool_t::mutex, opj_calloc(), opj_free(), opj_mutex_create(), opj_thread_pool_destroy(), opj_thread_pool_setup(), opj_tls_new(), OPJWTS_OK, opj_thread_pool_t::state, and opj_thread_pool_t::tls.

    + +

    Referenced by main(), opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_j2k_set_threads().

    + +
    +
    + +

    ◆ opj_thread_pool_destroy()

    + + + +

    ◆ opj_thread_pool_get_thread_count()

    + +
    +
    + + + + + + + + +
    int opj_thread_pool_get_thread_count (opj_thread_pool_ttp)
    +
    + +

    Return the number of threads associated with the thread pool.

    +
    Parameters
    + + +
    tpthe thread pool handle.
    +
    +
    +
    Returns
    number of threads associated with the thread pool.
    + +

    References opj_thread_pool_t::worker_threads_count.

    + +

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    + +
    +
    + +

    ◆ opj_thread_pool_submit_job()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_ttp,
    opj_job_fn job_fn,
    void * user_data 
    )
    +
    + +

    Submit a new job to be run by one of the thread in the thread pool.

    +

    The job ( thread_fn, user_data ) will be added in the queue of jobs managed by the thread pool, and run by the first thread that is no longer busy.

    +
    Parameters
    + + + + +
    tpthe thread pool handle.
    job_fnFunction to run. Must not be NULL.
    user_dataUser data provided to thread_fn.
    +
    +
    +
    Returns
    OPJ_TRUE if the job was successfully submitted.
    + +

    References opj_worker_thread_t::cond, opj_thread_pool_t::cond, opj_job_list_t::job, opj_worker_thread_job_t::job_fn, opj_thread_pool_t::job_queue, opj_worker_thread_t::marked_as_waiting, opj_worker_thread_t::mutex, opj_thread_pool_t::mutex, opj_job_list_t::next, opj_worker_thread_list_t::next, opj_cond_signal(), opj_cond_wait(), OPJ_FALSE, opj_free(), opj_malloc(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_TRUE, opj_thread_pool_t::pending_jobs_count, opj_thread_pool_t::signaling_threshold, opj_thread_pool_t::tls, opj_worker_thread_job_t::user_data, opj_thread_pool_t::waiting_worker_thread_count, opj_thread_pool_t::waiting_worker_thread_list, opj_worker_thread_list_t::worker_thread, and opj_thread_pool_t::worker_threads_count.

    + +

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    + +
    +
    + +

    ◆ opj_thread_pool_wait_completion()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void opj_thread_pool_wait_completion (opj_thread_pool_ttp,
    int max_remaining_jobs 
    )
    +
    + +

    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.

    +

    The aim of this function is to avoid submitting too many jobs while the thread pool cannot cope fast enough with them, which would result potentially in out-of-memory situations with too many job descriptions being queued.

    +
    Parameters
    + + + +
    tpthe thread pool handle
    max_remaining_jobsmaximum number of jobs allowed to be queued without waiting.
    +
    +
    + +

    References opj_thread_pool_t::cond, opj_thread_pool_t::mutex, opj_cond_wait(), opj_mutex_lock(), opj_mutex_unlock(), opj_thread_pool_t::pending_jobs_count, and opj_thread_pool_t::signaling_threshold.

    + +

    Referenced by opj_dwt_decode_tile(), opj_tcd_t1_decode(), and opj_thread_pool_destroy().

    + +
    +
    + +

    ◆ opj_tls_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* opj_tls_get (opj_tls_ttls,
    int key 
    )
    +
    + +

    Get a thread local value corresponding to the provided key.

    +
    Parameters
    + + + +
    tlsthread local storage handle
    keykey whose value to retrieve.
    +
    +
    +
    Returns
    value associated with the key, or NULL is missing.
    + +

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, and opj_tls_key_val_t::value.

    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    + +

    ◆ opj_tls_set()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OPJ_BOOL opj_tls_set (opj_tls_ttls,
    int key,
    void * value,
    opj_tls_free_func free_func 
    )
    +
    + +

    Set a thread local value corresponding to the provided key.

    +
    Parameters
    + + + + + +
    tlsthread local storage handle
    keykey whose value to set.
    valuevalue to set (may be NULL).
    free_funcfunction to call currently installed value.
    +
    +
    +
    Returns
    OPJ_TRUE if successful.
    + +

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, OPJ_FALSE, opj_tls_key_val_t::opj_free_func, opj_realloc(), OPJ_TRUE, and opj_tls_key_val_t::value.

    + +

    Referenced by opj_t1_clbl_decode_processor().

    + +
    +
    +
    +
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    +
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    +
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    +
    opj_mutex_t * mutex
    Definition: thread.c:609
    +
    opj_cond_t * cond
    Definition: thread.c:608
    +
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    + + + + diff --git a/build/doc/html/thread_8h_source.html b/build/doc/html/thread_8h_source.html new file mode 100644 index 000000000..5adbddb83 --- /dev/null +++ b/build/doc/html/thread_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + +OpenJPEG: thread.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    thread.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2016, Even Rouault
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef THREAD_H
    +
    33 #define THREAD_H
    +
    34 
    +
    35 #include "openjpeg.h"
    +
    36 
    +
    47 
    +
    50 
    +
    52 typedef struct opj_mutex_t opj_mutex_t;
    +
    53 
    + +
    59 
    +
    63 void opj_mutex_lock(opj_mutex_t* mutex);
    +
    64 
    +
    68 void opj_mutex_unlock(opj_mutex_t* mutex);
    +
    69 
    +
    73 void opj_mutex_destroy(opj_mutex_t* mutex);
    +
    74 
    +
    79 
    +
    81 typedef struct opj_cond_t opj_cond_t;
    +
    82 
    + +
    88 
    +
    120 void opj_cond_wait(opj_cond_t* cond, opj_mutex_t* mutex);
    +
    121 
    +
    128 void opj_cond_signal(opj_cond_t* cond);
    +
    129 
    +
    133 void opj_cond_destroy(opj_cond_t* cond);
    +
    134 
    +
    139 
    +
    141 typedef struct opj_thread_t opj_thread_t;
    +
    142 
    +
    146 typedef void (*opj_thread_fn)(void* user_data);
    +
    147 
    +
    154 opj_thread_t* opj_thread_create(opj_thread_fn thread_fn, void* user_data);
    +
    155 
    +
    160 void opj_thread_join(opj_thread_t* thread);
    +
    161 
    +
    167 typedef struct opj_tls_t opj_tls_t;
    +
    168 
    +
    174 void* opj_tls_get(opj_tls_t* tls, int key);
    +
    175 
    +
    177 typedef void (*opj_tls_free_func)(void* value);
    +
    178 
    +
    186 OPJ_BOOL opj_tls_set(opj_tls_t* tls, int key, void* value,
    +
    187  opj_tls_free_func free_func);
    +
    188 
    +
    193 
    + +
    196 
    +
    207 opj_thread_pool_t* opj_thread_pool_create(int num_threads);
    +
    208 
    +
    213 typedef void (*opj_job_fn)(void* user_data, opj_tls_t* tls);
    +
    214 
    +
    215 
    + +
    226  void* user_data);
    +
    227 
    + +
    238  int max_remaining_jobs);
    +
    239 
    + +
    246 
    + +
    251 
    +
    255 
    +
    256 #endif /* THREAD_H */
    +
    +
    opj_worker_thread_t * worker_threads
    Definition: thread.c:606
    +
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    +
    Definition: thread.c:504
    +
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    +
    opj_worker_thread_job_t * job
    Definition: thread.c:594
    +
    int signaling_threshold
    Definition: thread.c:616
    +
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    +
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    +
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    +
    opj_cond_t * cond
    Definition: thread.c:584
    +
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:833
    +
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    +
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    +
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    +
    void(* opj_tls_free_func)(void *value)
    Type of the function used to free a TLS value.
    Definition: thread.h:177
    +
    int tp_end_header
    end position of tile part header
    Definition: openjpeg.h:793
    +
    void(* opj_thread_fn)(void *user_data)
    User function to execute in a thread.
    Definition: thread.h:146
    +
    volatile int pending_jobs_count
    Definition: thread.c:612
    +
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    +
    #define JPIP_THIX
    Definition: indexbox_manager.h:49
    +
    opj_tls_t * tls
    Definition: thread.c:615
    +
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    +
    opj_thread_pool_t * tp
    Definition: thread.c:579
    +
    int key
    Definition: thread.c:499
    +
    #define JPIP_MHIX
    Definition: indexbox_manager.h:47
    +
    Definition: thread.c:498
    +
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    +
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    +
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    +
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    +
    Message handler object used for.
    Definition: event.h:50
    +
    opj_thread_t * opj_thread_create(opj_thread_fn thread_fn, void *user_data)
    Creates a new thread.
    Definition: thread.c:484
    +
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    +
    volatile opj_worker_thread_state state
    Definition: thread.c:610
    +
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    +
    OPJ_UINT32 type
    Definition: jp2.h:200
    +
    Byte input-output stream.
    Definition: cio.h:81
    +
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    +
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    +
    static opj_worker_thread_job_t * opj_thread_pool_get_next_job(opj_thread_pool_t *tp, opj_worker_thread_t *worker_thread, OPJ_BOOL signal_job_finished)
    Definition: thread.c:757
    +
    void * user_data
    Definition: thread.c:575
    +
    @ OPJWTS_ERROR
    Definition: thread.c:590
    +
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    +
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    +
    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    +
    int OPJ_BOOL
    Definition: openjpeg.h:110
    +
    void opj_cond_destroy(opj_cond_t *cond)
    Destroy a condition.
    Definition: thread.c:479
    +
    int waiting_worker_thread_count
    Definition: thread.c:614
    + +
    int key_val_count
    Definition: thread.c:506
    +
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    +
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    +
    static void opj_tls_destroy(opj_tls_t *tls)
    Definition: thread.c:514
    +
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    +
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    +
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    +
    JP2 Box.
    Definition: jp2.h:198
    +
    Definition: thread.c:599
    +
    opj_thread_t * opj_thread_create(opj_thread_fn thread_fn, void *user_data)
    Creates a new thread.
    Definition: thread.c:484
    +
    void * value
    Definition: thread.c:500
    +
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    +
    Definition: thread.c:593
    +
    static void opj_worker_thread_function(void *user_data)
    Definition: thread.c:656
    +
    Definition: thread.c:573
    +
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    +
    opj_mutex_t * mutex
    Definition: thread.c:609
    +
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    +
    opj_cond_t * cond
    Definition: thread.c:608
    + +
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    +
    opj_tls_free_func opj_free_func
    Definition: thread.c:501
    +
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    +
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    +
    void opj_thread_join(opj_thread_t *thread)
    Wait for a thread to be finished and release associated resources to the thread handle.
    Definition: thread.c:491
    +
    int worker_threads_count
    Definition: thread.c:607
    +
    int marked_as_waiting
    Definition: thread.c:581
    +
    opj_thread_t * thread
    Definition: thread.c:580
    +
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    +
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    +
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    +
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    +
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    +
    opj_job_fn job_fn
    Definition: thread.c:574
    +
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    +
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    +
    opj_worker_thread_state
    Definition: thread.c:587
    +
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    +
    int marknum
    number of markers
    Definition: openjpeg.h:831
    +
    opj_cond_t * opj_cond_create(void)
    Creates a condition.
    Definition: thread.c:463
    +
    OPJ_UINT32 length
    Definition: jp2.h:199
    +
    opj_job_list_t * job_queue
    Definition: thread.c:611
    +
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    +
    opj_mutex_t * mutex
    Definition: thread.c:583
    +
    Index structure of the codestream.
    Definition: openjpeg.h:845
    +
    @ OPJWTS_STOP
    Definition: thread.c:589
    +
    @ OPJWTS_OK
    Definition: thread.c:588
    +
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    +
    static OPJ_BOOL opj_thread_pool_setup(opj_thread_pool_t *tp, int num_threads)
    Definition: thread.c:684
    +
    int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    +
    opj_worker_thread_t * worker_thread
    Definition: thread.c:600
    +
    struct opj_cond_t opj_cond_t
    Opaque type for a condition.
    Definition: thread.h:81
    +
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    +
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    +
    static opj_tls_t * opj_tls_new(void)
    Definition: thread.c:509
    +
    struct opj_worker_thread_list_t * next
    Definition: thread.c:601
    +
    void opj_thread_join(opj_thread_t *thread)
    Wait for a thread to be finished and release associated resources to the thread handle.
    Definition: thread.c:491
    +
    struct opj_thread_t opj_thread_t
    Opaque type for a thread handle.
    Definition: thread.h:141
    +
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    +
    struct opj_job_list_t * next
    Definition: thread.c:595
    +
    opj_worker_thread_list_t * waiting_worker_thread_list
    Definition: thread.c:613
    +
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    +
    opj_cond_t * opj_cond_create(void)
    Creates a condition.
    Definition: thread.c:463
    +
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    +
    #define opj_write_bytes
    Definition: cio.h:64
    +
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    +
    opj_tls_key_val_t * key_val
    Definition: thread.c:505
    +
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    +
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    +
    Marker structure.
    Definition: openjpeg.h:776
    +
    int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:97
    +
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    +
    Definition: thread.c:578
    +
    Definition: thread.c:605
    +
    void(* opj_job_fn)(void *user_data, opj_tls_t *tls)
    User function to execute in a thread.
    Definition: thread.h:213
    +
    void opj_cond_destroy(opj_cond_t *cond)
    Destroy a condition.
    Definition: thread.c:479
    + + + + diff --git a/build/doc/html/tls__keys_8h.html b/build/doc/html/tls__keys_8h.html new file mode 100644 index 000000000..aec1fc64a --- /dev/null +++ b/build/doc/html/tls__keys_8h.html @@ -0,0 +1,83 @@ + + + + + + + +OpenJPEG: tls_keys.h File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tls_keys.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + +

    +Macros

    #define OPJ_TLS_KEY_T1   0
     
    +

    Macro Definition Documentation

    + +

    ◆ OPJ_TLS_KEY_T1

    + +
    +
    + + + + +
    #define OPJ_TLS_KEY_T1   0
    +
    + +
    +
    +
    + + + + diff --git a/build/doc/html/tls__keys_8h_source.html b/build/doc/html/tls__keys_8h_source.html new file mode 100644 index 000000000..7468144cd --- /dev/null +++ b/build/doc/html/tls__keys_8h_source.html @@ -0,0 +1,95 @@ + + + + + + + +OpenJPEG: tls_keys.h Source File + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    +
    +
    tls_keys.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  * The copyright in this software is being made available under the 2-clauses
    +
    3  * BSD License, included below. This software may be subject to other third
    +
    4  * party and contributor rights, including patent rights, and no such rights
    +
    5  * are granted under this license.
    +
    6  *
    +
    7  * Copyright (c) 2016, Even Rouault
    +
    8  * All rights reserved.
    +
    9  *
    +
    10  * Redistribution and use in source and binary forms, with or without
    +
    11  * modification, are permitted provided that the following conditions
    +
    12  * are met:
    +
    13  * 1. Redistributions of source code must retain the above copyright
    +
    14  * notice, this list of conditions and the following disclaimer.
    +
    15  * 2. Redistributions in binary form must reproduce the above copyright
    +
    16  * notice, this list of conditions and the following disclaimer in the
    +
    17  * documentation and/or other materials provided with the distribution.
    +
    18  *
    +
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    +
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    +
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    +
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    +
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    +
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    +
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    +
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    +
    29  * POSSIBILITY OF SUCH DAMAGE.
    +
    30  */
    +
    31 
    +
    32 #ifndef OPJ_TLS_KEYS_H
    +
    33 #define OPJ_TLS_KEYS_H
    +
    34 
    +
    35 #define OPJ_TLS_KEY_T1 0
    +
    36 
    +
    37 #endif /* OPJ_TLS_KEY_H */
    +
    + + + + diff --git a/build/doc/html/tpix__manager_8c.html b/build/doc/html/tpix__manager_8c.html new file mode 100644 index 000000000..2a5c0ef91 --- /dev/null +++ b/build/doc/html/tpix__manager_8c.html @@ -0,0 +1,240 @@ + + + + + + + +OpenJPEG: tpix_manager.c File Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    tpix_manager.c File Reference
    +
    +
    + +

    Modification of jpip.c from 2KAN indexer. +More...

    +
    #include "opj_includes.h"
    +
    + + + +

    +Macros

    #define MAX(a, b)   ((a)>(b)?(a):(b))
     
    + + + + + + + +

    +Functions

    int get_num_max_tile_parts (opj_codestream_info_t cstr_info)
     
    int opj_write_tpix (int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tpixfaix (int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    +

    Detailed Description

    +

    Modification of jpip.c from 2KAN indexer.

    +

    Macro Definition Documentation

    + +

    ◆ MAX

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define MAX( a,
     
    )   ((a)>(b)?(a):(b))
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ get_num_max_tile_parts()

    + +
    +
    + + + + + + + + +
    int get_num_max_tile_parts (opj_codestream_info_t cstr_info)
    +
    +
    + +

    ◆ opj_write_tpix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tpix (int coff,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    + +

    ◆ opj_write_tpixfaix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int opj_write_tpixfaix (int coff,
    int compno,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    +
    +
    +
    + + + + diff --git a/build/doc/html/unionopj__v4__t.html b/build/doc/html/unionopj__v4__t.html new file mode 100644 index 000000000..d78752b22 --- /dev/null +++ b/build/doc/html/unionopj__v4__t.html @@ -0,0 +1,82 @@ + + + + + + + +OpenJPEG: opj_v4_t Union Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    opj_v4_t Union Reference
    +
    +
    + + + + +

    +Data Fields

    OPJ_FLOAT32 f [4]
     
    +

    Field Documentation

    + +

    ◆ f

    + +
    +
    + + + + +
    OPJ_FLOAT32 opj_v4_t::f[4]
    +
    +
    +
    The documentation for this union was generated from the following file: +
    + + + + diff --git a/build/doc/html/unionsubfaixbox__param.html b/build/doc/html/unionsubfaixbox__param.html new file mode 100644 index 000000000..4b29919d6 --- /dev/null +++ b/build/doc/html/unionsubfaixbox__param.html @@ -0,0 +1,113 @@ + + + + + + + +OpenJPEG: subfaixbox_param Union Reference + + + + + + +
    +
    + + + + + + +
    +
    OpenJPEG +  2.3.1 +
    +
    +
    + + + + + + +
    +
    + +
    +
    subfaixbox_param Union Reference
    +
    +
    + +

    variable sized parameters in fragment array index box + More...

    + +

    #include <faixbox_manager.h>

    + + + + + + + + +

    +Data Fields

    subfaixbox4_param_tbyte4_params
     parameters with 4byte codes for version 0 or 2 More...
     
    subfaixbox8_param_tbyte8_params
     parameters with 8byte codes for version 1 or 3 More...
     
    +

    Detailed Description

    +

    variable sized parameters in fragment array index box

    +

    Field Documentation

    + +

    ◆ byte4_params

    + +
    +
    + + + + +
    subfaixbox4_param_t* subfaixbox_param::byte4_params
    +
    + +

    parameters with 4byte codes for version 0 or 2

    + +

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    + +
    +
    + +

    ◆ byte8_params

    + +
    +
    + + + + +
    subfaixbox8_param_t* subfaixbox_param::byte8_params
    +
    + +

    parameters with 8byte codes for version 1 or 3

    + +

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    + +
    +
    +
    The documentation for this union was generated from the following file: +
    + + + + diff --git a/build/doc/mainpage.dox b/build/doc/mainpage.dox new file mode 100644 index 000000000..476dbe741 --- /dev/null +++ b/build/doc/mainpage.dox @@ -0,0 +1,62 @@ +/* + * $Id$ + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2011, Mickael Savinaud, Communications & Systemes + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \mainpage OpenJPEG v2.3.1 Documentation +* +* \section intro Introduction +* This manual documents the low-level OpenJPEG C API.\n +* The OpenJPEG library is an open-source JPEG 2000 library developed in order to promote the use of JPEG 2000.\n +* This documents is focused on the main part of the library which try to implement Part 1 and Part 2 of the JPEG2000 norm.\n +* +* \section home Home page +* +* The Home Page of the OpenJPEG project can be found at: +* +* http://www.openjpeg.org/ +* +* The source code repository is available here: +* +* http://github.com/uclouvain/openjpeg +* +* The OpenJPEG mailing list is located here: +* +* http://groups.google.com/group/openjpeg +* +* The test files repository is available here: +* +* http://github.com/uclouvain/openjpeg-data +* +* \section license License +* This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.\n +* The only restriction is to retain the copyright in the sources or the binaries documentation.\n +* Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage. +* +* \author OpenJPEG Team +* +*/ diff --git a/build/doc/openjpip.dox b/build/doc/openjpip.dox new file mode 100644 index 000000000..50ab5352e --- /dev/null +++ b/build/doc/openjpip.dox @@ -0,0 +1,94 @@ +/* + * $Id$ + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2010-2011, Kaori Hagihara + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/*! \page openjpippage OpenJPIP v2.3.1 Documentation + * + * \section Introduction + * This manual documents the low-level OpenJPIP C API.\n + * OpenJPIP software is an implementation of JPEG 2000 Part9: Interactivity tools, APIs and protocols (JPIP).\n + * ( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html)\n + * + * This whole documents covers the following six programs.\n + * - opj_server.c JPIP server supporting HTTP connection and JPT/JPP-stream + * - opj_dec_server.c Server to decode JPT/JPP-stream and communicate locally with JPIP client, which is coded in java + * - opj_jpip_addxml.c To Embed metadata into JP2 file + * - opj_jpip_transcode.c To Convert JPT/JPP-stream to JP2 or J2K + * - opj_jpip_test.c To test index code format of a JP2 file + * + * \section License + * This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.\n + * The only restriction is to retain the copyright in the sources or the binaries documentation.\n + * Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage. + * + * + * \section reqlibs Required libraries + * - OpenJPEG library + * - FastCGI development kit (C libraries) at server (http://www.fastcgi.com) + * - libcURL library + * + * We tested this software with a virtual server running on the same Linux machine as the clients. + * + * + * \section compilenotes Compiling Notes + * When you are making opj_server, set anything (e.g. yes) to the parameter jpipserver to define itself in the Makefile, which enables to make it in server mode.\n + * Otherwise do not define (or do not set to) the parameter jpipserver.\n + * Be sure that any object files and library file libopenjpip.a are not reused to compile in the two different mode (server mode and non server mode).\n + * In other words, do make clean before making new targets which are in different modes as previous make.\n + * + * + * \section sysarchtect System Architecture + * JPIP protocol is implemented between the JPIP server program (opj_server) and the JPIP client java program (opj_viewer).\n + * Figure below represents the overview of our system architecture.\n + * The JPIP server parses JPIP query and sends corresponding JPT/JPP-stream. + * The JPIP client viewer is an image viewer with GUI to publish JPIP requests and receive JPT/JPP-stream.\n + * Particularly, our system has the image decoding module implemented on a server (opj_dec_server, Image decoding Server). + * Image decoding Server and JPIP client viewer communicate closely. + * This specific architecture enables sharing cache of image codestream data among all viewers connected to the same Image decoding Server not only locally but also remotely. + * + * \image html jpip_architect.png "OpenJPIP system architecture" + * + * JPIP server follows up the client cache during a session. \n + * Concretely, the JPIP server models cache in each session, to which Channel IDs are associated. + * A Channel ID identifies a JPIP client viewer. + * And, new viewers can belong to a session by referring to one of its channel ID. + * The Image decoding Server maintains the association between channel IDs and targets, and provides a reference channel ID to a Viewer on demand.\n + * + * Typical requests and replies among JPIP server, JPIP client, and Image decoding server is presented below.\n + * The JPIP server parses HTTP query and sends corresponding JPT/JPP-stream back to the JPIP client (Viewer). + * JPT/JPP-stream is unreadable by JPIP client, and it is directly passed to Image decoding Server, and which provides the image in raw format (PGM or PPM) to the JPIP client. + * The Image decoding Server handles the decoding and caching of JPT/JPP-stream. + * JPIP client can read PGM and PPM images natively. + * Before connecting to the JPIP server, every JPIP client checks local cache data of the requesting image with the image decoding server. + * If its cache exists, the image decoding server provides ChannelID (CID), which identifies the image and its cache model on the JPIP server, and the whole system can continue the session using the CID. + * + * \image html jpip_protocol.png "Message Sequence Chart of OpenJPIP implementation" + * + * \author Kaori Hagihara UCL/SST/ICTM/ELEN + */ diff --git a/build/install_manifest.txt b/build/install_manifest.txt new file mode 100644 index 000000000..6b1a04e10 --- /dev/null +++ b/build/install_manifest.txt @@ -0,0 +1,42 @@ +/usr/local/lib/openjpeg-2.1/OpenJPEGTargets.cmake +/usr/local/lib/openjpeg-2.1/OpenJPEGTargets-noconfig.cmake +/usr/local/lib/openjpeg-2.1/OpenJPEGConfig.cmake +/usr/local/lib/pkgconfig/libopenjp2.pc +/usr/local/lib/pkgconfig/libopenjpwl.pc +/usr/local/lib/pkgconfig/libopenjpip.pc +/usr/local/lib/pkgconfig/libopenjp3d.pc +/usr/local/include/openjpeg-2.1/opj_config.h +/usr/local/lib/libopenjp2.so.2.1.1 +/usr/local/lib/libopenjp2.so.7 +/usr/local/lib/libopenjp2.so +/usr/local/include/openjpeg-2.1/openjpeg.h +/usr/local/include/openjpeg-2.1/opj_stdint.h +/usr/local/lib/libopenjpwl.so.2.1.1 +/usr/local/lib/libopenjpwl.so.7 +/usr/local/lib/libopenjpwl.so +/usr/local/lib/libopenmj2.so.2.1.1 +/usr/local/lib/libopenmj2.so.7 +/usr/local/lib/libopenmj2.so +/usr/local/lib/libopenjpip.so.2.1.1 +/usr/local/lib/libopenjpip.so.7 +/usr/local/lib/libopenjpip.so +/usr/local/lib/libopenjp3d.so.2.1.1 +/usr/local/lib/libopenjp3d.so.7 +/usr/local/lib/libopenjp3d.so +/usr/local/include/openjpeg-2.1/openjp3d.h +/usr/local/bin/opj_decompress +/usr/local/bin/opj_compress +/usr/local/bin/opj_dump +/usr/local/bin/opj_jpwl_decompress +/usr/local/bin/opj_jpwl_compress +/usr/local/bin/opj_mj2_wrap +/usr/local/bin/opj_mj2_extract +/usr/local/bin/opj_mj2_decompress +/usr/local/bin/opj_mj2_compress +/usr/local/bin/opj_jpip_addxml +/usr/local/bin/opj_dec_server +/usr/local/bin/opj_jpip_transcode +/usr/local/bin/opj_jpip_test +/usr/local/share/opj_jpip_viewer.jar +/usr/local/bin/opj_jp3d_compress +/usr/local/bin/opj_jp3d_decompress \ No newline at end of file diff --git a/build/libopenjp2.pc b/build/libopenjp2.pc new file mode 100644 index 000000000..6dcf12f0b --- /dev/null +++ b/build/libopenjp2.pc @@ -0,0 +1,14 @@ +prefix=/usr/local +bindir=${prefix}/bin +mandir=${prefix}/share/man/ +docdir=${prefix}/share/doc/openjpeg-2.3 +libdir=${prefix}/lib +includedir=${prefix}/include/openjpeg-2.3 + +Name: openjp2 +Description: JPEG2000 library (Part 1 and 2) +URL: http://www.openjpeg.org/ +Version: 2.3.1 +Libs: -L${libdir} -lopenjp2 +Libs.private: -lm +Cflags: -I${includedir} diff --git a/build/libopenjp3d.pc b/build/libopenjp3d.pc new file mode 100644 index 000000000..5356c6c99 --- /dev/null +++ b/build/libopenjp3d.pc @@ -0,0 +1,14 @@ +prefix=/usr/local +bindir=${prefix}/bin +mandir=${prefix}/share/man/ +docdir=${prefix}/share/doc/openjpeg-2.3 +libdir=${prefix}/lib +includedir=${prefix}/include/openjpeg-2.3 + +Name: openjp3d +Description: JPEG2000 Extensions for three-dimensional data (Part 10) +URL: http://www.openjpeg.org/ +Version: 2.3.1 +Libs: -L${libdir} -lopenjp3d +Libs.private: -lm +Cflags: -I${includedir} diff --git a/build/libopenjpip.pc b/build/libopenjpip.pc new file mode 100644 index 000000000..7e4ccf3e6 --- /dev/null +++ b/build/libopenjpip.pc @@ -0,0 +1,15 @@ +prefix=/usr/local +bindir=${prefix}/bin +mandir=${prefix}/share/man/ +docdir=${prefix}/share/doc/openjpeg-2.3 +libdir=${prefix}/lib +includedir=${prefix}/include/openjpeg-2.3 + +Name: openjpip +Description: JPEG2000 Interactivity tools, APIs and protocols (Part 9) +URL: http://www.openjpeg.org/ +Version: 2.3.1 +Requires: libopenjp2 +Libs: -L${libdir} -lopenjpip +Libs.private: -lm -lcurl -lfcgi -lpthread +Cflags: -I${includedir} diff --git a/build/libopenjpwl.pc b/build/libopenjpwl.pc new file mode 100644 index 000000000..cf0fd4590 --- /dev/null +++ b/build/libopenjpwl.pc @@ -0,0 +1,15 @@ +prefix=/usr/local +bindir=${prefix}/bin +mandir=${prefix}/share/man/ +docdir=${prefix}/share/doc/openjpeg-2.3 +libdir=${prefix}/lib +includedir=${prefix}/include/openjpeg-2.3 + +Name: openjpwl +Description: JPEG2000 Wireless library (Part 11) +URL: http://www.openjpeg.org/ +Version: 2.3.1 +Requires: libopenjp2 +Libs: -L${libdir} -lopenjpwl +Libs.private: -lm +Cflags: -I${includedir} diff --git a/build/src/bin/common/opj_apps_config.h b/build/src/bin/common/opj_apps_config.h new file mode 100644 index 000000000..a45ae57f0 --- /dev/null +++ b/build/src/bin/common/opj_apps_config.h @@ -0,0 +1,15 @@ +#include "opj_config_private.h" + +/* create opj_apps_config.h for CMake */ + +#define OPJ_HAVE_LIBPNG +#define OPJ_HAVE_PNG_H +#define OPJ_HAVE_LIBTIFF +#define OPJ_HAVE_TIFF_H + +/* #undef OPJ_HAVE_LIBLCMS1 */ +#define OPJ_HAVE_LIBLCMS2 +/* #undef OPJ_HAVE_LCMS1_H */ +#define OPJ_HAVE_LCMS2_H + + diff --git a/build/src/bin/jpip/classes2/ImageManager.class b/build/src/bin/jpip/classes2/ImageManager.class new file mode 100644 index 0000000000000000000000000000000000000000..11c903ada87682fbd6f8fe4ecc241ef0f1cd8743 GIT binary patch literal 2835 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 literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class b/build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..269fa32dd0ba68220c256eae97f32fe3a346b102 GIT binary patch literal 612 zcmZuv%TC)s6g`uGU5rBvZF!V81eye?Mr=Vy;I>kv&yau4U@vA zK(1P8$)-9Eb)((gW??7PVY(~e72j1#HG!d^-B1GgYN*w(PU}R)NAe_MCfDu3gQ%T^ zx+$<&te(jW>C0~Fs|%%5zd!$n@wd$==dj(0>*{A{;NAd*ZwBb%14djpSg^6^VhPJO zR$Q!_xZq+9>jJX_phAEA!R1~y{CR-zJR=3Y3_k~>;3#@4jC+~##x+Fw7MVY$8#$g9EwIaT4EdLSpVsu}%U2M0 l$lhQmdxzmS&=|5T?{h^!*mpL2j58R=9IZpR#fLNtJOjTJhR6T_ literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/ImageWindow.class b/build/src/bin/jpip/classes2/ImageWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..4ca483173cd0e07173a5e676d33e20cc1a4ee7ec GIT binary patch literal 2590 zcma)8S##S|6#f)1QdG4#ZVd^cB|rgJU0e(VXv&(l;F66dO>sggYN7-MTT&%CA?*9U zFT=nKFw>d70z(~!&V&aZV0hz^2L^r!P`)DtaMC<5$z0uY&;Ffr&-G7#eY*^xj1Sv! z74Fh;HTqQ?(2>GH6^C?WaJO*okzGZ_VIA$bS55|04C*j2q+(ddCJYHNqTxRI9?>wW zQ)o=ZQ5^-03vo=t{W_|ckYzFjd{6NQbnM4*4G(HK(T;~;X*j843ezfVQJPUPE8mA@ zaa7FdDB=+zYO>U2aTQ#2%yFl^g~7!;r!7CS0|iFKb?u_>0`#&d@iHXXNaRupqZ`x)S1CDDCHR>nrV9YvM<4L-1IZW^3;^c+q zL~-M2WKBIXX!)_c3QvX4sI93fI}Eq)-Md%8)?yNNf>7U%wMposUL%;Y4>{s57bBC1 z?va!XT#p+J+=x>Gslc|9zMK)04J}a0QD~rqy#^vQ$ZP>qnDYj%Ls>yyEI(Qb7l>2o zaE!IE7Zem?7_Eh>5Ec@Dg5DkUBgv#$DyVwNA%N zLl)OLzp!=VroU!A(bg90Te%(Wp&bqT)~SYEh~k8}*|yTu|J=o-saI~a2&9U#ie}P6 z?2#3Bf(IV6D)qT%p$F<(%;gfUrRMaOLn`pb=V?(-;bg+U;Rw=s? zZ>}B0qPaC!klG#emsD`T328&-%att#?0MQPt(J&wb^KSM3Z2J;Nu9T94SRS-!L=(U zS}MpJe}Re&J;#m4MJ>jv!qVHP8dfc=%(`A+_gf(u>lS%pb(btM`Z{g!no=Qg<#?qL z&cKM1(6;JywmFVq^|1og7oi>PLwRV9!{MTGU_jLVMV^154(x6g-)bKIfc*OtBJ^ zDiubZ$JU_!Z*#{;ZII&gz9)8cQsYkOaIE4AJ{ni^*-N2KrWJQ>GMM5o$6d@(HuD@()t$Qw=_RDkLLr%{?lQlIQpgmt1$7D8vrtK^=_WLC+pEHq zgC*!^vEdwy>Jm2Y)4H^C*u?EcP2{>X5y*Emk&m|<@|(FeyR;^@&_Td*%lO8J$PB=x(w zocSCdn5puhnJy2IIt|^-l!wkBo9`Slm$RqQVP?zUpsR^Xd$VU4W_NGaTvkt`(^Sj( z%bM8w39~(ebgGwYHr<;xmo?#P<@~l*ZYJht%;g-7cAL3uIe$6%AEQ0ftDZq;TGo6@ zR^u!5LC{jUauYkd zG*)1jAl4QmHjk~`4Rxj&y@Uy57lpYoY;d>xj)gZVn6@? zKpWT1f3g3dY`H^8pJ#xoidz#lSA{jg`W%Iv&dhn1U7-eWp1rB9(p5wxr{Ol-o|Kwt j#|Dv+M*M=&Bps9$FT4tExP#v|+=)H>>O3v*bT{xf>g0TZ literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/ImgdecClient.class b/build/src/bin/jpip/classes2/ImgdecClient.class new file mode 100644 index 0000000000000000000000000000000000000000..33cb74c57772741f5fa3ca5f5fb39b8d6ed8f9b6 GIT binary patch literal 6676 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 aQ2RtP?&cv%@{n=&+hD%?wXin_t^WbI9^rie literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class b/build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class new file mode 100644 index 0000000000000000000000000000000000000000..494b8ee9adf8f3746f53df98bcf9975c1e87050e GIT binary patch literal 406 zcmYjMO;5s55S-T*9xW9LD(cb1gL06BgCEg&!I)t1BS4JA(*vKRgckE!{9hi3i81~F zf0S{`MGmvOv%A@u{rUa;2GGQgha3VI4k}rwN^D4M3FM7_38S$~~c>`0{o*3%^y&%-!OFWB2Zco1+}vu7<(?u4t6O{RZlC)qN(9`M+Hc3PHm#{j63tQY@Ahsu z(IeXQSI=OVU*`C_1$u{MB{IQfrb`sbeX;?kg88)m0Z|tVSoOgDk^{Tc9XLde$Pj7JncrqBtcOXL>Hs4;t#aj=d}xPO)mOgsPp literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class b/build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class new file mode 100644 index 0000000000000000000000000000000000000000..1f3b4707333e1ae0b139fc2c5de4afae038c556d GIT binary patch literal 452 zcmYk3OHaZ;6ot?5Dy^fu6cH7~xKI|LxYW2IF@c~MF~;qH6D)yZTJZ6+To4l%{s4cJ z@k}?exZl0g={fh__UHHO8$bj54wA^*u&`-RFxWCE8f;tGwXi1;^VCEOWIH4EqUvMi z4ePy`?|Q>C0rAFYG2R)kj3+)Z;Yh4NN~{{J8KfXBR0Q(NqJ!IRi*hvy1ni|+ zwmeV!&9Mps&8zhP7Tx|x4`u>#*#;Hvp5*t5gFbLr3DZB!93jk{BFr2l%(O*@?`3&v zBf<(ORX-uBVu46Cxe1y6jSww=YA%;5p9dpAI@9F82{a5(wR)B6w(GLv?>-M=|Z4jRmvI?Aegk!mZcVzNphPGBr|a`f!1BX z1@{g0=4B zaa_g;6@Hvl;X_KsDHSb3{;UcGNwGgAQt4B)S%2i9; zbQm_KExQoAwl^2cTcuc{E+1iNIbfKEbBG}jnT|)#F-XU(JZET68zvvEma^QQ)U!pB zv`sjA?n*{4yL%brRV#4E6K`uII-NdsdgwwXO(|5ky?yO)L`GG{)tZSX`z?`Zv&GsO z<)%(pRXfLz8zTG$uj5^p^{cvur*Ms7lc;R2RE$;hxme09SDl&}L$}b18CEPl@9?9x ztVVVg0li<`{Z~3%#u8W_fImQ^-oJRzM||7|Wb?YawVe^CxvPU*xuidAzLQ z6}+n9HN39jNenY|xZ#SrS%@X)a=h#qmZ{+lk)z+X3>j}~cnjAx+`vs@#9L1TC=GAp z9rER+D_P_<79~?JaSiX{Jq=U1#lYrdyszN{e5m0fJ|e-qhD+|^nue^qnAMOMi{^l9 zI8$tSd_6m2B zwr$yUnizT_Zr`tVhxgF62)Hy;r!?z%y2w>)r9NN1Ga`fN!){Z1nP767&FN_ki41M+D+$O4FKGGa)6%M){LGqF2X2F?tu}RV0H5^`I2uD)) z8h*p3GVYw%T%&k(91?oEpBV?!}zI=mp-LUG}wt;peiqbQ}w=;tr# zZW|=1>-2J&n|X%82kGDEqTYa1OSh=8kwQ~{(y`)LH4!mDbp2nEG(3%&u&VA0*XpLf zx_e*+32dX!!XEmnF#6H8r_oPqdP``0hIZc~0Ey;f1(6y^$(+s)@f+SP;Fz_ zj59>VICf!@U_Xl#&e02a9u_X(Iz5iJ>HIrPyI5=zSZqbW#p1AxBaF!VhhAnz0LE*0 z;7{UB;89vZFO|1F?c(x86D|Y(H6Wz^E-AFb&3FMjrQtw0us--BcK6>!Bpi_PT?A8< z{PczT7cmeHEP^QBRj)8MeltMz{q3o52Z9v*68#U+iQg=xnn+a literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/JPIPHttpClient.class b/build/src/bin/jpip/classes2/JPIPHttpClient.class new file mode 100644 index 0000000000000000000000000000000000000000..d5ad3b7ec38c32c710740cb986682f3ad290efe5 GIT binary patch literal 9397 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 MmW|57zz zZ#v$1(;GWYoau!>p#P!2q%)m9=UoJup(D(m_k6wQJs;1U{Ppjj?*UxGb_{(OYep}| zg$S}?g*KRVHz`HO^bL}M7m6eF84&2X+{>aO_+;e9^Z>*LCB(z zB_a3a`m&G*F_MQC9$8qi@PmaP4Vdn>f!0jAo*P^@a4c~sUkTadR?=R@ zm9Pzobb6RcwJruuZZqp_9SS~QR+WlGYt?TpsG@ST9Mf{v-#&QxcG)QuM2s!^)pAZv zxsqg4Hk-L11=_fX$2QL4tc^251~6!27)cxFan`~U8$aQx4M)hTkQ|;`$lFjNB;?8( z3O3ep*@lb97B*~bqR0vz&+`K(aD8teC-qw>+3?`o*b?VwDBGyW>jA1Zh9uPILcYdj zPKX&Yh8{xE@d~NA)eV&k44gS?E?Hlm$+(q3d8%xn_b8_Wb0i`CZutl>9B4rW5BY9l zn3xga5!=M$ftwH34K$OTQEp+KDRdtd{fLo~X6YQF4x!D3KWPKhAz(3u=o8?d&-smOqxdob1= zW0lpG!#HdM%?s1YXF3*vNoXz;C%s$*Ci?Li zns^d7+z+OJNS{QMJ~>u>anBxLo XgO3t7uQam}=0BM0V=doNGBNre@ST8g literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/MyHandler.class b/build/src/bin/jpip/classes2/MyHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..cc1904f9e5579f36a1e120c9ee7a1f5f7304efef GIT binary patch literal 1019 zcma)*ZBG+H5Xb-9r)!S`1Vm7%R#doxa9STwN=$^HVp?rdqxf>$uFa9_-MM#__G9Ub zl4#-w@Ix7Aub4Jz)9|9Rv(ug5&VP39&)=WF0Ti&WV-_nJtRk!7rj9sP(zvD8oQ~UA zQ{EkA?&`RQbrsu4!%QQuVN=7FhWiYuecQFe7YuPT|B)ea=rshxY{_=TyLPK4Dq3SVa+UgvT1c%jur5ZRegC<;W7|Mox1Qt+jEPGlN3^Vl0pB%L+%`1Y^q*c z*2ODZ0q5RU3Mb`~uX5$iDgVX|%wb-`wt*d33`;6zIoxep)lkya2W{JF2!c+3>esTD zbEr%M5AaY!!N4OtR+}dVo?=(SGXu}DXP}5(hN-BAeg?zULurS0ojbXx&i~;|x%-B@ z4M$yaWpMrb+Nr3A49mm1Bi^{v)ou`q7B$psQ_f;3;@F;5Aq^oZ5xiBTzH{FfZi8Xl z?4KACTFj4xF0@l(cDRU<=2LT;A{@M4^sdJYtLE_}Xgc)zJ*L)}qX+5Qg)uT{Dtsl% zaY^Sm88iqwl~Wc$z?%X&%+SPAYiWEF^rPpd-2!=8S{bd$&2zBtBi!2c7<-{Sa})*x%;1 literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/OptionPanel.class b/build/src/bin/jpip/classes2/OptionPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..46549c23f904583961dab28fa8aad514dd311bdd GIT binary patch literal 2735 zcmZ`*S$7mg6#hC4^rR`4gs=!g0-{bPkqEelMUsFFOh_P@5W-?7X@-VOcj)OXpeU{= z?z`d&D((wPItu6bsOR|ZFYrxYee)cT->nYGgcBdSZdKh|clqwETm9R=mwyJZ2A3@k z+e~b?P=c(5)o3=cBZ(FZ)6rVW_0A-A32ig6JF$_6gmb@0w#%$Tcza~%lwq%hF6=Y0 z-$DfrSU89WWM*6FMvn;e%F;1$s1!LImcg~K1V@B-RAzl9@=16WmZMb$KZ$+|#}LS( zAVVm_fM^^PYeO;&%hBU9oDlAVGCXABq=|=3JYt|U@ZIi#F!VhG^Rq|nL3_BaFywl< zx@`@5yWYS|Hy=2;t5TMm&*g2;&N+dB+1X5C_ox0sTP4@aj1}Y}|uqCkb4uzB!$_;9bVqljX8aFUwo$I;b1_R4d zlO3AmNOik`M5Ev97?_iFJ!i*2zS{|Q+ueP#WA}uv@3lI?AwS4Fy#^{%+Lt+tRNU+Md(5N`O_^gi}Ph7~}?j zIBOsG2SQ;!s_+;dH!!bQVk`{?$|Ypqt7d+6AHKCcCvLMszj&|2DX@1 zxI=S9osOc>&-eQty;pb=Pbr+n(+bbvjKZC`OW|(Zqfn1^CZ1Jz4$l+z;#`S~FPL~y z;U&DR@Cx2A@utFCcw1pTHYl9MyG&sh_<4nmxL4sLd`yogg{d=5 z)ZzdbUT>9-NZ}J)FfgN$ZaaaAPsQ!e6h6l(g)i`>!dLiM;cI-O@GZVmxG2N-_(9(&8z>(zk;^@KAgk zc&Afi9_m}tud5!m^HiJy3Ad`WJ`BdU#kcA?-D1kCELY;iTN9G8_I zqCJk=fq|s$d46bzyoA@M{`ZuGATDHf?T%fb{i69|Iz7qWIFI%gOwA!yfpduck>wTV zq&T}wV%`qfBDUF;qMuEU7)xpUJ-V|<5oC11Tik7T3$E^=Nr6+|13FUdq242G z(y*4S87aL~;c+!NP=(B$&I6nK_q zO#0NOMXsVOFil7Zq=~{|d2S{ra=fJYNUrAlZ(uDBK0eMM!Wly|aAAD9jNg<3*`nSm{eh zma7P}II-f1Y(<#ek(Mnz;YK>b99e5xGlIG4+7XncjS-Yzq)7u!9Phzwj;oMB9m*Kq zG6q<~&?LC^d;qpEs208f9h5xCfO@&>G9ZsF+rVb>bs&a|89I=^XtDfPEFqa2VP13X zFLdGxDmrUNF`t%eA}k;;c>#+>@)yh#5@BI8X<2QAMPm}y1)Pf|&XQdBD-Onji<_x# zNoVaPT+eUmD3*<&lB`OCRz=qG&hizbxM2j>$*~A4%Wo8Jgqu3zjhls(8Gp}R6Cow@ zM1*P);a3(xAf)Ftr(;@s+K+Gx=c0~URz;|jRfJmw#1akS0W9RakyX)zIRs@MVX4Gc zq>&+{+X&xw=6naTgt85-*o&R~9c#k?cH<=4afa}|gFQHpPJBadgnjrO`|$@3;7{1N kkJ^(+R4)Gq;ab|mI%zrAukt7HHOSv#1@)Bv2PXN!*8l(j literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/PnmImage.class b/build/src/bin/jpip/classes2/PnmImage.class new file mode 100644 index 0000000000000000000000000000000000000000..6bb930efa4756f05063a2621336c4546b7035fac GIT binary patch literal 3352 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 G@c#gtu&6Tt literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/classes2/ResizeListener.class b/build/src/bin/jpip/classes2/ResizeListener.class new file mode 100644 index 0000000000000000000000000000000000000000..139b2dbc02ff2c0dd3971a6ba759bc0da94bc9fd GIT binary patch literal 1107 zcmah|?M@R>5IuKWy0qQ$Q3Mpf3Tkb)m7@3=5Dip=Nzufb`qM1!O}R*SNxLnHPeLLu zVIq+D!w2x0jPcy1Y=Oj>rqerf&&-)QbNlPhkDmY@;AsL$Wa3C*Hi0?Z(x=-A%;1hT z*#zCY`XZ;@yb0Sx!9-EOP(6WEA=GY>+byyq6vIMTb&V->HAzaCQSK6Ze?b-EBC&{1lEd zeTHl>%Xx>C;uFKa-w>@#fQc)dWy0Sg51+g%Wc?&6wm?&9TzY9=4r_iRXn6`lx&(%~>@3$@;FkF>gl;ts<2SMf$W_8_ Jur~uY{{j*D+&2IK literal 0 HcmV?d00001 diff --git a/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt b/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt new file mode 100644 index 000000000..1f1ec1d77 --- /dev/null +++ b/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Ant-Version: Apache Ant 1.7.0 +Created-By: Kaori Hagihara +Main-Class: ImageWindow +Class-Path: /usr/share/java/xercesImpl.jar diff --git a/build/src/lib/openjp2/opj_config.h b/build/src/lib/openjp2/opj_config.h new file mode 100644 index 000000000..f4fea6e04 --- /dev/null +++ b/build/src/lib/openjp2/opj_config.h @@ -0,0 +1,10 @@ +/* create opj_config.h for CMake */ +#define OPJ_HAVE_STDINT_H 1 + +/*--------------------------------------------------------------------------*/ +/* OpenJPEG Versioning */ + +/* Version number. */ +#define OPJ_VERSION_MAJOR 2 +#define OPJ_VERSION_MINOR 3 +#define OPJ_VERSION_BUILD 1 diff --git a/build/src/lib/openjp2/opj_config_private.h b/build/src/lib/openjp2/opj_config_private.h new file mode 100644 index 000000000..9ad74e403 --- /dev/null +++ b/build/src/lib/openjp2/opj_config_private.h @@ -0,0 +1,49 @@ +/* create opj_config_private.h for CMake */ +#define OPJ_HAVE_INTTYPES_H 1 + +#define OPJ_PACKAGE_VERSION "2.3.1" + +/* Not used by openjp2*/ +/*#define HAVE_MEMORY_H 1*/ +/*#define HAVE_STDLIB_H 1*/ +/*#define HAVE_STRINGS_H 1*/ +/*#define HAVE_STRING_H 1*/ +/*#define HAVE_SYS_STAT_H 1*/ +/*#define HAVE_SYS_TYPES_H 1 */ +/*#define HAVE_UNISTD_H 1*/ + +/* #undef _LARGEFILE_SOURCE */ +/* #undef _LARGE_FILES */ +/* #undef _FILE_OFFSET_BITS */ +#define OPJ_HAVE_FSEEKO ON + +/* find whether or not have */ +#define OPJ_HAVE_MALLOC_H +/* check if function `aligned_alloc` exists */ +/* #undef OPJ_HAVE_ALIGNED_ALLOC */ +/* check if function `_aligned_malloc` exists */ +/* #undef OPJ_HAVE__ALIGNED_MALLOC */ +/* check if function `memalign` exists */ +#define OPJ_HAVE_MEMALIGN +/* check if function `posix_memalign` exists */ +#define OPJ_HAVE_POSIX_MEMALIGN + +#if !defined(_POSIX_C_SOURCE) +#if defined(OPJ_HAVE_FSEEKO) || defined(OPJ_HAVE_POSIX_MEMALIGN) +/* Get declarations of fseeko, ftello, posix_memalign. */ +#define _POSIX_C_SOURCE 200112L +#endif +#endif + +/* Byte order. */ +/* All compilers that support Mac OS X define either __BIG_ENDIAN__ or +__LITTLE_ENDIAN__ to match the endianness of the architecture being +compiled for. This is not necessarily the same as the architecture of the +machine doing the building. In order to support Universal Binaries on +Mac OS X, we prefer those defines to decide the endianness. +On other platforms we use the result of the TRY_RUN. */ +#if !defined(__APPLE__) +/* #undef OPJ_BIG_ENDIAN */ +#elif defined(__BIG_ENDIAN__) +# define OPJ_BIG_ENDIAN +#endif diff --git a/build/tests/CTestTestfile.cmake b/build/tests/CTestTestfile.cmake new file mode 100644 index 000000000..57ed8a21d --- /dev/null +++ b/build/tests/CTestTestfile.cmake @@ -0,0 +1,31 @@ +# CMake generated Testfile for +# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests +# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(tte0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder") +add_test(tte1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "3" "2048" "2048" "1024" "1024" "8" "1" "tte1.j2k") +add_test(tte2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "3" "2048" "2048" "1024" "1024" "8" "1" "tte2.jp2") +add_test(tte3 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "2048" "2048" "1024" "1024" "8" "1" "tte3.j2k") +add_test(tte4 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "256" "256" "128" "128" "8" "0" "tte4.j2k") +add_test(tte5 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "512" "512" "256" "256" "8" "0" "tte5.j2k") +add_test(ttd0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder") +set_tests_properties(ttd0 PROPERTIES DEPENDS "tte0") +add_test(ttd1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder" "0" "0" "1024" "1024" "tte1.j2k") +set_tests_properties(ttd1 PROPERTIES DEPENDS "tte1") +add_test(ttd2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder" "0" "0" "1024" "1024" "tte2.jp2") +set_tests_properties(ttd2 PROPERTIES DEPENDS "tte2") +add_test(rta1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte1.j2k") +set_tests_properties(rta1 PROPERTIES DEPENDS "tte1") +add_test(rta2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte2.jp2") +set_tests_properties(rta2 PROPERTIES DEPENDS "tte2") +add_test(rta3 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte3.j2k") +set_tests_properties(rta3 PROPERTIES DEPENDS "tte3") +add_test(rta4 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte4.j2k") +set_tests_properties(rta4 PROPERTIES DEPENDS "tte4") +add_test(rta5 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte5.j2k") +set_tests_properties(rta5 PROPERTIES DEPENDS "tte5") +subdirs(conformance) +subdirs(nonregression) +subdirs(unit) diff --git a/build/tests/conformance/CTestTestfile.cmake b/build/tests/conformance/CTestTestfile.cmake new file mode 100644 index 000000000..9a3c241f1 --- /dev/null +++ b/build/tests/conformance/CTestTestfile.cmake @@ -0,0 +1,387 @@ +# CMake generated Testfile for +# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/conformance +# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(ETS-C1P0-p0_01.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_01.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_01.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_01.j2k-decode") +add_test(NR-C1P0-p0_01.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_01.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_01.j2k-decode") +add_test(ETS-C1P0-p0_02.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_02.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_02.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_02.j2k-decode") +add_test(NR-C1P0-p0_02.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_02.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_02.j2k-decode") +add_test(ETS-C1P0-p0_03.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_03.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_03.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_03.j2k-decode") +add_test(NR-C1P0-p0_03.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_03.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_03.j2k-decode") +add_test(ETS-C1P0-p0_04.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_04.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-n" "3" "-p" "5:4:6" "-m" "0.776:0.626:1.070" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_04.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_04.j2k-decode") +add_test(NR-C1P0-p0_04.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_04.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_04.j2k-decode") +add_test(ETS-C1P0-p0_05.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_05.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-n" "4" "-p" "2:2:2:0" "-m" "0.302:0.307:0.269:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_05.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_05.j2k-decode") +add_test(NR-C1P0-p0_05.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_05.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_05.j2k-decode") +add_test(ETS-C1P0-p0_06.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_06.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-n" "4" "-p" "635:403:378:0" "-m" "11287:6124:3968:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_06.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_06.j2k-decode") +add_test(NR-C1P0-p0_06.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_06.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_06.j2k-decode") +add_test(ETS-C1P0-p0_07.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_07.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_07.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_07.j2k-decode") +add_test(NR-C1P0-p0_07.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_07.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_07.j2k-decode") +add_test(ETS-C1P0-p0_08.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_08.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-r" "1") +add_test(ETS-C1P0-p0_08.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_08.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_08.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_08.j2k-decode") +add_test(NR-C1P0-p0_08.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_08.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_08.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_08.j2k-decode") +add_test(ETS-C1P0-p0_09.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_09.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_09.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_09.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_09.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_09.j2k-decode") +add_test(NR-C1P0-p0_09.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_09.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_09.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_09.j2k-decode") +add_test(ETS-C1P0-p0_10.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_10.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_10.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_10.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_10.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_10.j2k-decode") +add_test(NR-C1P0-p0_10.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_10.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_10.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_10.j2k-decode") +add_test(ETS-C1P0-p0_11.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_11.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_11.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_11.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_11.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_11.j2k-decode") +add_test(NR-C1P0-p0_11.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_11.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_11.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_11.j2k-decode") +add_test(ETS-C1P0-p0_12.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_12.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_12.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_12.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_12.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_12.j2k-decode") +add_test(NR-C1P0-p0_12.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_12.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_12.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_12.j2k-decode") +add_test(ETS-C1P0-p0_13.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_13.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_13.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_13.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-n" "4" "-p" "0:0:0:0" "-m" "0:0:0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_13.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_13.j2k-decode") +add_test(NR-C1P0-p0_13.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_13.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_13.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_13.j2k-decode") +add_test(ETS-C1P0-p0_14.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_14.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_14.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_14.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_14.j2k-decode") +add_test(NR-C1P0-p0_14.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_14.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_14.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_14.j2k-decode") +add_test(ETS-C1P0-p0_15.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_15.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_15.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_15.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_15.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_15.j2k-decode") +add_test(NR-C1P0-p0_15.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_15.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_15.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_15.j2k-decode") +add_test(ETS-C1P0-p0_16.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_16.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-r" "0") +add_test(ETS-C1P0-p0_16.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_16.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P0-p0_16.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_16.j2k-decode") +add_test(NR-C1P0-p0_16.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_16.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P0-p0_16.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_16.j2k-decode") +add_test(ETS-C1P1-p1_01.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_01.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_01.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_01.j2k-decode") +add_test(NR-C1P1-p1_01.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_01.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_01.j2k-decode") +add_test(ETS-C1P1-p1_02.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_02.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-n" "3" "-p" "5:4:6" "-m" "0.765:0.616:1.051" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_02.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_02.j2k-decode") +add_test(NR-C1P1-p1_02.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_02.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_02.j2k-decode") +add_test(ETS-C1P1-p1_03.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_03.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-n" "4" "-p" "2:2:1:0" "-m" "0.3:0.210:0.200:0" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_03.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_03.j2k-decode") +add_test(NR-C1P1-p1_03.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_03.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_03.j2k-decode") +add_test(ETS-C1P1-p1_04.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_04.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-n" "1" "-p" "624" "-m" "3080" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_04.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_04.j2k-decode") +add_test(NR-C1P1-p1_04.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_04.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_04.j2k-decode") +add_test(ETS-C1P1-p1_05.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_05.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-n" "3" "-p" "40:40:40" "-m" "8.458:9.816:10.154" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_05.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_05.j2k-decode") +add_test(NR-C1P1-p1_05.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_05.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_05.j2k-decode") +add_test(ETS-C1P1-p1_06.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_06.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-n" "3" "-p" "2:2:2" "-m" "0.6:0.6:0.6" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_06.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_06.j2k-decode") +add_test(NR-C1P1-p1_06.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_06.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_06.j2k-decode") +add_test(ETS-C1P1-p1_07.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-r" "0") +add_test(ETS-C1P1-p1_07.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-n" "2" "-p" "0:0" "-m" "0:0" "-s" "b_t_") +set_tests_properties(ETS-C1P1-p1_07.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_07.j2k-decode") +add_test(NR-C1P1-p1_07.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-n" "2" "-d" "-s" "b_t_") +set_tests_properties(NR-C1P1-p1_07.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_07.j2k-decode") +add_test(ETS-JP2-file1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_1.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file1.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file1.jp2-decode") +add_test(NR-JP2-file1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_1.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file1.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file1.jp2-decode") +add_test(ETS-JP2-file2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_2.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file2.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file2.jp2-decode") +add_test(NR-JP2-file2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_2.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file2.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file2.jp2-decode") +add_test(ETS-JP2-file3.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file3.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_3.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file3.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file3.jp2-decode") +add_test(NR-JP2-file3.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_3.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file3.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file3.jp2-decode") +add_test(ETS-JP2-file4.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file4.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_4.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file4.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file4.jp2-decode") +add_test(NR-JP2-file4.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_4.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file4.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file4.jp2-decode") +add_test(ETS-JP2-file5.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file5.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file5.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_5.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file5.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file5.jp2-decode") +add_test(NR-JP2-file5.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_5.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file5.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file5.jp2-decode") +add_test(ETS-JP2-file6.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file6.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file6.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_6.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file6.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file6.jp2-decode") +add_test(NR-JP2-file6.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_6.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file6.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file6.jp2-decode") +add_test(ETS-JP2-file7.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file7.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file7.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_7.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file7.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file7.jp2-decode") +add_test(NR-JP2-file7.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_7.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file7.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file7.jp2-decode") +add_test(ETS-JP2-file8.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file8.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file8.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_8.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file8.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file8.jp2-decode") +add_test(NR-JP2-file8.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_8.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file8.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file8.jp2-decode") +add_test(ETS-JP2-file9.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file9.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-p" "8S" "-force-rgb") +add_test(ETS-JP2-file9.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_9.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") +set_tests_properties(ETS-JP2-file9.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file9.jp2-decode") +add_test(NR-JP2-file9.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_9.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-n" "3" "-d" "-s" "b_t_") +set_tests_properties(NR-JP2-file9.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file9.jp2-decode") +add_test(ETS-KDU-a1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-a1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-a1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a1_mono.j2c-decode") +add_test(NR-KDU-a1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-a1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a1_mono.j2c-decode") +add_test(ETS-KDU-a2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-a2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-a2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a2_colr.j2c-decode") +add_test(NR-KDU-a2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-a2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a2_colr.j2c-decode") +add_test(ETS-KDU-a3_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a3_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-a3_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-a3_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a3_mono.j2c-decode") +add_test(NR-KDU-a3_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-a3_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a3_mono.j2c-decode") +add_test(ETS-KDU-a4_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a4_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-a4_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-a4_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a4_colr.j2c-decode") +add_test(NR-KDU-a4_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-a4_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a4_colr.j2c-decode") +add_test(ETS-KDU-a5_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a5_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-a5_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a5_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-a5_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a5_mono.j2c-decode") +add_test(NR-KDU-a5_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a5_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-a5_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a5_mono.j2c-decode") +add_test(ETS-KDU-a6_mono_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a6_mono_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-upsample" "-split-pnm") +add_test(ETS-KDU-a6_mono_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a6_mono_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-n" "4" "-s" "b_t_" "-p" "4:4:4:4" "-m" "1:1:1:1") +set_tests_properties(ETS-KDU-a6_mono_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a6_mono_colr.j2c-decode") +add_test(NR-KDU-a6_mono_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a6_mono_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-n" "4" "-s" "b_t_" "-d") +set_tests_properties(NR-KDU-a6_mono_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a6_mono_colr.j2c-decode") +add_test(ETS-KDU-b1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-b1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-b1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b1_mono.j2c-decode") +add_test(NR-KDU-b1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-b1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b1_mono.j2c-decode") +add_test(ETS-KDU-b2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-b2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-b2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b2_mono.j2c-decode") +add_test(NR-KDU-b2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-b2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b2_mono.j2c-decode") +add_test(ETS-KDU-b3_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b3_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-b3_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-b3_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b3_mono.j2c-decode") +add_test(NR-KDU-b3_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-b3_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b3_mono.j2c-decode") +add_test(ETS-KDU-c1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/c1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-c1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-c1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-c1_mono.j2c-decode") +add_test(NR-KDU-c1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-c1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-c1_mono.j2c-decode") +add_test(ETS-KDU-c2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/c2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-c2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-c2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-c2_mono.j2c-decode") +add_test(NR-KDU-c2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-c2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-c2_mono.j2c-decode") +add_test(ETS-KDU-d1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/d1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-d1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/d1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-d1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-d1_colr.j2c-decode") +add_test(NR-KDU-d1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_d1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-d1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-d1_colr.j2c-decode") +add_test(ETS-KDU-d2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/d2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-d2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/d2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-d2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-d2_colr.j2c-decode") +add_test(NR-KDU-d2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_d2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-d2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-d2_colr.j2c-decode") +add_test(ETS-KDU-e1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/e1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-e1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/e1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-e1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-e1_colr.j2c-decode") +add_test(NR-KDU-e1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_e1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-e1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-e1_colr.j2c-decode") +add_test(ETS-KDU-e2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/e2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-e2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/e2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-e2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-e2_colr.j2c-decode") +add_test(NR-KDU-e2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_e2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-e2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-e2_colr.j2c-decode") +add_test(ETS-KDU-f1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/f1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-f1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/f1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-f1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-f1_mono.j2c-decode") +add_test(NR-KDU-f1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_f1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-f1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-f1_mono.j2c-decode") +add_test(ETS-KDU-f2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/f2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-upsample") +add_test(ETS-KDU-f2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/f2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-f2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-f2_mono.j2c-decode") +add_test(NR-KDU-f2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_f2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-f2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-f2_mono.j2c-decode") +add_test(ETS-KDU-g1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-g1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-g1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g1_colr.j2c-decode") +add_test(NR-KDU-g1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-g1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g1_colr.j2c-decode") +add_test(ETS-KDU-g2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-g2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-g2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g2_colr.j2c-decode") +add_test(NR-KDU-g2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-g2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g2_colr.j2c-decode") +add_test(ETS-KDU-g3_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g3_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-g3_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g3_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-g3_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g3_colr.j2c-decode") +add_test(NR-KDU-g3_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g3_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-g3_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g3_colr.j2c-decode") +add_test(ETS-KDU-g4_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g4_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-upsample") +add_test(ETS-KDU-g4_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") +set_tests_properties(ETS-KDU-g4_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g4_colr.j2c-decode") +add_test(NR-KDU-g4_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-n" "1" "-d") +set_tests_properties(NR-KDU-g4_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g4_colr.j2c-decode") +add_test(ETS-RIC-subsampling_1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/subsampling_1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm") +add_test(ETS-RIC-subsampling_1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/subsampling_1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") +set_tests_properties(ETS-RIC-subsampling_1.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-subsampling_1.jp2-decode") +add_test(NR-RIC-subsampling_1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_subsampling_1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm" "-n" "1" "-d") +set_tests_properties(NR-RIC-subsampling_1.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-subsampling_1.jp2-decode") +add_test(ETS-RIC-subsampling_2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/subsampling_2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm") +add_test(ETS-RIC-subsampling_2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/subsampling_2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") +set_tests_properties(ETS-RIC-subsampling_2.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-subsampling_2.jp2-decode") +add_test(NR-RIC-subsampling_2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_subsampling_2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm" "-n" "1" "-d") +set_tests_properties(NR-RIC-subsampling_2.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-subsampling_2.jp2-decode") +add_test(ETS-RIC-zoo1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/zoo1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm") +add_test(ETS-RIC-zoo1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/zoo1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") +set_tests_properties(ETS-RIC-zoo1.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-zoo1.jp2-decode") +add_test(NR-RIC-zoo1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_zoo1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm" "-n" "1" "-d") +set_tests_properties(NR-RIC-zoo1.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-zoo1.jp2-decode") +add_test(ETS-RIC-zoo2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/zoo2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm") +add_test(ETS-RIC-zoo2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/zoo2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") +set_tests_properties(ETS-RIC-zoo2.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-zoo2.jp2-decode") +add_test(NR-RIC-zoo2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_zoo2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm" "-n" "1" "-d") +set_tests_properties(NR-RIC-zoo2.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-zoo2.jp2-decode") +add_test(NR-p0_01.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_01.j2k.txt") +add_test(NR-p0_01.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_01.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_01.j2k.txt") +set_tests_properties(NR-p0_01.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_01.j2k-dump") +add_test(NR-p0_02.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_02.j2k.txt") +add_test(NR-p0_02.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_02.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_02.j2k.txt") +set_tests_properties(NR-p0_02.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_02.j2k-dump") +add_test(NR-p0_03.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_03.j2k.txt") +add_test(NR-p0_03.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_03.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_03.j2k.txt") +set_tests_properties(NR-p0_03.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_03.j2k-dump") +add_test(NR-p0_04.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_04.j2k.txt") +add_test(NR-p0_04.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_04.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_04.j2k.txt") +set_tests_properties(NR-p0_04.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_04.j2k-dump") +add_test(NR-p0_05.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_05.j2k.txt") +add_test(NR-p0_05.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_05.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_05.j2k.txt") +set_tests_properties(NR-p0_05.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_05.j2k-dump") +add_test(NR-p0_06.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_06.j2k.txt") +add_test(NR-p0_06.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_06.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_06.j2k.txt") +set_tests_properties(NR-p0_06.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_06.j2k-dump") +add_test(NR-p0_07.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_07.j2k.txt") +add_test(NR-p0_07.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_07.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_07.j2k.txt") +set_tests_properties(NR-p0_07.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_07.j2k-dump") +add_test(NR-p0_08.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_08.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_08.j2k.txt") +add_test(NR-p0_08.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_08.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_08.j2k.txt") +set_tests_properties(NR-p0_08.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_08.j2k-dump") +add_test(NR-p0_09.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_09.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_09.j2k.txt") +add_test(NR-p0_09.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_09.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_09.j2k.txt") +set_tests_properties(NR-p0_09.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_09.j2k-dump") +add_test(NR-p0_10.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_10.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_10.j2k.txt") +add_test(NR-p0_10.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_10.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_10.j2k.txt") +set_tests_properties(NR-p0_10.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_10.j2k-dump") +add_test(NR-p0_11.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_11.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_11.j2k.txt") +add_test(NR-p0_11.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_11.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_11.j2k.txt") +set_tests_properties(NR-p0_11.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_11.j2k-dump") +add_test(NR-p0_12.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_12.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_12.j2k.txt") +add_test(NR-p0_12.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_12.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_12.j2k.txt") +set_tests_properties(NR-p0_12.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_12.j2k-dump") +add_test(NR-p0_13.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_13.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_13.j2k.txt") +add_test(NR-p0_13.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_13.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_13.j2k.txt") +set_tests_properties(NR-p0_13.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_13.j2k-dump") +add_test(NR-p0_14.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_14.j2k.txt") +add_test(NR-p0_14.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_14.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_14.j2k.txt") +set_tests_properties(NR-p0_14.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_14.j2k-dump") +add_test(NR-p0_15.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_15.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_15.j2k.txt") +add_test(NR-p0_15.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_15.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_15.j2k.txt") +set_tests_properties(NR-p0_15.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_15.j2k-dump") +add_test(NR-p0_16.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_16.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_16.j2k.txt") +add_test(NR-p0_16.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_16.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_16.j2k.txt") +set_tests_properties(NR-p0_16.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_16.j2k-dump") +add_test(NR-p1_01.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_01.j2k.txt") +add_test(NR-p1_01.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_01.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_01.j2k.txt") +set_tests_properties(NR-p1_01.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_01.j2k-dump") +add_test(NR-p1_02.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_02.j2k.txt") +add_test(NR-p1_02.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_02.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_02.j2k.txt") +set_tests_properties(NR-p1_02.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_02.j2k-dump") +add_test(NR-p1_03.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_03.j2k.txt") +add_test(NR-p1_03.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_03.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_03.j2k.txt") +set_tests_properties(NR-p1_03.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_03.j2k-dump") +add_test(NR-p1_04.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_04.j2k.txt") +add_test(NR-p1_04.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_04.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_04.j2k.txt") +set_tests_properties(NR-p1_04.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_04.j2k-dump") +add_test(NR-p1_05.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_05.j2k.txt") +add_test(NR-p1_05.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_05.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_05.j2k.txt") +set_tests_properties(NR-p1_05.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_05.j2k-dump") +add_test(NR-p1_06.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_06.j2k.txt") +add_test(NR-p1_06.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_06.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_06.j2k.txt") +set_tests_properties(NR-p1_06.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_06.j2k-dump") +add_test(NR-p1_07.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_07.j2k.txt") +add_test(NR-p1_07.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_07.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_07.j2k.txt") +set_tests_properties(NR-p1_07.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_07.j2k-dump") +add_test(NR-file1.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.txt") +add_test(NR-file1.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file1.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.txt") +set_tests_properties(NR-file1.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file1.jp2-dump") +add_test(NR-file2.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.txt") +add_test(NR-file2.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file2.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.txt") +set_tests_properties(NR-file2.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file2.jp2-dump") +add_test(NR-file3.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.txt") +add_test(NR-file3.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file3.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.txt") +set_tests_properties(NR-file3.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file3.jp2-dump") +add_test(NR-file4.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.txt") +add_test(NR-file4.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file4.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.txt") +set_tests_properties(NR-file4.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file4.jp2-dump") +add_test(NR-file5.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file5.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.txt") +add_test(NR-file5.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file5.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.txt") +set_tests_properties(NR-file5.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file5.jp2-dump") +add_test(NR-file6.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file6.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.txt") +add_test(NR-file6.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file6.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.txt") +set_tests_properties(NR-file6.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file6.jp2-dump") +add_test(NR-file7.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file7.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.txt") +add_test(NR-file7.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file7.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.txt") +set_tests_properties(NR-file7.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file7.jp2-dump") +add_test(NR-file8.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file8.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.txt") +add_test(NR-file8.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file8.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.txt") +set_tests_properties(NR-file8.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file8.jp2-dump") +add_test(NR-file9.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file9.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.txt") +add_test(NR-file9.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file9.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.txt") +set_tests_properties(NR-file9.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file9.jp2-dump") diff --git a/build/tests/nonregression/CTestTestfile.cmake b/build/tests/nonregression/CTestTestfile.cmake new file mode 100644 index 000000000..71933560c --- /dev/null +++ b/build/tests/nonregression/CTestTestfile.cmake @@ -0,0 +1,1508 @@ +# CMake generated Testfile for +# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression +# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(NR-ENC-Bretagne1.ppm-1-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k" "-r" "200,50,10") +add_test(NR-ENC-Bretagne1.ppm-1-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k-ENC-1.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-1-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-1-encode") +add_test(NR-ENC-Bretagne1.ppm-1-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_0-ENC-1.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k-ENC-1.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-1-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-1-dump") +add_test(NR-ENC-Bretagne1.ppm-2-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k" "-q" "30,35,40" "-n" "2") +add_test(NR-ENC-Bretagne1.ppm-2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k-ENC-2.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-2-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-2-encode") +add_test(NR-ENC-Bretagne1.ppm-2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_1-ENC-2.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k-ENC-2.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-2-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-2-dump") +add_test(NR-ENC-Bretagne1.ppm-3-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k" "-q" "30,35,40" "-b" "16,16" "-c" "[64,64]") +add_test(NR-ENC-Bretagne1.ppm-3-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k-ENC-3.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-3-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-3-encode") +add_test(NR-ENC-Bretagne1.ppm-3-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_2-ENC-3.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k-ENC-3.txt") +set_tests_properties(NR-ENC-Bretagne1.ppm-3-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-3-dump") +add_test(NR-ENC-Bretagne2.ppm-4-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k" "-c" "[128,128],[128,128],[128,128]" "-r" "100,20,2" "-t" "640,480" "-b" "32,32") +add_test(NR-ENC-Bretagne2.ppm-4-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k-ENC-4.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-4-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-4-encode") +add_test(NR-ENC-Bretagne2.ppm-4-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_0-ENC-4.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k-ENC-4.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-4-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-4-dump") +add_test(NR-ENC-Bretagne2.ppm-5-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k" "-t" "127,127" "-p" "PCRL") +add_test(NR-ENC-Bretagne2.ppm-5-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k-ENC-5.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-5-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-5-encode") +add_test(NR-ENC-Bretagne2.ppm-5-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_1-ENC-5.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k-ENC-5.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-5-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-5-dump") +add_test(NR-ENC-Bretagne2.ppm-6-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k" "-s" "2,2" "-SOP") +add_test(NR-ENC-Bretagne2.ppm-6-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k-ENC-6.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-6-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-6-encode") +add_test(NR-ENC-Bretagne2.ppm-6-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_2-ENC-6.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k-ENC-6.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-6-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-6-dump") +add_test(NR-ENC-Bretagne2.ppm-7-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k" "-EPH" "-M" "38") +add_test(NR-ENC-Bretagne2.ppm-7-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k-ENC-7.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-7-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-7-encode") +add_test(NR-ENC-Bretagne2.ppm-7-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_3-ENC-7.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k-ENC-7.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-7-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-7-dump") +add_test(NR-ENC-Bretagne2.ppm-8-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k" "-d" "150,300" "-r" "800") +add_test(NR-ENC-Bretagne2.ppm-8-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k-ENC-8.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-8-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-8-encode") +add_test(NR-ENC-Bretagne2.ppm-8-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_4-ENC-8.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k-ENC-8.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-8-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-8-dump") +add_test(NR-ENC-Cevennes1.bmp-9-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes1.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k" "-r" "10") +add_test(NR-ENC-Cevennes1.bmp-9-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k-ENC-9.txt") +set_tests_properties(NR-ENC-Cevennes1.bmp-9-dump PROPERTIES DEPENDS "NR-ENC-Cevennes1.bmp-9-encode") +add_test(NR-ENC-Cevennes1.bmp-9-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Cevennes1-ENC-9.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k-ENC-9.txt") +set_tests_properties(NR-ENC-Cevennes1.bmp-9-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Cevennes1.bmp-9-dump") +add_test(NR-ENC-Cevennes2.ppm-10-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2" "-r" "50") +add_test(NR-ENC-Cevennes2.ppm-10-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2-ENC-10.txt") +set_tests_properties(NR-ENC-Cevennes2.ppm-10-dump PROPERTIES DEPENDS "NR-ENC-Cevennes2.ppm-10-encode") +add_test(NR-ENC-Cevennes2.ppm-10-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Cevennes2-ENC-10.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2-ENC-10.txt") +set_tests_properties(NR-ENC-Cevennes2.ppm-10-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Cevennes2.ppm-10-dump") +add_test(NR-ENC-Rome.bmp-11-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Rome.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2" "-q" "30,35,50" "-p" "LRCP" "-n" "3") +add_test(NR-ENC-Rome.bmp-11-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2-ENC-11.txt") +set_tests_properties(NR-ENC-Rome.bmp-11-dump PROPERTIES DEPENDS "NR-ENC-Rome.bmp-11-encode") +add_test(NR-ENC-Rome.bmp-11-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Rome-ENC-11.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2-ENC-11.txt") +set_tests_properties(NR-ENC-Rome.bmp-11-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Rome.bmp-11-dump") +add_test(NR-ENC-random-issue-0005.tif-12-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k") +add_test(NR-ENC-random-issue-0005.tif-12-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k-ENC-12.txt") +set_tests_properties(NR-ENC-random-issue-0005.tif-12-dump PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-encode") +add_test(NR-ENC-random-issue-0005.tif-12-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_random-issue-0005-ENC-12.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k-ENC-12.txt") +set_tests_properties(NR-ENC-random-issue-0005.tif-12-compare_dump2base PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-dump") +add_test(NR-ENC-random-issue-0005.tif-12-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k.lossless.tif") +set_tests_properties(NR-ENC-random-issue-0005.tif-12-lossless-decode PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-encode") +add_test(NR-ENC-random-issue-0005.tif-12-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-random-issue-0005.tif-12-lossless-compare PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-lossless-decode") +add_test(NR-ENC-tmp-issue-0062.raw-13-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k" "-F" "512,512,1,16,u") +add_test(NR-ENC-tmp-issue-0062.raw-13-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k-ENC-13.txt") +set_tests_properties(NR-ENC-tmp-issue-0062.raw-13-dump PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-13-encode") +add_test(NR-ENC-tmp-issue-0062.raw-13-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_tmp-issue-0062-u-ENC-13.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k-ENC-13.txt") +set_tests_properties(NR-ENC-tmp-issue-0062.raw-13-compare_dump2base PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-13-dump") +add_test(NR-ENC-tmp-issue-0062.raw-14-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k" "-F" "512,512,1,16,s") +add_test(NR-ENC-tmp-issue-0062.raw-14-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k-ENC-14.txt") +set_tests_properties(NR-ENC-tmp-issue-0062.raw-14-dump PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-14-encode") +add_test(NR-ENC-tmp-issue-0062.raw-14-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_tmp-issue-0062-s-ENC-14.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k-ENC-14.txt") +set_tests_properties(NR-ENC-tmp-issue-0062.raw-14-compare_dump2base PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-14-dump") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k" "-cinema2K" "24") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k-ENC-15.txt") +set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-encode") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_4_2K_24_185_CBR_WB_000_C2K_24-ENC-15.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k-ENC-15.txt") +set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k" "-cinema2K" "24") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k-ENC-16.txt") +set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-encode") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_5_2K_24_235_CBR_STEM24_000_C2K_24-ENC-16.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k-ENC-16.txt") +set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k" "-cinema2K" "24") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k-ENC-17.txt") +set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-encode") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24-ENC-17.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k-ENC-17.txt") +set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k" "-cinema2K" "48") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k-ENC-18.txt") +set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-encode") +add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_4_2K_24_185_CBR_WB_000_C2K_48-ENC-18.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k-ENC-18.txt") +set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k" "-cinema2K" "48") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k-ENC-19.txt") +set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-encode") +add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_5_2K_24_235_CBR_STEM24_000_C2K_48-ENC-19.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k-ENC-19.txt") +set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k" "-cinema2K" "48") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k-ENC-20.txt") +set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-encode") +add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48-ENC-20.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k-ENC-20.txt") +set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump") +add_test(NR-ENC-ElephantDream_4K.tif-21-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/ElephantDream_4K.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k" "-cinema4K") +add_test(NR-ENC-ElephantDream_4K.tif-21-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k-ENC-21.txt") +set_tests_properties(NR-ENC-ElephantDream_4K.tif-21-dump PROPERTIES DEPENDS "NR-ENC-ElephantDream_4K.tif-21-encode") +add_test(NR-ENC-ElephantDream_4K.tif-21-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ElephantDream_4K_C4K-ENC-21.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k-ENC-21.txt") +set_tests_properties(NR-ENC-ElephantDream_4K.tif-21-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ElephantDream_4K.tif-21-dump") +add_test(NR-ENC-issue141.rawl-22-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k" "-F" "2048,32,1,16,u") +add_test(NR-ENC-issue141.rawl-22-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k-ENC-22.txt") +set_tests_properties(NR-ENC-issue141.rawl-22-dump PROPERTIES DEPENDS "NR-ENC-issue141.rawl-22-encode") +add_test(NR-ENC-issue141.rawl-22-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue141-ENC-22.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k-ENC-22.txt") +set_tests_properties(NR-ENC-issue141.rawl-22-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue141.rawl-22-dump") +add_test(NR-ENC-issue141.rawl-23-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k" "-F" "2048,32,1,16,u" "-I") +add_test(NR-ENC-issue141.rawl-23-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k-ENC-23.txt") +set_tests_properties(NR-ENC-issue141.rawl-23-dump PROPERTIES DEPENDS "NR-ENC-issue141.rawl-23-encode") +add_test(NR-ENC-issue141.rawl-23-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue141-I-ENC-23.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k-ENC-23.txt") +set_tests_properties(NR-ENC-issue141.rawl-23-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue141.rawl-23-dump") +add_test(NR-ENC-Bretagne2.ppm-24-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k" "-c" "[64,64]") +add_test(NR-ENC-Bretagne2.ppm-24-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k-ENC-24.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-24-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-24-encode") +add_test(NR-ENC-Bretagne2.ppm-24-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_5-ENC-24.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k-ENC-24.txt") +set_tests_properties(NR-ENC-Bretagne2.ppm-24-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-24-dump") +add_test(NR-ENC-issue316.png-25-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue316.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2") +add_test(NR-ENC-issue316.png-25-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2-ENC-25.txt") +set_tests_properties(NR-ENC-issue316.png-25-dump PROPERTIES DEPENDS "NR-ENC-issue316.png-25-encode") +add_test(NR-ENC-issue316.png-25-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue316-ENC-25.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2-ENC-25.txt") +set_tests_properties(NR-ENC-issue316.png-25-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue316.png-25-dump") +add_test(NR-ENC-basn6a08.png-26-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2" "-n" "6") +add_test(NR-ENC-basn6a08.png-26-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2-ENC-26.txt") +set_tests_properties(NR-ENC-basn6a08.png-26-dump PROPERTIES DEPENDS "NR-ENC-basn6a08.png-26-encode") +add_test(NR-ENC-basn6a08.png-26-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a08-ENC-26.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2-ENC-26.txt") +set_tests_properties(NR-ENC-basn6a08.png-26-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a08.png-26-dump") +add_test(NR-ENC-issue203-8bpp-width1.bmp-27-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-8bpp-width1.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2") +add_test(NR-ENC-issue203-8bpp-width1.bmp-27-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2-ENC-27.txt") +set_tests_properties(NR-ENC-issue203-8bpp-width1.bmp-27-dump PROPERTIES DEPENDS "NR-ENC-issue203-8bpp-width1.bmp-27-encode") +add_test(NR-ENC-issue203-8bpp-width1.bmp-27-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-8bpp-width1-ENC-27.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2-ENC-27.txt") +set_tests_properties(NR-ENC-issue203-8bpp-width1.bmp-27-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-8bpp-width1.bmp-27-dump") +add_test(NR-ENC-issue203-rle8.bmp-28-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2") +add_test(NR-ENC-issue203-rle8.bmp-28-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2-ENC-28.txt") +set_tests_properties(NR-ENC-issue203-rle8.bmp-28-dump PROPERTIES DEPENDS "NR-ENC-issue203-rle8.bmp-28-encode") +add_test(NR-ENC-issue203-rle8.bmp-28-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-rle8-ENC-28.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2-ENC-28.txt") +set_tests_properties(NR-ENC-issue203-rle8.bmp-28-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-rle8.bmp-28-dump") +add_test(NR-ENC-issue203-32x32-y8.bmp-29-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2") +add_test(NR-ENC-issue203-32x32-y8.bmp-29-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2-ENC-29.txt") +set_tests_properties(NR-ENC-issue203-32x32-y8.bmp-29-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y8.bmp-29-encode") +add_test(NR-ENC-issue203-32x32-y8.bmp-29-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y8-ENC-29.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2-ENC-29.txt") +set_tests_properties(NR-ENC-issue203-32x32-y8.bmp-29-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y8.bmp-29-dump") +add_test(NR-ENC-issue203-33x33-y8.bmp-30-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2") +add_test(NR-ENC-issue203-33x33-y8.bmp-30-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2-ENC-30.txt") +set_tests_properties(NR-ENC-issue203-33x33-y8.bmp-30-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-y8.bmp-30-encode") +add_test(NR-ENC-issue203-33x33-y8.bmp-30-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-y8-ENC-30.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2-ENC-30.txt") +set_tests_properties(NR-ENC-issue203-33x33-y8.bmp-30-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-y8.bmp-30-dump") +add_test(NR-ENC-issue203-34x34-y8.bmp-31-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2") +add_test(NR-ENC-issue203-34x34-y8.bmp-31-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2-ENC-31.txt") +set_tests_properties(NR-ENC-issue203-34x34-y8.bmp-31-dump PROPERTIES DEPENDS "NR-ENC-issue203-34x34-y8.bmp-31-encode") +add_test(NR-ENC-issue203-34x34-y8.bmp-31-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-34x34-y8-ENC-31.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2-ENC-31.txt") +set_tests_properties(NR-ENC-issue203-34x34-y8.bmp-31-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-34x34-y8.bmp-31-dump") +add_test(NR-ENC-issue203-35x35-y8.bmp-32-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2") +add_test(NR-ENC-issue203-35x35-y8.bmp-32-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2-ENC-32.txt") +set_tests_properties(NR-ENC-issue203-35x35-y8.bmp-32-dump PROPERTIES DEPENDS "NR-ENC-issue203-35x35-y8.bmp-32-encode") +add_test(NR-ENC-issue203-35x35-y8.bmp-32-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-35x35-y8-ENC-32.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2-ENC-32.txt") +set_tests_properties(NR-ENC-issue203-35x35-y8.bmp-32-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-35x35-y8.bmp-32-dump") +add_test(NR-ENC-issue203-32x32-bgr.bmp-33-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgr.bmp-33-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2-ENC-33.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr.bmp-33-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr.bmp-33-encode") +add_test(NR-ENC-issue203-32x32-bgr.bmp-33-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-ENC-33.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2-ENC-33.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr.bmp-33-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr.bmp-33-dump") +add_test(NR-ENC-issue203-33x33-bgr.bmp-34-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2") +add_test(NR-ENC-issue203-33x33-bgr.bmp-34-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2-ENC-34.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgr.bmp-34-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr.bmp-34-encode") +add_test(NR-ENC-issue203-33x33-bgr.bmp-34-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgr-ENC-34.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2-ENC-34.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgr.bmp-34-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr.bmp-34-dump") +add_test(NR-ENC-issue203-34x34-bgr.bmp-35-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2") +add_test(NR-ENC-issue203-34x34-bgr.bmp-35-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2-ENC-35.txt") +set_tests_properties(NR-ENC-issue203-34x34-bgr.bmp-35-dump PROPERTIES DEPENDS "NR-ENC-issue203-34x34-bgr.bmp-35-encode") +add_test(NR-ENC-issue203-34x34-bgr.bmp-35-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-34x34-bgr-ENC-35.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2-ENC-35.txt") +set_tests_properties(NR-ENC-issue203-34x34-bgr.bmp-35-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-34x34-bgr.bmp-35-dump") +add_test(NR-ENC-issue203-35x35-bgr.bmp-36-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2") +add_test(NR-ENC-issue203-35x35-bgr.bmp-36-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2-ENC-36.txt") +set_tests_properties(NR-ENC-issue203-35x35-bgr.bmp-36-dump PROPERTIES DEPENDS "NR-ENC-issue203-35x35-bgr.bmp-36-encode") +add_test(NR-ENC-issue203-35x35-bgr.bmp-36-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-35x35-bgr-ENC-36.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2-ENC-36.txt") +set_tests_properties(NR-ENC-issue203-35x35-bgr.bmp-36-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-35x35-bgr.bmp-36-dump") +add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2") +add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2-ENC-37.txt") +set_tests_properties(NR-ENC-issue203-32x32-y-rle8.bmp-37-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle8.bmp-37-encode") +add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y-rle8-ENC-37.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2-ENC-37.txt") +set_tests_properties(NR-ENC-issue203-32x32-y-rle8.bmp-37-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle8.bmp-37-dump") +add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2-ENC-38.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle8.bmp-38-encode") +add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-rle8-ENC-38.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2-ENC-38.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump") +add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle4.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2") +add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2-ENC-39.txt") +set_tests_properties(NR-ENC-issue203-32x32-y-rle4.bmp-39-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle4.bmp-39-encode") +add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y-rle4-ENC-39.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2-ENC-39.txt") +set_tests_properties(NR-ENC-issue203-32x32-y-rle4.bmp-39-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle4.bmp-39-dump") +add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle4.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2-ENC-40.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle4.bmp-40-encode") +add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-rle4-ENC-40.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2-ENC-40.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump") +add_test(NR-ENC-issue203-32x32-bgra.bmp-41-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgra.bmp-41-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2-ENC-41.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgra.bmp-41-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra.bmp-41-encode") +add_test(NR-ENC-issue203-32x32-bgra.bmp-41-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgra-ENC-41.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2-ENC-41.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgra.bmp-41-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra.bmp-41-dump") +add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2-ENC-42.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgrx.bmp-42-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx.bmp-42-encode") +add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgrx-ENC-42.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2-ENC-42.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgrx.bmp-42-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx.bmp-42-dump") +add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2-ENC-43.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr16.bmp-43-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr16.bmp-43-encode") +add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr16-ENC-43.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2-ENC-43.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr16.bmp-43-dump") +add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2") +add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2-ENC-44.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgr16.bmp-44-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr16.bmp-44-encode") +add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgr16-ENC-44.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2-ENC-44.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr16.bmp-44-dump") +add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2-ENC-45.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgra16.bmp-45-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra16.bmp-45-encode") +add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgra16-ENC-45.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2-ENC-45.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgra16.bmp-45-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra16.bmp-45-dump") +add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgra16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2") +add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2-ENC-46.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgra16.bmp-46-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgra16.bmp-46-encode") +add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgra16-ENC-46.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2-ENC-46.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgra16.bmp-46-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgra16.bmp-46-dump") +add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2") +add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2-ENC-47.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgrx16.bmp-47-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx16.bmp-47-encode") +add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgrx16-ENC-47.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2-ENC-47.txt") +set_tests_properties(NR-ENC-issue203-32x32-bgrx16.bmp-47-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx16.bmp-47-dump") +add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgrx16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2") +add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2-ENC-48.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgrx16.bmp-48-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgrx16.bmp-48-encode") +add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgrx16-ENC-48.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2-ENC-48.txt") +set_tests_properties(NR-ENC-issue203-33x33-bgrx16.bmp-48-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgrx16.bmp-48-dump") +add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2") +add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2-ENC-49.txt") +set_tests_properties(NR-ENC-issue203-127x64-bgr16.bmp-49-dump PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgr16.bmp-49-encode") +add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-127x64-bgr16-ENC-49.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2-ENC-49.txt") +set_tests_properties(NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgr16.bmp-49-dump") +add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgrx.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2") +add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2-ENC-50.txt") +set_tests_properties(NR-ENC-issue203-127x64-bgrx.bmp-50-dump PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgrx.bmp-50-encode") +add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-127x64-bgrx-ENC-50.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2-ENC-50.txt") +set_tests_properties(NR-ENC-issue203-127x64-bgrx.bmp-50-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgrx.bmp-50-dump") +add_test(NR-ENC-flower-minisblack-01.tif-51-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2") +add_test(NR-ENC-flower-minisblack-01.tif-51-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2-ENC-51.txt") +set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-encode") +add_test(NR-ENC-flower-minisblack-01.tif-51-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-01-ENC-51.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2-ENC-51.txt") +set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-dump") +add_test(NR-ENC-flower-minisblack-01.tif-51-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-encode") +add_test(NR-ENC-flower-minisblack-01.tif-51-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-lossless-decode") +add_test(NR-ENC-flower-minisblack-02.tif-52-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2") +add_test(NR-ENC-flower-minisblack-02.tif-52-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2-ENC-52.txt") +set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-encode") +add_test(NR-ENC-flower-minisblack-02.tif-52-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-02-ENC-52.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2-ENC-52.txt") +set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-dump") +add_test(NR-ENC-flower-minisblack-02.tif-52-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-encode") +add_test(NR-ENC-flower-minisblack-02.tif-52-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-lossless-decode") +add_test(NR-ENC-flower-minisblack-04.tif-53-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2") +add_test(NR-ENC-flower-minisblack-04.tif-53-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2-ENC-53.txt") +set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-encode") +add_test(NR-ENC-flower-minisblack-04.tif-53-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-04-ENC-53.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2-ENC-53.txt") +set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-dump") +add_test(NR-ENC-flower-minisblack-04.tif-53-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-encode") +add_test(NR-ENC-flower-minisblack-04.tif-53-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-lossless-decode") +add_test(NR-ENC-flower-minisblack-06.tif-54-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2") +add_test(NR-ENC-flower-minisblack-06.tif-54-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2-ENC-54.txt") +set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-encode") +add_test(NR-ENC-flower-minisblack-06.tif-54-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-06-ENC-54.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2-ENC-54.txt") +set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-dump") +add_test(NR-ENC-flower-minisblack-06.tif-54-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-encode") +add_test(NR-ENC-flower-minisblack-06.tif-54-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-lossless-decode") +add_test(NR-ENC-flower-minisblack-08.tif-55-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2") +add_test(NR-ENC-flower-minisblack-08.tif-55-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2-ENC-55.txt") +set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-encode") +add_test(NR-ENC-flower-minisblack-08.tif-55-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-08-ENC-55.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2-ENC-55.txt") +set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-dump") +add_test(NR-ENC-flower-minisblack-08.tif-55-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-encode") +add_test(NR-ENC-flower-minisblack-08.tif-55-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-lossless-decode") +add_test(NR-ENC-flower-minisblack-10.tif-56-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2") +add_test(NR-ENC-flower-minisblack-10.tif-56-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2-ENC-56.txt") +set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-encode") +add_test(NR-ENC-flower-minisblack-10.tif-56-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-10-ENC-56.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2-ENC-56.txt") +set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-dump") +add_test(NR-ENC-flower-minisblack-10.tif-56-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-encode") +add_test(NR-ENC-flower-minisblack-10.tif-56-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-lossless-decode") +add_test(NR-ENC-flower-minisblack-12.tif-57-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2") +add_test(NR-ENC-flower-minisblack-12.tif-57-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2-ENC-57.txt") +set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-encode") +add_test(NR-ENC-flower-minisblack-12.tif-57-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-12-ENC-57.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2-ENC-57.txt") +set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-dump") +add_test(NR-ENC-flower-minisblack-12.tif-57-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-encode") +add_test(NR-ENC-flower-minisblack-12.tif-57-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-lossless-decode") +add_test(NR-ENC-flower-minisblack-14.tif-58-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2") +add_test(NR-ENC-flower-minisblack-14.tif-58-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2-ENC-58.txt") +set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-encode") +add_test(NR-ENC-flower-minisblack-14.tif-58-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-14-ENC-58.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2-ENC-58.txt") +set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-dump") +add_test(NR-ENC-flower-minisblack-14.tif-58-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-encode") +add_test(NR-ENC-flower-minisblack-14.tif-58-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-lossless-decode") +add_test(NR-ENC-flower-minisblack-16.tif-59-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2") +add_test(NR-ENC-flower-minisblack-16.tif-59-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2-ENC-59.txt") +set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-encode") +add_test(NR-ENC-flower-minisblack-16.tif-59-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-16-ENC-59.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2-ENC-59.txt") +set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-dump") +add_test(NR-ENC-flower-minisblack-16.tif-59-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-encode") +add_test(NR-ENC-flower-minisblack-16.tif-59-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-02.tif-60-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-02.tif-60-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2-ENC-60.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-encode") +add_test(NR-ENC-flower-rgb-contig-02.tif-60-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-02-ENC-60.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2-ENC-60.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-dump") +add_test(NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-encode") +add_test(NR-ENC-flower-rgb-contig-02.tif-60-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-04.tif-61-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-04.tif-61-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2-ENC-61.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-encode") +add_test(NR-ENC-flower-rgb-contig-04.tif-61-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-04-ENC-61.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2-ENC-61.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-dump") +add_test(NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-encode") +add_test(NR-ENC-flower-rgb-contig-04.tif-61-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-08.tif-62-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-08.tif-62-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2-ENC-62.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-encode") +add_test(NR-ENC-flower-rgb-contig-08.tif-62-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-08-ENC-62.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2-ENC-62.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-dump") +add_test(NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-encode") +add_test(NR-ENC-flower-rgb-contig-08.tif-62-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-10.tif-63-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-10.tif-63-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2-ENC-63.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-encode") +add_test(NR-ENC-flower-rgb-contig-10.tif-63-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-10-ENC-63.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2-ENC-63.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-dump") +add_test(NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-encode") +add_test(NR-ENC-flower-rgb-contig-10.tif-63-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-12.tif-64-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-12.tif-64-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2-ENC-64.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-encode") +add_test(NR-ENC-flower-rgb-contig-12.tif-64-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-12-ENC-64.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2-ENC-64.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-dump") +add_test(NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-encode") +add_test(NR-ENC-flower-rgb-contig-12.tif-64-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-14.tif-65-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-14.tif-65-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2-ENC-65.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-encode") +add_test(NR-ENC-flower-rgb-contig-14.tif-65-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-14-ENC-65.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2-ENC-65.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-dump") +add_test(NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-encode") +add_test(NR-ENC-flower-rgb-contig-14.tif-65-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode") +add_test(NR-ENC-flower-rgb-contig-16.tif-66-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2") +add_test(NR-ENC-flower-rgb-contig-16.tif-66-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2-ENC-66.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-encode") +add_test(NR-ENC-flower-rgb-contig-16.tif-66-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-16-ENC-66.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2-ENC-66.txt") +set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-dump") +add_test(NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-encode") +add_test(NR-ENC-flower-rgb-contig-16.tif-66-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-02.tif-67-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-02.tif-67-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2-ENC-67.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-encode") +add_test(NR-ENC-flower-rgb-planar-02.tif-67-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-02-ENC-67.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2-ENC-67.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-dump") +add_test(NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-encode") +add_test(NR-ENC-flower-rgb-planar-02.tif-67-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-04.tif-68-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-04.tif-68-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2-ENC-68.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-encode") +add_test(NR-ENC-flower-rgb-planar-04.tif-68-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-04-ENC-68.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2-ENC-68.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-dump") +add_test(NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-encode") +add_test(NR-ENC-flower-rgb-planar-04.tif-68-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-08.tif-69-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-08.tif-69-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2-ENC-69.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-encode") +add_test(NR-ENC-flower-rgb-planar-08.tif-69-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-08-ENC-69.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2-ENC-69.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-dump") +add_test(NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-encode") +add_test(NR-ENC-flower-rgb-planar-08.tif-69-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-10.tif-70-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-10.tif-70-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2-ENC-70.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-encode") +add_test(NR-ENC-flower-rgb-planar-10.tif-70-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-10-ENC-70.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2-ENC-70.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-dump") +add_test(NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-encode") +add_test(NR-ENC-flower-rgb-planar-10.tif-70-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-12.tif-71-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-12.tif-71-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2-ENC-71.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-encode") +add_test(NR-ENC-flower-rgb-planar-12.tif-71-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-12-ENC-71.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2-ENC-71.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-dump") +add_test(NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-encode") +add_test(NR-ENC-flower-rgb-planar-12.tif-71-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-14.tif-72-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-14.tif-72-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2-ENC-72.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-encode") +add_test(NR-ENC-flower-rgb-planar-14.tif-72-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-14-ENC-72.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2-ENC-72.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-dump") +add_test(NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-encode") +add_test(NR-ENC-flower-rgb-planar-14.tif-72-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode") +add_test(NR-ENC-flower-rgb-planar-16.tif-73-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2") +add_test(NR-ENC-flower-rgb-planar-16.tif-73-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2-ENC-73.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-encode") +add_test(NR-ENC-flower-rgb-planar-16.tif-73-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-16-ENC-73.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2-ENC-73.txt") +set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-dump") +add_test(NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-encode") +add_test(NR-ENC-flower-rgb-planar-16.tif-73-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode") +add_test(NR-ENC-basn6a08.tif-74-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2") +add_test(NR-ENC-basn6a08.tif-74-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2-ENC-74.txt") +set_tests_properties(NR-ENC-basn6a08.tif-74-dump PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-encode") +add_test(NR-ENC-basn6a08.tif-74-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a08-ENC-74.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2-ENC-74.txt") +set_tests_properties(NR-ENC-basn6a08.tif-74-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-dump") +add_test(NR-ENC-basn6a08.tif-74-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-basn6a08.tif-74-lossless-decode PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-encode") +add_test(NR-ENC-basn6a08.tif-74-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-basn6a08.tif-74-lossless-compare PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-lossless-decode") +add_test(NR-ENC-basn4a08.tif-75-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2") +add_test(NR-ENC-basn4a08.tif-75-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2-ENC-75.txt") +set_tests_properties(NR-ENC-basn4a08.tif-75-dump PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-encode") +add_test(NR-ENC-basn4a08.tif-75-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a08-ENC-75.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2-ENC-75.txt") +set_tests_properties(NR-ENC-basn4a08.tif-75-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-dump") +add_test(NR-ENC-basn4a08.tif-75-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-basn4a08.tif-75-lossless-decode PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-encode") +add_test(NR-ENC-basn4a08.tif-75-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-basn4a08.tif-75-lossless-compare PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-lossless-decode") +add_test(NR-ENC-basn0g01.png-76-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2") +add_test(NR-ENC-basn0g01.png-76-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2-ENC-76.txt") +set_tests_properties(NR-ENC-basn0g01.png-76-dump PROPERTIES DEPENDS "NR-ENC-basn0g01.png-76-encode") +add_test(NR-ENC-basn0g01.png-76-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g01-ENC-76.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2-ENC-76.txt") +set_tests_properties(NR-ENC-basn0g01.png-76-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g01.png-76-dump") +add_test(NR-ENC-basn0g02.png-77-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2") +add_test(NR-ENC-basn0g02.png-77-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2-ENC-77.txt") +set_tests_properties(NR-ENC-basn0g02.png-77-dump PROPERTIES DEPENDS "NR-ENC-basn0g02.png-77-encode") +add_test(NR-ENC-basn0g02.png-77-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g02-ENC-77.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2-ENC-77.txt") +set_tests_properties(NR-ENC-basn0g02.png-77-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g02.png-77-dump") +add_test(NR-ENC-basn0g04.png-78-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2") +add_test(NR-ENC-basn0g04.png-78-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2-ENC-78.txt") +set_tests_properties(NR-ENC-basn0g04.png-78-dump PROPERTIES DEPENDS "NR-ENC-basn0g04.png-78-encode") +add_test(NR-ENC-basn0g04.png-78-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g04-ENC-78.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2-ENC-78.txt") +set_tests_properties(NR-ENC-basn0g04.png-78-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g04.png-78-dump") +add_test(NR-ENC-basn0g08.png-79-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2") +add_test(NR-ENC-basn0g08.png-79-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2-ENC-79.txt") +set_tests_properties(NR-ENC-basn0g08.png-79-dump PROPERTIES DEPENDS "NR-ENC-basn0g08.png-79-encode") +add_test(NR-ENC-basn0g08.png-79-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g08-ENC-79.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2-ENC-79.txt") +set_tests_properties(NR-ENC-basn0g08.png-79-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g08.png-79-dump") +add_test(NR-ENC-basn0g16.png-80-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2") +add_test(NR-ENC-basn0g16.png-80-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2-ENC-80.txt") +set_tests_properties(NR-ENC-basn0g16.png-80-dump PROPERTIES DEPENDS "NR-ENC-basn0g16.png-80-encode") +add_test(NR-ENC-basn0g16.png-80-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g16-ENC-80.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2-ENC-80.txt") +set_tests_properties(NR-ENC-basn0g16.png-80-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g16.png-80-dump") +add_test(NR-ENC-basn2c08.png-81-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2") +add_test(NR-ENC-basn2c08.png-81-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2-ENC-81.txt") +set_tests_properties(NR-ENC-basn2c08.png-81-dump PROPERTIES DEPENDS "NR-ENC-basn2c08.png-81-encode") +add_test(NR-ENC-basn2c08.png-81-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn2c08-ENC-81.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2-ENC-81.txt") +set_tests_properties(NR-ENC-basn2c08.png-81-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn2c08.png-81-dump") +add_test(NR-ENC-basn2c16.png-82-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2") +add_test(NR-ENC-basn2c16.png-82-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2-ENC-82.txt") +set_tests_properties(NR-ENC-basn2c16.png-82-dump PROPERTIES DEPENDS "NR-ENC-basn2c16.png-82-encode") +add_test(NR-ENC-basn2c16.png-82-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn2c16-ENC-82.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2-ENC-82.txt") +set_tests_properties(NR-ENC-basn2c16.png-82-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn2c16.png-82-dump") +add_test(NR-ENC-basn3p01.png-83-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2") +add_test(NR-ENC-basn3p01.png-83-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2-ENC-83.txt") +set_tests_properties(NR-ENC-basn3p01.png-83-dump PROPERTIES DEPENDS "NR-ENC-basn3p01.png-83-encode") +add_test(NR-ENC-basn3p01.png-83-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p01-ENC-83.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2-ENC-83.txt") +set_tests_properties(NR-ENC-basn3p01.png-83-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p01.png-83-dump") +add_test(NR-ENC-basn3p02.png-84-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2") +add_test(NR-ENC-basn3p02.png-84-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2-ENC-84.txt") +set_tests_properties(NR-ENC-basn3p02.png-84-dump PROPERTIES DEPENDS "NR-ENC-basn3p02.png-84-encode") +add_test(NR-ENC-basn3p02.png-84-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p02-ENC-84.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2-ENC-84.txt") +set_tests_properties(NR-ENC-basn3p02.png-84-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p02.png-84-dump") +add_test(NR-ENC-basn3p04.png-85-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2") +add_test(NR-ENC-basn3p04.png-85-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2-ENC-85.txt") +set_tests_properties(NR-ENC-basn3p04.png-85-dump PROPERTIES DEPENDS "NR-ENC-basn3p04.png-85-encode") +add_test(NR-ENC-basn3p04.png-85-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p04-ENC-85.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2-ENC-85.txt") +set_tests_properties(NR-ENC-basn3p04.png-85-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p04.png-85-dump") +add_test(NR-ENC-basn3p08.png-86-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2") +add_test(NR-ENC-basn3p08.png-86-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2-ENC-86.txt") +set_tests_properties(NR-ENC-basn3p08.png-86-dump PROPERTIES DEPENDS "NR-ENC-basn3p08.png-86-encode") +add_test(NR-ENC-basn3p08.png-86-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p08-ENC-86.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2-ENC-86.txt") +set_tests_properties(NR-ENC-basn3p08.png-86-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p08.png-86-dump") +add_test(NR-ENC-basn4a08.png-87-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2") +add_test(NR-ENC-basn4a08.png-87-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2-ENC-87.txt") +set_tests_properties(NR-ENC-basn4a08.png-87-dump PROPERTIES DEPENDS "NR-ENC-basn4a08.png-87-encode") +add_test(NR-ENC-basn4a08.png-87-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a08-ENC-87.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2-ENC-87.txt") +set_tests_properties(NR-ENC-basn4a08.png-87-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a08.png-87-dump") +add_test(NR-ENC-basn4a16.png-88-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2") +add_test(NR-ENC-basn4a16.png-88-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2-ENC-88.txt") +set_tests_properties(NR-ENC-basn4a16.png-88-dump PROPERTIES DEPENDS "NR-ENC-basn4a16.png-88-encode") +add_test(NR-ENC-basn4a16.png-88-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a16-ENC-88.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2-ENC-88.txt") +set_tests_properties(NR-ENC-basn4a16.png-88-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a16.png-88-dump") +add_test(NR-ENC-basn6a16.png-89-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2") +add_test(NR-ENC-basn6a16.png-89-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2-ENC-89.txt") +set_tests_properties(NR-ENC-basn6a16.png-89-dump PROPERTIES DEPENDS "NR-ENC-basn6a16.png-89-encode") +add_test(NR-ENC-basn6a16.png-89-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a16-ENC-89.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2-ENC-89.txt") +set_tests_properties(NR-ENC-basn6a16.png-89-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a16.png-89-dump") +add_test(NR-ENC-ftbbn0g01.png-90-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2") +add_test(NR-ENC-ftbbn0g01.png-90-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2-ENC-90.txt") +set_tests_properties(NR-ENC-ftbbn0g01.png-90-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g01.png-90-encode") +add_test(NR-ENC-ftbbn0g01.png-90-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g01-ENC-90.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2-ENC-90.txt") +set_tests_properties(NR-ENC-ftbbn0g01.png-90-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g01.png-90-dump") +add_test(NR-ENC-ftbbn0g02.png-91-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2") +add_test(NR-ENC-ftbbn0g02.png-91-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2-ENC-91.txt") +set_tests_properties(NR-ENC-ftbbn0g02.png-91-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g02.png-91-encode") +add_test(NR-ENC-ftbbn0g02.png-91-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g02-ENC-91.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2-ENC-91.txt") +set_tests_properties(NR-ENC-ftbbn0g02.png-91-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g02.png-91-dump") +add_test(NR-ENC-ftbbn0g04.png-92-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2") +add_test(NR-ENC-ftbbn0g04.png-92-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2-ENC-92.txt") +set_tests_properties(NR-ENC-ftbbn0g04.png-92-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g04.png-92-encode") +add_test(NR-ENC-ftbbn0g04.png-92-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g04-ENC-92.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2-ENC-92.txt") +set_tests_properties(NR-ENC-ftbbn0g04.png-92-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g04.png-92-dump") +add_test(NR-ENC-ftbbn2c16.png-93-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2") +add_test(NR-ENC-ftbbn2c16.png-93-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2-ENC-93.txt") +set_tests_properties(NR-ENC-ftbbn2c16.png-93-dump PROPERTIES DEPENDS "NR-ENC-ftbbn2c16.png-93-encode") +add_test(NR-ENC-ftbbn2c16.png-93-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn2c16-ENC-93.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2-ENC-93.txt") +set_tests_properties(NR-ENC-ftbbn2c16.png-93-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn2c16.png-93-dump") +add_test(NR-ENC-ftbbn3p08.png-94-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2") +add_test(NR-ENC-ftbbn3p08.png-94-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2-ENC-94.txt") +set_tests_properties(NR-ENC-ftbbn3p08.png-94-dump PROPERTIES DEPENDS "NR-ENC-ftbbn3p08.png-94-encode") +add_test(NR-ENC-ftbbn3p08.png-94-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn3p08-ENC-94.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2-ENC-94.txt") +set_tests_properties(NR-ENC-ftbbn3p08.png-94-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn3p08.png-94-dump") +add_test(NR-ENC-ftbgn2c16.png-95-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2") +add_test(NR-ENC-ftbgn2c16.png-95-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2-ENC-95.txt") +set_tests_properties(NR-ENC-ftbgn2c16.png-95-dump PROPERTIES DEPENDS "NR-ENC-ftbgn2c16.png-95-encode") +add_test(NR-ENC-ftbgn2c16.png-95-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbgn2c16-ENC-95.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2-ENC-95.txt") +set_tests_properties(NR-ENC-ftbgn2c16.png-95-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbgn2c16.png-95-dump") +add_test(NR-ENC-ftbgn3p08.png-96-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2") +add_test(NR-ENC-ftbgn3p08.png-96-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2-ENC-96.txt") +set_tests_properties(NR-ENC-ftbgn3p08.png-96-dump PROPERTIES DEPENDS "NR-ENC-ftbgn3p08.png-96-encode") +add_test(NR-ENC-ftbgn3p08.png-96-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbgn3p08-ENC-96.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2-ENC-96.txt") +set_tests_properties(NR-ENC-ftbgn3p08.png-96-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbgn3p08.png-96-dump") +add_test(NR-ENC-ftbrn2c08.png-97-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbrn2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2") +add_test(NR-ENC-ftbrn2c08.png-97-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2-ENC-97.txt") +set_tests_properties(NR-ENC-ftbrn2c08.png-97-dump PROPERTIES DEPENDS "NR-ENC-ftbrn2c08.png-97-encode") +add_test(NR-ENC-ftbrn2c08.png-97-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbrn2c08-ENC-97.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2-ENC-97.txt") +set_tests_properties(NR-ENC-ftbrn2c08.png-97-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbrn2c08.png-97-dump") +add_test(NR-ENC-ftbwn0g16.png-98-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn0g16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2") +add_test(NR-ENC-ftbwn0g16.png-98-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2-ENC-98.txt") +set_tests_properties(NR-ENC-ftbwn0g16.png-98-dump PROPERTIES DEPENDS "NR-ENC-ftbwn0g16.png-98-encode") +add_test(NR-ENC-ftbwn0g16.png-98-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbwn0g16-ENC-98.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2-ENC-98.txt") +set_tests_properties(NR-ENC-ftbwn0g16.png-98-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbwn0g16.png-98-dump") +add_test(NR-ENC-ftbwn3p08.png-99-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2") +add_test(NR-ENC-ftbwn3p08.png-99-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2-ENC-99.txt") +set_tests_properties(NR-ENC-ftbwn3p08.png-99-dump PROPERTIES DEPENDS "NR-ENC-ftbwn3p08.png-99-encode") +add_test(NR-ENC-ftbwn3p08.png-99-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbwn3p08-ENC-99.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2-ENC-99.txt") +set_tests_properties(NR-ENC-ftbwn3p08.png-99-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbwn3p08.png-99-dump") +add_test(NR-ENC-ftbyn3p08.png-100-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbyn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2") +add_test(NR-ENC-ftbyn3p08.png-100-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2-ENC-100.txt") +set_tests_properties(NR-ENC-ftbyn3p08.png-100-dump PROPERTIES DEPENDS "NR-ENC-ftbyn3p08.png-100-encode") +add_test(NR-ENC-ftbyn3p08.png-100-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbyn3p08-ENC-100.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2-ENC-100.txt") +set_tests_properties(NR-ENC-ftbyn3p08.png-100-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbyn3p08.png-100-dump") +add_test(NR-ENC-ftp0n0g08.png-101-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n0g08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2") +add_test(NR-ENC-ftp0n0g08.png-101-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2-ENC-101.txt") +set_tests_properties(NR-ENC-ftp0n0g08.png-101-dump PROPERTIES DEPENDS "NR-ENC-ftp0n0g08.png-101-encode") +add_test(NR-ENC-ftp0n0g08.png-101-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n0g08-ENC-101.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2-ENC-101.txt") +set_tests_properties(NR-ENC-ftp0n0g08.png-101-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n0g08.png-101-dump") +add_test(NR-ENC-ftp0n2c08.png-102-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2") +add_test(NR-ENC-ftp0n2c08.png-102-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2-ENC-102.txt") +set_tests_properties(NR-ENC-ftp0n2c08.png-102-dump PROPERTIES DEPENDS "NR-ENC-ftp0n2c08.png-102-encode") +add_test(NR-ENC-ftp0n2c08.png-102-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n2c08-ENC-102.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2-ENC-102.txt") +set_tests_properties(NR-ENC-ftp0n2c08.png-102-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n2c08.png-102-dump") +add_test(NR-ENC-ftp0n3p08.png-103-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2") +add_test(NR-ENC-ftp0n3p08.png-103-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2-ENC-103.txt") +set_tests_properties(NR-ENC-ftp0n3p08.png-103-dump PROPERTIES DEPENDS "NR-ENC-ftp0n3p08.png-103-encode") +add_test(NR-ENC-ftp0n3p08.png-103-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n3p08-ENC-103.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2-ENC-103.txt") +set_tests_properties(NR-ENC-ftp0n3p08.png-103-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n3p08.png-103-dump") +add_test(NR-ENC-ftp1n3p08.png-104-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp1n3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2") +add_test(NR-ENC-ftp1n3p08.png-104-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2-ENC-104.txt") +set_tests_properties(NR-ENC-ftp1n3p08.png-104-dump PROPERTIES DEPENDS "NR-ENC-ftp1n3p08.png-104-encode") +add_test(NR-ENC-ftp1n3p08.png-104-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp1n3p08-ENC-104.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2-ENC-104.txt") +set_tests_properties(NR-ENC-ftp1n3p08.png-104-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp1n3p08.png-104-dump") +add_test(NR-ENC-issue571.tif-105-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k") +add_test(NR-ENC-issue571.tif-105-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k-ENC-105.txt") +set_tests_properties(NR-ENC-issue571.tif-105-dump PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-encode") +add_test(NR-ENC-issue571.tif-105-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue571-ENC-105.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k-ENC-105.txt") +set_tests_properties(NR-ENC-issue571.tif-105-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-dump") +add_test(NR-ENC-issue571.tif-105-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k.lossless.tif") +set_tests_properties(NR-ENC-issue571.tif-105-lossless-decode PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-encode") +add_test(NR-ENC-issue571.tif-105-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-issue571.tif-105-lossless-compare PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-lossless-decode") +add_test(NR-ENC-flower-minisblack-03.tif-106-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2") +add_test(NR-ENC-flower-minisblack-03.tif-106-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2-ENC-106.txt") +set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-encode") +add_test(NR-ENC-flower-minisblack-03.tif-106-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-03-ENC-106.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2-ENC-106.txt") +set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-dump") +add_test(NR-ENC-flower-minisblack-03.tif-106-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-encode") +add_test(NR-ENC-flower-minisblack-03.tif-106-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-lossless-decode") +add_test(NR-ENC-flower-minisblack-05.tif-107-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2") +add_test(NR-ENC-flower-minisblack-05.tif-107-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2-ENC-107.txt") +set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-encode") +add_test(NR-ENC-flower-minisblack-05.tif-107-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-05-ENC-107.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2-ENC-107.txt") +set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-dump") +add_test(NR-ENC-flower-minisblack-05.tif-107-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-encode") +add_test(NR-ENC-flower-minisblack-05.tif-107-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-lossless-decode") +add_test(NR-ENC-flower-minisblack-07.tif-108-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2") +add_test(NR-ENC-flower-minisblack-07.tif-108-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2-ENC-108.txt") +set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-encode") +add_test(NR-ENC-flower-minisblack-07.tif-108-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-07-ENC-108.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2-ENC-108.txt") +set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-dump") +add_test(NR-ENC-flower-minisblack-07.tif-108-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-encode") +add_test(NR-ENC-flower-minisblack-07.tif-108-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-lossless-decode") +add_test(NR-ENC-flower-minisblack-09.tif-109-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2") +add_test(NR-ENC-flower-minisblack-09.tif-109-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2-ENC-109.txt") +set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-encode") +add_test(NR-ENC-flower-minisblack-09.tif-109-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-09-ENC-109.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2-ENC-109.txt") +set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-dump") +add_test(NR-ENC-flower-minisblack-09.tif-109-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-encode") +add_test(NR-ENC-flower-minisblack-09.tif-109-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-lossless-decode") +add_test(NR-ENC-flower-minisblack-11.tif-110-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2") +add_test(NR-ENC-flower-minisblack-11.tif-110-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2-ENC-110.txt") +set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-encode") +add_test(NR-ENC-flower-minisblack-11.tif-110-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-11-ENC-110.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2-ENC-110.txt") +set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-dump") +add_test(NR-ENC-flower-minisblack-11.tif-110-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-encode") +add_test(NR-ENC-flower-minisblack-11.tif-110-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-lossless-decode") +add_test(NR-ENC-flower-minisblack-13.tif-111-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2") +add_test(NR-ENC-flower-minisblack-13.tif-111-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2-ENC-111.txt") +set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-encode") +add_test(NR-ENC-flower-minisblack-13.tif-111-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-13-ENC-111.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2-ENC-111.txt") +set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-dump") +add_test(NR-ENC-flower-minisblack-13.tif-111-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-encode") +add_test(NR-ENC-flower-minisblack-13.tif-111-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-lossless-decode") +add_test(NR-ENC-flower-minisblack-15.tif-112-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2") +add_test(NR-ENC-flower-minisblack-15.tif-112-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2-ENC-112.txt") +set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-encode") +add_test(NR-ENC-flower-minisblack-15.tif-112-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-15-ENC-112.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2-ENC-112.txt") +set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-dump") +add_test(NR-ENC-flower-minisblack-15.tif-112-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2.lossless.tif") +set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-encode") +add_test(NR-ENC-flower-minisblack-15.tif-112-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2.lossless.tif" "-n" "1" "-d") +set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-lossless-decode") +add_test(NR-ENC-issue843.ppm-113-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue843.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue843.ppm.jp2") +set_tests_properties(NR-ENC-issue843.ppm-113-encode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-Bretagne2.j2k-1-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx") +add_test(NR-DEC-Bretagne2.j2k-1-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-Bretagne2.j2k-1-decode-md5 PROPERTIES DEPENDS "NR-DEC-Bretagne2.j2k-1-decode") +add_test(NR-DEC-_00042.j2k-2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/_00042.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx") +add_test(NR-DEC-_00042.j2k-2-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-_00042.j2k-2-decode-md5 PROPERTIES DEPENDS "NR-DEC-_00042.j2k-2-decode") +add_test(NR-DEC-123.j2c-3-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/123.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx") +add_test(NR-DEC-123.j2c-3-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-123.j2c-3-decode-md5 PROPERTIES DEPENDS "NR-DEC-123.j2c-3-decode") +add_test(NR-DEC-broken1.jp2-4-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken1.jp2.pgx") +set_tests_properties(NR-DEC-broken1.jp2-4-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-broken2.jp2-5-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken2.jp2.pgx") +set_tests_properties(NR-DEC-broken2.jp2-5-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-broken3.jp2-6-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken3.jp2.pgx") +set_tests_properties(NR-DEC-broken3.jp2-6-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-broken4.jp2-7-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken4.jp2.pgx") +set_tests_properties(NR-DEC-broken4.jp2-7-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-bug.j2c-8-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/bug.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx") +add_test(NR-DEC-bug.j2c-8-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-bug.j2c-8-decode-md5 PROPERTIES DEPENDS "NR-DEC-bug.j2c-8-decode") +add_test(NR-DEC-buxI.j2k-9-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxI.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx") +add_test(NR-DEC-buxI.j2k-9-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-buxI.j2k-9-decode-md5 PROPERTIES DEPENDS "NR-DEC-buxI.j2k-9-decode") +add_test(NR-DEC-buxR.j2k-10-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxR.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx") +add_test(NR-DEC-buxR.j2k-10-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-buxR.j2k-10-decode-md5 PROPERTIES DEPENDS "NR-DEC-buxR.j2k-10-decode") +add_test(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cannotreaddatawithnosizeknown.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx") +add_test(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode-md5 PROPERTIES DEPENDS "NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode") +add_test(NR-DEC-cthead1.j2k-12-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/cthead1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx") +add_test(NR-DEC-cthead1.j2k-12-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-cthead1.j2k-12-decode-md5 PROPERTIES DEPENDS "NR-DEC-cthead1.j2k-12-decode") +add_test(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/CT_Phillips_JPEG2K_Decompr_Problem.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx") +add_test(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 PROPERTIES DEPENDS "NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode") +add_test(NR-DEC-illegalcolortransform.j2k-14-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/illegalcolortransform.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx") +add_test(NR-DEC-illegalcolortransform.j2k-14-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-illegalcolortransform.j2k-14-decode-md5 PROPERTIES DEPENDS "NR-DEC-illegalcolortransform.j2k-14-decode") +add_test(NR-DEC-j2k32.j2k-15-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/j2k32.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx") +add_test(NR-DEC-j2k32.j2k-15-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-j2k32.j2k-15-decode-md5 PROPERTIES DEPENDS "NR-DEC-j2k32.j2k-15-decode") +add_test(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kakadu_v4-4_openjpegv2_broken.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx") +add_test(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode-md5 PROPERTIES DEPENDS "NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode") +add_test(NR-DEC-MarkerIsNotCompliant.j2k-17-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/MarkerIsNotCompliant.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx") +add_test(NR-DEC-MarkerIsNotCompliant.j2k-17-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-MarkerIsNotCompliant.j2k-17-decode-md5 PROPERTIES DEPENDS "NR-DEC-MarkerIsNotCompliant.j2k-17-decode") +add_test(NR-DEC-Marrin.jp2-18-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Marrin.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx") +add_test(NR-DEC-Marrin.jp2-18-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-Marrin.jp2-18-decode-md5 PROPERTIES DEPENDS "NR-DEC-Marrin.jp2-18-decode") +add_test(NR-DEC-merged.jp2-19-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/merged.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx") +add_test(NR-DEC-merged.jp2-19-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-merged.jp2-19-decode-md5 PROPERTIES DEPENDS "NR-DEC-merged.jp2-19-decode") +add_test(NR-DEC-movie_00000.j2k-20-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00000.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx") +add_test(NR-DEC-movie_00000.j2k-20-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-movie_00000.j2k-20-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00000.j2k-20-decode") +add_test(NR-DEC-movie_00001.j2k-21-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00001.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx") +add_test(NR-DEC-movie_00001.j2k-21-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-movie_00001.j2k-21-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00001.j2k-21-decode") +add_test(NR-DEC-movie_00002.j2k-22-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00002.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx") +add_test(NR-DEC-movie_00002.j2k-22-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-movie_00002.j2k-22-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00002.j2k-22-decode") +add_test(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-j2k.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx") +add_test(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-lin-j2k.j2k-23-decode") +add_test(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-jp2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx") +add_test(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-lin-jp2.jp2-24-decode") +add_test(NR-DEC-orb-blue10-win-j2k.j2k-25-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-j2k.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx") +add_test(NR-DEC-orb-blue10-win-j2k.j2k-25-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-orb-blue10-win-j2k.j2k-25-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-win-j2k.j2k-25-decode") +add_test(NR-DEC-orb-blue10-win-jp2.jp2-26-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-jp2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx") +add_test(NR-DEC-orb-blue10-win-jp2.jp2-26-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-orb-blue10-win-jp2.jp2-26-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-win-jp2.jp2-26-decode") +add_test(NR-DEC-relax.jp2-27-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/relax.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx") +add_test(NR-DEC-relax.jp2-27-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-relax.jp2-27-decode-md5 PROPERTIES DEPENDS "NR-DEC-relax.jp2-27-decode") +add_test(NR-DEC-test_lossless.j2k-28-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/test_lossless.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx") +add_test(NR-DEC-test_lossless.j2k-28-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-test_lossless.j2k-28-decode-md5 PROPERTIES DEPENDS "NR-DEC-test_lossless.j2k-28-decode") +add_test(NR-DEC-text_GBR.jp2-29-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/text_GBR.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx") +add_test(NR-DEC-text_GBR.jp2-29-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-text_GBR.jp2-29-decode-md5 PROPERTIES DEPENDS "NR-DEC-text_GBR.jp2-29-decode") +add_test(NR-DEC-pacs.ge.j2k-30-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pacs.ge.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx") +add_test(NR-DEC-pacs.ge.j2k-30-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-pacs.ge.j2k-30-decode-md5 PROPERTIES DEPENDS "NR-DEC-pacs.ge.j2k-30-decode") +add_test(NR-DEC-kodak_2layers_lrcp.j2c-31-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx") +add_test(NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 PROPERTIES DEPENDS "NR-DEC-kodak_2layers_lrcp.j2c-31-decode") +add_test(NR-DEC-kodak_2layers_lrcp.j2c-32-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx" "-l" "2") +add_test(NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 PROPERTIES DEPENDS "NR-DEC-kodak_2layers_lrcp.j2c-32-decode") +add_test(NR-DEC-issue104_jpxstream.jp2-33-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue104_jpxstream.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx") +add_test(NR-DEC-issue104_jpxstream.jp2-33-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue104_jpxstream.jp2-33-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue104_jpxstream.jp2-33-decode") +add_test(NR-DEC-mem-b2ace68c-1381.jp2-34-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2ace68c-1381.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2ace68c-1381.jp2.pgx") +set_tests_properties(NR-DEC-mem-b2ace68c-1381.jp2-34-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-mem-b2b86b74-2753.jp2-35-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2b86b74-2753.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx") +add_test(NR-DEC-mem-b2b86b74-2753.jp2-35-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-mem-b2b86b74-2753.jp2-35-decode-md5 PROPERTIES DEPENDS "NR-DEC-mem-b2b86b74-2753.jp2-35-decode") +add_test(NR-DEC-gdal_fuzzer_unchecked_numresolutions.jp2-36-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_unchecked_numresolutions.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_unchecked_numresolutions.pgx") +set_tests_properties(NR-DEC-gdal_fuzzer_unchecked_numresolutions.jp2-36-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2-37-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.pgx") +set_tests_properties(NR-DEC-gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2-37-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-gdal_fuzzer_check_number_of_tiles.jp2-38-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_number_of_tiles.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_number_of_tiles.pgx") +set_tests_properties(NR-DEC-gdal_fuzzer_check_number_of_tiles.jp2-38-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-gdal_fuzzer_check_comp_dx_dy.jp2-39-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_comp_dx_dy.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_comp_dx_dy.pgx") +set_tests_properties(NR-DEC-gdal_fuzzer_check_comp_dx_dy.jp2-39-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-file409752.jp2-40-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/file409752.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx") +add_test(NR-DEC-file409752.jp2-40-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-file409752.jp2-40-decode-md5 PROPERTIES DEPENDS "NR-DEC-file409752.jp2-40-decode") +add_test(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue188_beach_64bitsbox.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx") +add_test(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue188_beach_64bitsbox.jp2-41-decode") +add_test(NR-DEC-issue206_image-000.jp2-42-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue206_image-000.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx") +add_test(NR-DEC-issue206_image-000.jp2-42-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue206_image-000.jp2-42-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue206_image-000.jp2-42-decode") +add_test(NR-DEC-issue205.jp2-43-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx") +add_test(NR-DEC-issue205.jp2-43-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue205.jp2-43-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue205.jp2-43-decode") +add_test(NR-DEC-451.pdf.SIGSEGV.5b5.3723.jp2-44-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.5b5.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.5b5.3723.jp2.pgx") +set_tests_properties(NR-DEC-451.pdf.SIGSEGV.5b5.3723.jp2-44-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-1888.pdf.asan.35.988.jp2-45-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1888.pdf.asan.35.988.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1888.pdf.asan.35.988.jp2.pgx") +set_tests_properties(NR-DEC-1888.pdf.asan.35.988.jp2-45-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-2539.pdf.SIGFPE.706.1712.jp2-46-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2539.pdf.SIGFPE.706.1712.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2539.pdf.SIGFPE.706.1712.jp2.pgx") +set_tests_properties(NR-DEC-2539.pdf.SIGFPE.706.1712.jp2-46-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-2236.pdf.SIGSEGV.398.1376.jp2-47-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2236.pdf.SIGSEGV.398.1376.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2236.pdf.SIGSEGV.398.1376.jp2.pgx") +set_tests_properties(NR-DEC-2236.pdf.SIGSEGV.398.1376.jp2-47-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-1336.pdf.asan.47.376.jp2-48-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1336.pdf.asan.47.376.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1336.pdf.asan.47.376.jp2.pgx") +set_tests_properties(NR-DEC-1336.pdf.asan.47.376.jp2-48-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-1851.pdf.SIGSEGV.ce9.948.jp2-49-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1851.pdf.SIGSEGV.ce9.948.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1851.pdf.SIGSEGV.ce9.948.jp2.pgx") +set_tests_properties(NR-DEC-1851.pdf.SIGSEGV.ce9.948.jp2-49-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-4149.pdf.SIGSEGV.cf7.3501.jp2-50-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4149.pdf.SIGSEGV.cf7.3501.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx") +set_tests_properties(NR-DEC-4149.pdf.SIGSEGV.cf7.3501.jp2-50-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-4035.pdf.SIGSEGV.d8b.3375.jp2-51-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4035.pdf.SIGSEGV.d8b.3375.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx") +set_tests_properties(NR-DEC-4035.pdf.SIGSEGV.d8b.3375.jp2-51-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2977.pdf.asan.67.2198.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2977.pdf.asan.67.2198.jp2.pgx") +set_tests_properties(NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-451.pdf.SIGSEGV.ce9.3723.jp2-53-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.ce9.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.ce9.3723.jp2.pgx") +set_tests_properties(NR-DEC-451.pdf.SIGSEGV.ce9.3723.jp2-53-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-3635.pdf.asan.77.2930.jp2-54-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3635.pdf.asan.77.2930.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3635.pdf.asan.77.2930.jp2.pgx") +set_tests_properties(NR-DEC-3635.pdf.asan.77.2930.jp2-54-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-1802.pdf.SIGSEGV.36e.894.jp2-55-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1802.pdf.SIGSEGV.36e.894.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1802.pdf.SIGSEGV.36e.894.jp2.pgx") +set_tests_properties(NR-DEC-1802.pdf.SIGSEGV.36e.894.jp2-55-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-451.pdf.SIGSEGV.f4c.3723.jp2-56-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.f4c.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.f4c.3723.jp2.pgx") +set_tests_properties(NR-DEC-451.pdf.SIGSEGV.f4c.3723.jp2-56-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-2.pdf.SIGFPE.706.1112.jp2-57-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2.pdf.SIGFPE.706.1112.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2.pdf.SIGFPE.706.1112.jp2.pgx") +set_tests_properties(NR-DEC-2.pdf.SIGFPE.706.1112.jp2-57-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2-58-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx") +set_tests_properties(NR-DEC-147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2-58-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2-59-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2") +set_tests_properties(NR-DEC-4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2-59-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue228.j2k-60-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue228.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx") +add_test(NR-DEC-issue228.j2k-60-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue228.j2k-60-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue228.j2k-60-decode") +add_test(NR-DEC-27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc-61-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx") +set_tests_properties(NR-DEC-27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc-61-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2-62-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx") +set_tests_properties(NR-DEC-26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2-62-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2-63-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx") +set_tests_properties(NR-DEC-0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2-63-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc-64-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx") +set_tests_properties(NR-DEC-3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc-64-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue254.jp2-65-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue254.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx") +add_test(NR-DEC-issue254.jp2-65-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue254.jp2-65-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue254.jp2-65-decode") +add_test(NR-DEC-issue142.j2k-66-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue142.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx") +add_test(NR-DEC-issue142.j2k-66-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue142.j2k-66-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue142.j2k-66-decode") +add_test(NR-DEC-issue134.jp2-67-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue134.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx") +add_test(NR-DEC-issue134.jp2-67-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue134.jp2-67-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue134.jp2-67-decode") +add_test(NR-DEC-issue135.j2k-68-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue135.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx") +add_test(NR-DEC-issue135.j2k-68-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue135.j2k-68-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue135.j2k-68-decode") +add_test(NR-DEC-issue208.jp2-69-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue208.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx") +add_test(NR-DEC-issue208.jp2-69-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue208.jp2-69-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue208.jp2-69-decode") +add_test(NR-DEC-issue211.jp2-70-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue211.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx") +add_test(NR-DEC-issue211.jp2-70-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue211.jp2-70-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue211.jp2-70-decode") +add_test(NR-DEC-issue171.jp2-71-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue171.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx") +add_test(NR-DEC-issue171.jp2-71-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue171.jp2-71-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue171.jp2-71-decode") +add_test(NR-DEC-issue165.jp2-72-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue165.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue165.jp2.pgx") +set_tests_properties(NR-DEC-issue165.jp2-72-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-broken.jpc-73-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken.jpc.pgx") +set_tests_properties(NR-DEC-broken.jpc-73-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue226.j2k-74-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue226.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx") +add_test(NR-DEC-issue226.j2k-74-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue226.j2k-74-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue226.j2k-74-decode") +add_test(NR-DEC-edf_c2_1103421.jp2-75-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1103421.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1103421.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1103421.jp2-75-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1178956.jp2-76-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1178956.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1178956.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1178956.jp2-76-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1000290.jp2-77-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000290.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000290.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1000290.jp2-77-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1000691.jp2-78-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000691.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000691.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1000691.jp2-78-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_20.jp2-79-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_20.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_20.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_20.jp2-79-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1377017.jp2-80-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1377017.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1377017.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1377017.jp2-80-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1002767.jp2-81-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1002767.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1002767.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1002767.jp2-81-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_10025.jp2-82-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_10025.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_10025.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_10025.jp2-82-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1000234.jp2-83-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000234.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000234.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1000234.jp2-83-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_225881.jp2-84-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_225881.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_225881.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_225881.jp2-84-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1000671.jp2-85-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000671.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000671.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1000671.jp2-85-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1013627.jp2-86-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1013627.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1013627.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1013627.jp2-86-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1015644.jp2-87-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1015644.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1015644.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1015644.jp2-87-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_101463.jp2-88-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_101463.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_101463.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_101463.jp2-88-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1674177.jp2-89-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1674177.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1674177.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1674177.jp2-89-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-edf_c2_1673169.jp2-90-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1673169.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1673169.jp2.pgx") +set_tests_properties(NR-DEC-edf_c2_1673169.jp2-90-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue362-2863.jp2-91-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2863.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2863.jp2.pgx") +set_tests_properties(NR-DEC-issue362-2863.jp2-91-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue362-2866.jp2-92-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2866.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2866.jp2.pgx") +set_tests_properties(NR-DEC-issue362-2866.jp2-92-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue362-2894.jp2-93-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2894.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2894.jp2.pgx") +set_tests_properties(NR-DEC-issue362-2894.jp2-93-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue363-4723.jp2-94-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4723.jp2.pgx") +set_tests_properties(NR-DEC-issue363-4723.jp2-94-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue363-4740.jp2-95-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4740.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4740.jp2.pgx") +set_tests_properties(NR-DEC-issue363-4740.jp2-95-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue363-4792.jp2-96-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4792.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4792.jp2.pgx") +set_tests_properties(NR-DEC-issue363-4792.jp2-96-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue390.jp2-97-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue390.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue390.jp2.pgx") +set_tests_properties(NR-DEC-issue390.jp2-97-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue391.jp2-98-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue391.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue391.jp2.pgx") +set_tests_properties(NR-DEC-issue391.jp2-98-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue400.jp2-99-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue400.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue400.jp2.pgx") +set_tests_properties(NR-DEC-issue400.jp2-99-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue413.jp2-100-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue413.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue413.jp2.pgx") +set_tests_properties(NR-DEC-issue413.jp2-100-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue364-38.jp2-101-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-38.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-38.jp2.pgx") +set_tests_properties(NR-DEC-issue364-38.jp2-101-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue364-903.jp2-102-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-903.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-903.jp2.pgx") +set_tests_properties(NR-DEC-issue364-903.jp2-102-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue393.jp2-103-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue393.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue393.jp2.pgx") +set_tests_properties(NR-DEC-issue393.jp2-103-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue395.jp2-104-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue395.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue395.jp2.pgx") +set_tests_properties(NR-DEC-issue395.jp2-104-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue397.jp2-105-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue397.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue397.jp2.pgx") +set_tests_properties(NR-DEC-issue397.jp2-105-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue399.j2k-106-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue399.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx") +add_test(NR-DEC-issue399.j2k-106-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue399.j2k-106-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue399.j2k-106-decode") +add_test(NR-DEC-issue408.jp2-107-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue408.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue408.jp2.pgx") +set_tests_properties(NR-DEC-issue408.jp2-107-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue412.jp2-108-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx") +add_test(NR-DEC-issue412.jp2-108-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue412.jp2-108-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue412.jp2-108-decode") +add_test(NR-DEC-issue412.jp2-109-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx" "-t" "0") +add_test(NR-DEC-issue412.jp2-109-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue412.jp2-109-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue412.jp2-109-decode") +add_test(NR-DEC-issue414.jp2-110-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue414.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx") +add_test(NR-DEC-issue414.jp2-110-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue414.jp2-110-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue414.jp2-110-decode") +add_test(NR-DEC-issue418.jp2-111-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue418.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue418.jp2.pgx") +set_tests_properties(NR-DEC-issue418.jp2-111-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue420.jp2-112-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue420.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue420.jp2.pgx") +set_tests_properties(NR-DEC-issue420.jp2-112-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue411-ycc444.jp2-113-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc444.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx") +add_test(NR-DEC-issue411-ycc444.jp2-113-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue411-ycc444.jp2-113-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc444.jp2-113-decode") +add_test(NR-DEC-issue411-ycc422.jp2-114-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc422.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx") +add_test(NR-DEC-issue411-ycc422.jp2-114-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue411-ycc422.jp2-114-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc422.jp2-114-decode") +add_test(NR-DEC-issue411-ycc420.jp2-115-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc420.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx") +add_test(NR-DEC-issue411-ycc420.jp2-115-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue411-ycc420.jp2-115-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc420.jp2-115-decode") +add_test(NR-DEC-issue429.jp2-116-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue429.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue429.jp2.pgx") +set_tests_properties(NR-DEC-issue429.jp2-116-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue432.jp2-117-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue432.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue432.jp2.pgx") +set_tests_properties(NR-DEC-issue432.jp2-117-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue427-null-image-size.jp2-118-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-null-image-size.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-null-image-size.jp2.pgx") +set_tests_properties(NR-DEC-issue427-null-image-size.jp2-118-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue427-illegal-tile-offset.jp2-119-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-illegal-tile-offset.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-illegal-tile-offset.jp2.pgx") +set_tests_properties(NR-DEC-issue427-illegal-tile-offset.jp2-119-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue458.jp2-120-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue458.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx") +add_test(NR-DEC-issue458.jp2-120-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue458.jp2-120-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue458.jp2-120-decode") +add_test(NR-DEC-issue476.jp2-121-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue476.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue476.jp2.pgx") +set_tests_properties(NR-DEC-issue476.jp2-121-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue475.jp2-122-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue475.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue475.jp2.pgx") +set_tests_properties(NR-DEC-issue475.jp2-122-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue495.jp2-123-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue495.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue495.jp2.pgx") +set_tests_properties(NR-DEC-issue495.jp2-123-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-p1_04.j2k-124-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png" "-d" "0,0,1024,1024") +add_test(NR-DEC-p1_04.j2k-124-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-124-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-124-decode") +add_test(NR-DEC-p1_04.j2k-125-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png" "-d" "512,640,640,768") +add_test(NR-DEC-p1_04.j2k-125-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-125-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-125-decode") +add_test(NR-DEC-p1_04.j2k-126-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png" "-d" "896,896,1024,1024") +add_test(NR-DEC-p1_04.j2k-126-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-126-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-126-decode") +add_test(NR-DEC-p1_04.j2k-127-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png" "-d" "100,500,300,800") +add_test(NR-DEC-p1_04.j2k-127-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-127-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-127-decode") +add_test(NR-DEC-p1_04.j2k-128-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png" "-d" "260,520,360,600") +add_test(NR-DEC-p1_04.j2k-128-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-128-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-128-decode") +add_test(NR-DEC-p1_04.j2k-129-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png" "-d" "260,520,360,660") +add_test(NR-DEC-p1_04.j2k-129-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-129-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-129-decode") +add_test(NR-DEC-p1_04.j2k-130-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png" "-d" "360,520,400,600") +add_test(NR-DEC-p1_04.j2k-130-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-130-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-130-decode") +add_test(NR-DEC-p1_04.j2k-131-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png" "-d" "0,0,1024,1024" "-r" "2") +add_test(NR-DEC-p1_04.j2k-131-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-131-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-131-decode") +add_test(NR-DEC-p1_04.j2k-132-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png" "-d" "512,640,640,768" "-r" "2") +add_test(NR-DEC-p1_04.j2k-132-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-132-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-132-decode") +add_test(NR-DEC-p1_04.j2k-133-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png" "-d" "896,896,1024,1024" "-r" "2") +add_test(NR-DEC-p1_04.j2k-133-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-133-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-133-decode") +add_test(NR-DEC-p1_04.j2k-134-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png" "-d" "100,500,300,800" "-r" "2") +add_test(NR-DEC-p1_04.j2k-134-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-134-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-134-decode") +add_test(NR-DEC-p1_04.j2k-135-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png" "-d" "260,520,360,600" "-r" "2") +add_test(NR-DEC-p1_04.j2k-135-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-135-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-135-decode") +add_test(NR-DEC-p1_04.j2k-136-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png" "-d" "260,520,360,660" "-r" "2") +add_test(NR-DEC-p1_04.j2k-136-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-136-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-136-decode") +add_test(NR-DEC-p1_04.j2k-137-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png" "-d" "360,520,400,600" "-r" "2") +add_test(NR-DEC-p1_04.j2k-137-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-137-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-137-decode") +add_test(NR-DEC-p1_04.j2k-138-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png" "-t" "63") +add_test(NR-DEC-p1_04.j2k-138-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-138-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-138-decode") +add_test(NR-DEC-p1_04.j2k-139-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png" "-t" "63" "-r" "2") +add_test(NR-DEC-p1_04.j2k-139-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-139-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-139-decode") +add_test(NR-DEC-p1_04.j2k-140-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png" "-t" "12") +add_test(NR-DEC-p1_04.j2k-140-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-140-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-140-decode") +add_test(NR-DEC-p1_04.j2k-141-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png" "-t" "12" "-r" "1") +add_test(NR-DEC-p1_04.j2k-141-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_04.j2k-141-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-141-decode") +add_test(NR-DEC-p1_06.j2k-142-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png" "-d" "0,0,12,12") +add_test(NR-DEC-p1_06.j2k-142-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-142-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-142-decode") +add_test(NR-DEC-p1_06.j2k-143-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png" "-d" "1,8,8,11") +add_test(NR-DEC-p1_06.j2k-143-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-143-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-143-decode") +add_test(NR-DEC-p1_06.j2k-144-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png" "-d" "9,9,12,12") +add_test(NR-DEC-p1_06.j2k-144-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-144-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-144-decode") +add_test(NR-DEC-p1_06.j2k-145-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png" "-d" "10,4,12,10") +add_test(NR-DEC-p1_06.j2k-145-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-145-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-145-decode") +add_test(NR-DEC-p1_06.j2k-146-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png" "-d" "3,3,9,9") +add_test(NR-DEC-p1_06.j2k-146-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-146-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-146-decode") +add_test(NR-DEC-p1_06.j2k-147-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png" "-d" "4,4,7,7") +add_test(NR-DEC-p1_06.j2k-147-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-147-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-147-decode") +add_test(NR-DEC-p1_06.j2k-148-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png" "-d" "4,4,5,5") +add_test(NR-DEC-p1_06.j2k-148-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-148-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-148-decode") +add_test(NR-DEC-p1_06.j2k-149-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png" "-d" "0,0,12,12" "-r" "1") +add_test(NR-DEC-p1_06.j2k-149-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-149-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-149-decode") +add_test(NR-DEC-p1_06.j2k-150-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png" "-d" "1,8,8,11" "-r" "1") +add_test(NR-DEC-p1_06.j2k-150-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-150-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-150-decode") +add_test(NR-DEC-p1_06.j2k-151-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png" "-d" "9,9,12,12" "-r" "1") +add_test(NR-DEC-p1_06.j2k-151-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-151-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-151-decode") +add_test(NR-DEC-p1_06.j2k-152-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png" "-d" "10,4,12,10" "-r" "1") +add_test(NR-DEC-p1_06.j2k-152-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-152-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-152-decode") +add_test(NR-DEC-p1_06.j2k-153-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png" "-d" "3,3,9,9" "-r" "1") +add_test(NR-DEC-p1_06.j2k-153-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-153-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-153-decode") +add_test(NR-DEC-p1_06.j2k-154-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png" "-d" "4,4,7,7" "-r" "1") +add_test(NR-DEC-p1_06.j2k-154-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-154-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-154-decode") +add_test(NR-DEC-p1_06.j2k-155-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png" "-d" "4,4,5,5" "-r" "1") +add_test(NR-DEC-p1_06.j2k-155-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-155-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-155-decode") +add_test(NR-DEC-p1_06.j2k-156-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png" "-d" "9,9,12,12" "-r" "2") +add_test(NR-DEC-p1_06.j2k-156-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-156-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-156-decode") +add_test(NR-DEC-p1_06.j2k-157-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png" "-t" "0") +add_test(NR-DEC-p1_06.j2k-157-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-157-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-157-decode") +add_test(NR-DEC-p1_06.j2k-158-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png" "-t" "5") +add_test(NR-DEC-p1_06.j2k-158-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-158-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-158-decode") +add_test(NR-DEC-p1_06.j2k-159-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png" "-t" "9") +add_test(NR-DEC-p1_06.j2k-159-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-159-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-159-decode") +add_test(NR-DEC-p1_06.j2k-160-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png" "-t" "15") +add_test(NR-DEC-p1_06.j2k-160-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-160-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-160-decode") +add_test(NR-DEC-p1_06.j2k-161-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png" "-t" "0" "-r" "2") +add_test(NR-DEC-p1_06.j2k-161-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-161-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-161-decode") +add_test(NR-DEC-p1_06.j2k-162-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png" "-t" "5" "-r" "2") +add_test(NR-DEC-p1_06.j2k-162-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-162-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-162-decode") +add_test(NR-DEC-p1_06.j2k-163-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png" "-t" "9" "-r" "2") +add_test(NR-DEC-p1_06.j2k-163-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-163-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-163-decode") +add_test(NR-DEC-p1_06.j2k-164-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png" "-t" "15" "-r" "2") +add_test(NR-DEC-p1_06.j2k-164-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-164-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-164-decode") +add_test(NR-DEC-p1_06.j2k-165-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png" "-r" "4") +add_test(NR-DEC-p1_06.j2k-165-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p1_06.j2k-165-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-165-decode") +add_test(NR-DEC-p0_04.j2k-166-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png" "-d" "0,0,256,256") +add_test(NR-DEC-p0_04.j2k-166-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-166-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-166-decode") +add_test(NR-DEC-p0_04.j2k-167-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png" "-d" "128,0,256,128") +add_test(NR-DEC-p0_04.j2k-167-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-167-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-167-decode") +add_test(NR-DEC-p0_04.j2k-168-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png" "-d" "50,10,120,200") +add_test(NR-DEC-p0_04.j2k-168-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-168-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-168-decode") +add_test(NR-DEC-p0_04.j2k-169-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png" "-d" "10,150,190,210") +add_test(NR-DEC-p0_04.j2k-169-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-169-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-169-decode") +add_test(NR-DEC-p0_04.j2k-170-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png" "-d" "100,80,200,150") +add_test(NR-DEC-p0_04.j2k-170-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-170-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-170-decode") +add_test(NR-DEC-p0_04.j2k-171-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png" "-d" "150,20,200,50") +add_test(NR-DEC-p0_04.j2k-171-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-171-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-171-decode") +add_test(NR-DEC-p0_04.j2k-172-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png" "-d" "0,0,256,256" "-r" "2") +add_test(NR-DEC-p0_04.j2k-172-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-172-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-172-decode") +add_test(NR-DEC-p0_04.j2k-173-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png" "-d" "128,0,256,128" "-r" "2") +add_test(NR-DEC-p0_04.j2k-173-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-173-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-173-decode") +add_test(NR-DEC-p0_04.j2k-174-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png" "-d" "50,10,120,200" "-r" "2") +add_test(NR-DEC-p0_04.j2k-174-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-174-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-174-decode") +add_test(NR-DEC-p0_04.j2k-175-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png" "-d" "10,150,190,210" "-r" "2") +add_test(NR-DEC-p0_04.j2k-175-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-175-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-175-decode") +add_test(NR-DEC-p0_04.j2k-176-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png" "-d" "100,80,200,150" "-r" "2") +add_test(NR-DEC-p0_04.j2k-176-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-176-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-176-decode") +add_test(NR-DEC-p0_04.j2k-177-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png" "-d" "150,20,200,50" "-r" "2") +add_test(NR-DEC-p0_04.j2k-177-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_04.j2k-177-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-177-decode") +add_test(NR-DEC-a1_mono.j2c-178-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif" "-p" "1S") +add_test(NR-DEC-a1_mono.j2c-178-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-178-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-178-decode") +add_test(NR-DEC-a1_mono.j2c-179-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif" "-p" "2S") +add_test(NR-DEC-a1_mono.j2c-179-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-179-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-179-decode") +add_test(NR-DEC-a1_mono.j2c-180-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif" "-p" "4S") +add_test(NR-DEC-a1_mono.j2c-180-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-180-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-180-decode") +add_test(NR-DEC-a1_mono.j2c-181-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif" "-p" "6S") +add_test(NR-DEC-a1_mono.j2c-181-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-181-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-181-decode") +add_test(NR-DEC-a1_mono.j2c-182-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif" "-p" "8S") +add_test(NR-DEC-a1_mono.j2c-182-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-182-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-182-decode") +add_test(NR-DEC-a1_mono.j2c-183-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif" "-p" "10S") +add_test(NR-DEC-a1_mono.j2c-183-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-183-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-183-decode") +add_test(NR-DEC-a1_mono.j2c-184-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif" "-p" "12S") +add_test(NR-DEC-a1_mono.j2c-184-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-184-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-184-decode") +add_test(NR-DEC-a1_mono.j2c-185-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif" "-p" "14S") +add_test(NR-DEC-a1_mono.j2c-185-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-185-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-185-decode") +add_test(NR-DEC-a1_mono.j2c-186-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif" "-p" "16S") +add_test(NR-DEC-a1_mono.j2c-186-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-186-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-186-decode") +add_test(NR-DEC-basn4a08.jp2-187-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif" "-p" "1S") +add_test(NR-DEC-basn4a08.jp2-187-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-187-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-187-decode") +add_test(NR-DEC-basn4a08.jp2-188-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif" "-p" "2S") +add_test(NR-DEC-basn4a08.jp2-188-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-188-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-188-decode") +add_test(NR-DEC-basn4a08.jp2-189-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif" "-p" "4S") +add_test(NR-DEC-basn4a08.jp2-189-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-189-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-189-decode") +add_test(NR-DEC-basn4a08.jp2-190-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif" "-p" "6S") +add_test(NR-DEC-basn4a08.jp2-190-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-190-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-190-decode") +add_test(NR-DEC-basn4a08.jp2-191-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif" "-p" "8S") +add_test(NR-DEC-basn4a08.jp2-191-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-191-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-191-decode") +add_test(NR-DEC-basn4a08.jp2-192-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif" "-p" "10S") +add_test(NR-DEC-basn4a08.jp2-192-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-192-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-192-decode") +add_test(NR-DEC-basn4a08.jp2-193-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif" "-p" "12S") +add_test(NR-DEC-basn4a08.jp2-193-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-193-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-193-decode") +add_test(NR-DEC-basn4a08.jp2-194-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif" "-p" "14S") +add_test(NR-DEC-basn4a08.jp2-194-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-194-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-194-decode") +add_test(NR-DEC-basn4a08.jp2-195-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif" "-p" "16S") +add_test(NR-DEC-basn4a08.jp2-195-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-195-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-195-decode") +add_test(NR-DEC-p0_14.j2k-196-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif" "-p" "1S") +add_test(NR-DEC-p0_14.j2k-196-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-196-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-196-decode") +add_test(NR-DEC-p0_14.j2k-197-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif" "-p" "2S") +add_test(NR-DEC-p0_14.j2k-197-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-197-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-197-decode") +add_test(NR-DEC-p0_14.j2k-198-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif" "-p" "4S") +add_test(NR-DEC-p0_14.j2k-198-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-198-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-198-decode") +add_test(NR-DEC-p0_14.j2k-199-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif" "-p" "6S") +add_test(NR-DEC-p0_14.j2k-199-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-199-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-199-decode") +add_test(NR-DEC-p0_14.j2k-200-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif" "-p" "8S") +add_test(NR-DEC-p0_14.j2k-200-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-200-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-200-decode") +add_test(NR-DEC-p0_14.j2k-201-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif" "-p" "10S") +add_test(NR-DEC-p0_14.j2k-201-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-201-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-201-decode") +add_test(NR-DEC-p0_14.j2k-202-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif" "-p" "12S") +add_test(NR-DEC-p0_14.j2k-202-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-202-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-202-decode") +add_test(NR-DEC-p0_14.j2k-203-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif" "-p" "14S") +add_test(NR-DEC-p0_14.j2k-203-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-203-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-203-decode") +add_test(NR-DEC-p0_14.j2k-204-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif" "-p" "16S") +add_test(NR-DEC-p0_14.j2k-204-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-204-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-204-decode") +add_test(NR-DEC-basn6a08.jp2-205-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif" "-p" "1S") +add_test(NR-DEC-basn6a08.jp2-205-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-205-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-205-decode") +add_test(NR-DEC-basn6a08.jp2-206-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif" "-p" "2S") +add_test(NR-DEC-basn6a08.jp2-206-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-206-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-206-decode") +add_test(NR-DEC-basn6a08.jp2-207-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif" "-p" "4S") +add_test(NR-DEC-basn6a08.jp2-207-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-207-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-207-decode") +add_test(NR-DEC-basn6a08.jp2-208-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif" "-p" "6S") +add_test(NR-DEC-basn6a08.jp2-208-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-208-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-208-decode") +add_test(NR-DEC-basn6a08.jp2-209-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif" "-p" "8S") +add_test(NR-DEC-basn6a08.jp2-209-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-209-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-209-decode") +add_test(NR-DEC-basn6a08.jp2-210-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif" "-p" "10S") +add_test(NR-DEC-basn6a08.jp2-210-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-210-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-210-decode") +add_test(NR-DEC-basn6a08.jp2-211-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif" "-p" "12S") +add_test(NR-DEC-basn6a08.jp2-211-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-211-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-211-decode") +add_test(NR-DEC-basn6a08.jp2-212-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif" "-p" "14S") +add_test(NR-DEC-basn6a08.jp2-212-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-212-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-212-decode") +add_test(NR-DEC-basn6a08.jp2-213-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif" "-p" "16S") +add_test(NR-DEC-basn6a08.jp2-213-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-213-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-213-decode") +add_test(NR-DEC-issue235.jp2-214-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue235.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx") +add_test(NR-DEC-issue235.jp2-214-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue235.jp2-214-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue235.jp2-214-decode") +add_test(NR-DEC-a1_mono.j2c-215-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png" "-p" "1S") +add_test(NR-DEC-a1_mono.j2c-215-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-215-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-215-decode") +add_test(NR-DEC-a1_mono.j2c-216-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png" "-p" "2S") +add_test(NR-DEC-a1_mono.j2c-216-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-216-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-216-decode") +add_test(NR-DEC-a1_mono.j2c-217-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png" "-p" "4S") +add_test(NR-DEC-a1_mono.j2c-217-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-217-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-217-decode") +add_test(NR-DEC-a1_mono.j2c-218-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png" "-p" "6S") +add_test(NR-DEC-a1_mono.j2c-218-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-218-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-218-decode") +add_test(NR-DEC-a1_mono.j2c-219-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png" "-p" "8S") +add_test(NR-DEC-a1_mono.j2c-219-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-219-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-219-decode") +add_test(NR-DEC-a1_mono.j2c-220-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png" "-p" "10S") +add_test(NR-DEC-a1_mono.j2c-220-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-220-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-220-decode") +add_test(NR-DEC-a1_mono.j2c-221-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png" "-p" "12S") +add_test(NR-DEC-a1_mono.j2c-221-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-221-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-221-decode") +add_test(NR-DEC-a1_mono.j2c-222-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png" "-p" "14S") +add_test(NR-DEC-a1_mono.j2c-222-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-222-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-222-decode") +add_test(NR-DEC-a1_mono.j2c-223-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png" "-p" "16S") +add_test(NR-DEC-a1_mono.j2c-223-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-223-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-223-decode") +add_test(NR-DEC-basn4a08.jp2-224-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png" "-p" "1S") +add_test(NR-DEC-basn4a08.jp2-224-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-224-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-224-decode") +add_test(NR-DEC-basn4a08.jp2-225-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png" "-p" "2S") +add_test(NR-DEC-basn4a08.jp2-225-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-225-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-225-decode") +add_test(NR-DEC-basn4a08.jp2-226-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png" "-p" "4S") +add_test(NR-DEC-basn4a08.jp2-226-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-226-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-226-decode") +add_test(NR-DEC-basn4a08.jp2-227-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png" "-p" "6S") +add_test(NR-DEC-basn4a08.jp2-227-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-227-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-227-decode") +add_test(NR-DEC-basn4a08.jp2-228-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png" "-p" "8S") +add_test(NR-DEC-basn4a08.jp2-228-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-228-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-228-decode") +add_test(NR-DEC-basn4a08.jp2-229-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png" "-p" "10S") +add_test(NR-DEC-basn4a08.jp2-229-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-229-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-229-decode") +add_test(NR-DEC-basn4a08.jp2-230-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png" "-p" "12S") +add_test(NR-DEC-basn4a08.jp2-230-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-230-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-230-decode") +add_test(NR-DEC-basn4a08.jp2-231-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png" "-p" "14S") +add_test(NR-DEC-basn4a08.jp2-231-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-231-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-231-decode") +add_test(NR-DEC-basn4a08.jp2-232-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png" "-p" "16S") +add_test(NR-DEC-basn4a08.jp2-232-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-232-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-232-decode") +add_test(NR-DEC-p0_14.j2k-233-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png" "-p" "1S") +add_test(NR-DEC-p0_14.j2k-233-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-233-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-233-decode") +add_test(NR-DEC-p0_14.j2k-234-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png" "-p" "2S") +add_test(NR-DEC-p0_14.j2k-234-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-234-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-234-decode") +add_test(NR-DEC-p0_14.j2k-235-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png" "-p" "4S") +add_test(NR-DEC-p0_14.j2k-235-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-235-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-235-decode") +add_test(NR-DEC-p0_14.j2k-236-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png" "-p" "6S") +add_test(NR-DEC-p0_14.j2k-236-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-236-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-236-decode") +add_test(NR-DEC-p0_14.j2k-237-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png" "-p" "8S") +add_test(NR-DEC-p0_14.j2k-237-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-237-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-237-decode") +add_test(NR-DEC-p0_14.j2k-238-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png" "-p" "10S") +add_test(NR-DEC-p0_14.j2k-238-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-238-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-238-decode") +add_test(NR-DEC-p0_14.j2k-239-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png" "-p" "12S") +add_test(NR-DEC-p0_14.j2k-239-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-239-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-239-decode") +add_test(NR-DEC-p0_14.j2k-240-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png" "-p" "14S") +add_test(NR-DEC-p0_14.j2k-240-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-240-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-240-decode") +add_test(NR-DEC-p0_14.j2k-241-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png" "-p" "16S") +add_test(NR-DEC-p0_14.j2k-241-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-241-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-241-decode") +add_test(NR-DEC-basn6a08.jp2-242-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png" "-p" "1S") +add_test(NR-DEC-basn6a08.jp2-242-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-242-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-242-decode") +add_test(NR-DEC-basn6a08.jp2-243-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png" "-p" "2S") +add_test(NR-DEC-basn6a08.jp2-243-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-243-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-243-decode") +add_test(NR-DEC-basn6a08.jp2-244-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png" "-p" "4S") +add_test(NR-DEC-basn6a08.jp2-244-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-244-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-244-decode") +add_test(NR-DEC-basn6a08.jp2-245-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png" "-p" "6S") +add_test(NR-DEC-basn6a08.jp2-245-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-245-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-245-decode") +add_test(NR-DEC-basn6a08.jp2-246-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png" "-p" "8S") +add_test(NR-DEC-basn6a08.jp2-246-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-246-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-246-decode") +add_test(NR-DEC-basn6a08.jp2-247-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png" "-p" "10S") +add_test(NR-DEC-basn6a08.jp2-247-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-247-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-247-decode") +add_test(NR-DEC-basn6a08.jp2-248-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png" "-p" "12S") +add_test(NR-DEC-basn6a08.jp2-248-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-248-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-248-decode") +add_test(NR-DEC-basn6a08.jp2-249-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png" "-p" "14S") +add_test(NR-DEC-basn6a08.jp2-249-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-249-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-249-decode") +add_test(NR-DEC-basn6a08.jp2-250-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png" "-p" "16S") +add_test(NR-DEC-basn6a08.jp2-250-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-250-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-250-decode") +add_test(NR-DEC-v4dwt_interleave_h.gsr105.j2k-251-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/v4dwt_interleave_h.gsr105.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/v4dwt_interleave_h.gsr105.j2k.pgx") +set_tests_properties(NR-DEC-v4dwt_interleave_h.gsr105.j2k-251-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/dwt_interleave_h.gsr105.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx") +add_test(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode-md5 PROPERTIES DEPENDS "NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode") +add_test(NR-DEC-issue205.jp2-253-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif") +add_test(NR-DEC-issue205.jp2-253-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue205.jp2-253-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue205.jp2-253-decode") +add_test(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue236-ESYCC-CDEF.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx") +add_test(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode") +add_test(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-090-CIELab.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx") +add_test(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue559-eci-090-CIELab.jp2-255-decode") +add_test(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-091-CIELab.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx") +add_test(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue559-eci-091-CIELab.jp2-256-decode") +add_test(NR-DEC-issue653-zero-unknownbox.jp2-257-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue653-zero-unknownbox.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png" "-p" "8S") +add_test(NR-DEC-issue653-zero-unknownbox.jp2-257-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue653-zero-unknownbox.jp2-257-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue653-zero-unknownbox.jp2-257-decode") +add_test(NR-DEC-a1_mono.j2c-258-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif" "-p" "3S") +add_test(NR-DEC-a1_mono.j2c-258-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-258-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-258-decode") +add_test(NR-DEC-a1_mono.j2c-259-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif" "-p" "5S") +add_test(NR-DEC-a1_mono.j2c-259-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-259-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-259-decode") +add_test(NR-DEC-a1_mono.j2c-260-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif" "-p" "7S") +add_test(NR-DEC-a1_mono.j2c-260-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-260-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-260-decode") +add_test(NR-DEC-a1_mono.j2c-261-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif" "-p" "9S") +add_test(NR-DEC-a1_mono.j2c-261-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-261-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-261-decode") +add_test(NR-DEC-a1_mono.j2c-262-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif" "-p" "11S") +add_test(NR-DEC-a1_mono.j2c-262-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-262-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-262-decode") +add_test(NR-DEC-a1_mono.j2c-263-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif" "-p" "13S") +add_test(NR-DEC-a1_mono.j2c-263-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-263-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-263-decode") +add_test(NR-DEC-a1_mono.j2c-264-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif" "-p" "15S") +add_test(NR-DEC-a1_mono.j2c-264-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-a1_mono.j2c-264-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-264-decode") +add_test(NR-DEC-basn4a08.jp2-265-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif" "-p" "3S") +add_test(NR-DEC-basn4a08.jp2-265-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-265-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-265-decode") +add_test(NR-DEC-basn4a08.jp2-266-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif" "-p" "5S") +add_test(NR-DEC-basn4a08.jp2-266-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-266-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-266-decode") +add_test(NR-DEC-basn4a08.jp2-267-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif" "-p" "7S") +add_test(NR-DEC-basn4a08.jp2-267-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-267-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-267-decode") +add_test(NR-DEC-basn4a08.jp2-268-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif" "-p" "9S") +add_test(NR-DEC-basn4a08.jp2-268-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-268-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-268-decode") +add_test(NR-DEC-basn4a08.jp2-269-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif" "-p" "11S") +add_test(NR-DEC-basn4a08.jp2-269-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-269-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-269-decode") +add_test(NR-DEC-basn4a08.jp2-270-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif" "-p" "13S") +add_test(NR-DEC-basn4a08.jp2-270-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-270-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-270-decode") +add_test(NR-DEC-basn4a08.jp2-271-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif" "-p" "15S") +add_test(NR-DEC-basn4a08.jp2-271-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn4a08.jp2-271-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-271-decode") +add_test(NR-DEC-p0_14.j2k-272-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif" "-p" "3S") +add_test(NR-DEC-p0_14.j2k-272-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-272-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-272-decode") +add_test(NR-DEC-p0_14.j2k-273-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif" "-p" "5S") +add_test(NR-DEC-p0_14.j2k-273-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-273-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-273-decode") +add_test(NR-DEC-p0_14.j2k-274-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif" "-p" "7S") +add_test(NR-DEC-p0_14.j2k-274-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-274-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-274-decode") +add_test(NR-DEC-p0_14.j2k-275-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif" "-p" "9S") +add_test(NR-DEC-p0_14.j2k-275-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-275-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-275-decode") +add_test(NR-DEC-p0_14.j2k-276-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif" "-p" "11S") +add_test(NR-DEC-p0_14.j2k-276-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-276-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-276-decode") +add_test(NR-DEC-p0_14.j2k-277-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif" "-p" "13S") +add_test(NR-DEC-p0_14.j2k-277-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-277-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-277-decode") +add_test(NR-DEC-p0_14.j2k-278-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif" "-p" "15S") +add_test(NR-DEC-p0_14.j2k-278-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-p0_14.j2k-278-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-278-decode") +add_test(NR-DEC-basn6a08.jp2-279-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif" "-p" "3S") +add_test(NR-DEC-basn6a08.jp2-279-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-279-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-279-decode") +add_test(NR-DEC-basn6a08.jp2-280-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif" "-p" "5S") +add_test(NR-DEC-basn6a08.jp2-280-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-280-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-280-decode") +add_test(NR-DEC-basn6a08.jp2-281-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif" "-p" "7S") +add_test(NR-DEC-basn6a08.jp2-281-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-281-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-281-decode") +add_test(NR-DEC-basn6a08.jp2-282-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif" "-p" "9S") +add_test(NR-DEC-basn6a08.jp2-282-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-282-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-282-decode") +add_test(NR-DEC-basn6a08.jp2-283-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif" "-p" "11S") +add_test(NR-DEC-basn6a08.jp2-283-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-283-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-283-decode") +add_test(NR-DEC-basn6a08.jp2-284-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif" "-p" "13S") +add_test(NR-DEC-basn6a08.jp2-284-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-284-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-284-decode") +add_test(NR-DEC-basn6a08.jp2-285-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif" "-p" "15S") +add_test(NR-DEC-basn6a08.jp2-285-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-basn6a08.jp2-285-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-285-decode") +add_test(NR-DEC-issue725.jp2-286-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue725.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue725.png") +set_tests_properties(NR-DEC-issue725.jp2-286-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue726.j2k-287-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue726.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png") +add_test(NR-DEC-issue726.j2k-287-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue726.j2k-287-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue726.j2k-287-decode") +add_test(NR-DEC-issue733.jp2-288-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue733.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue733.png") +set_tests_properties(NR-DEC-issue733.jp2-288-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue774.jp2-289-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue774.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue774.png") +set_tests_properties(NR-DEC-issue774.jp2-289-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue775.j2k-290-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775.png") +set_tests_properties(NR-DEC-issue775.j2k-290-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue775-2.j2k-291-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775-2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775-2.png") +set_tests_properties(NR-DEC-issue775-2.j2k-291-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue818.jp2-292-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue818.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png") +add_test(NR-DEC-issue818.jp2-292-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") +set_tests_properties(NR-DEC-issue818.jp2-292-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue818.jp2-292-decode") +add_test(NR-DEC-issue823.jp2-293-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue823.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue823.png") +set_tests_properties(NR-DEC-issue823.jp2-293-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue826.jp2-294-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue826.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue826.png") +set_tests_properties(NR-DEC-issue826.jp2-294-decode PROPERTIES WILL_FAIL "TRUE") +add_test(NR-DEC-issue820.jp2-295-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue820.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue820.png") +set_tests_properties(NR-DEC-issue820.jp2-295-decode PROPERTIES WILL_FAIL "TRUE") diff --git a/build/tests/nonregression/test_suite.ctest b/build/tests/nonregression/test_suite.ctest new file mode 100644 index 000000000..31d1d30dd --- /dev/null +++ b/build/tests/nonregression/test_suite.ctest @@ -0,0 +1,576 @@ +# This file list all the input commands of the tests run by the ctest command which +# are not related to the conformance files. +# +# For each line of this file (except line which begin with #) an opj_compress test or a +# opj_decompress is run and its related tests. +# + For encoder related tests = dump, compare dump to base, decode the encoded file with +# reference and compare the decoded file with the baseline decoded previously with +# ref decoder. +# + For decoder related tests = dump, compare dump to base, (TODO: compare outpout decoding +# image to base) +# +# Line begin with ! should failed (should be used for bad jpeg2000 file which should be +# gracefully rejected). Please add a short resume about why this file should be rejected. +# +# You can use OPJ_DATA_ROOT-NOTFOUND/input/nonregression and /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary cmake variable which refers to OPJ_DATA_ROOT +# repository. However you can use relative path or absolute path. + +# ENCODER TEST SUITE +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k -r 200,50,10 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k -q 30,35,40 -n 2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k -q 30,35,40 -b 16,16 -c [64,64] +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k -c [128,128],[128,128],[128,128] -r 100,20,2 -t 640,480 -b 32,32 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k -t 127,127 -p PCRL +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k -s 2,2 -SOP +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k -EPH -M 38 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k -d 150,300 -r 800 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes1.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k -r 10 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2 -r 50 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Rome.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2 -q 30,35,50 -p LRCP -n 3 +# related to issue 5 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k +# related to issue 62 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k -F 512,512,1,16,u +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k -F 512,512,1,16,s +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k -cinema2K 24 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k -cinema2K 24 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k -cinema2K 24 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k -cinema2K 48 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k -cinema2K 48 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k -cinema2K 48 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/ElephantDream_4K.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k -cinema4K +# issue 141 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k -F 2048,32,1,16,u +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k -F 2048,32,1,16,u -I +# issue 46: +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k -c [64,64] +# issue 316 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue316.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2 +# issue 416 (cdef for png with alpha) + issue 436 (MCT norm read buffer overflow for num comp > 3 + Issue 215 number of decomp levels +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2 -n 6 +# issue 203 BMP Files not handled properly +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-8bpp-width1.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle4.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle4.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgra16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgrx16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgrx.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2 + +# issue 322 limited tif support +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2 + +# issue 536 (PNG images are always read as RGB(A) images) + issue 264 (convert.c is unmaintainable) +# Test all images from pngsuite +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2 +# already done opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbrn2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn0g16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbyn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n0g08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp1n3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2 + +# issue 571 Lossless is not lossless on linux x86 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k + +# issue 729 Allow to read 3/5/7/9/11/13/15 bpp tif files +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2 +opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2 + +# issue 843 Crash with invalid ppm file +!opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue843.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue843.ppm.jp2 + +# DECODER TEST SUITE +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/_00042.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/123.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx +# The 4 following tests should failed (kakadu indicates that they are corrupted) +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken1.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken2.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken3.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken3.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken4.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken4.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/bug.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxI.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxR.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cannotreaddatawithnosizeknown.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/cthead1.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/CT_Phillips_JPEG2K_Decompr_Problem.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/illegalcolortransform.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/j2k32.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kakadu_v4-4_openjpegv2_broken.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/MarkerIsNotCompliant.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Marrin.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/merged.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00000.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00001.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00002.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-j2k.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-jp2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-j2k.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-jp2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/relax.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/test_lossless.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx +# text_GBR.jp2 file exhibt a error about a tile part with a index > of the number of tile-part in this tile (related to issue 202, 206, 208) +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/text_GBR.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx +# pacs.ge file should throw an error but finally it seems work with v2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pacs.ge.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx +# related to issue 135 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx -l 2 +# related to issue 104 and 110 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue104_jpxstream.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx +# File not supported by kakadu (Malformed PCLR box) and not supoprter by openjpeg (problem with value of TPSot) +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2ace68c-1381.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2ace68c-1381.jp2.pgx +# File which produced weird output with kakadu and not supoprter by openjpeg (problem with value of TPSot, issue 202, 206, 208) +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2b86b74-2753.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx +# issue 191 raised by the gdal fuzzer test (should properly failed) +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_unchecked_numresolutions.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_unchecked_numresolutions.pgx +# issue 192 raised by the gdal fuzzer test (should nicely failed) +! opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.pgx +# issue 193 raised by the gdal fuzzer test (should nicely failed) +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_number_of_tiles.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_number_of_tiles.pgx +# issue 194 raised by the gdal fuzzer test (should nicely failed) +! opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_comp_dx_dy.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_comp_dx_dy.pgx +# issue 202 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/file409752.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx +# issue 188 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue188_beach_64bitsbox.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx +# issue 206 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue206_image-000.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx +# issue 205 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx +# issue 225 (sumatrapdf) +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.5b5.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.5b5.3723.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1888.pdf.asan.35.988.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1888.pdf.asan.35.988.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2539.pdf.SIGFPE.706.1712.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2539.pdf.SIGFPE.706.1712.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2236.pdf.SIGSEGV.398.1376.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2236.pdf.SIGSEGV.398.1376.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1336.pdf.asan.47.376.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1336.pdf.asan.47.376.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1851.pdf.SIGSEGV.ce9.948.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1851.pdf.SIGSEGV.ce9.948.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4149.pdf.SIGSEGV.cf7.3501.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4035.pdf.SIGSEGV.d8b.3375.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2977.pdf.asan.67.2198.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2977.pdf.asan.67.2198.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.ce9.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.ce9.3723.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3635.pdf.asan.77.2930.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3635.pdf.asan.77.2930.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1802.pdf.SIGSEGV.36e.894.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1802.pdf.SIGSEGV.36e.894.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.f4c.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.f4c.3723.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2.pdf.SIGFPE.706.1112.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2.pdf.SIGFPE.706.1112.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 +# issue 228 (16bits/lossy) +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue228.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx +# issue 229 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx +# issue 254 (loss in quality) +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue254.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx +# issue 142 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue142.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx +# issue 134 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue134.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx +# issue 135 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue135.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx +# issue 208 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue208.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx +# issue 211 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue211.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx +# issue 171 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue171.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx +# issue 171 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue165.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue165.jp2.pgx +# +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken.jpc.pgx +# issue 226 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue226.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx +# issue 297 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1103421.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1103421.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1178956.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1178956.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000290.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000290.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000691.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000691.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_20.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_20.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1377017.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1377017.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1002767.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1002767.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_10025.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_10025.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000234.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000234.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_225881.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_225881.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000671.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000671.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1013627.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1013627.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1015644.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1015644.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_101463.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_101463.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1674177.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1674177.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1673169.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1673169.jp2.pgx +# issue 296 +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.0.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.0.jp2.pgx +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.1.jp2.pgx +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.2.jp2.pgx +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.0.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.0.jp2.pgx +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.1.jp2.pgx +#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.2.jp2.pgx +# issue 362 (from pdfium fuzz engine) +# Invalid PPM Marker +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2863.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2863.jp2.pgx +# Invalid ftyp box size +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2866.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2866.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2894.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2894.jp2.pgx +# issue 363 (from pdfium fuzz engine) +# Invalid Tile part length +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4723.jp2.pgx +# Invalid Marker length +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4740.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4740.jp2.pgx +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4792.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4792.jp2.pgx +# issue 390 (from pdfium fuzz engine) Invalid segment size +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue390.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue390.jp2.pgx +# issue 391 (from pdfium fuzz engine) Invalid segment size +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue391.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue391.jp2.pgx +# issue 400 (from pdfium fuzz engine) Unknown Scod value in COD marker +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue400.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue400.jp2.pgx +# issue 413 (from pdfium fuzz engine) Unknown progression order in COD marker +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue413.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue413.jp2.pgx +# issue 364 (from pdfium fuzz engine) +# Inconsistent box length for jp2 box +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-38.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-38.jp2.pgx +# No ihdr box +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-903.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-903.jp2.pgx +# issue 393 (from pdfium fuzz engine) Zppm found twice +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue393.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue393.jp2.pgx +# issue 395 (from pdfium fuzz engine) Stream too short +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue395.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue395.jp2.pgx +# issue 397 (from pdfium fuzz engine) Incomplete channel definitions. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue397.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue397.jp2.pgx +# issue 399 (from pdfium fuzz engine) Incomplete channel definitions. +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue399.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx +# issue 408 (from pdfium fuzz engine) No COD marker in main j2k header. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue408.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue408.jp2.pgx +# issue 412 Palette image with cdef fails to decompress. +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx +# issue 428 Palette image with cdef fails to decompress properly. +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx -t 0 +# issue 414 Image with per channel alpha (cdef) does not decode properly. +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue414.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx +# issue 418 (from pdfium fuzz engine) Tile part length size inconsistent with stream length. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue418.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue418.jp2.pgx +# issue 420 (from pdfium fuzz engine) Illegal custom precinct exponent. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue420.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue420.jp2.pgx +# issue 422 (rework of issue 411). ycc with odd width/height +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc444.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc422.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc420.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx +# issue 429 (from pdfium fuzz engine) 0 entries in PCLR box. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue429.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue429.jp2.pgx +# issue 432 (from pdfium fuzz engine) Overflow in tcd tilec data size computation. +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue432.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue432.jp2.pgx +# issue 427 image width is 0 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-null-image-size.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-null-image-size.jp2.pgx +# issue 427 illegal tile offset +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-illegal-tile-offset.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-illegal-tile-offset.jp2.pgx +# issue 458 component precision upscaling +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue458.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx +# issue 476 Multiple COD in MH +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue476.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue476.jp2.pgx +# issue 475 Invalid number of layers +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue475.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue475.jp2.pgx +# issue 495 Overflow op_image_comp_header_updat +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue495.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue495.jp2.pgx + + +# decode with specific area +# prec=12; nb_c=1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png -d 0,0,1024,1024 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png -d 512,640,640,768 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png -d 896,896,1024,1024 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png -d 100,500,300,800 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png -d 260,520,360,600 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png -d 260,520,360,660 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png -d 360,520,400,600 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png -d 0,0,1024,1024 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png -d 512,640,640,768 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png -d 896,896,1024,1024 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png -d 100,500,300,800 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png -d 260,520,360,600 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png -d 260,520,360,660 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png -d 360,520,400,600 -r 2 + +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png -t 63 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png -t 63 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png -t 12 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png -t 12 -r 1 + +# prec=8; nb_c=3 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png -d 0,0,12,12 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png -d 1,8,8,11 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png -d 9,9,12,12 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png -d 10,4,12,10 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png -d 3,3,9,9 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png -d 4,4,7,7 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png -d 4,4,5,5 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png -d 0,0,12,12 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png -d 1,8,8,11 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png -d 9,9,12,12 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png -d 10,4,12,10 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png -d 3,3,9,9 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png -d 4,4,7,7 -r 1 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png -d 4,4,5,5 -r 1 + +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png -d 9,9,12,12 -r 2 + +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png -t 0 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png -t 5 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png -t 9 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png -t 15 + +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png -t 0 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png -t 5 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png -t 9 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png -t 15 -r 2 + +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png -r 4 + +# prec=4; nb_c=3 ; signd=yes +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png -d 0,0,256,256 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png -d 128,0,256,128 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png -d 50,10,120,200 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png -d 10,150,190,210 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png -d 100,80,200,150 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png -d 150,20,200,50 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png -d 0,0,256,256 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png -d 128,0,256,128 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png -d 50,10,120,200 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png -d 10,150,190,210 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png -d 100,80,200,150 -r 2 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png -d 150,20,200,50 -r 2 + +# prec=8; nb_c=1 ; non standard origin (image offset and tile offset); sample sep: 2x1 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01.j2k.png -d 5,128,127,226 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_1.j2k.png -d 5,128,122,99 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_2.j2k.png -d 50,10,120,200 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_3.j2k.png -d 10,150,190,210 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_4.j2k.png -d 100,80,200,150 +#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_5.j2k.png -d 150,20,200,50 + +# issue 322 limited tif support +# GRAYSCALE +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif -p 16S +# GRAYSCALE ALPHA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif -p 16S +# RGB +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif -p 16S +# RGBA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif -p 16S + +#issue 235 CMAP outside jp2h box. CMAP is buggy +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue235.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx + +# issue 264, add checks for png +# GRAYSCALE +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png -p 16S +# GRAYSCALE ALPHA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png -p 16S +# RGB +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png -p 16S +# RGBA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png -p 1S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png -p 2S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png -p 4S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png -p 6S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png -p 8S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png -p 10S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png -p 12S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png -p 14S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png -p 16S + +# issue 388 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/v4dwt_interleave_h.gsr105.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/v4dwt_interleave_h.gsr105.j2k.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/dwt_interleave_h.gsr105.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx + +# PR 559 : CMYK tif output +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif + +# issue 236: esYCC colorspace +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue236-ESYCC-CDEF.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx + +# issue 326 + PR 559: CIELab colorspace +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-090-CIELab.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-091-CIELab.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx + +# issue 653 Last box of undefined size byg +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue653-zero-unknownbox.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png -p 8S + +# issue 729 decompress 3/5/7/9/11/13/15 bits precision to tiff +# GRAYSCALE +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif -p 3S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif -p 5S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif -p 7S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif -p 9S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif -p 11S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif -p 13S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif -p 15S +# GRAYSCALE ALPHA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif -p 3S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif -p 5S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif -p 7S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif -p 9S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif -p 11S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif -p 13S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif -p 15S +# RGB +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif -p 3S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif -p 5S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif -p 7S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif -p 9S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif -p 11S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif -p 13S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif -p 15S +# RGBA +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif -p 3S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif -p 5S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif -p 7S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif -p 9S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif -p 11S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif -p 13S +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif -p 15S + +# issue 725 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue725.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue725.png +# issue 726 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue726.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png +# issue 733 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue733.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue733.png +# issue 774 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue774.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue774.png +# issue 775 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775.png +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775-2.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775-2.png +# issue 818 +opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue818.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png +# issue 823 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue823.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue823.png +# issue 826 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue826.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue826.png +# issue 820 +!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue820.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue820.png diff --git a/build/tests/unit/CTestTestfile.cmake b/build/tests/unit/CTestTestfile.cmake new file mode 100644 index 000000000..2e1e8fbb9 --- /dev/null +++ b/build/tests/unit/CTestTestfile.cmake @@ -0,0 +1,9 @@ +# CMake generated Testfile for +# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/unit +# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/unit +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(testempty0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty0") +add_test(testempty1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty1") +add_test(testempty2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty2") diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class new file mode 100644 index 0000000000000000000000000000000000000000..eb35beab7bc9420a498128f645a4d7419a72d6a6 GIT binary patch literal 344 zcmaiw&rZTX5XQfO($WH=2NI7SJmAG99N^$lQ7IrMO}wvlvMFhH$!_)GJoo@UlwsF2 z;iBR6%S^sMlllJn`~on;FhUYxKsc+kyyHT@v01aVLNZ}AUTwvPNGqXan%AaO^5*J= zFg$4I#%M!Ga{X=!zAr0hJKyYBWzX}6%$b|aYac}DKC!JIwXGwZ5T@G5RD1D`W%`Hf za^WMg$+AgVX(`#&jsDs97fP|Yt%S8~38#naH?LbRYQn{_%8)>4x!(Y-fY3$&ICebU U6#6|PbblG6@0d6TAx1BZ_hyS)`Tzg` literal 0 HcmV?d00001 diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class new file mode 100644 index 0000000000000000000000000000000000000000..f876ba0f14273fcf811f2089f31eb3d037c623ac GIT binary patch literal 4820 zcmbtYYjjjs75>i5BzI;qd5{MWDPg1uog|b9MM?=!N`Pk4B$S4SfE8{sm&uUHz2lt; zBvh@BqHUE{ZB<&WRI0`YXek8>Rn$NAv6lW&|ENFIwX|AaYts+xOndWF}L) zs4TkAIs5MOoqhKH_C7;@^7_?l0B*&VFk-Mn6xlH5As0p)#$|a_#4!;QA|^!~7jd76 z_lbDFh!2RkU&IGRd`QEG1<1kpNEi>`gocl5_*f7RhA|(ue0->$XP=alAE}4J$$I#3 zQp2Z2^XZCd?~hnMR)r)U7x5VlpRGbGJ}2Uoh9@*Usn8Vf)sO1EtMA%s3|k4q?z56f z!&ZpIP1CTu(|R^*WEHAY*|?d?rSx>_xRFp$`xWLT+${%nJ2^gPm^s=t9Oyejyw0?4 zCOZdncFIh4akn{ikCC;~QIxS@|J)D~26Ghs|9R2)ksawEhXF;dBq92E&8BZ~U$XeyI25=Fjf zY3Igtq~3L%PNqBe7{fWsrt6`>RMOOQA&?M?}) z7tfZm@$K3~=*kT#hIErce{62h-YRh09)&IaJ1S;x;M zDuLeXvPz)6X_#8aabap8)+St?(Ft8eN5|xB$Bz6K6&YSnl>Y(_E+1;b1UC$)J@SSJt#NzU*q#!CEi6+3E2SYQR1MJcenZ%pji4Jn5!{Z=5qtqp z$?`}9E72LjJFqH()wm^sHF#$PYjJA?>tuPGEZ2+Z5|a%gHj3DURcs7S*O^ti5v;(? z8on68Y4k9pg|4(~#I}yP_0U?-&QwO+EHpaXi{a+{wW7VeOVkV0`e??shKMv7O^s!& zY&OLri{`B8;gp$(=0=QYcQla2Dqj*1om&6T!D6{@<3!MBfae$eA5O zN7xz3-$K0OEL5G%k}PDW*p@crDIn8kw-9{xAN z{xF`!d4-vjNJhMbtW5Aha^DB1+}1NMtcX=>qiLsFq8p+WG5zewX-Fd|p#NzRI+uWwCaC@E!Z+`5$@~2*h_pp9(%M z+K8SVFeco>=VKi(oke5b-bsL$7Cz&&b4K<#XJo5$Ms_=AWW#et_B>}~+jB-XQT_tF!=9BbM;EJBo=kNfX2WD zG)$qU|3%E-SHIvg7JlzMPv41scsH8pf%v(HGm!ztGQ@k=FjftG2Nv=LSi)yy8Sj4+ z@4bSzUd0`2d6O>mGBSO*3ws^3-Pljedx?6$kx3jxoTv@(O;hR95Yx~MrJ*TY6o_6z zC?}k)bjQanA&F#1Q6$68ham(pOk+9K-Ll-<685$%+FOXeyXP=(l%#b(2HZXB8t)lk ziZ*jk=p`(6hh7=3QB?E4nvv7Ejbp9vG(*j?uI_2X+GoCgCnOo+vasVSxq(X#TF?dM zAfUlF1`QU21|`=;JFen}JZRVjp^N6z#amoQkJ@YAaqMpEz8bLco9M zyJ+t7Z*QyafV7Oxh@^Z=>@n1dERnW~^am+2iN=Nw+I zR~EXu6ncuL`^!UDmqMQ<^f}reU=h0koE_`Xvn8>OtKZk~2pbEcq=Ne02rbbA`a0c+!tD=D%W3ZKG<3znb7G?H{x3)g-|kCmS(Nw%hM;J zbMeYt+V+HhVH9{#Hg2!x9J4N$2PZcqgrYo2Zj T{2n3dCq`&E#?C>Aa2rIwof=y} literal 0 HcmV?d00001 diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class new file mode 100644 index 0000000000000000000000000000000000000000..9fbafb320e0e210997815f0e13812d52a9d93e2c GIT binary patch literal 6505 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 W1EhM)f!}uEAqPI?z#lm9`F{iPc+!CY literal 0 HcmV?d00001 diff --git a/src/bin/jpip/CMakeLists.txt b/src/bin/jpip/CMakeLists.txt index 301d885ba..8dbf57753 100644 --- a/src/bin/jpip/CMakeLists.txt +++ b/src/bin/jpip/CMakeLists.txt @@ -57,14 +57,14 @@ add_executable(${exe} ${exe}.c) endforeach() # Build the two java clients: -find_package(Java 1.5 COMPONENTS Development) # javac, jar +find_package(Java 1.6 COMPONENTS Development) # javac, jar # User can override this: if(NOT DEFINED JAVA_SOURCE_VERSION) - set(JAVA_SOURCE_VERSION 1.5) + set(JAVA_SOURCE_VERSION 1.6) endif() if(NOT DEFINED JAVA_TARGET_VERSION) - set(JAVA_TARGET_VERSION 1.5) + set(JAVA_TARGET_VERSION 1.6) endif() # Only build the java viewer if dev is found: diff --git a/wrapping/java/openjp2/CMakeLists.txt b/wrapping/java/openjp2/CMakeLists.txt index eb3da0edb..e4639385f 100644 --- a/wrapping/java/openjp2/CMakeLists.txt +++ b/wrapping/java/openjp2/CMakeLists.txt @@ -44,7 +44,7 @@ install(TARGETS openjpegjni ) # build jar: -find_package(Java 1.5 REQUIRED) # javac, jar +find_package(Java 1.6 REQUIRED) # javac, jar # build dep list: file(GLOB java_srcs "java-sources/org/openJpeg/*.java") From 01253ef58782ebb1de1c9c29ded51cdd86590933 Mon Sep 17 00:00:00 2001 From: Pei Jia Date: Sat, 4 Jul 2020 11:33:53 -0700 Subject: [PATCH 2/2] Remove build folder --- build/CMakeCache.txt | 890 -- build/CMakeDoxyfile.in | 278 - build/CMakeDoxygenDefaults.cmake | 673 -- build/CPackConfig.cmake | 78 - build/CPackSourceConfig.cmake | 85 - build/CTestCustom.cmake | 40 - build/CTestTestfile.cmake | 11 - build/DartConfiguration.tcl | 111 - build/LICENSE.txt | 39 - build/OpenJPEGConfig.cmake | 53 - build/bin/compare_dump_files | Bin 18424 -> 0 bytes build/bin/compare_images | Bin 113528 -> 0 bytes build/bin/compare_raw_files | Bin 18176 -> 0 bytes build/bin/include_openjpeg | Bin 8568 -> 0 bytes build/bin/j2k_random_tile_access | Bin 18664 -> 0 bytes build/bin/libopenjp2.so | 1 - build/bin/libopenjp2.so.2.1.1 | Bin 404184 -> 0 bytes build/bin/libopenjp2.so.2.3.1 | Bin 429664 -> 0 bytes build/bin/libopenjp2.so.7 | 1 - build/bin/libopenjp3d.so | 1 - build/bin/libopenjp3d.so.2.1.1 | Bin 9753224 -> 0 bytes build/bin/libopenjp3d.so.2.3.1 | Bin 187096 -> 0 bytes build/bin/libopenjp3d.so.7 | 1 - build/bin/libopenjpip.so | 1 - build/bin/libopenjpip.so.2.1.1 | Bin 155288 -> 0 bytes build/bin/libopenjpip.so.2.3.1 | Bin 151848 -> 0 bytes build/bin/libopenjpip.so.7 | 1 - build/bin/libopenjpip_server.a | Bin 226376 -> 0 bytes build/bin/libopenjpwl.so | 1 - build/bin/libopenjpwl.so.2.1.1 | Bin 264120 -> 0 bytes build/bin/libopenjpwl.so.2.3.1 | Bin 211096 -> 0 bytes build/bin/libopenjpwl.so.7 | 1 - build/bin/libopenmj2.so | 1 - build/bin/libopenmj2.so.2.1.1 | Bin 261256 -> 0 bytes build/bin/libopenmj2.so.2.3.1 | Bin 212296 -> 0 bytes build/bin/libopenmj2.so.7 | 1 - build/bin/openjpeg.jar | Bin 6971 -> 0 bytes build/bin/opj_compress | Bin 161352 -> 0 bytes build/bin/opj_dec_server | Bin 8528 -> 0 bytes build/bin/opj_decompress | Bin 153192 -> 0 bytes build/bin/opj_dump | Bin 136080 -> 0 bytes build/bin/opj_jp3d_compress | Bin 48520 -> 0 bytes build/bin/opj_jp3d_decompress | Bin 40360 -> 0 bytes build/bin/opj_jpip_addxml | Bin 12976 -> 0 bytes build/bin/opj_jpip_test | Bin 12760 -> 0 bytes build/bin/opj_jpip_transcode | Bin 12840 -> 0 bytes build/bin/opj_jpip_viewer.jar | Bin 26114 -> 0 bytes build/bin/opj_jpwl_compress | Bin 126088 -> 0 bytes build/bin/opj_jpwl_decompress | Bin 105184 -> 0 bytes build/bin/opj_mj2_compress | Bin 44296 -> 0 bytes build/bin/opj_mj2_decompress | Bin 31552 -> 0 bytes build/bin/opj_mj2_extract | Bin 31224 -> 0 bytes build/bin/opj_mj2_wrap | Bin 35952 -> 0 bytes build/bin/opj_server | Bin 106896 -> 0 bytes build/bin/ppm2rgb3 | Bin 13552 -> 0 bytes build/bin/t1_generate_luts | Bin 12600 -> 0 bytes build/bin/test_tile_decoder | Bin 18872 -> 0 bytes build/bin/test_tile_encoder | Bin 14040 -> 0 bytes build/bin/testempty0 | Bin 8560 -> 0 bytes build/bin/testempty1 | Bin 13776 -> 0 bytes build/bin/testempty2 | Bin 14176 -> 0 bytes build/description-pak | 1 - build/doc/Doxyfile-html.dox | 279 - build/doc/doxygen_sqlite3.db | Bin 3198976 -> 0 bytes build/doc/html/_doxyfile-html_8dox.html | 54 - build/doc/html/annotated.html | 185 - build/doc/html/auxtrans__manager_8c.html | 508 - build/doc/html/auxtrans__manager_8h.html | 245 - .../doc/html/auxtrans__manager_8h_source.html | 150 - build/doc/html/bc_s.png | Bin 676 -> 0 bytes build/doc/html/bdwn.png | Bin 147 -> 0 bytes build/doc/html/bench__dwt_8c.html | 253 - build/doc/html/bio_8c.html | 604 -- build/doc/html/bio_8h.html | 466 - build/doc/html/bio_8h_source.html | 213 - build/doc/html/box__manager_8c.html | 1114 -- build/doc/html/box__manager_8h.html | 1110 -- build/doc/html/box__manager_8h_source.html | 246 - build/doc/html/boxheader__manager_8c.html | 246 - build/doc/html/boxheader__manager_8h.html | 224 - .../html/boxheader__manager_8h_source.html | 138 - build/doc/html/byte__manager_8c.html | 530 - build/doc/html/byte__manager_8h.html | 545 - build/doc/html/byte__manager_8h_source.html | 153 - build/doc/html/cache__manager_8c.html | 676 -- build/doc/html/cache__manager_8h.html | 692 -- build/doc/html/cache__manager_8h_source.html | 202 - build/doc/html/cachemodel__manager_8c.html | 377 - build/doc/html/cachemodel__manager_8h.html | 375 - .../html/cachemodel__manager_8h_source.html | 186 - build/doc/html/channel__manager_8c.html | 406 - build/doc/html/channel__manager_8h.html | 432 - .../doc/html/channel__manager_8h_source.html | 182 - build/doc/html/cidx__manager_8c.html | 312 - build/doc/html/cidx__manager_8h.html | 175 - build/doc/html/cidx__manager_8h_source.html | 175 - build/doc/html/cio_8c.html | 1671 --- build/doc/html/cio_8h.html | 1491 --- build/doc/html/cio_8h_source.html | 366 - build/doc/html/classes.html | 248 - build/doc/html/closed.png | Bin 132 -> 0 bytes build/doc/html/codestream__manager_8c.html | 389 - build/doc/html/codestream__manager_8h.html | 367 - .../html/codestream__manager_8h_source.html | 150 - .../doc/html/dec__clientmsg__handler_8c.html | 497 - .../doc/html/dec__clientmsg__handler_8h.html | 493 - .../dec__clientmsg__handler_8h_source.html | 203 - .../dir_0890392e63c951145007159392cffa14.html | 64 - .../dir_10275b101dc47501bdbace8d72b4147f.html | 64 - .../dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html | 58 - .../dir_39dc0668bd5a501998f94e8b4e546c71.html | 64 - .../dir_6329a0b1ceb33c3e049f1dc7ed697498.html | 64 - .../dir_715f52f3461ba74d7c46f17c199ef422.html | 64 - .../dir_73dd1390edfd70d9070c8b9661f68f38.html | 64 - .../dir_7da9f56fa789e1efc974f837eafb38e7.html | 66 - .../dir_8a78b8e1a976303cf0c6d581706edd29.html | 64 - .../dir_b64e2f079b39f83729a5c1f19735390b.html | 66 - .../dir_c31727019deda5d7e4796a0b15f5d8ba.html | 64 - .../dir_cc90a325d355047f074438f2f9a1bee1.html | 182 - .../dir_e7d9765d20bce32490435b765db0901b.html | 211 - build/doc/html/doc.png | Bin 746 -> 0 bytes build/doc/html/doxygen.css | 1730 --- build/doc/html/doxygen.png | Bin 3779 -> 0 bytes build/doc/html/dwt_8c.html | 2975 ----- build/doc/html/dwt_8h.html | 438 - build/doc/html/dwt_8h_source.html | 315 - build/doc/html/dynsections.js | 120 - build/doc/html/event_8c.html | 218 - build/doc/html/event_8h.html | 259 - build/doc/html/event_8h_source.html | 151 - build/doc/html/faixbox__manager_8c.html | 439 - build/doc/html/faixbox__manager_8h.html | 528 - .../doc/html/faixbox__manager_8h_source.html | 207 - build/doc/html/files.html | 179 - build/doc/html/folderclosed.png | Bin 616 -> 0 bytes build/doc/html/folderopen.png | Bin 597 -> 0 bytes build/doc/html/function__list_8c.html | 305 - build/doc/html/function__list_8h.html | 338 - build/doc/html/function__list_8h_source.html | 155 - build/doc/html/functions.html | 76 - build/doc/html/functions_b.html | 123 - build/doc/html/functions_c.html | 307 - build/doc/html/functions_d.html | 151 - build/doc/html/functions_e.html | 110 - build/doc/html/functions_f.html | 100 - build/doc/html/functions_g.html | 57 - build/doc/html/functions_h.html | 89 - build/doc/html/functions_i.html | 147 - build/doc/html/functions_j.html | 162 - build/doc/html/functions_k.html | 66 - build/doc/html/functions_l.html | 141 - build/doc/html/functions_m.html | 506 - build/doc/html/functions_n.html | 228 - build/doc/html/functions_o.html | 154 - build/doc/html/functions_p.html | 268 - build/doc/html/functions_q.html | 65 - build/doc/html/functions_r.html | 141 - build/doc/html/functions_s.html | 162 - build/doc/html/functions_t.html | 282 - build/doc/html/functions_u.html | 69 - build/doc/html/functions_v.html | 64 - build/doc/html/functions_vars.html | 76 - build/doc/html/functions_vars_b.html | 123 - build/doc/html/functions_vars_c.html | 307 - build/doc/html/functions_vars_d.html | 151 - build/doc/html/functions_vars_e.html | 110 - build/doc/html/functions_vars_f.html | 100 - build/doc/html/functions_vars_g.html | 57 - build/doc/html/functions_vars_h.html | 89 - build/doc/html/functions_vars_i.html | 147 - build/doc/html/functions_vars_j.html | 162 - build/doc/html/functions_vars_k.html | 66 - build/doc/html/functions_vars_l.html | 141 - build/doc/html/functions_vars_m.html | 506 - build/doc/html/functions_vars_n.html | 228 - build/doc/html/functions_vars_o.html | 154 - build/doc/html/functions_vars_p.html | 268 - build/doc/html/functions_vars_q.html | 65 - build/doc/html/functions_vars_r.html | 141 - build/doc/html/functions_vars_s.html | 162 - build/doc/html/functions_vars_t.html | 282 - build/doc/html/functions_vars_u.html | 69 - build/doc/html/functions_vars_v.html | 64 - build/doc/html/functions_vars_w.html | 124 - build/doc/html/functions_vars_x.html | 103 - build/doc/html/functions_vars_y.html | 103 - build/doc/html/functions_w.html | 124 - build/doc/html/functions_x.html | 103 - build/doc/html/functions_y.html | 103 - build/doc/html/globals.html | 118 - build/doc/html/globals_b.html | 96 - build/doc/html/globals_c.html | 135 - build/doc/html/globals_d.html | 185 - build/doc/html/globals_defs.html | 60 - build/doc/html/globals_defs_d.html | 57 - build/doc/html/globals_defs_e.html | 69 - build/doc/html/globals_defs_f.html | 106 - build/doc/html/globals_defs_i.html | 57 - build/doc/html/globals_defs_j.html | 297 - build/doc/html/globals_defs_l.html | 80 - build/doc/html/globals_defs_m.html | 81 - build/doc/html/globals_defs_n.html | 57 - build/doc/html/globals_defs_o.html | 475 - build/doc/html/globals_defs_p.html | 60 - build/doc/html/globals_defs_s.html | 57 - build/doc/html/globals_defs_t.html | 285 - build/doc/html/globals_defs_u.html | 57 - build/doc/html/globals_defs_v.html | 57 - build/doc/html/globals_e.html | 119 - build/doc/html/globals_enum.html | 97 - build/doc/html/globals_eval.html | 330 - build/doc/html/globals_f.html | 205 - build/doc/html/globals_func.html | 112 - build/doc/html/globals_func_b.html | 66 - build/doc/html/globals_func_c.html | 87 - build/doc/html/globals_func_d.html | 176 - build/doc/html/globals_func_e.html | 101 - build/doc/html/globals_func_f.html | 141 - build/doc/html/globals_func_g.html | 274 - build/doc/html/globals_func_h.html | 90 - build/doc/html/globals_func_i.html | 117 - build/doc/html/globals_func_j.html | 98 - build/doc/html/globals_func_m.html | 90 - build/doc/html/globals_func_o.html | 2180 ---- build/doc/html/globals_func_p.html | 197 - build/doc/html/globals_func_r.html | 137 - build/doc/html/globals_func_s.html | 184 - build/doc/html/globals_func_t.html | 67 - build/doc/html/globals_func_u.html | 69 - build/doc/html/globals_func_w.html | 57 - build/doc/html/globals_g.html | 274 - build/doc/html/globals_h.html | 93 - build/doc/html/globals_i.html | 138 - build/doc/html/globals_j.html | 458 - build/doc/html/globals_l.html | 101 - build/doc/html/globals_m.html | 180 - build/doc/html/globals_n.html | 60 - build/doc/html/globals_o.html | 3069 ------ build/doc/html/globals_p.html | 215 - build/doc/html/globals_q.html | 60 - build/doc/html/globals_r.html | 143 - build/doc/html/globals_s.html | 211 - build/doc/html/globals_t.html | 319 - build/doc/html/globals_type.html | 625 -- build/doc/html/globals_u.html | 78 - build/doc/html/globals_v.html | 57 - build/doc/html/globals_vars.html | 133 - build/doc/html/globals_w.html | 57 - build/doc/html/globals_x.html | 57 - build/doc/html/group___b_i_o.html | 54 - build/doc/html/group___c_i_o.html | 54 - build/doc/html/group___d_w_t.html | 54 - build/doc/html/group___e_v_e_n_t.html | 54 - build/doc/html/group___i_m_a_g_e.html | 54 - build/doc/html/group___i_n_v_e_r_t.html | 54 - build/doc/html/group___j2_k.html | 54 - build/doc/html/group___j_p2.html | 54 - build/doc/html/group___m_c_t.html | 54 - build/doc/html/group___m_i_s_c.html | 54 - build/doc/html/group___m_q_c.html | 54 - .../html/group___o_p_j___i_n_t_m_a_t_h.html | 54 - build/doc/html/group___p_i.html | 54 - .../html/group___s_p_a_r_s_e___a_r_r_a_y.html | 54 - build/doc/html/group___t1.html | 54 - build/doc/html/group___t2.html | 54 - build/doc/html/group___t_c_d.html | 54 - build/doc/html/group___t_g_t.html | 54 - build/doc/html/group___t_h_r_e_a_d.html | 54 - build/doc/html/group___v_a_l.html | 54 - build/doc/html/ihdrbox__manager_8c.html | 114 - build/doc/html/ihdrbox__manager_8h.html | 146 - .../doc/html/ihdrbox__manager_8h_source.html | 134 - build/doc/html/image_8c.html | 315 - build/doc/html/image_8h.html | 189 - build/doc/html/image_8h_source.html | 173 - build/doc/html/imgreg__manager_8c.html | 402 - build/doc/html/imgreg__manager_8h.html | 377 - build/doc/html/imgreg__manager_8h_source.html | 140 - build/doc/html/imgsock__manager_8c.html | 535 - build/doc/html/imgsock__manager_8h.html | 625 -- .../doc/html/imgsock__manager_8h_source.html | 164 - build/doc/html/index.html | 77 - build/doc/html/index__manager_8c.html | 1103 -- build/doc/html/index__manager_8h.html | 600 -- build/doc/html/index__manager_8h_source.html | 341 - build/doc/html/indexbox__manager_8h.html | 854 -- .../doc/html/indexbox__manager_8h_source.html | 229 - build/doc/html/invert_8c.html | 309 - build/doc/html/invert_8h.html | 126 - build/doc/html/invert_8h_source.html | 115 - build/doc/html/j2k_8c.html | 9596 ----------------- build/doc/html/j2k_8h.html | 2761 ----- build/doc/html/j2k_8h_source.html | 1413 --- build/doc/html/j2kheader__manager_8c.html | 488 - build/doc/html/j2kheader__manager_8h.html | 253 - .../html/j2kheader__manager_8h_source.html | 157 - build/doc/html/jp2_8c.html | 3366 ------ build/doc/html/jp2_8h.html | 1792 --- build/doc/html/jp2_8h_source.html | 650 -- build/doc/html/jp2k__decoder_8c.html | 277 - build/doc/html/jp2k__decoder_8h.html | 103 - build/doc/html/jp2k__decoder_8h_source.html | 144 - build/doc/html/jp2k__encoder_8c.html | 1784 --- build/doc/html/jp2k__encoder_8h.html | 260 - build/doc/html/jp2k__encoder_8h_source.html | 204 - build/doc/html/jpip__parser_8c.html | 693 -- build/doc/html/jpip__parser_8h.html | 371 - build/doc/html/jpip__parser_8h_source.html | 243 - build/doc/html/jpip_architect.png | Bin 62577 -> 0 bytes build/doc/html/jpip_protocol.png | Bin 6376 -> 0 bytes build/doc/html/jpipstream__manager_8c.html | 256 - build/doc/html/jpipstream__manager_8h.html | 252 - .../html/jpipstream__manager_8h_source.html | 137 - build/doc/html/jquery.js | 35 - build/doc/html/mainpage_8dox.html | 54 - build/doc/html/manfbox__manager_8c.html | 265 - build/doc/html/manfbox__manager_8h.html | 245 - .../doc/html/manfbox__manager_8h_source.html | 140 - build/doc/html/marker__manager_8c.html | 313 - build/doc/html/marker__manager_8h.html | 293 - build/doc/html/marker__manager_8h_source.html | 138 - build/doc/html/mct_8c.html | 647 -- build/doc/html/mct_8h.html | 598 - build/doc/html/mct_8h_source.html | 173 - build/doc/html/menu.js | 50 - build/doc/html/menudata.js | 174 - build/doc/html/metadata__manager_8c.html | 550 - build/doc/html/metadata__manager_8h.html | 565 - .../doc/html/metadata__manager_8h_source.html | 216 - build/doc/html/mhixbox__manager_8c.html | 298 - build/doc/html/mhixbox__manager_8h.html | 299 - .../doc/html/mhixbox__manager_8h_source.html | 161 - build/doc/html/modules.html | 78 - build/doc/html/mqc_8c.html | 1063 -- build/doc/html/mqc_8h.html | 883 -- build/doc/html/mqc_8h_source.html | 245 - build/doc/html/mqc__inl_8h.html | 605 -- build/doc/html/mqc__inl_8h_source.html | 244 - build/doc/html/msgqueue__manager_8c.html | 1387 --- build/doc/html/msgqueue__manager_8h.html | 852 -- .../doc/html/msgqueue__manager_8h_source.html | 313 - build/doc/html/nav_f.png | Bin 153 -> 0 bytes build/doc/html/nav_g.png | Bin 95 -> 0 bytes build/doc/html/nav_h.png | Bin 98 -> 0 bytes build/doc/html/open.png | Bin 123 -> 0 bytes build/doc/html/openjpeg_8c.html | 1971 ---- build/doc/html/openjpeg_8h.html | 5071 --------- build/doc/html/openjpeg_8h_source.html | 1535 --- build/doc/html/openjpip_8c.html | 547 - build/doc/html/openjpip_8dox.html | 54 - build/doc/html/openjpip_8h.html | 691 -- build/doc/html/openjpip_8h_source.html | 397 - build/doc/html/openjpippage.html | 107 - build/doc/html/opj__clock_8c.html | 93 - build/doc/html/opj__clock_8h.html | 98 - build/doc/html/opj__clock_8h_source.html | 104 - build/doc/html/opj__codec_8h.html | 93 - build/doc/html/opj__codec_8h_source.html | 243 - build/doc/html/opj__common_8h.html | 150 - build/doc/html/opj__common_8h_source.html | 103 - build/doc/html/opj__includes_8h.html | 349 - build/doc/html/opj__includes_8h_source.html | 353 - build/doc/html/opj__intmath_8h.html | 956 -- build/doc/html/opj__intmath_8h_source.html | 270 - build/doc/html/opj__inttypes_8h.html | 61 - build/doc/html/opj__inttypes_8h_source.html | 106 - build/doc/html/opj__malloc_8c.html | 496 - build/doc/html/opj__malloc_8h.html | 376 - build/doc/html/opj__malloc_8h_source.html | 143 - build/doc/html/opj__stdint_8h.html | 61 - build/doc/html/opj__stdint_8h_source.html | 110 - build/doc/html/pages.html | 59 - build/doc/html/phix__manager_8c.html | 193 - build/doc/html/pi_8c.html | 1406 --- build/doc/html/pi_8h.html | 519 - build/doc/html/pi_8h_source.html | 355 - build/doc/html/placeholder__manager_8c.html | 360 - build/doc/html/placeholder__manager_8h.html | 360 - .../html/placeholder__manager_8h_source.html | 177 - build/doc/html/ppix__manager_8c.html | 193 - build/doc/html/query__parser_8c.html | 465 - build/doc/html/query__parser_8h.html | 316 - build/doc/html/query__parser_8h_source.html | 242 - build/doc/html/session__manager_8c.html | 391 - build/doc/html/session__manager_8h.html | 390 - .../doc/html/session__manager_8h_source.html | 179 - build/doc/html/sock__manager_8c.html | 403 - build/doc/html/sock__manager_8h.html | 388 - build/doc/html/sock__manager_8h_source.html | 140 - build/doc/html/sparse__array_8c.html | 510 - build/doc/html/sparse__array_8h.html | 446 - build/doc/html/sparse__array_8h_source.html | 163 - build/doc/html/splitbar.png | Bin 314 -> 0 bytes build/doc/html/struct_c_o_dmarker__param.html | 218 - build/doc/html/struct_s_i_zmarker__param.html | 408 - .../doc/html/structaux__response__param.html | 159 - build/doc/html/structauxtrans__param.html | 155 - build/doc/html/structbox__param.html | 197 - build/doc/html/structboxcontents__param.html | 108 - build/doc/html/structboxheader__param.html | 155 - build/doc/html/structboxlist__param.html | 113 - build/doc/html/structcache__param.html | 239 - build/doc/html/structcachelist__param.html | 108 - build/doc/html/structcachemodel__param.html | 218 - .../doc/html/structcachemodellist__param.html | 113 - build/doc/html/structchannel__param.html | 176 - build/doc/html/structchannellist__param.html | 113 - build/doc/html/structcodestream__param.html | 134 - build/doc/html/structdec__server__record.html | 176 - build/doc/html/structdwt__local.html | 136 - build/doc/html/structfaixbox__param.html | 114 - build/doc/html/structfaixelem4__param.html | 113 - build/doc/html/structfaixelem8__param.html | 113 - build/doc/html/structihdrbox__param.html | 149 - build/doc/html/structimgreg__param.html | 245 - build/doc/html/structindex__param.html | 262 - build/doc/html/structj2k__prog__order.html | 100 - build/doc/html/structjpip__dec__param.html | 218 - build/doc/html/structmanfbox__param.html | 93 - build/doc/html/structmarker__param.html | 155 - build/doc/html/structmarkeridx__param.html | 177 - build/doc/html/structmessage__param.html | 278 - build/doc/html/structmetadata__param.html | 176 - build/doc/html/structmetadatalist__param.html | 113 - build/doc/html/structmhixbox__param.html | 115 - build/doc/html/structmsgqueue__param.html | 155 - build/doc/html/structopj__bio.html | 177 - build/doc/html/structopj__codec__private.html | 637 -- .../html/structopj__codestream__index.html | 233 - .../doc/html/structopj__codestream__info.html | 513 - .../html/structopj__codestream__info__v2.html | 260 - build/doc/html/structopj__cp.html | 1018 -- build/doc/html/structopj__cparameters.html | 1328 --- ...ructopj__dec__memory__marker__handler.html | 127 - .../doc/html/structopj__decoding__param.html | 108 - build/doc/html/structopj__dparameters.html | 419 - .../structopj__dwd__decode__h__job__t.html | 172 - .../structopj__dwd__decode__v__job__t.html | 172 - .../doc/html/structopj__encoding__param.html | 235 - build/doc/html/structopj__event__mgr.html | 205 - build/doc/html/structopj__image.html | 260 - build/doc/html/structopj__image__comp.html | 344 - .../doc/html/structopj__image__comptparm.html | 260 - build/doc/html/structopj__j2k.html | 395 - build/doc/html/structopj__j2k__dec.html | 436 - build/doc/html/structopj__j2k__enc.html | 302 - build/doc/html/structopj__job__list__t.html | 100 - build/doc/html/structopj__jp2.html | 586 - build/doc/html/structopj__jp2__box.html | 123 - build/doc/html/structopj__jp2__cdef.html | 107 - .../doc/html/structopj__jp2__cdef__info.html | 125 - .../doc/html/structopj__jp2__cmap__comp.html | 125 - build/doc/html/structopj__jp2__color.html | 161 - build/doc/html/structopj__jp2__comps.html | 121 - .../html/structopj__jp2__header__handler.html | 100 - ...pj__jp2__img__header__writer__handler.html | 120 - build/doc/html/structopj__jp2__index.html | 87 - build/doc/html/structopj__jp2__metadata.html | 87 - build/doc/html/structopj__jp2__pclr.html | 179 - build/doc/html/structopj__marker__info.html | 134 - build/doc/html/structopj__mct__data.html | 161 - build/doc/html/structopj__mqc.html | 296 - build/doc/html/structopj__mqc__state.html | 147 - build/doc/html/structopj__packet__info.html | 155 - build/doc/html/structopj__pi__comp.html | 146 - build/doc/html/structopj__pi__iterator.html | 539 - build/doc/html/structopj__pi__resolution.html | 143 - build/doc/html/structopj__poc.html | 738 -- build/doc/html/structopj__ppx__struct.html | 102 - .../doc/html/structopj__procedure__list.html | 134 - ...opj__simple__mcc__decorrelation__data.html | 161 - .../html/structopj__sparse__array__int32.html | 190 - build/doc/html/structopj__stepsize.html | 113 - .../doc/html/structopj__stream__private.html | 391 - build/doc/html/structopj__t1.html | 294 - ..._t1__cblk__decode__processing__job__t.html | 262 - build/doc/html/structopj__t2.html | 114 - build/doc/html/structopj__tccp.html | 344 - build/doc/html/structopj__tccp__info.html | 363 - build/doc/html/structopj__tcd.html | 438 - build/doc/html/structopj__tcd__band.html | 233 - build/doc/html/structopj__tcd__cblk__dec.html | 341 - build/doc/html/structopj__tcd__cblk__enc.html | 305 - build/doc/html/structopj__tcd__image.html | 89 - build/doc/html/structopj__tcd__layer.html | 143 - .../html/structopj__tcd__marker__info.html | 135 - build/doc/html/structopj__tcd__pass.html | 143 - build/doc/html/structopj__tcd__precinct.html | 306 - .../doc/html/structopj__tcd__resolution.html | 287 - build/doc/html/structopj__tcd__seg.html | 180 - .../structopj__tcd__seg__data__chunk.html | 107 - build/doc/html/structopj__tcd__tile.html | 251 - build/doc/html/structopj__tcd__tilecomp.html | 417 - build/doc/html/structopj__tcp.html | 740 -- build/doc/html/structopj__tgt__node.html | 143 - build/doc/html/structopj__tgt__tree.html | 161 - .../doc/html/structopj__thread__pool__t.html | 262 - build/doc/html/structopj__tile__index.html | 281 - build/doc/html/structopj__tile__info.html | 422 - build/doc/html/structopj__tile__v2__info.html | 195 - .../doc/html/structopj__tls__key__val__t.html | 118 - build/doc/html/structopj__tls__t.html | 100 - build/doc/html/structopj__tp__index.html | 134 - build/doc/html/structopj__tp__info.html | 172 - .../structopj__worker__thread__job__t.html | 100 - .../structopj__worker__thread__list__t.html | 100 - .../html/structopj__worker__thread__t.html | 154 - build/doc/html/structplaceholder__param.html | 207 - .../html/structplaceholderlist__param.html | 113 - build/doc/html/structquery__param.html | 617 -- build/doc/html/structrange__param.html | 113 - build/doc/html/structsession__param.html | 134 - build/doc/html/structsessionlist__param.html | 113 - build/doc/html/structsubfaixbox4__param.html | 155 - build/doc/html/structsubfaixbox8__param.html | 155 - build/doc/html/structtarget__param.html | 272 - build/doc/html/structtargetlist__param.html | 113 - build/doc/html/structv4dwt__local.html | 208 - build/doc/html/sync_off.png | Bin 853 -> 0 bytes build/doc/html/sync_on.png | Bin 845 -> 0 bytes build/doc/html/t1_8c.html | 3235 ------ build/doc/html/t1_8h.html | 1538 --- build/doc/html/t1_8h_source.html | 519 - build/doc/html/t1__generate__luts_8c.html | 244 - build/doc/html/t1__luts_8h.html | 349 - build/doc/html/t1__luts_8h_source.html | 271 - build/doc/html/t2_8c.html | 1183 -- build/doc/html/t2_8h.html | 403 - build/doc/html/t2_8h_source.html | 342 - build/doc/html/tab_a.png | Bin 142 -> 0 bytes build/doc/html/tab_b.png | Bin 169 -> 0 bytes build/doc/html/tab_h.png | Bin 177 -> 0 bytes build/doc/html/tab_s.png | Bin 184 -> 0 bytes build/doc/html/tabs.css | 1 - build/doc/html/target__manager_8c.html | 615 -- build/doc/html/target__manager_8h.html | 553 - build/doc/html/target__manager_8h_source.html | 208 - build/doc/html/tcd_8c.html | 1867 ---- build/doc/html/tcd_8h.html | 1383 --- build/doc/html/tcd_8h_source.html | 770 -- build/doc/html/test__sparse__array_8c.html | 87 - build/doc/html/tgt_8c.html | 411 - build/doc/html/tgt_8h.html | 481 - build/doc/html/tgt_8h_source.html | 188 - build/doc/html/thix__manager_8c.html | 169 - build/doc/html/thread_8c.html | 1034 -- build/doc/html/thread_8h.html | 894 -- build/doc/html/thread_8h_source.html | 280 - build/doc/html/tls__keys_8h.html | 83 - build/doc/html/tls__keys_8h_source.html | 95 - build/doc/html/tpix__manager_8c.html | 240 - build/doc/html/unionopj__v4__t.html | 82 - build/doc/html/unionsubfaixbox__param.html | 113 - build/doc/mainpage.dox | 62 - build/doc/openjpip.dox | 94 - build/install_manifest.txt | 42 - build/libopenjp2.pc | 14 - build/libopenjp3d.pc | 14 - build/libopenjpip.pc | 15 - build/libopenjpwl.pc | 15 - build/src/bin/common/opj_apps_config.h | 15 - .../src/bin/jpip/classes2/ImageManager.class | Bin 2835 -> 0 bytes build/src/bin/jpip/classes2/ImageViewer.class | Bin 5872 -> 0 bytes .../ImageWindow$WindowMyAdapter.class | Bin 612 -> 0 bytes build/src/bin/jpip/classes2/ImageWindow.class | Bin 2590 -> 0 bytes .../src/bin/jpip/classes2/ImgdecClient.class | Bin 6676 -> 0 bytes .../classes2/JP2XMLparser$IRTparams.class | Bin 406 -> 0 bytes .../classes2/JP2XMLparser$ROIparams.class | Bin 452 -> 0 bytes .../src/bin/jpip/classes2/JP2XMLparser.class | Bin 2325 -> 0 bytes .../bin/jpip/classes2/JPIPHttpClient.class | Bin 9397 -> 0 bytes build/src/bin/jpip/classes2/MML.class | Bin 2025 -> 0 bytes build/src/bin/jpip/classes2/MyHandler.class | Bin 1019 -> 0 bytes build/src/bin/jpip/classes2/OptionPanel.class | Bin 2735 -> 0 bytes build/src/bin/jpip/classes2/PnmImage.class | Bin 3352 -> 0 bytes build/src/bin/jpip/classes2/RegimViewer.class | Bin 2799 -> 0 bytes .../bin/jpip/classes2/ResizeListener.class | Bin 1107 -> 0 bytes .../jpip/opj_viewer_xerces/dist/manifest.txt | 5 - build/src/lib/openjp2/opj_config.h | 10 - build/src/lib/openjp2/opj_config_private.h | 49 - build/tests/CTestTestfile.cmake | 31 - build/tests/conformance/CTestTestfile.cmake | 387 - build/tests/nonregression/CTestTestfile.cmake | 1508 --- build/tests/nonregression/test_suite.ctest | 576 - build/tests/unit/CTestTestfile.cmake | 9 - ...PEGJavaDecoder$IJavaJ2KDecoderLogger.class | Bin 344 -> 0 bytes .../org/openJpeg/OpenJPEGJavaDecoder.class | Bin 4820 -> 0 bytes ...PEGJavaEncoder$IJavaJ2KEncoderLogger.class | Bin 344 -> 0 bytes .../org/openJpeg/OpenJPEGJavaEncoder.class | Bin 6505 -> 0 bytes 588 files changed, 165973 deletions(-) delete mode 100644 build/CMakeCache.txt delete mode 100644 build/CMakeDoxyfile.in delete mode 100644 build/CMakeDoxygenDefaults.cmake delete mode 100644 build/CPackConfig.cmake delete mode 100644 build/CPackSourceConfig.cmake delete mode 100644 build/CTestCustom.cmake delete mode 100644 build/CTestTestfile.cmake delete mode 100644 build/DartConfiguration.tcl delete mode 100644 build/LICENSE.txt delete mode 100644 build/OpenJPEGConfig.cmake delete mode 100644 build/bin/compare_dump_files delete mode 100644 build/bin/compare_images delete mode 100644 build/bin/compare_raw_files delete mode 100644 build/bin/include_openjpeg delete mode 100644 build/bin/j2k_random_tile_access delete mode 120000 build/bin/libopenjp2.so delete mode 100644 build/bin/libopenjp2.so.2.1.1 delete mode 100644 build/bin/libopenjp2.so.2.3.1 delete mode 120000 build/bin/libopenjp2.so.7 delete mode 120000 build/bin/libopenjp3d.so delete mode 100644 build/bin/libopenjp3d.so.2.1.1 delete mode 100644 build/bin/libopenjp3d.so.2.3.1 delete mode 120000 build/bin/libopenjp3d.so.7 delete mode 120000 build/bin/libopenjpip.so delete mode 100644 build/bin/libopenjpip.so.2.1.1 delete mode 100644 build/bin/libopenjpip.so.2.3.1 delete mode 120000 build/bin/libopenjpip.so.7 delete mode 100644 build/bin/libopenjpip_server.a delete mode 120000 build/bin/libopenjpwl.so delete mode 100644 build/bin/libopenjpwl.so.2.1.1 delete mode 100644 build/bin/libopenjpwl.so.2.3.1 delete mode 120000 build/bin/libopenjpwl.so.7 delete mode 120000 build/bin/libopenmj2.so delete mode 100644 build/bin/libopenmj2.so.2.1.1 delete mode 100644 build/bin/libopenmj2.so.2.3.1 delete mode 120000 build/bin/libopenmj2.so.7 delete mode 100644 build/bin/openjpeg.jar delete mode 100644 build/bin/opj_compress delete mode 100644 build/bin/opj_dec_server delete mode 100644 build/bin/opj_decompress delete mode 100644 build/bin/opj_dump delete mode 100644 build/bin/opj_jp3d_compress delete mode 100644 build/bin/opj_jp3d_decompress delete mode 100644 build/bin/opj_jpip_addxml delete mode 100644 build/bin/opj_jpip_test delete mode 100644 build/bin/opj_jpip_transcode delete mode 100644 build/bin/opj_jpip_viewer.jar delete mode 100644 build/bin/opj_jpwl_compress delete mode 100644 build/bin/opj_jpwl_decompress delete mode 100644 build/bin/opj_mj2_compress delete mode 100644 build/bin/opj_mj2_decompress delete mode 100644 build/bin/opj_mj2_extract delete mode 100644 build/bin/opj_mj2_wrap delete mode 100644 build/bin/opj_server delete mode 100644 build/bin/ppm2rgb3 delete mode 100644 build/bin/t1_generate_luts delete mode 100644 build/bin/test_tile_decoder delete mode 100644 build/bin/test_tile_encoder delete mode 100644 build/bin/testempty0 delete mode 100644 build/bin/testempty1 delete mode 100644 build/bin/testempty2 delete mode 100644 build/description-pak delete mode 100644 build/doc/Doxyfile-html.dox delete mode 100644 build/doc/doxygen_sqlite3.db delete mode 100644 build/doc/html/_doxyfile-html_8dox.html delete mode 100644 build/doc/html/annotated.html delete mode 100644 build/doc/html/auxtrans__manager_8c.html delete mode 100644 build/doc/html/auxtrans__manager_8h.html delete mode 100644 build/doc/html/auxtrans__manager_8h_source.html delete mode 100644 build/doc/html/bc_s.png delete mode 100644 build/doc/html/bdwn.png delete mode 100644 build/doc/html/bench__dwt_8c.html delete mode 100644 build/doc/html/bio_8c.html delete mode 100644 build/doc/html/bio_8h.html delete mode 100644 build/doc/html/bio_8h_source.html delete mode 100644 build/doc/html/box__manager_8c.html delete mode 100644 build/doc/html/box__manager_8h.html delete mode 100644 build/doc/html/box__manager_8h_source.html delete mode 100644 build/doc/html/boxheader__manager_8c.html delete mode 100644 build/doc/html/boxheader__manager_8h.html delete mode 100644 build/doc/html/boxheader__manager_8h_source.html delete mode 100644 build/doc/html/byte__manager_8c.html delete mode 100644 build/doc/html/byte__manager_8h.html delete mode 100644 build/doc/html/byte__manager_8h_source.html delete mode 100644 build/doc/html/cache__manager_8c.html delete mode 100644 build/doc/html/cache__manager_8h.html delete mode 100644 build/doc/html/cache__manager_8h_source.html delete mode 100644 build/doc/html/cachemodel__manager_8c.html delete mode 100644 build/doc/html/cachemodel__manager_8h.html delete mode 100644 build/doc/html/cachemodel__manager_8h_source.html delete mode 100644 build/doc/html/channel__manager_8c.html delete mode 100644 build/doc/html/channel__manager_8h.html delete mode 100644 build/doc/html/channel__manager_8h_source.html delete mode 100644 build/doc/html/cidx__manager_8c.html delete mode 100644 build/doc/html/cidx__manager_8h.html delete mode 100644 build/doc/html/cidx__manager_8h_source.html delete mode 100644 build/doc/html/cio_8c.html delete mode 100644 build/doc/html/cio_8h.html delete mode 100644 build/doc/html/cio_8h_source.html delete mode 100644 build/doc/html/classes.html delete mode 100644 build/doc/html/closed.png delete mode 100644 build/doc/html/codestream__manager_8c.html delete mode 100644 build/doc/html/codestream__manager_8h.html delete mode 100644 build/doc/html/codestream__manager_8h_source.html delete mode 100644 build/doc/html/dec__clientmsg__handler_8c.html delete mode 100644 build/doc/html/dec__clientmsg__handler_8h.html delete mode 100644 build/doc/html/dec__clientmsg__handler_8h_source.html delete mode 100644 build/doc/html/dir_0890392e63c951145007159392cffa14.html delete mode 100644 build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html delete mode 100644 build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html delete mode 100644 build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html delete mode 100644 build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html delete mode 100644 build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html delete mode 100644 build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html delete mode 100644 build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html delete mode 100644 build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html delete mode 100644 build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html delete mode 100644 build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html delete mode 100644 build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html delete mode 100644 build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html delete mode 100644 build/doc/html/doc.png delete mode 100644 build/doc/html/doxygen.css delete mode 100644 build/doc/html/doxygen.png delete mode 100644 build/doc/html/dwt_8c.html delete mode 100644 build/doc/html/dwt_8h.html delete mode 100644 build/doc/html/dwt_8h_source.html delete mode 100644 build/doc/html/dynsections.js delete mode 100644 build/doc/html/event_8c.html delete mode 100644 build/doc/html/event_8h.html delete mode 100644 build/doc/html/event_8h_source.html delete mode 100644 build/doc/html/faixbox__manager_8c.html delete mode 100644 build/doc/html/faixbox__manager_8h.html delete mode 100644 build/doc/html/faixbox__manager_8h_source.html delete mode 100644 build/doc/html/files.html delete mode 100644 build/doc/html/folderclosed.png delete mode 100644 build/doc/html/folderopen.png delete mode 100644 build/doc/html/function__list_8c.html delete mode 100644 build/doc/html/function__list_8h.html delete mode 100644 build/doc/html/function__list_8h_source.html delete mode 100644 build/doc/html/functions.html delete mode 100644 build/doc/html/functions_b.html delete mode 100644 build/doc/html/functions_c.html delete mode 100644 build/doc/html/functions_d.html delete mode 100644 build/doc/html/functions_e.html delete mode 100644 build/doc/html/functions_f.html delete mode 100644 build/doc/html/functions_g.html delete mode 100644 build/doc/html/functions_h.html delete mode 100644 build/doc/html/functions_i.html delete mode 100644 build/doc/html/functions_j.html delete mode 100644 build/doc/html/functions_k.html delete mode 100644 build/doc/html/functions_l.html delete mode 100644 build/doc/html/functions_m.html delete mode 100644 build/doc/html/functions_n.html delete mode 100644 build/doc/html/functions_o.html delete mode 100644 build/doc/html/functions_p.html delete mode 100644 build/doc/html/functions_q.html delete mode 100644 build/doc/html/functions_r.html delete mode 100644 build/doc/html/functions_s.html delete mode 100644 build/doc/html/functions_t.html delete mode 100644 build/doc/html/functions_u.html delete mode 100644 build/doc/html/functions_v.html delete mode 100644 build/doc/html/functions_vars.html delete mode 100644 build/doc/html/functions_vars_b.html delete mode 100644 build/doc/html/functions_vars_c.html delete mode 100644 build/doc/html/functions_vars_d.html delete mode 100644 build/doc/html/functions_vars_e.html delete mode 100644 build/doc/html/functions_vars_f.html delete mode 100644 build/doc/html/functions_vars_g.html delete mode 100644 build/doc/html/functions_vars_h.html delete mode 100644 build/doc/html/functions_vars_i.html delete mode 100644 build/doc/html/functions_vars_j.html delete mode 100644 build/doc/html/functions_vars_k.html delete mode 100644 build/doc/html/functions_vars_l.html delete mode 100644 build/doc/html/functions_vars_m.html delete mode 100644 build/doc/html/functions_vars_n.html delete mode 100644 build/doc/html/functions_vars_o.html delete mode 100644 build/doc/html/functions_vars_p.html delete mode 100644 build/doc/html/functions_vars_q.html delete mode 100644 build/doc/html/functions_vars_r.html delete mode 100644 build/doc/html/functions_vars_s.html delete mode 100644 build/doc/html/functions_vars_t.html delete mode 100644 build/doc/html/functions_vars_u.html delete mode 100644 build/doc/html/functions_vars_v.html delete mode 100644 build/doc/html/functions_vars_w.html delete mode 100644 build/doc/html/functions_vars_x.html delete mode 100644 build/doc/html/functions_vars_y.html delete mode 100644 build/doc/html/functions_w.html delete mode 100644 build/doc/html/functions_x.html delete mode 100644 build/doc/html/functions_y.html delete mode 100644 build/doc/html/globals.html delete mode 100644 build/doc/html/globals_b.html delete mode 100644 build/doc/html/globals_c.html delete mode 100644 build/doc/html/globals_d.html delete mode 100644 build/doc/html/globals_defs.html delete mode 100644 build/doc/html/globals_defs_d.html delete mode 100644 build/doc/html/globals_defs_e.html delete mode 100644 build/doc/html/globals_defs_f.html delete mode 100644 build/doc/html/globals_defs_i.html delete mode 100644 build/doc/html/globals_defs_j.html delete mode 100644 build/doc/html/globals_defs_l.html delete mode 100644 build/doc/html/globals_defs_m.html delete mode 100644 build/doc/html/globals_defs_n.html delete mode 100644 build/doc/html/globals_defs_o.html delete mode 100644 build/doc/html/globals_defs_p.html delete mode 100644 build/doc/html/globals_defs_s.html delete mode 100644 build/doc/html/globals_defs_t.html delete mode 100644 build/doc/html/globals_defs_u.html delete mode 100644 build/doc/html/globals_defs_v.html delete mode 100644 build/doc/html/globals_e.html delete mode 100644 build/doc/html/globals_enum.html delete mode 100644 build/doc/html/globals_eval.html delete mode 100644 build/doc/html/globals_f.html delete mode 100644 build/doc/html/globals_func.html delete mode 100644 build/doc/html/globals_func_b.html delete mode 100644 build/doc/html/globals_func_c.html delete mode 100644 build/doc/html/globals_func_d.html delete mode 100644 build/doc/html/globals_func_e.html delete mode 100644 build/doc/html/globals_func_f.html delete mode 100644 build/doc/html/globals_func_g.html delete mode 100644 build/doc/html/globals_func_h.html delete mode 100644 build/doc/html/globals_func_i.html delete mode 100644 build/doc/html/globals_func_j.html delete mode 100644 build/doc/html/globals_func_m.html delete mode 100644 build/doc/html/globals_func_o.html delete mode 100644 build/doc/html/globals_func_p.html delete mode 100644 build/doc/html/globals_func_r.html delete mode 100644 build/doc/html/globals_func_s.html delete mode 100644 build/doc/html/globals_func_t.html delete mode 100644 build/doc/html/globals_func_u.html delete mode 100644 build/doc/html/globals_func_w.html delete mode 100644 build/doc/html/globals_g.html delete mode 100644 build/doc/html/globals_h.html delete mode 100644 build/doc/html/globals_i.html delete mode 100644 build/doc/html/globals_j.html delete mode 100644 build/doc/html/globals_l.html delete mode 100644 build/doc/html/globals_m.html delete mode 100644 build/doc/html/globals_n.html delete mode 100644 build/doc/html/globals_o.html delete mode 100644 build/doc/html/globals_p.html delete mode 100644 build/doc/html/globals_q.html delete mode 100644 build/doc/html/globals_r.html delete mode 100644 build/doc/html/globals_s.html delete mode 100644 build/doc/html/globals_t.html delete mode 100644 build/doc/html/globals_type.html delete mode 100644 build/doc/html/globals_u.html delete mode 100644 build/doc/html/globals_v.html delete mode 100644 build/doc/html/globals_vars.html delete mode 100644 build/doc/html/globals_w.html delete mode 100644 build/doc/html/globals_x.html delete mode 100644 build/doc/html/group___b_i_o.html delete mode 100644 build/doc/html/group___c_i_o.html delete mode 100644 build/doc/html/group___d_w_t.html delete mode 100644 build/doc/html/group___e_v_e_n_t.html delete mode 100644 build/doc/html/group___i_m_a_g_e.html delete mode 100644 build/doc/html/group___i_n_v_e_r_t.html delete mode 100644 build/doc/html/group___j2_k.html delete mode 100644 build/doc/html/group___j_p2.html delete mode 100644 build/doc/html/group___m_c_t.html delete mode 100644 build/doc/html/group___m_i_s_c.html delete mode 100644 build/doc/html/group___m_q_c.html delete mode 100644 build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html delete mode 100644 build/doc/html/group___p_i.html delete mode 100644 build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html delete mode 100644 build/doc/html/group___t1.html delete mode 100644 build/doc/html/group___t2.html delete mode 100644 build/doc/html/group___t_c_d.html delete mode 100644 build/doc/html/group___t_g_t.html delete mode 100644 build/doc/html/group___t_h_r_e_a_d.html delete mode 100644 build/doc/html/group___v_a_l.html delete mode 100644 build/doc/html/ihdrbox__manager_8c.html delete mode 100644 build/doc/html/ihdrbox__manager_8h.html delete mode 100644 build/doc/html/ihdrbox__manager_8h_source.html delete mode 100644 build/doc/html/image_8c.html delete mode 100644 build/doc/html/image_8h.html delete mode 100644 build/doc/html/image_8h_source.html delete mode 100644 build/doc/html/imgreg__manager_8c.html delete mode 100644 build/doc/html/imgreg__manager_8h.html delete mode 100644 build/doc/html/imgreg__manager_8h_source.html delete mode 100644 build/doc/html/imgsock__manager_8c.html delete mode 100644 build/doc/html/imgsock__manager_8h.html delete mode 100644 build/doc/html/imgsock__manager_8h_source.html delete mode 100644 build/doc/html/index.html delete mode 100644 build/doc/html/index__manager_8c.html delete mode 100644 build/doc/html/index__manager_8h.html delete mode 100644 build/doc/html/index__manager_8h_source.html delete mode 100644 build/doc/html/indexbox__manager_8h.html delete mode 100644 build/doc/html/indexbox__manager_8h_source.html delete mode 100644 build/doc/html/invert_8c.html delete mode 100644 build/doc/html/invert_8h.html delete mode 100644 build/doc/html/invert_8h_source.html delete mode 100644 build/doc/html/j2k_8c.html delete mode 100644 build/doc/html/j2k_8h.html delete mode 100644 build/doc/html/j2k_8h_source.html delete mode 100644 build/doc/html/j2kheader__manager_8c.html delete mode 100644 build/doc/html/j2kheader__manager_8h.html delete mode 100644 build/doc/html/j2kheader__manager_8h_source.html delete mode 100644 build/doc/html/jp2_8c.html delete mode 100644 build/doc/html/jp2_8h.html delete mode 100644 build/doc/html/jp2_8h_source.html delete mode 100644 build/doc/html/jp2k__decoder_8c.html delete mode 100644 build/doc/html/jp2k__decoder_8h.html delete mode 100644 build/doc/html/jp2k__decoder_8h_source.html delete mode 100644 build/doc/html/jp2k__encoder_8c.html delete mode 100644 build/doc/html/jp2k__encoder_8h.html delete mode 100644 build/doc/html/jp2k__encoder_8h_source.html delete mode 100644 build/doc/html/jpip__parser_8c.html delete mode 100644 build/doc/html/jpip__parser_8h.html delete mode 100644 build/doc/html/jpip__parser_8h_source.html delete mode 100644 build/doc/html/jpip_architect.png delete mode 100644 build/doc/html/jpip_protocol.png delete mode 100644 build/doc/html/jpipstream__manager_8c.html delete mode 100644 build/doc/html/jpipstream__manager_8h.html delete mode 100644 build/doc/html/jpipstream__manager_8h_source.html delete mode 100644 build/doc/html/jquery.js delete mode 100644 build/doc/html/mainpage_8dox.html delete mode 100644 build/doc/html/manfbox__manager_8c.html delete mode 100644 build/doc/html/manfbox__manager_8h.html delete mode 100644 build/doc/html/manfbox__manager_8h_source.html delete mode 100644 build/doc/html/marker__manager_8c.html delete mode 100644 build/doc/html/marker__manager_8h.html delete mode 100644 build/doc/html/marker__manager_8h_source.html delete mode 100644 build/doc/html/mct_8c.html delete mode 100644 build/doc/html/mct_8h.html delete mode 100644 build/doc/html/mct_8h_source.html delete mode 100644 build/doc/html/menu.js delete mode 100644 build/doc/html/menudata.js delete mode 100644 build/doc/html/metadata__manager_8c.html delete mode 100644 build/doc/html/metadata__manager_8h.html delete mode 100644 build/doc/html/metadata__manager_8h_source.html delete mode 100644 build/doc/html/mhixbox__manager_8c.html delete mode 100644 build/doc/html/mhixbox__manager_8h.html delete mode 100644 build/doc/html/mhixbox__manager_8h_source.html delete mode 100644 build/doc/html/modules.html delete mode 100644 build/doc/html/mqc_8c.html delete mode 100644 build/doc/html/mqc_8h.html delete mode 100644 build/doc/html/mqc_8h_source.html delete mode 100644 build/doc/html/mqc__inl_8h.html delete mode 100644 build/doc/html/mqc__inl_8h_source.html delete mode 100644 build/doc/html/msgqueue__manager_8c.html delete mode 100644 build/doc/html/msgqueue__manager_8h.html delete mode 100644 build/doc/html/msgqueue__manager_8h_source.html delete mode 100644 build/doc/html/nav_f.png delete mode 100644 build/doc/html/nav_g.png delete mode 100644 build/doc/html/nav_h.png delete mode 100644 build/doc/html/open.png delete mode 100644 build/doc/html/openjpeg_8c.html delete mode 100644 build/doc/html/openjpeg_8h.html delete mode 100644 build/doc/html/openjpeg_8h_source.html delete mode 100644 build/doc/html/openjpip_8c.html delete mode 100644 build/doc/html/openjpip_8dox.html delete mode 100644 build/doc/html/openjpip_8h.html delete mode 100644 build/doc/html/openjpip_8h_source.html delete mode 100644 build/doc/html/openjpippage.html delete mode 100644 build/doc/html/opj__clock_8c.html delete mode 100644 build/doc/html/opj__clock_8h.html delete mode 100644 build/doc/html/opj__clock_8h_source.html delete mode 100644 build/doc/html/opj__codec_8h.html delete mode 100644 build/doc/html/opj__codec_8h_source.html delete mode 100644 build/doc/html/opj__common_8h.html delete mode 100644 build/doc/html/opj__common_8h_source.html delete mode 100644 build/doc/html/opj__includes_8h.html delete mode 100644 build/doc/html/opj__includes_8h_source.html delete mode 100644 build/doc/html/opj__intmath_8h.html delete mode 100644 build/doc/html/opj__intmath_8h_source.html delete mode 100644 build/doc/html/opj__inttypes_8h.html delete mode 100644 build/doc/html/opj__inttypes_8h_source.html delete mode 100644 build/doc/html/opj__malloc_8c.html delete mode 100644 build/doc/html/opj__malloc_8h.html delete mode 100644 build/doc/html/opj__malloc_8h_source.html delete mode 100644 build/doc/html/opj__stdint_8h.html delete mode 100644 build/doc/html/opj__stdint_8h_source.html delete mode 100644 build/doc/html/pages.html delete mode 100644 build/doc/html/phix__manager_8c.html delete mode 100644 build/doc/html/pi_8c.html delete mode 100644 build/doc/html/pi_8h.html delete mode 100644 build/doc/html/pi_8h_source.html delete mode 100644 build/doc/html/placeholder__manager_8c.html delete mode 100644 build/doc/html/placeholder__manager_8h.html delete mode 100644 build/doc/html/placeholder__manager_8h_source.html delete mode 100644 build/doc/html/ppix__manager_8c.html delete mode 100644 build/doc/html/query__parser_8c.html delete mode 100644 build/doc/html/query__parser_8h.html delete mode 100644 build/doc/html/query__parser_8h_source.html delete mode 100644 build/doc/html/session__manager_8c.html delete mode 100644 build/doc/html/session__manager_8h.html delete mode 100644 build/doc/html/session__manager_8h_source.html delete mode 100644 build/doc/html/sock__manager_8c.html delete mode 100644 build/doc/html/sock__manager_8h.html delete mode 100644 build/doc/html/sock__manager_8h_source.html delete mode 100644 build/doc/html/sparse__array_8c.html delete mode 100644 build/doc/html/sparse__array_8h.html delete mode 100644 build/doc/html/sparse__array_8h_source.html delete mode 100644 build/doc/html/splitbar.png delete mode 100644 build/doc/html/struct_c_o_dmarker__param.html delete mode 100644 build/doc/html/struct_s_i_zmarker__param.html delete mode 100644 build/doc/html/structaux__response__param.html delete mode 100644 build/doc/html/structauxtrans__param.html delete mode 100644 build/doc/html/structbox__param.html delete mode 100644 build/doc/html/structboxcontents__param.html delete mode 100644 build/doc/html/structboxheader__param.html delete mode 100644 build/doc/html/structboxlist__param.html delete mode 100644 build/doc/html/structcache__param.html delete mode 100644 build/doc/html/structcachelist__param.html delete mode 100644 build/doc/html/structcachemodel__param.html delete mode 100644 build/doc/html/structcachemodellist__param.html delete mode 100644 build/doc/html/structchannel__param.html delete mode 100644 build/doc/html/structchannellist__param.html delete mode 100644 build/doc/html/structcodestream__param.html delete mode 100644 build/doc/html/structdec__server__record.html delete mode 100644 build/doc/html/structdwt__local.html delete mode 100644 build/doc/html/structfaixbox__param.html delete mode 100644 build/doc/html/structfaixelem4__param.html delete mode 100644 build/doc/html/structfaixelem8__param.html delete mode 100644 build/doc/html/structihdrbox__param.html delete mode 100644 build/doc/html/structimgreg__param.html delete mode 100644 build/doc/html/structindex__param.html delete mode 100644 build/doc/html/structj2k__prog__order.html delete mode 100644 build/doc/html/structjpip__dec__param.html delete mode 100644 build/doc/html/structmanfbox__param.html delete mode 100644 build/doc/html/structmarker__param.html delete mode 100644 build/doc/html/structmarkeridx__param.html delete mode 100644 build/doc/html/structmessage__param.html delete mode 100644 build/doc/html/structmetadata__param.html delete mode 100644 build/doc/html/structmetadatalist__param.html delete mode 100644 build/doc/html/structmhixbox__param.html delete mode 100644 build/doc/html/structmsgqueue__param.html delete mode 100644 build/doc/html/structopj__bio.html delete mode 100644 build/doc/html/structopj__codec__private.html delete mode 100644 build/doc/html/structopj__codestream__index.html delete mode 100644 build/doc/html/structopj__codestream__info.html delete mode 100644 build/doc/html/structopj__codestream__info__v2.html delete mode 100644 build/doc/html/structopj__cp.html delete mode 100644 build/doc/html/structopj__cparameters.html delete mode 100644 build/doc/html/structopj__dec__memory__marker__handler.html delete mode 100644 build/doc/html/structopj__decoding__param.html delete mode 100644 build/doc/html/structopj__dparameters.html delete mode 100644 build/doc/html/structopj__dwd__decode__h__job__t.html delete mode 100644 build/doc/html/structopj__dwd__decode__v__job__t.html delete mode 100644 build/doc/html/structopj__encoding__param.html delete mode 100644 build/doc/html/structopj__event__mgr.html delete mode 100644 build/doc/html/structopj__image.html delete mode 100644 build/doc/html/structopj__image__comp.html delete mode 100644 build/doc/html/structopj__image__comptparm.html delete mode 100644 build/doc/html/structopj__j2k.html delete mode 100644 build/doc/html/structopj__j2k__dec.html delete mode 100644 build/doc/html/structopj__j2k__enc.html delete mode 100644 build/doc/html/structopj__job__list__t.html delete mode 100644 build/doc/html/structopj__jp2.html delete mode 100644 build/doc/html/structopj__jp2__box.html delete mode 100644 build/doc/html/structopj__jp2__cdef.html delete mode 100644 build/doc/html/structopj__jp2__cdef__info.html delete mode 100644 build/doc/html/structopj__jp2__cmap__comp.html delete mode 100644 build/doc/html/structopj__jp2__color.html delete mode 100644 build/doc/html/structopj__jp2__comps.html delete mode 100644 build/doc/html/structopj__jp2__header__handler.html delete mode 100644 build/doc/html/structopj__jp2__img__header__writer__handler.html delete mode 100644 build/doc/html/structopj__jp2__index.html delete mode 100644 build/doc/html/structopj__jp2__metadata.html delete mode 100644 build/doc/html/structopj__jp2__pclr.html delete mode 100644 build/doc/html/structopj__marker__info.html delete mode 100644 build/doc/html/structopj__mct__data.html delete mode 100644 build/doc/html/structopj__mqc.html delete mode 100644 build/doc/html/structopj__mqc__state.html delete mode 100644 build/doc/html/structopj__packet__info.html delete mode 100644 build/doc/html/structopj__pi__comp.html delete mode 100644 build/doc/html/structopj__pi__iterator.html delete mode 100644 build/doc/html/structopj__pi__resolution.html delete mode 100644 build/doc/html/structopj__poc.html delete mode 100644 build/doc/html/structopj__ppx__struct.html delete mode 100644 build/doc/html/structopj__procedure__list.html delete mode 100644 build/doc/html/structopj__simple__mcc__decorrelation__data.html delete mode 100644 build/doc/html/structopj__sparse__array__int32.html delete mode 100644 build/doc/html/structopj__stepsize.html delete mode 100644 build/doc/html/structopj__stream__private.html delete mode 100644 build/doc/html/structopj__t1.html delete mode 100644 build/doc/html/structopj__t1__cblk__decode__processing__job__t.html delete mode 100644 build/doc/html/structopj__t2.html delete mode 100644 build/doc/html/structopj__tccp.html delete mode 100644 build/doc/html/structopj__tccp__info.html delete mode 100644 build/doc/html/structopj__tcd.html delete mode 100644 build/doc/html/structopj__tcd__band.html delete mode 100644 build/doc/html/structopj__tcd__cblk__dec.html delete mode 100644 build/doc/html/structopj__tcd__cblk__enc.html delete mode 100644 build/doc/html/structopj__tcd__image.html delete mode 100644 build/doc/html/structopj__tcd__layer.html delete mode 100644 build/doc/html/structopj__tcd__marker__info.html delete mode 100644 build/doc/html/structopj__tcd__pass.html delete mode 100644 build/doc/html/structopj__tcd__precinct.html delete mode 100644 build/doc/html/structopj__tcd__resolution.html delete mode 100644 build/doc/html/structopj__tcd__seg.html delete mode 100644 build/doc/html/structopj__tcd__seg__data__chunk.html delete mode 100644 build/doc/html/structopj__tcd__tile.html delete mode 100644 build/doc/html/structopj__tcd__tilecomp.html delete mode 100644 build/doc/html/structopj__tcp.html delete mode 100644 build/doc/html/structopj__tgt__node.html delete mode 100644 build/doc/html/structopj__tgt__tree.html delete mode 100644 build/doc/html/structopj__thread__pool__t.html delete mode 100644 build/doc/html/structopj__tile__index.html delete mode 100644 build/doc/html/structopj__tile__info.html delete mode 100644 build/doc/html/structopj__tile__v2__info.html delete mode 100644 build/doc/html/structopj__tls__key__val__t.html delete mode 100644 build/doc/html/structopj__tls__t.html delete mode 100644 build/doc/html/structopj__tp__index.html delete mode 100644 build/doc/html/structopj__tp__info.html delete mode 100644 build/doc/html/structopj__worker__thread__job__t.html delete mode 100644 build/doc/html/structopj__worker__thread__list__t.html delete mode 100644 build/doc/html/structopj__worker__thread__t.html delete mode 100644 build/doc/html/structplaceholder__param.html delete mode 100644 build/doc/html/structplaceholderlist__param.html delete mode 100644 build/doc/html/structquery__param.html delete mode 100644 build/doc/html/structrange__param.html delete mode 100644 build/doc/html/structsession__param.html delete mode 100644 build/doc/html/structsessionlist__param.html delete mode 100644 build/doc/html/structsubfaixbox4__param.html delete mode 100644 build/doc/html/structsubfaixbox8__param.html delete mode 100644 build/doc/html/structtarget__param.html delete mode 100644 build/doc/html/structtargetlist__param.html delete mode 100644 build/doc/html/structv4dwt__local.html delete mode 100644 build/doc/html/sync_off.png delete mode 100644 build/doc/html/sync_on.png delete mode 100644 build/doc/html/t1_8c.html delete mode 100644 build/doc/html/t1_8h.html delete mode 100644 build/doc/html/t1_8h_source.html delete mode 100644 build/doc/html/t1__generate__luts_8c.html delete mode 100644 build/doc/html/t1__luts_8h.html delete mode 100644 build/doc/html/t1__luts_8h_source.html delete mode 100644 build/doc/html/t2_8c.html delete mode 100644 build/doc/html/t2_8h.html delete mode 100644 build/doc/html/t2_8h_source.html delete mode 100644 build/doc/html/tab_a.png delete mode 100644 build/doc/html/tab_b.png delete mode 100644 build/doc/html/tab_h.png delete mode 100644 build/doc/html/tab_s.png delete mode 100644 build/doc/html/tabs.css delete mode 100644 build/doc/html/target__manager_8c.html delete mode 100644 build/doc/html/target__manager_8h.html delete mode 100644 build/doc/html/target__manager_8h_source.html delete mode 100644 build/doc/html/tcd_8c.html delete mode 100644 build/doc/html/tcd_8h.html delete mode 100644 build/doc/html/tcd_8h_source.html delete mode 100644 build/doc/html/test__sparse__array_8c.html delete mode 100644 build/doc/html/tgt_8c.html delete mode 100644 build/doc/html/tgt_8h.html delete mode 100644 build/doc/html/tgt_8h_source.html delete mode 100644 build/doc/html/thix__manager_8c.html delete mode 100644 build/doc/html/thread_8c.html delete mode 100644 build/doc/html/thread_8h.html delete mode 100644 build/doc/html/thread_8h_source.html delete mode 100644 build/doc/html/tls__keys_8h.html delete mode 100644 build/doc/html/tls__keys_8h_source.html delete mode 100644 build/doc/html/tpix__manager_8c.html delete mode 100644 build/doc/html/unionopj__v4__t.html delete mode 100644 build/doc/html/unionsubfaixbox__param.html delete mode 100644 build/doc/mainpage.dox delete mode 100644 build/doc/openjpip.dox delete mode 100644 build/install_manifest.txt delete mode 100644 build/libopenjp2.pc delete mode 100644 build/libopenjp3d.pc delete mode 100644 build/libopenjpip.pc delete mode 100644 build/libopenjpwl.pc delete mode 100644 build/src/bin/common/opj_apps_config.h delete mode 100644 build/src/bin/jpip/classes2/ImageManager.class delete mode 100644 build/src/bin/jpip/classes2/ImageViewer.class delete mode 100644 build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class delete mode 100644 build/src/bin/jpip/classes2/ImageWindow.class delete mode 100644 build/src/bin/jpip/classes2/ImgdecClient.class delete mode 100644 build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class delete mode 100644 build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class delete mode 100644 build/src/bin/jpip/classes2/JP2XMLparser.class delete mode 100644 build/src/bin/jpip/classes2/JPIPHttpClient.class delete mode 100644 build/src/bin/jpip/classes2/MML.class delete mode 100644 build/src/bin/jpip/classes2/MyHandler.class delete mode 100644 build/src/bin/jpip/classes2/OptionPanel.class delete mode 100644 build/src/bin/jpip/classes2/PnmImage.class delete mode 100644 build/src/bin/jpip/classes2/RegimViewer.class delete mode 100644 build/src/bin/jpip/classes2/ResizeListener.class delete mode 100644 build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt delete mode 100644 build/src/lib/openjp2/opj_config.h delete mode 100644 build/src/lib/openjp2/opj_config_private.h delete mode 100644 build/tests/CTestTestfile.cmake delete mode 100644 build/tests/conformance/CTestTestfile.cmake delete mode 100644 build/tests/nonregression/CTestTestfile.cmake delete mode 100644 build/tests/nonregression/test_suite.ctest delete mode 100644 build/tests/unit/CTestTestfile.cmake delete mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class delete mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class delete mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder$IJavaJ2KEncoderLogger.class delete mode 100644 build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt deleted file mode 100644 index 118985494..000000000 --- a/build/CMakeCache.txt +++ /dev/null @@ -1,890 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build -# It was generated by CMake: /usr/local/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Path to a file. -APACHE_XERCES_JAR:FILEPATH=/usr/share/java/xercesImpl.jar - -//Build the CODEC executables -BUILD_CODEC:BOOL=ON - -//Build the HTML documentation (with doxygen if available). -BUILD_DOC:BOOL=ON - -//Build the openjpeg jar (Java) -BUILD_JAVA:BOOL=OFF - -//Build the JP3D comp -BUILD_JP3D:BOOL=ON - -//Build the JPIP library and executables. -BUILD_JPIP:BOOL=ON - -//Build the JPIP server. -BUILD_JPIP_SERVER:BOOL=ON - -//Build the JPWL library and executables -BUILD_JPWL:BOOL=ON - -//Build utility to generate t1_luts.h -BUILD_LUTS_GENERATOR:BOOL=ON - -//Build the MJ2 executables. -BUILD_MJ2:BOOL=ON - -//Build and install pkg-config files -BUILD_PKGCONFIG_FILES:BOOL=ON - -//Build OpenJPEG shared library and link executables against it. -BUILD_SHARED_LIBS:BOOL=ON - -//Build OpenJPEG static library. -BUILD_STATIC_LIBS:BOOL=OFF - -//Build the tests. -BUILD_TESTING:BOOL=OFF - -//Build the thirdparty executables if it is needed -BUILD_THIRDPARTY:BOOL=OFF - -//Build unit tests (bench_dwt, test_sparse_array, etc..) -BUILD_UNIT_TESTS:BOOL=OFF - -//Build the OPJViewer executable (C++) -BUILD_VIEWER:BOOL=OFF - -//Path to a program. -CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line - -//Path to a program. -CMAKE_AR:FILEPATH=/usr/bin/ar - -//Choose the type of build, options are: None Debug Release RelWithDebInfo -// MinSizeRel ... -CMAKE_BUILD_TYPE:STRING=Release - -//Enable/Disable color output during build. -CMAKE_COLOR_MAKEFILE:BOOL=ON - -//CXX compiler -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ - -//A wrapper around 'ar' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-7 - -//A wrapper around 'ranlib' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-7 - -//Flags used by the CXX compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the CXX compiler during DEBUG builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the CXX compiler during MINSIZEREL builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the CXX compiler during RELEASE builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the CXX compiler during RELWITHDEBINFO builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//C compiler -CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc - -//A wrapper around 'ar' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-7 - -//A wrapper around 'ranlib' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-7 - -//Flags used by the C compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the C compiler during DEBUG builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the C compiler during MINSIZEREL builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the C compiler during RELEASE builds. -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the C compiler during RELWITHDEBINFO builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Path to a program. -CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/usr/bin/ld - -//Path to a program. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=OPENJPEG - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib - -//Path to a program. -CMAKE_READELF:FILEPATH=/usr/bin/readelf - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/usr/bin/strip - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=ON - -//Enable to build Debian packages -CPACK_BINARY_DEB:BOOL=ON - -//Enable to build FreeBSD packages -CPACK_BINARY_FREEBSD:BOOL=OFF - -//Enable to build IFW packages -CPACK_BINARY_IFW:BOOL=OFF - -//Enable to build NSIS packages -CPACK_BINARY_NSIS:BOOL=OFF - -//Enable to build RPM packages -CPACK_BINARY_RPM:BOOL=OFF - -//Enable to build STGZ packages -CPACK_BINARY_STGZ:BOOL=ON - -//Enable to build TBZ2 packages -CPACK_BINARY_TBZ2:BOOL=OFF - -//Enable to build TGZ packages -CPACK_BINARY_TGZ:BOOL=ON - -//Enable to build TXZ packages -CPACK_BINARY_TXZ:BOOL=OFF - -//Enable to build TZ packages -CPACK_BINARY_TZ:BOOL=ON - -//Enable to build RPM source packages -CPACK_SOURCE_RPM:BOOL=OFF - -//Enable to build TBZ2 source packages -CPACK_SOURCE_TBZ2:BOOL=ON - -//Enable to build TGZ source packages -CPACK_SOURCE_TGZ:BOOL=ON - -//Enable to build TXZ source packages -CPACK_SOURCE_TXZ:BOOL=ON - -//Enable to build TZ source packages -CPACK_SOURCE_TZ:BOOL=ON - -//Enable to build ZIP source packages -CPACK_SOURCE_ZIP:BOOL=OFF - -//The directory containing a CMake configuration file for CURL. -CURL_DIR:PATH=CURL_DIR-NOTFOUND - -//Path to a file. -CURL_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu - -//Path to a library. -CURL_LIBRARY_DEBUG:FILEPATH=CURL_LIBRARY_DEBUG-NOTFOUND - -//Path to a library. -CURL_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurl.so - -//Dot tool for use with Doxygen -DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot - -//Doxygen documentation generation tool (http://www.doxygen.org) -DOXYGEN_EXECUTABLE:FILEPATH=/usr/local/bin/doxygen - -//Single output directory for building all executables. -EXECUTABLE_OUTPUT_PATH:PATH=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/bin - -//Path to a file. -FCGI_INCLUDE_DIR:PATH=/usr/include - -//Path to a library. -FCGI_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libfcgi.so - -//Path to a file. -JAVA_AWT_INCLUDE_PATH:PATH=/usr/lib/jvm/default-java/include - -//Path to a library. -JAVA_AWT_LIBRARY:FILEPATH=/usr/lib/jvm/default-java/lib/libjawt.so - -//Path to a file. -JAVA_INCLUDE_PATH:PATH=/usr/lib/jvm/default-java/include - -//Path to a file. -JAVA_INCLUDE_PATH2:PATH=/usr/lib/jvm/default-java/include - -//Path to a library. -JAVA_JVM_LIBRARY:FILEPATH=/usr/lib/jvm/default-java/lib/server/libjvm.so - -//Path to a program. -Java_IDLJ_EXECUTABLE:FILEPATH=Java_IDLJ_EXECUTABLE-NOTFOUND - -//Path to a program. -Java_JARSIGNER_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/jarsigner - -//Path to a program. -Java_JAR_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/jar - -//Path to a program. -Java_JAVAC_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/javac - -//Path to a program. -Java_JAVADOC_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/javadoc - -//Path to a program. -Java_JAVAH_EXECUTABLE:FILEPATH=Java_JAVAH_EXECUTABLE-NOTFOUND - -//Path to a program. -Java_JAVA_EXECUTABLE:FILEPATH=/usr/lib/jvm/default-java/bin/java - -//Path to a file. -LCMS2_INCLUDE_DIR:PATH=/usr/include - -//Path to a library. -LCMS2_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/liblcms2.so - -//Single output directory for building all libraries. -LIBRARY_OUTPUT_PATH:PATH=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/bin - -//Value Computed by CMake -OPENJPEG_BINARY_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build - -//Value Computed by CMake -OPENJPEG_SOURCE_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg - -//Disable TPsot==TNsot fix. See https://github.com/uclouvain/openjpeg/issues/254. -OPJ_DISABLE_TPSOT_FIX:BOOL=OFF - -//Build with thread/mutex support -OPJ_USE_THREAD:BOOL=ON - -//pkg-config executable -PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config - -//Path to a library. -PNG_LIBRARY_DEBUG:FILEPATH=PNG_LIBRARY_DEBUG-NOTFOUND - -//Path to a library. -PNG_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libpng.so - -//Path to a file. -PNG_PNG_INCLUDE_DIR:PATH=/usr/include - -//Path to a file. -TIFF_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu - -//Path to a library. -TIFF_LIBRARY_DEBUG:FILEPATH=TIFF_LIBRARY_DEBUG-NOTFOUND - -//Path to a library. -TIFF_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libtiff.so - -//If you plan to contribute you should reindent with scripts/prepare-commit.sh -// (using 'our' astyle) -WITH_ASTYLE:BOOL=ON - -//Path to a file. -ZLIB_INCLUDE_DIR:PATH=/usr/include - -//Path to a library. -ZLIB_LIBRARY_DEBUG:FILEPATH=ZLIB_LIBRARY_DEBUG-NOTFOUND - -//Path to a library. -ZLIB_LIBRARY_RELEASE:FILEPATH=/usr/lib/x86_64-linux-gnu/libz.so - -//Dependencies for the target -openjp2_LIB_DEPENDS:STATIC=general;m;general;-lpthread; - -//Dependencies for the target -openjp3d_LIB_DEPENDS:STATIC=general;m; - -//Dependencies for the target -openjpegjni_LIB_DEPENDS:STATIC=general;openmj2;general;/usr/lib/x86_64-linux-gnu/libpng.so;general;/usr/lib/x86_64-linux-gnu/libz.so;general;/usr/lib/x86_64-linux-gnu/libtiff.so;general;/usr/lib/x86_64-linux-gnu/liblcms2.so;general;/usr/lib/x86_64-linux-gnu/libz.so;general;m; - -//Dependencies for the target -openjpip_LIB_DEPENDS:STATIC=general;openjp2; - -//Dependencies for the target -openjpip_server_LIB_DEPENDS:STATIC=general;/usr/lib/x86_64-linux-gnu/libfcgi.so;general;/usr/lib/x86_64-linux-gnu/libcurl.so;general;-lpthread; - -//Dependencies for the target -openjpwl_LIB_DEPENDS:STATIC=general;m; - -//Dependencies for the target -openmj2_LIB_DEPENDS:STATIC=general;m; - -//Path to a library. -pkgcfg_lib_PC_CURL_curl:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurl.so - -//Value Computed by CMake -viewer_BINARY_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/src/bin/wx/OPJViewer - -//Value Computed by CMake -viewer_SOURCE_DIR:STATIC=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/bin/wx/OPJViewer - -//Location of wxWidgets library configuration provider binary (wx-config). -wxWidgets_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/wx-config - -//Use debug build? -wxWidgets_USE_DEBUG:BOOL=OFF - -//Location of wxWidgets resource file compiler binary (wxrc) -wxWidgets_wxrc_EXECUTABLE:FILEPATH=/usr/bin/wxrc - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: APACHE_XERCES_JAR -APACHE_XERCES_JAR-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: BUILD_DOC -BUILD_DOC-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: BUILD_JAVA -BUILD_JAVA-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: BUILD_JAVA -BUILD_JAVA-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: BUILD_JP3D -BUILD_JP3D-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: BUILD_JP3D -BUILD_JP3D-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_JPIP -BUILD_JPIP-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_JPIP_SERVER -BUILD_JPIP_SERVER-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_JPWL -BUILD_JPWL-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_LUTS_GENERATOR -BUILD_LUTS_GENERATOR-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_MJ2 -BUILD_MJ2-MODIFIED:INTERNAL=ON -//MODIFIED property for variable: BUILD_STATIC_LIBS -BUILD_STATIC_LIBS-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: BUILD_VIEWER -BUILD_VIEWER-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: BUILD_VIEWER -BUILD_VIEWER-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: CMAKE_ADDR2LINE -CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: CMAKE_BUILD_TYPE -CMAKE_BUILD_TYPE-MODIFIED:INTERNAL=ON -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 -//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE -CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR -CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB -CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER_AR -CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB -CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_DLLTOOL -CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 -//Path to cache edit program executable. -CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/bin/ccmake -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Test CMAKE_HAVE_LIBC_PTHREAD -CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= -//Have library pthreads -CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= -//Have library pthread -CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 -//Have include pthread.h -CMAKE_HAVE_PTHREAD_H:INTERNAL=1 -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg -//Install .so files without execute permission. -CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=19 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_READELF -CMAKE_READELF-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//CHECK_TYPE_SIZE: sizeof(unsigned short) -CMAKE_SIZEOF_UNSIGNED_SHORT:INTERNAL=2 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: CPACK_BINARY_DEB -CPACK_BINARY_DEB-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: CPACK_BINARY_DEB -CPACK_BINARY_DEB-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: CPACK_BINARY_FREEBSD -CPACK_BINARY_FREEBSD-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_IFW -CPACK_BINARY_IFW-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_NSIS -CPACK_BINARY_NSIS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_RPM -CPACK_BINARY_RPM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_STGZ -CPACK_BINARY_STGZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_TBZ2 -CPACK_BINARY_TBZ2-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_TGZ -CPACK_BINARY_TGZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_TXZ -CPACK_BINARY_TXZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_BINARY_TZ -CPACK_BINARY_TZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_RPM -CPACK_SOURCE_RPM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_TBZ2 -CPACK_SOURCE_TBZ2-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_TGZ -CPACK_SOURCE_TGZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_TXZ -CPACK_SOURCE_TXZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_TZ -CPACK_SOURCE_TZ-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CPACK_SOURCE_ZIP -CPACK_SOURCE_ZIP-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURL_DIR -CURL_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURL_INCLUDE_DIR -CURL_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURL_LIBRARY_DEBUG -CURL_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURL_LIBRARY_RELEASE -CURL_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE -DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_EXECUTABLE -DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: EXECUTABLE_OUTPUT_PATH -EXECUTABLE_OUTPUT_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: FCGI_INCLUDE_DIR -FCGI_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: FCGI_LIBRARY -FCGI_LIBRARY-ADVANCED:INTERNAL=1 -//Result of TRY_COMPILE -FILE64_OK:INTERNAL=TRUE -//Details about finding CURL -FIND_PACKAGE_MESSAGE_DETAILS_CURL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libcurl.so][/usr/include/x86_64-linux-gnu][c ][v7.58.0()] -//Details about finding Doxygen -FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/local/bin/doxygen][cfound components: doxygen dot ][v1.8.18 (3b392af822d81ae51919feb2c2fc4c539238bb3b)()] -//Details about finding FCGI -FIND_PACKAGE_MESSAGE_DETAILS_FCGI:INTERNAL=[/usr/lib/x86_64-linux-gnu/libfcgi.so][/usr/include][v()] -//Details about finding JNI -FIND_PACKAGE_MESSAGE_DETAILS_JNI:INTERNAL=[/usr/lib/jvm/default-java/lib/libjawt.so][/usr/lib/jvm/default-java/lib/server/libjvm.so][/usr/lib/jvm/default-java/include][/usr/lib/jvm/default-java/include][/usr/lib/jvm/default-java/include][v()] -//Details about finding Java -FIND_PACKAGE_MESSAGE_DETAILS_Java:INTERNAL=[/usr/lib/jvm/default-java/bin/java][/usr/lib/jvm/default-java/bin/javac][/usr/lib/jvm/default-java/bin/jar][/usr/lib/jvm/default-java/bin/javadoc][cfound components: Development ][v11.0.7(1.6)] -//Details about finding LCMS2 -FIND_PACKAGE_MESSAGE_DETAILS_LCMS2:INTERNAL=[/usr/lib/x86_64-linux-gnu/liblcms2.so][/usr/include][v()] -//Details about finding PNG -FIND_PACKAGE_MESSAGE_DETAILS_PNG:INTERNAL=[/usr/lib/x86_64-linux-gnu/libpng.so][/usr/include][v1.6.34()] -//Details about finding TIFF -FIND_PACKAGE_MESSAGE_DETAILS_TIFF:INTERNAL=[/usr/lib/x86_64-linux-gnu/libtiff.so][/usr/include/x86_64-linux-gnu][v4.0.9()] -//Details about finding Threads -FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] -//Details about finding ZLIB -FIND_PACKAGE_MESSAGE_DETAILS_ZLIB:INTERNAL=[/usr/lib/x86_64-linux-gnu/libz.so][/usr/include][v1.2.11()] -//Details about finding wxWidgets -FIND_PACKAGE_MESSAGE_DETAILS_wxWidgets:INTERNAL=[-L/usr/lib/x86_64-linux-gnu;-pthread;;;-lwx_gtk2u_xrc-3.0;-lwx_gtk2u_html-3.0;-lwx_gtk2u_qa-3.0;-lwx_gtk2u_adv-3.0;-lwx_gtk2u_core-3.0;-lwx_baseu_xml-3.0;-lwx_baseu_net-3.0;-lwx_baseu-3.0][/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0;/usr/include/wx-3.0][v3.0.4()] -//Result of TRY_COMPILE -FSEEKO_COMPILE_OK:INTERNAL=TRUE -//Have include assert.h -HAVE_ASSERT_H:INTERNAL=1 -//Result of TRY_COMPILE -HAVE_CMAKE_SIZEOF_UNSIGNED_SHORT:INTERNAL=TRUE -//Have include ctype.h -HAVE_CTYPE_H:INTERNAL=1 -//Have include float.h -HAVE_FLOAT_H:INTERNAL=1 -//Have include math.h -HAVE_MATH_H:INTERNAL=1 -//Have include memory.h -HAVE_MEMORY_H:INTERNAL=1 -//Result of TRY_COMPILE -HAVE_OPJ_BIG_ENDIAN:INTERNAL=TRUE -//Have include stdarg.h -HAVE_STDARG_H:INTERNAL=1 -//Have include stddef.h -HAVE_STDDEF_H:INTERNAL=1 -//Have include stdint.h -HAVE_STDINT_H:INTERNAL=1 -//Have include stdio.h -HAVE_STDIO_H:INTERNAL=1 -//Have include stdlib.h -HAVE_STDLIB_H:INTERNAL=1 -//Have include strings.h -HAVE_STRINGS_H:INTERNAL=1 -//Have include string.h -HAVE_STRING_H:INTERNAL=1 -//Have include sys/stat.h -HAVE_SYS_STAT_H:INTERNAL=1 -//Have include sys/types.h -HAVE_SYS_TYPES_H:INTERNAL=1 -//Have include time.h -HAVE_TIME_H:INTERNAL=1 -//Have include unistd.h -HAVE_UNISTD_H:INTERNAL=1 -//ADVANCED property for variable: JAVA_AWT_INCLUDE_PATH -JAVA_AWT_INCLUDE_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_AWT_LIBRARY -JAVA_AWT_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_INCLUDE_PATH -JAVA_INCLUDE_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_INCLUDE_PATH2 -JAVA_INCLUDE_PATH2-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: JAVA_JVM_LIBRARY -JAVA_JVM_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_IDLJ_EXECUTABLE -Java_IDLJ_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JARSIGNER_EXECUTABLE -Java_JARSIGNER_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAR_EXECUTABLE -Java_JAR_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVAC_EXECUTABLE -Java_JAVAC_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVADOC_EXECUTABLE -Java_JAVADOC_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVAH_EXECUTABLE -Java_JAVAH_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Java_JAVA_EXECUTABLE -Java_JAVA_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LCMS2_INCLUDE_DIR -LCMS2_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LCMS2_LIBRARY -LCMS2_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LIBRARY_OUTPUT_PATH -LIBRARY_OUTPUT_PATH-ADVANCED:INTERNAL=1 -//Result of TEST_BIG_ENDIAN -OPJ_BIG_ENDIAN:INTERNAL=0 -//Result of test for fseeko/ftello -OPJ_HAVE_FSEEKO:INTERNAL=ON -//Have include inttypes.h -OPJ_HAVE_INTTYPES_H:INTERNAL=1 -//Result of test for large file support -OPJ_HAVE_LARGEFILES:INTERNAL=ON -//Have include malloc.h -OPJ_HAVE_MALLOC_H:INTERNAL=1 -//Have symbol memalign -OPJ_HAVE_MEMALIGN:INTERNAL=1 -//Have symbol posix_memalign -OPJ_HAVE_POSIX_MEMALIGN:INTERNAL=1 -//Have include stdint.h -OPJ_HAVE_STDINT_H:INTERNAL=1 -//Have symbol _aligned_malloc -OPJ_HAVE__ALIGNED_MALLOC:INTERNAL= -PC_CURL_CFLAGS:INTERNAL=-I/usr/include/x86_64-linux-gnu -PC_CURL_CFLAGS_I:INTERNAL= -PC_CURL_CFLAGS_OTHER:INTERNAL= -PC_CURL_FOUND:INTERNAL=1 -PC_CURL_INCLUDEDIR:INTERNAL=/usr/include/x86_64-linux-gnu -PC_CURL_INCLUDE_DIRS:INTERNAL=/usr/include/x86_64-linux-gnu -PC_CURL_LDFLAGS:INTERNAL=-lcurl -PC_CURL_LDFLAGS_OTHER:INTERNAL= -PC_CURL_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu -PC_CURL_LIBRARIES:INTERNAL=curl -PC_CURL_LIBRARY_DIRS:INTERNAL= -PC_CURL_LIBS:INTERNAL= -PC_CURL_LIBS_L:INTERNAL= -PC_CURL_LIBS_OTHER:INTERNAL= -PC_CURL_LIBS_PATHS:INTERNAL= -PC_CURL_MODULE_NAME:INTERNAL=libcurl -PC_CURL_PREFIX:INTERNAL=/usr -PC_CURL_STATIC_CFLAGS:INTERNAL=-I/usr/include/x86_64-linux-gnu -PC_CURL_STATIC_CFLAGS_I:INTERNAL= -PC_CURL_STATIC_CFLAGS_OTHER:INTERNAL= -PC_CURL_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/x86_64-linux-gnu -PC_CURL_STATIC_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu/mit-krb5;-lcurl;-lnghttp2;-lidn2;-lrtmp;-lpsl;-lnettle;-lgnutls;-Wl,-Bsymbolic-functions;-Wl,-z,relro;-lgssapi_krb5;-lkrb5;-lk5crypto;-lcom_err;-llber;-lldap;-llber;-lz -PC_CURL_STATIC_LDFLAGS_OTHER:INTERNAL=-Wl,-Bsymbolic-functions;-Wl,-z,relro -PC_CURL_STATIC_LIBDIR:INTERNAL= -PC_CURL_STATIC_LIBRARIES:INTERNAL=curl;nghttp2;idn2;rtmp;psl;nettle;gnutls;gssapi_krb5;krb5;k5crypto;com_err;lber;ldap;lber;z -PC_CURL_STATIC_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu/mit-krb5 -PC_CURL_STATIC_LIBS:INTERNAL= -PC_CURL_STATIC_LIBS_L:INTERNAL= -PC_CURL_STATIC_LIBS_OTHER:INTERNAL= -PC_CURL_STATIC_LIBS_PATHS:INTERNAL= -PC_CURL_VERSION:INTERNAL=7.58.0 -PC_CURL_libcurl_INCLUDEDIR:INTERNAL= -PC_CURL_libcurl_LIBDIR:INTERNAL= -PC_CURL_libcurl_PREFIX:INTERNAL= -PC_CURL_libcurl_VERSION:INTERNAL= -//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE -PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: PNG_LIBRARY_DEBUG -PNG_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: PNG_LIBRARY_RELEASE -PNG_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: PNG_PNG_INCLUDE_DIR -PNG_PNG_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: TIFF_INCLUDE_DIR -TIFF_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: TIFF_LIBRARY_DEBUG -TIFF_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: TIFF_LIBRARY_RELEASE -TIFF_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//MODIFIED property for variable: WITH_ASTYLE -WITH_ASTYLE-MODIFIED:INTERNAL=ON -//ADVANCED property for variable: ZLIB_INCLUDE_DIR -ZLIB_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ZLIB_LIBRARY_DEBUG -ZLIB_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ZLIB_LIBRARY_RELEASE -ZLIB_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//Result of test for needed _FILE_OFFSET_BITS=64 -_FILE_OFFSET_BITS:INTERNAL= -//Result of test for needed _LARGEFILE_SOURCE -_LARGEFILE_SOURCE:INTERNAL= -//Result of test for needed _LARGE_FILES -_LARGE_FILES:INTERNAL= -__pkg_config_arguments_PC_CURL:INTERNAL=QUIET;libcurl -__pkg_config_checked_PC_CURL:INTERNAL=1 -//ADVANCED property for variable: pkgcfg_lib_PC_CURL_curl -pkgcfg_lib_PC_CURL_curl-ADVANCED:INTERNAL=1 -prefix_result:INTERNAL=SSL;IPv6;UnixSockets;libz;AsynchDNS;IDN;GSS-API;PSL;SPNEGO;Kerberos;NTLM;NTLM_WB;TLS-SRP;HTTP2;HTTPS-proxy - diff --git a/build/CMakeDoxyfile.in b/build/CMakeDoxyfile.in deleted file mode 100644 index f346ee4d2..000000000 --- a/build/CMakeDoxyfile.in +++ /dev/null @@ -1,278 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ -PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ -PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ -PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ -PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ -OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ -CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ -ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ -OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ -OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ -BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ -REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ -ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ -ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ -INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ -FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ -STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ -STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ -SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ -JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ -JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ -QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ -MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ -INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ -SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ -TAB_SIZE = @DOXYGEN_TAB_SIZE@ -ALIASES = @DOXYGEN_ALIASES@ -TCL_SUBST = @DOXYGEN_TCL_SUBST@ -OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ -OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ -OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ -OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ -OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ -EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ -MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ -TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ -AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ -BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ -CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ -SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ -IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ -DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ -GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ -SUBGROUPING = @DOXYGEN_SUBGROUPING@ -INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ -INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ -TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ -LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ -EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ -EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ -EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ -EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ -EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ -EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ -EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ -EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ -HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ -HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ -HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ -HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ -INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ -CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ -HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ -HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ -SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ -SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ -FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ -INLINE_INFO = @DOXYGEN_INLINE_INFO@ -SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ -SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ -SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ -SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ -SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ -STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ -GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ -GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ -GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ -GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ -ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ -MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ -SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ -SHOW_FILES = @DOXYGEN_SHOW_FILES@ -SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ -FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ -LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ -CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ -QUIET = @DOXYGEN_QUIET@ -WARNINGS = @DOXYGEN_WARNINGS@ -WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ -WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ -WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ -WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ -WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ -WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ -INPUT = @DOXYGEN_INPUT@ -INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ -FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ -RECURSIVE = @DOXYGEN_RECURSIVE@ -EXCLUDE = @DOXYGEN_EXCLUDE@ -EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ -EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ -EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ -EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ -EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ -EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ -IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ -INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ -FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ -FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ -FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ -USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ -SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ -INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ -STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ -REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ -REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ -REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ -SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ -USE_HTAGS = @DOXYGEN_USE_HTAGS@ -VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ -ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ -COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ -IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ -GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ -HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ -HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ -HTML_HEADER = @DOXYGEN_HTML_HEADER@ -HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ -HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ -HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ -HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ -HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ -HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ -HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ -HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ -HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ -HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ -HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ -GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ -DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ -DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ -DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ -DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ -GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ -CHM_FILE = @DOXYGEN_CHM_FILE@ -HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ -GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ -CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ -BINARY_TOC = @DOXYGEN_BINARY_TOC@ -TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ -GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ -QCH_FILE = @DOXYGEN_QCH_FILE@ -QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ -QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ -QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ -QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ -QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ -QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ -GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ -ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ -DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ -GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ -ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ -TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ -EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ -HTML_FORMULA_FORMAT = @DOXYGEN_HTML_FORMULA_FORMAT@ -FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ -FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ -FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ -USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ -MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ -MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ -MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ -MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ -SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ -SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ -EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ -SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ -SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ -EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ -EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ -GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ -LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ -LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ -MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ -LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ -COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ -PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ -EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ -LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ -LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ -LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ -LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ -PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ -USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ -LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ -LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ -LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ -LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ -LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ -LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ -GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ -RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ -COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ -RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ -RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ -RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ -RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ -GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ -MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ -MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ -MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ -MAN_LINKS = @DOXYGEN_MAN_LINKS@ -GENERATE_XML = @DOXYGEN_GENERATE_XML@ -XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ -XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ -XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ -GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ -DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ -DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ -GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ -GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ -PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ -PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ -PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ -ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ -MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ -EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ -SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ -INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ -INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ -PREDEFINED = @DOXYGEN_PREDEFINED@ -EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ -SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ -TAGFILES = @DOXYGEN_TAGFILES@ -GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ -ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ -EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ -EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ -CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ -DIA_PATH = @DOXYGEN_DIA_PATH@ -HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ -HAVE_DOT = @DOXYGEN_HAVE_DOT@ -DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ -DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ -DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ -DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ -CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ -COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ -GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ -UML_LOOK = @DOXYGEN_UML_LOOK@ -UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ -TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ -INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ -INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ -CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ -CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ -GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ -DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ -DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ -INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ -DOT_PATH = @DOXYGEN_DOT_PATH@ -DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ -MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ -DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ -PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ -PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ -PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ -DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ -MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ -DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ -DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ -GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ -DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/build/CMakeDoxygenDefaults.cmake b/build/CMakeDoxygenDefaults.cmake deleted file mode 100644 index efd88055c..000000000 --- a/build/CMakeDoxygenDefaults.cmake +++ /dev/null @@ -1,673 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) - set(DOXYGEN_DOXYFILE_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_PROJECT_NAME) - set(DOXYGEN_PROJECT_NAME "My Project") -endif() -if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) - set(DOXYGEN_CREATE_SUBDIRS NO) -endif() -if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) - set(DOXYGEN_ALLOW_UNICODE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) - set(DOXYGEN_OUTPUT_LANGUAGE English) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) - set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) -endif() -if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) - set(DOXYGEN_BRIEF_MEMBER_DESC YES) -endif() -if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) - set(DOXYGEN_REPEAT_BRIEF YES) -endif() -if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) - set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" - "The $name widget" - "The $name file" - is - provides - specifies - contains - represents - a - an - the) -endif() -if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) - set(DOXYGEN_ALWAYS_DETAILED_SEC NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) - set(DOXYGEN_INLINE_INHERITED_MEMB NO) -endif() -if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) - set(DOXYGEN_FULL_PATH_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_SHORT_NAMES) - set(DOXYGEN_SHORT_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) - set(DOXYGEN_JAVADOC_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) - set(DOXYGEN_JAVADOC_BANNER NO) -endif() -if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) - set(DOXYGEN_QT_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) - set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_INHERIT_DOCS) - set(DOXYGEN_INHERIT_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) - set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) -endif() -if(NOT DEFINED DOXYGEN_TAB_SIZE) - set(DOXYGEN_TAB_SIZE 4) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) - set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) - set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) - set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) - set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) - set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) -endif() -if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) - set(DOXYGEN_MARKDOWN_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) - set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) -endif() -if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) - set(DOXYGEN_AUTOLINK_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) - set(DOXYGEN_BUILTIN_STL_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) - set(DOXYGEN_CPP_CLI_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_SIP_SUPPORT) - set(DOXYGEN_SIP_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) - set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) - set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) -endif() -if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) - set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_SUBGROUPING) - set(DOXYGEN_SUBGROUPING YES) -endif() -if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) - set(DOXYGEN_INLINE_GROUPED_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) - set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) -endif() -if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) - set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) -endif() -if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) - set(DOXYGEN_LOOKUP_CACHE_SIZE 0) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ALL) - set(DOXYGEN_EXTRACT_ALL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) - set(DOXYGEN_EXTRACT_PRIVATE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) - set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) - set(DOXYGEN_EXTRACT_PACKAGE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) - set(DOXYGEN_EXTRACT_STATIC NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) - set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) - set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) - set(DOXYGEN_EXTRACT_ANON_NSPACES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) - set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) - set(DOXYGEN_HIDE_UNDOC_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) - set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) - set(DOXYGEN_HIDE_IN_BODY_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) - set(DOXYGEN_INTERNAL_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) - set(DOXYGEN_CASE_SENSE_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) - set(DOXYGEN_HIDE_SCOPE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) - set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) -endif() -if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) - set(DOXYGEN_SHOW_INCLUDE_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) - set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) -endif() -if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) - set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INFO) - set(DOXYGEN_INLINE_INFO YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) - set(DOXYGEN_SORT_MEMBER_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) - set(DOXYGEN_SORT_BRIEF_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) - set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) - set(DOXYGEN_SORT_GROUP_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) - set(DOXYGEN_SORT_BY_SCOPE_NAME NO) -endif() -if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) - set(DOXYGEN_STRICT_PROTO_MATCHING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) - set(DOXYGEN_GENERATE_TODOLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) - set(DOXYGEN_GENERATE_TESTLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) - set(DOXYGEN_GENERATE_BUGLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) - set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) -endif() -if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) - set(DOXYGEN_MAX_INITIALIZER_LINES 30) -endif() -if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) - set(DOXYGEN_SHOW_USED_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_FILES) - set(DOXYGEN_SHOW_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) - set(DOXYGEN_SHOW_NAMESPACES YES) -endif() -if(NOT DEFINED DOXYGEN_QUIET) - set(DOXYGEN_QUIET NO) -endif() -if(NOT DEFINED DOXYGEN_WARNINGS) - set(DOXYGEN_WARNINGS YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) - set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) - set(DOXYGEN_WARN_IF_DOC_ERROR YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) - set(DOXYGEN_WARN_NO_PARAMDOC NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) - set(DOXYGEN_WARN_AS_ERROR NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_FORMAT) - set(DOXYGEN_WARN_FORMAT "$file:$line: $text") -endif() -if(NOT DEFINED DOXYGEN_INPUT_ENCODING) - set(DOXYGEN_INPUT_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_FILE_PATTERNS) - set(DOXYGEN_FILE_PATTERNS *.c - *.cc - *.cxx - *.cpp - *.c++ - *.java - *.ii - *.ixx - *.ipp - *.i++ - *.inl - *.idl - *.ddl - *.odl - *.h - *.hh - *.hxx - *.hpp - *.h++ - *.cs - *.d - *.php - *.php4 - *.php5 - *.phtml - *.inc - *.m - *.markdown - *.md - *.mm - *.dox - *.doc - *.txt - *.py - *.pyw - *.f90 - *.f95 - *.f03 - *.f08 - *.f18 - *.f - *.for - *.tcl - *.vhd - *.vhdl - *.ucf - *.qsf - *.ice) -endif() -if(NOT DEFINED DOXYGEN_RECURSIVE) - set(DOXYGEN_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) - set(DOXYGEN_EXCLUDE_SYMLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) - set(DOXYGEN_EXAMPLE_PATTERNS *) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) - set(DOXYGEN_EXAMPLE_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) - set(DOXYGEN_FILTER_SOURCE_FILES NO) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) - set(DOXYGEN_SOURCE_BROWSER NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SOURCES) - set(DOXYGEN_INLINE_SOURCES NO) -endif() -if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) - set(DOXYGEN_STRIP_CODE_COMMENTS YES) -endif() -if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) - set(DOXYGEN_REFERENCED_BY_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) - set(DOXYGEN_REFERENCES_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) - set(DOXYGEN_REFERENCES_LINK_SOURCE YES) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) - set(DOXYGEN_SOURCE_TOOLTIPS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_HTAGS) - set(DOXYGEN_USE_HTAGS NO) -endif() -if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) - set(DOXYGEN_VERBATIM_HEADERS YES) -endif() -if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) - set(DOXYGEN_ALPHABETICAL_INDEX YES) -endif() -if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) - set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTML) - set(DOXYGEN_GENERATE_HTML YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_OUTPUT) - set(DOXYGEN_HTML_OUTPUT html) -endif() -if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) - set(DOXYGEN_HTML_FILE_EXTENSION .html) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) - set(DOXYGEN_HTML_COLORSTYLE_HUE 220) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) - set(DOXYGEN_HTML_COLORSTYLE_SAT 100) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) - set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) -endif() -if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) - set(DOXYGEN_HTML_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) - set(DOXYGEN_HTML_DYNAMIC_MENUS YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) - set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) - set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) - set(DOXYGEN_GENERATE_DOCSET NO) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) - set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") -endif() -if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) - set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) - set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) - set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) - set(DOXYGEN_GENERATE_HTMLHELP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_CHI) - set(DOXYGEN_GENERATE_CHI NO) -endif() -if(NOT DEFINED DOXYGEN_BINARY_TOC) - set(DOXYGEN_BINARY_TOC NO) -endif() -if(NOT DEFINED DOXYGEN_TOC_EXPAND) - set(DOXYGEN_TOC_EXPAND NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_QHP) - set(DOXYGEN_GENERATE_QHP NO) -endif() -if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) - set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) - set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) - set(DOXYGEN_GENERATE_ECLIPSEHELP NO) -endif() -if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) - set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DISABLE_INDEX) - set(DOXYGEN_DISABLE_INDEX NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) - set(DOXYGEN_GENERATE_TREEVIEW NO) -endif() -if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) - set(DOXYGEN_ENUM_VALUES_PER_LINE 4) -endif() -if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) - set(DOXYGEN_TREEVIEW_WIDTH 250) -endif() -if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) - set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_FORMULA_FORMAT) - set(DOXYGEN_HTML_FORMULA_FORMAT png) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) - set(DOXYGEN_FORMULA_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) - set(DOXYGEN_FORMULA_TRANSPARENT YES) -endif() -if(NOT DEFINED DOXYGEN_USE_MATHJAX) - set(DOXYGEN_USE_MATHJAX NO) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) - set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) - set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) -endif() -if(NOT DEFINED DOXYGEN_SEARCHENGINE) - set(DOXYGEN_SEARCHENGINE YES) -endif() -if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) - set(DOXYGEN_SERVER_BASED_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) - set(DOXYGEN_EXTERNAL_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) - set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LATEX) - set(DOXYGEN_GENERATE_LATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) - set(DOXYGEN_LATEX_OUTPUT latex) -endif() -if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) - set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) -endif() -if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) - set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_LATEX) - set(DOXYGEN_COMPACT_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PAPER_TYPE) - set(DOXYGEN_PAPER_TYPE a4) -endif() -if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) - set(DOXYGEN_PDF_HYPERLINKS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_PDFLATEX) - set(DOXYGEN_USE_PDFLATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) - set(DOXYGEN_LATEX_BATCHMODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) - set(DOXYGEN_LATEX_HIDE_INDICES NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) - set(DOXYGEN_LATEX_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) - set(DOXYGEN_LATEX_BIB_STYLE plain) -endif() -if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) - set(DOXYGEN_LATEX_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_RTF) - set(DOXYGEN_GENERATE_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_OUTPUT) - set(DOXYGEN_RTF_OUTPUT rtf) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_RTF) - set(DOXYGEN_COMPACT_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) - set(DOXYGEN_RTF_HYPERLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) - set(DOXYGEN_RTF_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_MAN) - set(DOXYGEN_GENERATE_MAN NO) -endif() -if(NOT DEFINED DOXYGEN_MAN_OUTPUT) - set(DOXYGEN_MAN_OUTPUT man) -endif() -if(NOT DEFINED DOXYGEN_MAN_EXTENSION) - set(DOXYGEN_MAN_EXTENSION .3) -endif() -if(NOT DEFINED DOXYGEN_MAN_LINKS) - set(DOXYGEN_MAN_LINKS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_XML) - set(DOXYGEN_GENERATE_XML NO) -endif() -if(NOT DEFINED DOXYGEN_XML_OUTPUT) - set(DOXYGEN_XML_OUTPUT xml) -endif() -if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) - set(DOXYGEN_XML_PROGRAMLISTING YES) -endif() -if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) - set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) - set(DOXYGEN_GENERATE_DOCBOOK NO) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) - set(DOXYGEN_DOCBOOK_OUTPUT docbook) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) - set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) - set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) - set(DOXYGEN_GENERATE_PERLMOD NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) - set(DOXYGEN_PERLMOD_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) - set(DOXYGEN_PERLMOD_PRETTY YES) -endif() -if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) - set(DOXYGEN_ENABLE_PREPROCESSING YES) -endif() -if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) - set(DOXYGEN_MACRO_EXPANSION NO) -endif() -if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) - set(DOXYGEN_EXPAND_ONLY_PREDEF NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) - set(DOXYGEN_SEARCH_INCLUDES YES) -endif() -if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) - set(DOXYGEN_SKIP_FUNCTION_MACROS YES) -endif() -if(NOT DEFINED DOXYGEN_ALLEXTERNALS) - set(DOXYGEN_ALLEXTERNALS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) - set(DOXYGEN_EXTERNAL_GROUPS YES) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) - set(DOXYGEN_EXTERNAL_PAGES YES) -endif() -if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) - set(DOXYGEN_CLASS_DIAGRAMS YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) - set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) -endif() -if(NOT DEFINED DOXYGEN_HAVE_DOT) - set(DOXYGEN_HAVE_DOT NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) - set(DOXYGEN_DOT_NUM_THREADS 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTNAME) - set(DOXYGEN_DOT_FONTNAME Helvetica) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) - set(DOXYGEN_DOT_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_CLASS_GRAPH) - set(DOXYGEN_CLASS_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) - set(DOXYGEN_COLLABORATION_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) - set(DOXYGEN_GROUP_GRAPHS YES) -endif() -if(NOT DEFINED DOXYGEN_UML_LOOK) - set(DOXYGEN_UML_LOOK NO) -endif() -if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) - set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) -endif() -if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) - set(DOXYGEN_TEMPLATE_RELATIONS NO) -endif() -if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) - set(DOXYGEN_INCLUDE_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) - set(DOXYGEN_INCLUDED_BY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_CALL_GRAPH) - set(DOXYGEN_CALL_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_CALLER_GRAPH) - set(DOXYGEN_CALLER_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) - set(DOXYGEN_GRAPHICAL_HIERARCHY YES) -endif() -if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) - set(DOXYGEN_DIRECTORY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) - set(DOXYGEN_DOT_IMAGE_FORMAT png) -endif() -if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) - set(DOXYGEN_INTERACTIVE_SVG NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) - set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) -endif() -if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) - set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) - set(DOXYGEN_DOT_TRANSPARENT NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) - set(DOXYGEN_DOT_MULTI_TARGETS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) - set(DOXYGEN_GENERATE_LEGEND YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_CLEANUP) - set(DOXYGEN_DOT_CLEANUP YES) -endif() diff --git a/build/CPackConfig.cmake b/build/CPackConfig.cmake deleted file mode 100644 index 7c9e9c365..000000000 --- a/build/CPackConfig.cmake +++ /dev/null @@ -1,78 +0,0 @@ -# This file will be configured to contain variables for CPack. These variables -# should be set in the CMake list file of the project before CPack module is -# included. The list of available CPACK_xxx variables and their associated -# documentation may be obtained using -# cpack --help-variable-list -# -# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) -# and some are specific to a generator -# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables -# usually begin with CPACK__xxxx. - - -set(CPACK_BINARY_DEB "ON") -set(CPACK_BINARY_FREEBSD "OFF") -set(CPACK_BINARY_IFW "OFF") -set(CPACK_BINARY_NSIS "OFF") -set(CPACK_BINARY_RPM "OFF") -set(CPACK_BINARY_STGZ "ON") -set(CPACK_BINARY_TBZ2 "OFF") -set(CPACK_BINARY_TGZ "ON") -set(CPACK_BINARY_TXZ "OFF") -set(CPACK_BINARY_TZ "ON") -set(CPACK_BUILD_SOURCE_DIRS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build") -set(CPACK_BUNDLE_NAME "OpenJPEG 2.3") -set(CPACK_CMAKE_GENERATOR "Unix Makefiles") -set(CPACK_COMPONENTS_ALL "Applications;Headers;JavaModule;Libraries;Unspecified") -set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") -set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") -set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") -set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "OPENJPEG built using CMake") -set(CPACK_GENERATOR "DEB;STGZ;TGZ;TZ") -set(CPACK_INSTALL_CMAKE_PROJECTS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build;OPENJPEG;ALL;/") -set(CPACK_INSTALL_PREFIX "/usr/local") -set(CPACK_MODULE_PATH "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/cmake") -set(CPACK_NSIS_DISPLAY_NAME "OpenJPEG 2.3") -set(CPACK_NSIS_INSTALLER_ICON_CODE "") -set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") -set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") -set(CPACK_NSIS_PACKAGE_NAME "OpenJPEG 2.3") -set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") -set(CPACK_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackConfig.cmake") -set(CPACK_PACKAGE_DEFAULT_LOCATION "/") -set(CPACK_PACKAGE_DESCRIPTION_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenJPEG - OpenJPEG a JPEG 2000 implementation.") -set(CPACK_PACKAGE_FILE_NAME "openjpeg-2.3.1-Linux-x86_64") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenJPEG 2.3") -set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OpenJPEG 2.3") -set(CPACK_PACKAGE_NAME "openjp2") -set(CPACK_PACKAGE_RELOCATABLE "true") -set(CPACK_PACKAGE_VENDOR "OpenJPEG Team") -set(CPACK_PACKAGE_VERSION "2.3.1") -set(CPACK_PACKAGE_VERSION_MAJOR "2") -set(CPACK_PACKAGE_VERSION_MINOR "3") -set(CPACK_PACKAGE_VERSION_PATCH "1") -set(CPACK_RESOURCE_FILE_LICENSE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") -set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") -set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.17/Templates/CPack.GenericWelcome.txt") -set(CPACK_SET_DESTDIR "OFF") -set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") -set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackSourceConfig.cmake") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "openjpeg-2.3.1") -set(CPACK_SOURCE_RPM "OFF") -set(CPACK_SOURCE_TBZ2 "ON") -set(CPACK_SOURCE_TGZ "ON") -set(CPACK_SOURCE_TXZ "ON") -set(CPACK_SOURCE_TZ "ON") -set(CPACK_SOURCE_ZIP "OFF") -set(CPACK_SYSTEM_NAME "Linux-x86_64") -set(CPACK_TOPLEVEL_TAG "Linux-x86_64") -set(CPACK_WIX_SIZEOF_VOID_P "8") - -if(NOT CPACK_PROPERTIES_FILE) - set(CPACK_PROPERTIES_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackProperties.cmake") -endif() - -if(EXISTS ${CPACK_PROPERTIES_FILE}) - include(${CPACK_PROPERTIES_FILE}) -endif() diff --git a/build/CPackSourceConfig.cmake b/build/CPackSourceConfig.cmake deleted file mode 100644 index cf8510754..000000000 --- a/build/CPackSourceConfig.cmake +++ /dev/null @@ -1,85 +0,0 @@ -# This file will be configured to contain variables for CPack. These variables -# should be set in the CMake list file of the project before CPack module is -# included. The list of available CPACK_xxx variables and their associated -# documentation may be obtained using -# cpack --help-variable-list -# -# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) -# and some are specific to a generator -# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables -# usually begin with CPACK__xxxx. - - -set(CPACK_BINARY_DEB "ON") -set(CPACK_BINARY_FREEBSD "OFF") -set(CPACK_BINARY_IFW "OFF") -set(CPACK_BINARY_NSIS "OFF") -set(CPACK_BINARY_RPM "OFF") -set(CPACK_BINARY_STGZ "ON") -set(CPACK_BINARY_TBZ2 "OFF") -set(CPACK_BINARY_TGZ "ON") -set(CPACK_BINARY_TXZ "OFF") -set(CPACK_BINARY_TZ "ON") -set(CPACK_BUILD_SOURCE_DIRS "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build") -set(CPACK_BUNDLE_NAME "OpenJPEG 2.3") -set(CPACK_CMAKE_GENERATOR "Unix Makefiles") -set(CPACK_COMPONENTS_ALL "Applications;Headers;JavaModule;Libraries;Unspecified") -set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") -set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") -set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") -set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "OPENJPEG built using CMake") -set(CPACK_GENERATOR "TBZ2;TGZ;TXZ;TZ") -set(CPACK_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") -set(CPACK_INSTALLED_DIRECTORIES "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/") -set(CPACK_INSTALL_CMAKE_PROJECTS "") -set(CPACK_INSTALL_PREFIX "/usr/local") -set(CPACK_MODULE_PATH "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/cmake") -set(CPACK_NSIS_DISPLAY_NAME "OpenJPEG 2.3") -set(CPACK_NSIS_INSTALLER_ICON_CODE "") -set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") -set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") -set(CPACK_NSIS_PACKAGE_NAME "OpenJPEG 2.3") -set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") -set(CPACK_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackConfig.cmake") -set(CPACK_PACKAGE_DEFAULT_LOCATION "/") -set(CPACK_PACKAGE_DESCRIPTION_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenJPEG - OpenJPEG a JPEG 2000 implementation.") -set(CPACK_PACKAGE_FILE_NAME "openjpeg-2.3.1") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenJPEG 2.3") -set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OpenJPEG 2.3") -set(CPACK_PACKAGE_NAME "openjp2") -set(CPACK_PACKAGE_RELOCATABLE "true") -set(CPACK_PACKAGE_VENDOR "OpenJPEG Team") -set(CPACK_PACKAGE_VERSION "2.3.1") -set(CPACK_PACKAGE_VERSION_MAJOR "2") -set(CPACK_PACKAGE_VERSION_MINOR "3") -set(CPACK_PACKAGE_VERSION_PATCH "1") -set(CPACK_RESOURCE_FILE_LICENSE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/LICENSE.txt") -set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.17/Templates/CPack.GenericDescription.txt") -set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.17/Templates/CPack.GenericWelcome.txt") -set(CPACK_RPM_PACKAGE_SOURCES "ON") -set(CPACK_SET_DESTDIR "OFF") -set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") -set(CPACK_SOURCE_IGNORE_FILES "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp\$;\\.#;/#") -set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg;/") -set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackSourceConfig.cmake") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "openjpeg-2.3.1") -set(CPACK_SOURCE_RPM "OFF") -set(CPACK_SOURCE_TBZ2 "ON") -set(CPACK_SOURCE_TGZ "ON") -set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-x86_64-Source") -set(CPACK_SOURCE_TXZ "ON") -set(CPACK_SOURCE_TZ "ON") -set(CPACK_SOURCE_ZIP "OFF") -set(CPACK_STRIP_FILES "") -set(CPACK_SYSTEM_NAME "Linux-x86_64") -set(CPACK_TOPLEVEL_TAG "Linux-x86_64-Source") -set(CPACK_WIX_SIZEOF_VOID_P "8") - -if(NOT CPACK_PROPERTIES_FILE) - set(CPACK_PROPERTIES_FILE "/media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/CPackProperties.cmake") -endif() - -if(EXISTS ${CPACK_PROPERTIES_FILE}) - include(${CPACK_PROPERTIES_FILE}) -endif() diff --git a/build/CTestCustom.cmake b/build/CTestCustom.cmake deleted file mode 100644 index 5afda93cf..000000000 --- a/build/CTestCustom.cmake +++ /dev/null @@ -1,40 +0,0 @@ -#---------------------------------------------------------------------- -# -# For further details regarding this file, -# see http://www.cmake.org/Wiki/CMake_Testing_With_CTest#Customizing_CTest -# -# and -# http://www.kitware.com/blog/home/post/27 -# -#---------------------------------------------------------------------- - -set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 1000000) -set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS 50) -set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 2000) - -set(CTEST_CUSTOM_COVERAGE_EXCLUDE - ${CTEST_CUSTOM_COVERAGE_EXCLUDE} - - # Exclude files from the Testing directories - ".*/tests/.*" - - # Exclude files from the ThirdParty Utilities directories - ".*/thirdparty/.*" - ) - -set(CTEST_CUSTOM_WARNING_EXCEPTION - ${CTEST_CUSTOM_WARNING_EXCEPTION} - - # Ignore clang's summary warning, assuming prior text has matched some - # other warning expression: - "[0-9,]+ warnings? generated." - # Suppress warning caused by intentional messages about deprecation - ".*warning,.* is deprecated" - # java also warns about deprecated API - ".*java.*deprecation" - ".*deprecation.*" - # suppress warnings caused by 3rd party libs: - ".*thirdparty.*" - "libtiff.*has no symbols" - "libpng.*has no symbols" - ) diff --git a/build/CTestTestfile.cmake b/build/CTestTestfile.cmake deleted file mode 100644 index 09e8841f8..000000000 --- a/build/CTestTestfile.cmake +++ /dev/null @@ -1,11 +0,0 @@ -# CMake generated Testfile for -# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg -# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -subdirs(src/lib) -subdirs(thirdparty) -subdirs(src/bin) -subdirs(wrapping) -subdirs(tests) diff --git a/build/DartConfiguration.tcl b/build/DartConfiguration.tcl deleted file mode 100644 index 94e572508..000000000 --- a/build/DartConfiguration.tcl +++ /dev/null @@ -1,111 +0,0 @@ -# This file is configured by CMake automatically as DartConfiguration.tcl -# If you choose not to use CMake, this file may be hand configured, by -# filling in the required variables. - - -# Configuration directories and files -SourceDirectory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg -BuildDirectory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build - -# Where to place the cost data store -CostDataFile: - -# Site is something like machine.domain, i.e. pragmatic.crd -Site: jiapei-GT72-6QE - -# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ -BuildName: Linux-c++ - -# Submission information -IsCDash: TRUE -CDashVersion: -QueryCDashVersion: -DropSite: my.cdash.org -DropLocation: /submit.php?project=OPENJPEG -DropSiteUser: -DropSitePassword: -DropSiteMode: -DropMethod: http -TriggerSite: -ScpCommand: /usr/bin/scp - -# Dashboard start time -NightlyStartTime: 3:00:00 UTC - -# Commands for the build/test/submit cycle -ConfigureCommand: "/usr/bin/cmake" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg" -MakeCommand: /usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -- -i -DefaultCTestConfigurationType: Release - -# version control -UpdateVersionOnly: - -# CVS options -# Default is "-d -P -A" -CVSCommand: /usr/bin/cvs -CVSUpdateOptions: -d -A -P - -# Subversion options -SVNCommand: /usr/bin/svn -SVNOptions: -SVNUpdateOptions: - -# Git options -GITCommand: /usr/bin/git -GITUpdateOptions: -GITUpdateCustom: - -# Perforce options -P4Command: P4COMMAND-NOTFOUND -P4Client: -P4Options: -P4UpdateOptions: -P4UpdateCustom: - -# Generic update command -UpdateCommand: /usr/bin/git -UpdateOptions: -UpdateType: git - -# Compiler info -Compiler: /usr/bin/c++ -CompilerVersion: - -# Dynamic analysis (MemCheck) -PurifyCommand: -ValgrindCommand: -ValgrindCommandOptions: -MemoryCheckType: -MemoryCheckSanitizerOptions: -MemoryCheckCommand: /usr/bin/valgrind -MemoryCheckCommandOptions: -MemoryCheckSuppressionFile: - -# Coverage -CoverageCommand: /usr/bin/gcov -CoverageExtraFlags: -l - -# Cluster commands -SlurmBatchCommand: SLURM_SBATCH_COMMAND-NOTFOUND -SlurmRunCommand: SLURM_SRUN_COMMAND-NOTFOUND - -# Testing options -# TimeOut is the amount of time in seconds to wait for processes -# to complete during testing. After TimeOut seconds, the -# process will be summarily terminated. -# Currently set to 25 minutes -TimeOut: 1500 - -# During parallel testing CTest will not start a new test if doing -# so would cause the system load to exceed this value. -TestLoad: - -UseLaunchers: -CurlOptions: -# warning, if you add new options here that have to do with submit, -# you have to update cmCTestSubmitCommand.cxx - -# For CTest submissions that timeout, these options -# specify behavior for retrying the submission -CTestSubmitRetryDelay: 5 -CTestSubmitRetryCount: 3 diff --git a/build/LICENSE.txt b/build/LICENSE.txt deleted file mode 100644 index e8fa41040..000000000 --- a/build/LICENSE.txt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * The copyright in this software is being made available under the 2-clauses - * BSD License, included below. This software may be subject to other third - * party and contributor rights, including patent rights, and no such rights - * are granted under this license. - * - * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium - * Copyright (c) 2002-2014, Professor Benoit Macq - * Copyright (c) 2003-2014, Antonin Descampe - * Copyright (c) 2003-2009, Francois-Olivier Devaux - * Copyright (c) 2005, Herve Drolon, FreeImage Team - * Copyright (c) 2002-2003, Yannick Verschueren - * Copyright (c) 2001-2003, David Janssens - * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France - * Copyright (c) 2012, CS Systemes d'Information, France - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/build/OpenJPEGConfig.cmake b/build/OpenJPEGConfig.cmake deleted file mode 100644 index 79517390a..000000000 --- a/build/OpenJPEGConfig.cmake +++ /dev/null @@ -1,53 +0,0 @@ -#----------------------------------------------------------------------------- -# -# OPENJPEGConfig.cmake - CMake configuration file for external projects. -# -# This file is configured by OPENJPEG and used by the UseOPENJPEG.cmake -# module to load OPENJPEG's settings for an external project. - -# The OPENJPEG version number. -set(OPENJPEG_MAJOR_VERSION "2") -set(OPENJPEG_MINOR_VERSION "3") -set(OPENJPEG_BUILD_VERSION "1") - -# The libraries. -set(OPENJPEG_LIBRARIES "openjp2") - -# The CMake macros dir. -set(OPENJPEG_CMAKE_DIR "lib/openjpeg-2.3") - -# The configuration options. -set(OPENJPEG_BUILD_SHARED_LIBS "ON") - -# The "use" file. -set(OPENJPEG_USE_FILE "") - -get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -if(EXISTS ${SELF_DIR}/OpenJPEGTargets.cmake) - # This is an install tree - include(${SELF_DIR}/OpenJPEGTargets.cmake) - - # We find a relative path from the PKG directory to header files. - set(PKG_DIR "/usr/local/lib/openjpeg-2.3") - set(INC_DIR "/usr/local/include/openjpeg-2.3") - file(RELATIVE_PATH PKG_TO_INC_RPATH "${PKG_DIR}" "${INC_DIR}") - - get_filename_component(OPENJPEG_INCLUDE_DIRS "${SELF_DIR}/${PKG_TO_INC_RPATH}" ABSOLUTE) - -else() - if(EXISTS ${SELF_DIR}/OpenJPEGExports.cmake) - # This is a build tree - set( OPENJPEG_INCLUDE_DIRS ) - - include(${SELF_DIR}/OpenJPEGExports.cmake) - - else() - message(FATAL_ERROR "ooops") - endif() -endif() - -set(OPENJPEG_USE_FILE ${SELF_DIR}/UseOPENJPEG.cmake) - -# Backward compatible part: -set(OPENJPEG_FOUND TRUE) - diff --git a/build/bin/compare_dump_files b/build/bin/compare_dump_files deleted file mode 100644 index 99c04f9c5c3cc73a5dc176f85860a6e40ad263e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18424 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 R^&hN70aAa)36tRt`yY_YCE)-7 diff --git a/build/bin/compare_images b/build/bin/compare_images deleted file mode 100644 index 766f44a3c8d65021bba0ca8a556aa394c52ff2ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113528 zcmeFa51ds+`9FSk*@Z>WyZ%8jDb{}lqKJPg70pGxdNnXoH&HW0SOi5NxQkjMi zU%$_1VfUPwdFGktdFGj!_sp3yXGwJ8<)tMhj`=BdKH@Mm|AcCZQhyz%?PnfMwR4^` z*r|3#IwPEcpeo0&p{v$+=Gv>XnQH}T`7;2&W%xa>lp$WLd2z2JB;=q3^~_cTtEcyrBCApFEAl>Ai5Uy8?ky*gj7&S$QUmfu{B zeq_Vn>vZ~crPT;AT+NGfnf&#xrr60Z#%J(;R9wk9Dn3Cd&2@|BXRapS$B~b6_V=e! z6JDdsD`uA}U7oorsT}9bIkRv5(79*MnQ_LP*>mgeKI885K6J*1&KHo>2q%V{okga zblSj6qrcfb{!`E1`@wsD?;J7ji9fD8E0aE^=?B@LH@H>y=|B;~IpvyIK9_+thsK0np*mtUpgKT)FMlZdB%hWqR@R^pF$+I;$MlK4ue+9!XNmjCcc zivLG6|8GNH*5i~9tN3l&`CicS-1=!1e}b;BTQr|neD*&{(_gzz(Vyn1pU1$z67qNY z{NexT_)%IfP3|nx{5x(_e7-eUr3^&;k>KQ9uk4JV{Cru*SJkTcn2!IemdD_KBhTN( zKJRg=eE!@j@*E$Kvq|VHoephJ!~cBE|5;t{C+KqT(DJ`jt>k%eh)P(l<7+=(EfN3F zdVNpx8SS&%jY2=fsT{886&L&kUY$3;cJA%-&n8Iyuru|_>n2T|QM;h_w%H5gwF|DB zbm^RVb8D}gcI%v4XX@13?wmJw>caT61@Wmg+qG-Bvqw`hwbN@mj}=m{GehzF^)x60@*2j^bxdtD6&_T03|8Jcu%N{T#vuo$fkiZo>aGBy-t75N>FPJ_5 z+S#9}6&fhHP~9Qx_0ty2ojv!q*tEGb=F~1I;NeVVId@K*GiTm(bw6`Kt(!5rV8Ofv zcD8G3r_G3p5;LSc;dT9j+40&y?A3L5-delhV>5+rA$6Nh#XjV~G}Gtb<1C!NVD{Yj zOlKx*i;)Ya&sxCiT&B*ii^KM;ndx^-oj&W1sWYd|o`VQh3hGKippDPF!(xTv%Is2RP4|SBC&NL({3V7tWi0{`pg9E}TAX?o3j$)S1)8 zY{))+S{y{vjw zV*H)+!HW88N4s;{?77a=+8NX0(~xlM!i6dxQFCWFXWm&mWA?N&Z=XGFe(mftF9Xe) zm(9Ct?wonkW-L5Y+-?4XdDCkbE<}Z%NpG6I@J!|JwYQylYu)TQGtRt~>{Wr&7uHRk zIeYGGaWe=sZ+_enCh>U-rrkA1q7g^M=)DVS>8*%>H!ehI+6lf=6n;vu3be9B zr89i=?Ab^kHJgdXUNqB(spE_Lkp4k{#N}WF=%%9$e zr^%JW_j~0|{V{l`96>cw=|nv)GX5eR#mn#}#fNYO;<`UoRy=KKenwgGS`mgQBr&#faS@gG9@p`D1)LB-%hI$e|--<^? zxj%PX@%Dm5y%isEsU4@mif28WpC&7wYZ2yWr4?__4_d7FqYW{xtyVnOsLanAD}I=X z#I?#g{+t@s8j{v0d5$%;SMieG8P%dnu+TCDgFS@f~Q?uuBt{J-ux(TOEH;^o=#0NSy{ zmWrno(Y_BpkEDI4ZpYuq$ZFg%Jd26Bo_+W^^%;iQ)#bV*yqRHkak&l&uV)xco!lA; z|CC{Nb-5M^|A1k3ak(Z5e~V#uZMk|0e}!SXWp2KNzrZlNvfM2a{v5;X!g7-(d_TkN zx^mSL{tUzHvU1}jyntbLRkj)cW|xy&BjK|dW>=GIk??5@vx~_!N%$m&*|p^ACHx+S z*`?&>OZX^;*_GsOk?>&*vkS>hmT)P<>^gGQ5`J?L!t63~<0Skl!|W<@RT6%QVGen@ zN(t{|m|aHBk?`*rW>=Bh^WW6}d4{VP?vd~_46|#8VUcD zVRiwz7771=VK)6-lZ3y;Fq?d?Ucz5tm`y!5U&3Etm`yx)i-bSN@Mwl7OZa|<+0=8@ z68;RsY~s0b5?;VCn|7{B!nZTbCY`I4@U0B9Dd!vs-^ehVaBk0AQvVFI>E?PQd=
  • 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 diff --git a/build/bin/include_openjpeg b/build/bin/include_openjpeg deleted file mode 100644 index 48640f44c5669d4e149c8d89890a6593d2d73565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8568 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

    -9&&ep$6VbJ;1 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%0DOqC3>^n^%FMbl9g7AS2_hgYc$0gxq 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

    5YI;9w=u?bBpDE9J8?tKcG#9d# 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%0D|-SR7feqVN1VrM}AzN@c= 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 zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNZ|ir*M45K zs=_#czxN%-8F3r9%L-bEy9ixG-obVSEh5CgMIa^g2MB}GE?TsRa2p6AxD$gGwWvF7 z+(e=-3Kxl>tE4(1EfRFP$M@drnad195X5~x7w(+rob%4hd_VX1J1+qO1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF1Qe*c%(*S=o?_k?S^@+@3gq*G^FYW=FEoM2_XUoBI|6~20_C$oOaZA05SYzU zvrtGi4FUuR5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfWTN_UJO)4-IwKjKc*!>AeO*(=Z07U(h`U(;P{Wb?In*bkdJ-Gf9!ogdIGaqYA6sO zK!5-N0?`Cg9WAlE1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Cu% z7g#EOwQB3UmP%Y$f1{wtc0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBly@Kk|a#Ve||&TF|W6`e<$o0~;fNq|5QfqY)r9VDxm1PE*u$jAS4 zTZi-r5C|ZUkNvzZ2goWS0RlS-q-LiX;{*s0AV7e?R0UE!)nsxJAV7cs0RlS-tZpo3 z4y|o{#i4F|bu_;9ReA&n5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7dXY=PxAepL|U z`bj_4E5)3W009C72oNAZfB=E%3-r$f^EPU(`*vyi(Iq56U=T>nP$~!zAV7csfyoQp zIdSsT)p!4{Cm&Qm0t5&UAV6Rc*q=T;cKq}&P1m{)7-SR#2oNAZVCn+bT=%EGiRB|e zfB*pkg}}M9e}4V!{h#Zu^*w;XMoEAG0RjZ3DzNzf|6i{AQ{BLF5ggV6z7(V~+`tAp|u`)z}009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF{5Jx-+qbPoZ~dg7>b;{mT>=CM5FkK+009C7rY(@42l6_9O1nI52I&X{ z7f4NT0PzVBAV7dXP=POBK6Ci+(V*eQCP07y0Ro`}4t)2DoF}cwq?;AV7dX zP=TLbJM!b}Z(jHLf6(nOHUR_Fkygx^^R`g46^E5FkJxmcXsg?%jRq zi?4j{A8WHqOMn0Y0>K69A3k}wzVe{yTK56L_XqI_5FkJxhQPh&&%giT#oMm?F*di9 z1PBlyK;W^!rS+TV-+B8^-L<|4XulvpfB*pk0R-NA^`qZ@Kl`ieet>N)A^`#f2oUH6 zKHYclm2dyJ+^l_kb5DK!#_)fDuHSU?!+8IDS^@+J5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7e?|3zS>{X?p5?f<6S zUo5Gf_obEq0RjXF5FkK+0D%w!JyFcjK5TS)6K%f_R^SOg7>j$pX zf1O?W`kuWX)c1Y+)Mx9V_&`1eL25L2MMH;5@9H30&1b4@){Xc7$q1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7e?P+(FFR7KsD<$O1$B|spSz*gsmSOU@#h%4au zkGtS=H{B30s#U92oN9;O`u8963a_~009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72>f?}`Qo9~w9ad}l=BMHl2uFs1U3ugF0tn<|Kd%b`vWiH6z;*&nz1@s)0t5&U zAV6TO0!;Bkxv3vvw5FkLH5P19W@1NXy`D|)i{{tv&lmrM6AV6TO z0<+)$|8U(O>kgKS009C72y7v6;?ooB?|gZt|Ng)2`#i9Pl_3HI2oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{#t7`3K5aF4>TCTb?Hsc+0t5&U zAP`F6&MzKYTiw&tZJR=c7nT440t5&I75MI<2flgq@zcKl54!)wCP07yftUh^RxUoV z`@L$pZI8!PkeUDi0t5)e68Q1xrHgmH`?2r+W9@cn2@oJaAhvKTx z_k;KZ2oN9;L*UZw$6mVQ{qwH-F?P3<1PBlyK;Wvt+UmJu&pvq}wXOdFdS4JAK!5;& z00J-G|JpCV9{$O7Kft~gkpKY#1PF8jNA~Qy_w(OAte0OucT+ljrvDwF?bq#mKi)k~ zOMn0Y0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBoLzX&W&Ur5!i-D}GI+0vv*S853mAV7cs0RjXF5C|bKygvvLT1Wx} z1_I~n*}$nZn9wCafB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 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 fXO91im%I7(FP@*i?{Ph!=Gm-Twat^mHBJ diff --git a/build/bin/libopenjp3d.so.2.3.1 b/build/bin/libopenjp3d.so.2.3.1 deleted file mode 100644 index 1393ac47c6500767d39ac6c9992177470e2ababa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187096 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

    SZMJn2^<6Xw{9f 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 L9h>_V8~^_S)ct75 diff --git a/build/bin/libopenjpip.so.2.3.1 b/build/bin/libopenjpip.so.2.3.1 deleted file mode 100644 index 888bb639a24d1baefc1ccf094297079cb5b5f965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151848 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�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 QT)R#GvJ+Hv<#+V|11?A$!~g&Q diff --git a/build/bin/libopenjpip.so.7 b/build/bin/libopenjpip.so.7 deleted file mode 120000 index 67eef86c3..000000000 --- a/build/bin/libopenjpip.so.7 +++ /dev/null @@ -1 +0,0 @@ -libopenjpip.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenjpip_server.a b/build/bin/libopenjpip_server.a deleted file mode 100644 index de6e1d1eebbdad24efb915dce072e4eaf8cbb9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226376 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 z 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 X&HZRxoO2Typh61>${`e-MAr`hLcuP8 diff --git a/build/bin/libopenjpwl.so b/build/bin/libopenjpwl.so deleted file mode 120000 index ae84433c4..000000000 --- a/build/bin/libopenjpwl.so +++ /dev/null @@ -1 +0,0 @@ -libopenjpwl.so.7 \ No newline at end of file diff --git a/build/bin/libopenjpwl.so.2.1.1 b/build/bin/libopenjpwl.so.2.1.1 deleted file mode 100644 index 3a02c0eaa06af9f1c1734919c6f9dc0db1eb1339..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264120 zcmeFadwf$x8aIAg8Yl`TAZT@Qtz5KR)PlDnq5+8n7qp_)s%Q(PrN}L|jTE&|2+_tv zrMjS1QR{Up-l`&01WiF{#amU}t%{mO+)XU272UNeE5Gma%$$?SX#%+G?|t`=H+&A~ zJl}cdnP;AP=04|iiEHu&$w^6?@$06Ys}WU`D-fp)DA!WtlcqVfEUgFrKTbQAd2MD$ z*N5HJ-550PnwHKqrO_Q%&HW<0=Kev98~4@$OlqEc#odUP43gs2%XsxNo^cP!tQhxH z8J)DJt3`%e?}H_uaVK8-Wq(;Vlb(ZD2tBR$vcs57Gww#bOAwFrJk*~TXAJ zYI5tC)XyeQ-nBIO^vdPShF)8o`q+{gpR7slld6s1qdhV5&d>x$&u)h`c`{Q{E0eYK zo;}mQNUF14@9AFSYI5{F@yyips?4b;ubVLA#JU+t!pThMFu4i#Qhl_sC<64L7MI!Kf3D-tkn~A{hRa{$eZ6yM~ z*Kuvb^#-mtalMV}9bB!rtiK%qZuMSr&iAj3`S#7H=4`Lo`pV!pHaZ%w7_qqE?tu;7 zGtVDi^Y8JwS6_DTf>l5N_{h0`yFT6Dcf<5h*>!`){yggZjF+mvJ)-pPlGJ_YEf`gM z-#hn>x}yJMZ!g;W#x1E0-lZG1b${~99{<`jH)C1h8+l=y_e$-Jl&e3y)-mFoWlPR1 zU(omF-IFTb+IICUv}R3_m@jv&U^9s%;zrq`t$czH+UC6>%9J?=1W_? z{OjhnLBBlLr+Cf7_l}zTkLw$Y?{%Niu<_)wmMLeCId;kLub$CHH2wL8*N>a-?SIl6 zo*O>T`}^#3p*aU@#7nRc<+bBx8HYBYmZ~{E;;kKyH;%e_j7$-#no#<&GxFL69=?k@y{nd zyXjWXpVJyHcxU(ae^0&b!9^ckpF3d0{m-0VdqwfZJx=|pqV0+opBdA5)D6AT9tcFn zF5mD`QvUu;8%C5iUAuSo#+}_ZANS|1vhBOxIPc%d$2~p%=4Y3Ud~NTM`m%WECJ@=*3Tdq0r@TH}vez*ACA3peK z;W>Xw{cf~b!Fw$)$Wqa=RBj@hIM=CiFY4;DyQ-t_ji*{ z*l|(5bNW-Iz5Xz1@5^7@dGnpMc|UGGvh<<$^UA*Y>Vt2N=nlK@ob;y$N-vtR=)Rkt z^}6OWtU|M8mgtMC6~NI$p#Gc$g0 zW}W`l3}5=Ri^sqI=eBI;n=5xbeCEc-=LH7eby4fQf25?I+N<9MlmAd!erbknOyNDF zA6PNx=wR!DTi#gW9{a$q+qCL$*LHhSyJgDydj@}&^7O6m{E{)Kch(1;_6s(3u1mT0 zn<<-~|6=`u7iwqTyY$#%YGxDux@kQ%$3?Nh^A6XvzOfKfR0reX1AwP9N9=zU-Q)8= zl^h=*+ATi*U{ZYiMs#%X^hvkH$14-aSr4`2$@w&ap1l+3c~=5`{+d8eN&-7W&A9e_ zDuMowCBVN)kgtxO@$)-9LAtjl(0_aa{L%#ayqLf~)OV)ivi_DOkUtfS1Fg)UpMm^7 zaqtxO!(LjNABy33KFW`NAzXd6UfN@_Bb_CJwGIr}2#>T2;96qFZyJ|ZFKx}wPz=AH zd+|+cWq<3Xbzdy_w~Juy*d9Vo+jfCF1-o`3NRr?5y#P*>_-YJ>2wzVX0lzx_ALC3e zuU^^{-wHX@H`DK9sb>$V=Pm(jxoqcN+Nyzq-v<5YH%sc%`(1%QE@15}ssBkY2*npj ze1z2V^OFSs+v28OB<=9pzXX39(xV?WG=1Z=C)de*ow!Kw&tPs%+ragxmo|5=0M3>8 zJ6w)OYjuweV#F=+;WA&7j}(fWBk@tv4u}6u;EzdM14;ILTgo@=e7W?8JF5hLhvcVm zPao|F&3TG+5TUO2uH>(HRq&@u{4l9cnqA;0N;~vH^gi0rTE5hOu#|t1%y0hJ0vIUq zVkzeyY3B)!O_t+a=~r_FtPPUo^3~UZzZQJ-n(TOX+u{)HC-Kk#6@R1%9@)ze5hrCQJE0 zAeiK@mE|%>uxm}y&OdDw_Vh{q%cTCjs3FDgv)&?tQ`%wan}Xl4LoV1z{vaB3;wRmX z$D~}onZgbl{DyudQqP>b1)YiX=(h>!lbk20BH%~kRr>uT>!bGwq0bkvJO8AfxyK6p zn7#s@BlEQ^AmsEvLg2YF-89(_7~}aInXiAye5FfuPmyvSYZY>g`q)dB`}QG%u}Shj zFYVALB+^?Z+pG5wPWig)JBf>%cA@0|iU#fYjTXsh1Eiia9uoNB5`RzPkGv`Hvm}0! zw8P!0LXkewJ`YMixqO(wuMyF-ze#-T)531j?X-!qUN^{kZItg-QvYR^dbCsG*B&Mm zG3w*l5)bYa3Em?0{7L5b; z)^3paKR;UHS-QaQk@`%N{&wuwLe8fmSgVtEzDu^-qa;29 zY*fDfH3G;+e(2Xz%AfbJpudGb(Ql%Z@B4?4FROtTl5#@t3ckLw9CKuOrO*HXzXlPk ztwgv(OVjc<4w8ttQS~Q%ddUJGKTzQRkpBG38zSBLGL}u2`&-h^%O!rQO!r3F9!fFV z9a7IunqcB*_|;Nr|GPdA@};|LOJ(^^rU4Rulf+HiA>}{)xX4$Hv`@aoA1oL6t&;x% zDQCPa*h?htm;7HX7W|WBdvY}FLw3+*|2|yukC%41TJ}e0N&IjrXWPj_&Yco}LFV^E z*&tPm>}lu7_Nq$uk55bdeu=+5Q~*1LIL$B1{i1IKeznA(lIgx6>*>o5h-7$;f%pesCHR&~e1nufe*_f3?@tmBNj<-jdJYoNv}2_` z&y{wT&AGNk$|-nAqlK*aL=f2X; z%O&1d@*gD~Ty{I!7Ktx;SukEH#A#!so@-=1GV=AD^usHfh5qZsO?w4*(&xLqLXN@z zkmTG@J5c%RhsKG{BKS%W1aZo{M z%&*aI90j(%T5m1Q7{5t5OBwH_)yR(JVu@GFd<~NFCrF&;2bAsv>4%1Y_LTN4mHqWa zl7FSNLyK&OR~{(>YNQ`_9|VE;6$)7EkoLbz_ICp%Ud8soxY5#nE|>oHl&rreNd9{1 zpM(A^?7SU%&~Jyt-F2F@Cc9mY z($0cBlD|yOJI0G(ZKUMC`bhx{c8L3rQqM|R(QBprccg#*^p#LV4kxu7iF+k(v?m*- zoMjb)f4NNeSZTL3IUY0W?=D$h_nj>G&yoB;gCzZ@H3?uM{D6L+Njd%|!5olumjC&w8sZAU!~ONC#lbEvcERU#Vh^1%9!^_KXFU^RoVWySemB&UD~--3T}|N zUFx4L+mm#IU+TZ-9RbK{sof;y%#rmj4}A1nCG+*Uv`>M6HJT@pou8ETqFm;yANbin zPZ$1aY(H(4`aB*HjPFW0d!_tmq}@)D_{XSEB>zX*5AKq9iIg+o??TRP5-*ha)6x&8 zNPL-*uH-ky!>>#E3#I&Jl3&Zqn>BC2{Jhe#=_O@(d0O7=`LoNkydvDRyh)c$$(vbN zQaEdNX<1>(WmC?dyI_9dWz%QOEfit#L-GpBr;~u`b7$WO#tU!An<^!oKX-a*XL{Za| zV3sMBm3ZeDXoV%yOW~CT6iim0@0~YeQCVT>+`=O15rw5Qg>gL#7HV@B%o>>~b7Jc*{z)S%veFd|6@M ztRi~O^DLOVNSgsAq=(Ss%)-*Lk_7@bbYmXQ9kLcBkP9Y6QBh>}Kzb;e>n$yooTx~% z=8J+u$O2Dclt4+A!i0dy1`E8x@#uN>d~N2!GNabeBT}OZM33B4My-uwirZI#0=hS$PXez?e4|?G`&k(%ES7m__r<<`!=@Y+PDsSPP&b5oI|S_AV~czPMpx0rSufmZHKi4||{$hWWi7nOKQrWRH+? z;T(C_d8iN}bsp+R8JmV0yS!qw1!z7ABNvUqkfJa}9yM8Aw1@$P4#JWpD9#dY&>%rT zoLy;51u<$4xvyz88GfB-lu!u|#q2SJNMEN%(I#;yky2G+FqCEft|kL)FA<&G<=4h%~psA!&ljWnX-$%u(Z zAv&*M##{{AIEdH{dKNV^u!vTMC){tCKG%z?4??O$kJ9vIMy*0&70iK`X+UIID2UNo zQyABE(X?Wus1?b6h=dw!EI-OOZ~C0VxziV+Op0cgV-Q2F5Df&lpP~Ul6gFAAFllqe zNNMiu8S_plU2w{o8lDQoQ(hs4!P7AuoPnx`ih@xe@;Z|^sKckh3NfCgO`JSw{P}sK zP8oT+`51i~b;=n$u21IkRoyhYi+?G&Co?U=Y!cT@9^)wqTVnt3-~R~Bwb^{TO?hV z0I#>;hMYzV9+Gs>g4flH{Ipu|PD!^}@J7iWw%`tlcUbVuCxm=Wh8uRvFlgg0>xEnL zr&(~Pq|+^UQ1WM5@LWk}S@1T=@3!C`NoQN|j;DnF`4+rN(!~}$^=ZLhZo%uG5qPBq zZ;<>o7Q9jN*IMuv$zN~5TP59K!5bwVwBTV$w^;BxNw-;WP1-GF!PD1@e05mxG|As- z!LuZPsth;$!SEA@1vliUTX4fqGAy_uKg)vWOWJ9{4f)v?yj;?`7Tl0uY{6?J?Xlnu zGQX7;yk62(7Q99B*IMwPr0XnrNb)yW@HR;|TJTQE-(tZ#B;9JkollDL4O#G1DJN{f zb0vSL1vl!ECgU09?veZs3vSe-Gz(rO`7Ib&{^M;D-Df3*IQ{S_^K-ueac>l5VizPDuwXcv#Xc7CcwdZ5CXU z{b0y~dnDaq!P6vvrvmvk$esdo+art3tlhzGc0(vq%$qJVK=7*FP601 zf*W?rwcwSK&bQ!(-8>e&R?_7b+^}1f1#ggajRjAabe#onk#xNU&ysYb1rJF&Xu-23 z-D<%*CEaGhizOYl;0`%n?XcjLlGbFnQSKQAZQN!1Un}|3EVxtB=@z^}@@HD`TuEnH zaKmnH3+|D0wgorrmT$qUBwcL54ZD?F@H$CXT5!W|H5R;4(zO=cuv@(aZ5|S&fIBUCmZaSY@Tvzz{;&wh?|aJTNvlzC933)$wF>^6iQ>Hw1wUKC>lM6A!5b8O ztAaNw_&5a*D!6f`n1Wjr+&E)Mc&mb+MS%RZDL76InZJ;N8)xe%Fs$Hjo7|e#q2Rw) z@Jcv)3U0iYPrxdP6ZDtxb|?=|ML|*Rl&`(lL&Vx_|*!3nu5Qn;OPqfvVvzQ z_+kamRB*e3XDRq;3hq>Ju@@`?-3mTT;m=m^7Zf~K!S7b^d)Z&2_f6}(ZwjdzJC zIH=$cDf}%8zD~hg6?~F{w<-801rI5>SHZ&y{+5DwDEPGs-l^af3a&j8_5WrCPgU@K z3hq$w848}J;L{a6UBO2yc!q+%ui%*q{;+~)Dfmqa?o{x33hq|$as|&;aHoRjD)<8m zp0D7G6uel$XDhfz!KWyAxq_dp;FSt~y@FRMc(#JqDENE@uT}8Z6}(QtFH!J%1s5J5 z0vi;(zrx?B;4KOsRPZed-lE`_DR`@byA-@l!8a&)NWt9-9#-%R6ud*h&s6YE1;0+g zwMV1=f1ZM;D)_Am?ojXo1y57(nF^k+;5iDOq2N;$JX67I6+BD9jdwCA*s0(jDEw{( zPgC%01;0qaa~1p*1}!7~*6aRtv*@N*U1 z?c0;;)@@H;GDvg#gJrhx)ra9DVZPT=w+g2HXS|P~{X=%(fBW%HJP}5W8pBf5d<=ZQ`sx{m3!MB9k2VftaBY3dlMWcpsB$&3*X({~b` zN_0Ncw-HTKzDPFH%ZNrMw1|`G8;L%g=uDW^w~tykSEf>^eCdK>yOkiJ&b7T5+XHB z45W8F zXAo&%`gx+MsfyGwy_V=9MAtC=FwrLxUCH#lM4v>ohv_?s&LBFU>D!1NN^~~U%ZMIE zw3F!@i5^aLCetNEk03go>FbE5p+m&M^bDe@N<}oLuOj+XqC56+`4de;+enD%3yB^{ zbSu;2i5^9Ckm<9DK8@%GrbiKdI?;7Z4COV(#+lZb-bT-q=h`x|$C(}0){Rg5mnJyuEGSTTwUq>_zDI*T1 zXApf6(HhfN5q&Yy9Y1mT6HP0w0E5GGQ?^gyC7C%Tg9V~M_kXb;nUiKZ?wlF#&EL|;jCHq*&OUq!T&>7OnFeKpaU zOz$O{ru>m~roSTk8loLc?;`qIqBW*JCYrk1NXL&{{zT^!9b$Sr(KI!Qv@*Sg=ov%@ znchfr0nrUiKTq^bqU)GmOLQU8HB3KDbP>^&Oy5iNETTP3-$^ueK#_c=ZzFm((b-Hd zBl1Bs@gU!;=hV~Ji!w1?@wM3)nt z&-7tLFCsdd>13jBB-+XJPg6kOM06(8dx^f8=yayPBD#WT2h+QVUQD#c^v6UmA-dxS zE`Opci4HNno#>@Rw=%tj=w(C)nchgWkLU)bpC@`b(REC(CE8DP4bu-3eGAc*Oy5iN ztwej6zLV%GqVt))jpzW;*-S4Z`Zl7SOy5YfPIM;IB}A_vI-Tk3h^{8u!SoEGZzoz~ z`YNJV65a7HE`OqHhz>D*A<=gb-OBWMqVFU+$n@Dn|B>hhrbiLIis(9~hY`J+=o+R6 z5`7oZl}sN?^xZ^znC?q-Ez$W*A4c>&L}xRdO!U1(JDL7zGU)q=&SZKo(QAlKXZkCm z?DW zMK$|}%;3Abdh8q1G4`ys(JjY4w9_5<((UU!;)ebhmVS1D7?$?DW`C&2emr`OYqruT zwCEK3@#I1ns#cE;aQritiTJ-z{H9;JxdR>Urto?0q;2l^ekn_Xu)j)Sy@W6k-zu+i z>}bf*yeGMRV_!uCs1*3Jte0CKn~Z#fU9dpdjsLFMW^;fs>ASA_jGh3cedlT3!z0&% zQ|OKKuaxOWNaX(3Yj}K0&+b4)XP~3X^}Snnb=o&*MNQ#U`-Y%>eJf)9j$#$OZ{LuT z9oQln5ZDw-9l6E6-u3;+Rsk0U95vT$?IO;tYolD>3sF@r7UkCaL9nY6L9kHj5a_76 zN3v{pRETd+CiDus1KyB3kki)e+DGP&{0sl-u6^!WcT=dFySm@>~`rK>?1-AEfCi z$zx~j*R-;m`L?9j*dn3^L^gtLY%x8L9y=R1`|?U45%P-!;(p45wvguzG>8B8-TwXU zHzr_wPhs3ljF%)}tXCLU5o1OI#w7~l95B}ST>FxAn-lP8*FO7-pD{4rNT2b21?rOv zUVxDB9dPev+tGMrRL^O1>r+CoG>rHTKAtdZCv=OiI%2-ltN>g*)(lskHh{dQ`LBw3w3lb!FzxUw*;W z9Ii$e8Sr~3j_zj(y0ch!P7CPMj%Ln~-%GYD6z@lHa-80;;z_r?M06ZI-XokE41civ@FM#+!M$$#uweT!`!M%1z?|%63ES{U(1x;OBv|Ax@uf0!7vfg_F3wH(W8?qfHuc~DM z7>YP&#}I2A{anCdC-Obr_Wf1ynFgy&?ase~lk7YHLswhx%;MNu=( zofLRu5?Y@CO11wsguIf1DC~dXnQ-LxL1v<8RQta|9Aqsxr(ilyIKQlCP+lZyU%rEU zRn67+i02R5t6sJQG}32zx^UXpcf?@yZ7loxmKdyqF?5`wnq%4QIt~B!j|==bF3|A` z+!z(HIXszE^u3mjO4)+i(}IfB4?5_!ZdVS{#_lH}D@AqMn;YK)egckiqh3_Ez1@|` zs7@bKke<^bs?(#O4y`(^rFi71y*+r+ZPyVU$6c2Z{%fn#+aDdEI%PqktWN*Df`q$T zP@PiZR;Pa871e1wvBuHwU%*ZOek=jghbmKL0;Y8;)71%>{wSE>j>`!d@BdH;Nw$=hc4eMCN*Q0^<>MYTpteOh9s)nLMuBN;Od z6a>^ua@9qa9#HO8tV6Hl#6r_4<$f68NlU}Gs%ecK{ji_z?0BcWuT%tNS_@D5djEd@ z8g%$U6rztah5^L$mtr)|gnh+&49I<(sfO5>V2EjyWWK(dFdA3*w%n{ws7W2emB%~6 zVQ6BS!#f*pULY~dYt*)@V8YqQ|;93RntKzTod$4>SlC~ zZC~H11nHHB-nZy4QiZ(S6=)h4=rlW+cB%!j9SnV{Q@1@l)$CyCo5;HD4gm2S>mJ}{ z2Q#-TlhMH}q9CJ#>3u#^hGkJlJjDlTVbG^G9I(E3=nkFhZW7gYY7mS;m^!ff3HuqM zzY5|>w{0XkPJi$|;lH-OI_`r5^jB4oDEliH3qL@AH4_Y?zoPw`c=}xc-0ZLZiADN& zOhZ(r)&xu`D$|n*n7#mxq9DTca0w;2mo(ax+@n_S4N8p~XfNeNQdL zqN;E9Jr^LBkGqW|AJ<^acNJGWgwC##I=e9}!oG3>W;#CZ9#uJdcC=ZbNnED=*)3z3 z%f7O%Q^_;617g^0UryiAjOv1bN1-=Hp0|G<6994fQ~<8!_6=fcm$Q86mOyL3KMi(k z_UGb%Dyj&5&QNDEo_lGR-*qNRV43!KEGrEkHC=4ejKz9NK{US}oU1#s8Z z!zk~jFXZbDWPb@2rh4+%r`(AUPQx0LI9>PeS{@4K4>5!Zp zsgp9g%?%))eY1h1iqQ&}ZX48<$!JJ3DM-%=iIF<3#~#{9U88tBQs0I+x-E$RWj?5f8}R1 za<73RG4N2p5~Gp-SIBX|waVZU9a(eue2VPPhrHiBBhit6hYs~HuAxQKBwA_ha1U*D z`@&dvb=5cfXG$AK#7uz5cy+1ME$jCfSJ;>dB;tK5%G+V|4~cl!f!FLG5;5suiuMms zFUeIe`-enPvRMb}9};mKMJXSwe;B$=sdU^woVUy9A6DR zOEzXEkfF>3hM7F^W&*xomY4@ny*4?WO8?)7=K&O~*>6t)ffDDzY>Up-3QO~W)l|Rq z7l}!XklZ@2Ht+Y=UqU@pAQ*U0^i5Q+!dD`fmX2v5cT7QS1<8)-a0Z^Gy`eab?*`yz z$8=j)CZl7zn}UpvsrPiIlws9xGs1V(9B_Eg`&-<}{nbUC+$Z=yUY@=q{J-wxUW63c z$(69c19WnCfI)O}6NxpBolAk6o!r0#OjA{+f79Mz97!WprnUr34#7lDqT5~o6L)fJ zi5oj27`u-U)Agj-W(`AhcD?vR^q03jIK9Vj z(@8jc1zfe!ns`WkSB}MIcQ%IDjm_>RoRyYqu6P+im96t-`cNAd|8^&d$c5ta@iq=Z_et<1*W{0|Ds${%4$F;52?F$x* zE}7EvagF&8O89{5QZ2gEF@`1ESN?)CfNH(;u|H$YuLIT1RP@ls>S%`y&r0O5|0|XB z-RgSVRrN%RZ{N6tNTwohbyU>UqpQ>Y~8)tm^Iv6dpxCWnV6(&z} z5Hi}e>gH{_>rpXPZJ-S~l>N8JH#BTSsW)m~Oq3`Gv@xHt(K_gR97QV@?)IS&!P$t2 zAyZ-{dOL?ec?J3J@59hYjwX|h;vwJ)>N$^sr&1Vw_j_ihBJ{Uu6XfgD(J%?k3WmFa z?!Z=xPpbb5r9;OISdowA@vG}O)wt%lOBKU9#bsMyut8hM4zkNjg-?UR36#u0H0a1D z;_S=msHf#{Tn9mXIBudm97hXP5#Gm(U!I?4QNDX&FD<7Ln!xecu#1uJ$is-6K$FMg zN1OE_R=nmXh*J_j&Y*V?=j;S=E=L^2-FOA0Q5=>-=@cU>RVc0yZfr!JXA(M}5R)~f z>nSl`xEF@9I97*DV?A}~d+xyY03EAhD*)Jn({08XpI`#zo;%B!1ID-QJqVY|W3++o zX;-7DDozBTs@PX7z>6WmZQ1Rp;cIbM4?t-M_gjbzc5%PGsHR;aQD;J@w_GiOEeK2! zhdHH7g&;=nzx_-qY8b2fjL+#225d$#`-9$ehPg_qImh({%Qw6UtFj z*$y0Wq!O_zSyZKeo+hhOA*xdNEckPg+rAi0xCHqMmY`p>q+s_plGud9Qt%s}0LZINc#yGxLBz z*=YiSG#mpC@SuW@Ie2JrQQiL{{PjX}(}9;ZXQFh&r$VM-2e^i?!!?QPy_i43T^iZDB6I5*AVTRF_T#pHYI?ldcmB5aguQSX_?ER^#j#8I2Q+ zTi&P3qoo)>+3o_jTR)weC3K<9;omp2GQ3l}rX8LY*LAhaqxyx=K^Ofk7p8$P|{LhJnrmZIQ=k-WQ_SYY-MzNBDb5&!w-? z(Ee)iV#TF+SvnWP{CdmS9$n!&S`0v6r8_-n!-9B5Th<(&PkA?n`$2Q#s(CBwdBC;a zV4G;LwGv{o<%5j@W6x?OfB*z@dlNMJ`*1nnD%T5OZNb)3fN~!coy`MqGnOEiXv0&$ zD!QX}f@1)(9>X!*%JGv`Mo%k8o0a45TP&%pH#pElX=E5bIOudd<*far7zNf^BQK)J zK35~XAh6y&#?`p+T|^KgC7I9luOqzsn_O!al9 zc#mp!EvK}xO%`xfHM>?o;Qn@6870xo%KwS6=IE&^uCqU#8D95CU(`D74Y*{ zDYpu6M35`)G6s!0^&_~dTuT`$A zX?bu_&&kz8e!<_YZ|{MJsYoJP3TR@E`+|e;a2BO5t3@%~tJ?jY+o)=It%kfXr(x=T zZ{4_@DS^LE3bdhdNktrUR7l<&z6edNY#CyU(zTgAvrX-=#-SkG)rH}!$4wh|jeHf* zx5tSNs|A|i;wm1(a|jDKczKP+aOD13lnM>2@VtqhsmBTvVmir(oA&SD=K2)5o$@IQ z5YEqw4nK;voE9;V?Wq7AG{3UM7MDk;iJc=J(F`bTsTYg5*jD$p! z@+Q2{zF`XCA{%n)qZCr$@xXJ!vH_Jb?%^1&&qOT>Qx~}nvB@CCf%gJ?O*^E+fb#9T zaaWAHT(qi7_t4Z14J++8s2zU`E$aCRg`ivvZpKorTim0OY};<*t&aeoN@(U`zXxzL zzX&!1Z-+N?d*|UNI*y4y)25+au9WvG{9Rtn-H88B1`CqMITFkjJ*D$Y+>P}A$#~-( zXdQT_m($#z6~wT_*sLl>a%RDv^D@Yi4B~GqBdB&ea{W$rJCQpVw)yBSjz>_lV=L!#ucGL=+g8ly+tO_) z4^0#+*5dRb_24aPZT;g$#I7!Ek871%Pp{u>R!g5e`y=j6DmMs?PoyWIa}pF;;N}zMT>Xvt1WLTC82Kq;?Fw zF%5^Rv;R#(gg0iR{U$rcw0eI)MqtN~v}5!YXspHK)!98<4^1@8?=z!G!MqZ41+*b} zaHnA+-$b*WPFg!GvY+DWys@wO=6A#88e zCu^lW@FwMmVEgZ3tKKgIU~>`Vrq{aZSLq(v>b5_-70HKu6={yL?)X2Q)z1vL*6FS^ zQF(P&CK_kgruJb7AG|niX+>HkqA#&y3YCrrFj8nQDs$H+nytCkMH+EXLU*l0hIH4a z;jVR54$u^rqxb2o&b2K?_Kc?RtLPO;>7%VmcR!fYXv#%7*!?t)6sa|?r4Dj9dZt6Q zp{XBPvV{#fT$5&#D@WUxIyQLfMBxH8vopl_yJpI}YFanKY{2%0w)9*Nd) z{}R|Bh|y7|+kOH56GH%po=HR1vc3omWAYU&O&!N))!Ms{T^Fmc?1M$rW{t-x7*AoO++}-< zd1%nk>JE%g#r*(W@EKPnEn(9jXFRn~2Vh1hDyQmhZ=3R5QhoSF@2FTNj8%PTR+upk{whTTKq3ovc; zco{60#^Oi<5f41@UVZm5~DcUl3d*- z@gtEqx7!iCMhsayw6fpxMkbY5TeGvD69UC!S{)wS&n6ykEDtrfl7}1JqhwracqJ|y zUx#dbLx3F^r67$!Hf@i$>AYmsraSxb3m>#cdFTxa3vl+6ZL?@mMq}ha9*pJ|-Fhon z(qv^#GZN15RjlJScwM^pd}>5cXTml&sg0V*+F>~?i=rA)(!pl5(P?r3jVug~P^SfP zgBLrOR;;T8vE(c%F+^V}araKwwDee^FmF0gHj$pQj-=2Bc_1Z;r)zEaf5#{@p9-8jffA#^+B5fCeKBRd;SMcE zx}+F204O1mv@_i-q3|I$`7FSh9#cYh!}p>k^ggrXY{J?mwp>t=T<<5fR%ahhF!o(^`K?W*Dw@o3U%*^$3|c1yq;o>tBuZ7&~_)az`VBECf71i4_8R23Q*(v6Z zsEC+K8Pn*$g46o(7VmEH^%k^kaC%oKIsL2D@`nHTJU3;XXv*-N6*^skBBQ2k;C)u# zb-!Tv?i0dyJN2C1+&bf7r&uz_Q;2uMU3fzE=>>tESlV#(q)J9leYv`IqUxoQ79v4f z$*Tp$j+er10n{M0&OmKFslAXW?Ex508b#@AQgC7EuboxAC@G93 z@Sq0v8^|00c|V}a!i-|Al~}3kM7quaG-jvtT8vOJh;QIvvD*Q)0v`;ej-%z*G)t77 zm}W^^Cz~aFTM9#UN)=-=VZE{=kUsBD25hyra4rx(gPGdU4v;=Lt3a82NMspCqh=Fa z=~BBxpKHi?G1|?5mvf^T)sC9HN~2=xQ(Czd#CKwRTMl=RZY@nmaFwVu^J=Y5a-^_- z3-&=H-O)*iB>Um~?Ba1TrMcaY(){pA+W1=|HViR^qr+9tQNTIRhyZ@?rP)QEuF;`* z%6GpQ_GQH08|+3PN0G!($kuInWLTD+L(HLiI>u2p3E6@-2;V^Wg^%SJ;^8$d?t9!n z{4Dxc&MbFuo9{+`X`uu*9Z{}a%F50c`AAojM^G}6>BgW>-fdc z61y1oszI1vi6lXKkH<-~yOygSz@_d36!{TJN={#=!+R5UzUmlhqwVGsk;Q2gle?Y% zm*CMn{ZJ>S15ZE2=B&=%AIMpQ#NI}fOGsrAoX<4hDWP1=}&Z3=C!E)FVUl(Q)l!xw)$w;{n0S)Z)_`~VN0W7+~e3h z(Xc`phDJS1HEl?J=$!*ch_)B-Uu_snif8ny`l4x5`>W zlHhx8z4ynQvh5STp`wVBbC(HCUuTr+3bk|_K#3Z&5jBQalCbGUyTk+dyI?p6`qtwR z8na7`fmkL6VrVpJo7U-Z2k_RP?D~Oq(1O_IP=(f^aYmBIbseI1e1nppXgckcCE5Kn z&ed&X4^&hCQJ|V#yW#7&h3O`f=(<%G=7jWY8~_QE#ioF>%2g8Yy7%l1gYnOwK%tAtcgoK`07=Li@B1J`a} z#U8EfxTO`l`RGW$X4^GO#Xc3=HL?l9iN!k#@yT%c&Ai9RX);2CqkrFNE!E*DxELd@ z{gaUyXC|5z8VDI#FU=w171~LpQqYuabD~}H{1UP9atHC}Q}Kvwb7p$5=2!(J9o3!K zrF+t-g$iu${5N6*UhKdvuzC;uUmeE(69WF-xJ?dJx8a7Q9ax=j#iKeLqK#YK&l1>+ zn#1YHYQTRwHQvqs2HYrJJT^ujgYt2kzlEOgYOe&E{q*&3j-U$ldw^mLKpJY^lg$Ll z)=hU<`_xxq05S0Dk2jTdKjlS^U;O0|r28q4aNV*@{I{e#I=3U*7yCMs%g*$5b}O6M zUefHRkB&Q`N3(wbp6c)vxrIpz-~~<&;OVwUu=6q}qcquWzbZz{^SfwyjH%@Uyxknb zd{!6cJ@6KhrSV|aIhEn8B(=o;N+=}dUv1pHYfr`q3&o69 z4(QT8P#4ytGrw_o_HdnB&DPVar81l)(GI^w;ZhkCwj6UKqklv}1^nkAQGDnJ|L^zq z5u>c@It?Wd6&W9Dw!v9N-5L6OZgZ9Is5hQ#0DKYHnZr#vKTA39TnvG)3MY$)j z8Dng7nISSWMkLHZ1|*YJSGUp=-X@}(5c(+!S#qG6=8$HNKzVOZER!lrBAEe}$sC4E zQ6@uKvTrjfgi&BB$?$EaCP?!h>D!!1aGCtN=;?>UDP$lm{)&b|U(KGxC#e`Q#-QPK z4{+8zkYQpWVAxx90FwfY^}+D#2&(eil@R0P#FGf2QwILpIDxktfpsE~ZZRhgu&>W8 zqjKorEm#uC$FkD7gEJ(G`E1P50~UbO2ScipshbeP>+j*){MvgQQOVv+6Gani9z!q$ z?Z)|QQ_z!CNyhO0k$W_25x=rPmr(Hrst`mBS$A0AW%ypv=oI_qSl%^p^LdNSHRVgmI|=OJ(I%lO8pt4c@+tQD=fO%KwW?U_)3x*VifhsRheVlH~P4Pk~A`LP~s zRIrHgt1Ve^@2|8ZoqrAZDak~(YzjHR)AJxasR!kWil8!q2U4O~gp+m9?oUFK9#bxT ztE}ZR{{ghBAJOuI(GQ)4Q3K117O1|OBu~Oh2rqqnbgQ*sG9V>dFp&V{#k8;39Z)Tw z>c;!ikeDPoUe!gvj7;XWkS@JNa@jEuLItjNH+KJV@z~+($BG^|;Lku5F{%vs2jjUt zy_vD}s0*2A*93>oe8ZWG3$qf@exotyQE+N=40_4k2OWdHQcG3+U}Mm%``FuJ8!0!m zKG*;=58{nM6d5XZfJtQ}hk|mn^ek!v4KRsU3_`o|=-`PC9jtC`bV@wn;n~r1mvtFvwOBLT`ppWq?T`hcv)6Ol%HX6`2_< zlR0RBNg<+4;tw#nyDf|MliX|2v469r_!BCFZ!=F-%Svcb_&fWsY9di|wRAJiUmSd% zb!`g{g3uHTQDuv+uO?C4cD&+KS|Do0!+VeyW9UntpN{q-8&zJgYT=+LAi?7F=&NZe zE_%E(P?wDLAv&I9t`9x63hH+`l$n0WJ9WiwTEgKTlU8har_Nz4k9G~|x?hH!J-n_J zZ|{pjy7FV!EzMZ*jFm4#;_t6focQ}|adrdk>!+rhyKWBJM6S;Mfii0Dy1B?~SgXO} zKZVEHb)y#+X#g|_oW`!3vi%vDvU@^c+l0UydJewrf&*TCTrJKjZ>Va@&Z?ZYD%TDk z*2{BY#-CciZe7cSKobrj?5N5KRk?OnO|k6SeR>!4GXFY)vTL_)DLjkE1pzr@xRYFh z{3fysokS%aSV-CC3MExm?9|H6!T(ql!T%{`SUbzv$;B)`NmtWF)&-`lyC4e(6_U!% z!2ii*wDAqMz;fOWc5r`}sE3*dG84#QD-q;W*?iA!-rmJ`i7M-8Zg0blp`dyliu{) zfnhZ*21qH7#F3IZmPSZ8I(w*6+Vhb@Name0zNyk`|Gp?HVgDJ>>frplRvY}Iz>jU& zG|Z8gLtA8|4P82>i)3o#n!Xb%AL%2Zls6H8Wm_zHKD&huvSS$LN^76!t8i$GWGNju zD&omVXev#C0;&Phi7enK0H#R%xU(ud$t<6$>~0bcalPt9OOb{`OP7*z#rsm7comoU zP$$IUluq55#>bYI3?v-6OP2+XwPGm5f3gC*$JkkJCt2}0=x z6v+qTOA3aCz@(<s~x>DSW&dO<1ilI!*|_IM;J43zR6*`aWS8ZUJ2-K@irxoo6F>!W-_aCXNJPv~xTtS(s>VP$P^mZYAWF0|eJao)vR_li8W-F6e-# z)`{JkAO0o2mlhM=qJ)2oH3{q!#-xY#EtjPVx}=o4y4%5UnP4 z8wmb^0o5H1FAFTWpA> z(M&$~wm1Oqu%+BcR!7^6hL?wRzIk;?ky@6r3Il`Nf2EOiXD=3BZ|1{!@RFexi^dVG z(T&Kn)M%BdQF~A0%Rg$~vF#e9Azfd*aandFImTqfh`8||lIN~SZS!#YL=N8Lh0%Z_ z4&HEpI1M=7@QE-`{KR-p5JxB}!t;v+VLZc#7j^(86QxBNNR-w=G8gM;Z0sKPTbIJT z*tw|g=SSAzrM4`5wiU1LQ?poY8x8_}@BR=~bM*M9*d79M;|V5tCrEE!^1WI-aY^%c zfeBd*gnGb6=C>^{NWouh@~4UtmYq>I{3ATp^;zS zXpFo8y-6Q5Meuz7n|(yKqPdfp8QL15qfkV43g+r4DL;zQXoj}6)2u$ojHdrnJznp% zR`zMPp&n15m}q37M0-~Jm``Hq-B#sjr`@ACA;wfYURaf*2Jf-g(XhoBNZ^f%I{U5XbaLax0}A

    3+>=-dX6*t!o4+h9X@<#LU|miY%sAjI6P{Cyd>lW5@EZpDJel9fnMvP0-vOe@p@u zB6}Yt@yc4N74W&)%aPl3Kne%F8y4l52o5DY&g`H5Iu^;A2hLctWs=*30~Nb5il>4+ zf;-4PNIUX5Y6tlT)uiwZeQt%#5kWZGJ{iX}cc$@v{1=n$^p|B(i!uXLWy% z$b((7dURABTQ}C?%BJwtDzSX*3)+pG8QCIj1>dx$L|J@fS)42`#>qZ0wsQ2|&d>C! zjidJi{A|to;ejo%!7oKa_V*B3Z|{N9{0V))6EB#3?lirh}_v z+F)ESt95^)9Md@We<;V|4KDJkagP6=a@_BKE64q!W!z6LIYqw4g0Us{k$d6#zlD<< ze;W)lOJmg_`iB5Jc-Hw}_`_9)SOd_$i9bmgSB*of9|y~cY1kyIE$NT4{~xfWGv&W? zwJZO3jOi4wC~?J1`M+gOTD$l!eDi`fg?uhAktOFzaHvakH?XZlL- zZtf2;IO)<_(4n;7$ip)r9z%NBS}4nMMq{z?KO0EcS6uxo{5zo*hul^qlz@CFO~oN} z-_&>|l=fTb6I`C%C?A-_nYGm;-7{J_TlO2|Ex8bilSb8!x}uHsJrU#I+b_Ovj#4 zl&po*%Z#sHcgH7u!gt(+|DL+R+>XX~PR4D*loRtt+q~BXYIs>0g!VH1*PaV77ofY~ zg9(AbSgf#JC@8%j5xtpsKQMrZ@K)y2Q);k%fpbW<;}MEYoCzaCS(8-TVZj{bggN)5Iuv~ln4dl@5FEwT*%RbPsMqODahK>mc$p_?%| zu)RW&-RUCuxoGgnP*QLtT+4PpV;=;1)wD}4-Q=q7MLE97@!Vw>4(rsx7*BxMdbqfqY59{%O&v}v2 z=`Vk45t^0&e*icv4HHn%gzAF*5!y~e$Z~{CD%c@xJ8fL`WrN8g^O^ts3Hk`Kf4=15 zk|`BIh>+Aq-_UFh-v{60a;P$cCIljErV~X>GSl&f?7ot#7m2o+4C8!zl3f1X_LZ}Q zCEA;0=8{dRMuNkP1dobvIO@w^Jjuk&mpe<_I4k!dT)h%Z43DEWTER zb=s}5so>K_h%!S)=~sis1EprxV#RpG%^zM=sq{IT$7iY_9qQ+67*$#4WJ;X8f3({4*XqkznkdJyCMwbpNuqw*pJjF~x4l2ga{K%h!)-?TDG8t8S-P1da~prJ z&H+7HHI!8aV(6=hm)tEjOYJ0pvjqRYP^mFv7`0cQj`H?x=1h9!3GFaeP2m5;ZPph5 zYY^W)T<1G^ys?qs5B(kK`hqE_8_i@V&G$6%!i03w7QNNXEMz#}=9>w!-%cN+!$NZ< zC~hO$Hye4z%V&_M*m^7C8D(UqDx%V90WIKfBPpC49Bm1(wc2kMCWnnt7O*<$sM{`6 zk|A>~-Aw;;U7Mh<7IFyT0-26=Z>~re$yj9AXz4=Y$Snpy&I7>rG=(GQbkpoBX|2Ps zJ}WrJPX@5B7>)puM>1IZC?kVWRiD@t&q2S5%Cl{CqkPDa)S8LXT(Uvu1Oom?k&N-Y z3eS=2(NW=LJkkrlXxb6l4>FU7*CHF}$mi%RVmNCp+!>xE-1%aY-8AgaFGsbdq%HB- zo_&6h_WVUMr__vOg)A1L`1TdEVIh>*!{F6dliIQ+!`4va8#6=2&HNYG?46jngEm>-Lyqb@LAxLLgXwO+p}E){?K=7xkY%6te6N< zgo&;cCPMdtbKF$>_|TQUhQ+AnLkyj>#3uUspVCC1Y&7b_$gP2oCl$O#4u-Vbhlt4d zn^US>Sq=qFlFhKF?Lqw2M6<7zHGbuV$e8XYufSkPUmbN7{u^_no9rteB%g>07|#3w z{y*wG_y(Agd*L~8eEHLtjNA<8yxPdF=&JUAPuXp^v4(~u$^xunW?`qROBN~uNZ7WO z0;28HTgVR;JKYl(y9iZ^od6U&-C~Lz?Vp-3-hd_fFhAWzn}YH%NVEP^D8$iCTlBt< zD-p&#N2{_%GitvbBYrdjHN=XaV%5tGTSS|KdmEz_jQq*X{S_>3vWluJ+^?5F@j510 zO-tT60S2=)7^^WBCOB%x9f;CCQTNk5){Z{|;C3F>#|Z5ux0BhiMQ97!WYj0(fFulyGc|y(HkCGumPA2(L1rcr ze*vEOla})Mf!OW0AH(&HGB<{K@D?Kwys*bjaxHMMDdivep2??VfUwJGmTSLAB+mVi z{6n|0c^R(sO=eSlwP6r4BfLephfBBz+9Wd)@`p$kZZ_;y-;!Zrx{2$frX$^AO=l0# zB+17es#az?Amt8mKY20n2nF4O>7w6^>r&b6E5F6iP`B++gWR>v$Pi+Z=|n-$bVr!w zC^Xo31>H0s=@4MM#kN<7F6?o>S&3iyi>E@>nuWf?c# zZINL%!jO?_$oS_vLq@>A6G}Gw*BMINzQi9Ql(kYiz!v*OTYRBkWKN3AG8DbDS-2Od z0mu)x5i}kVe3ty&jHZ@Lcebg^NY+B+C)pSW-{ITLx?zY2qwkNr4!ip{vyJV`9{_%6+v|H1IB6pS}N3ra3M!EB`TUapf@W# z`8S7kU|3m2LX$c$s|joiw2bV)+$MHl7WfpCR9Sy@FMTrObmNm5_Y@%R(${FZVNU7! zeF)yrOT#xL>>FspXr5N4Gs?)4x5q|oj^dR0Mq0-Z3G>j9XPn(sQx}T75E{z##aOnit z3bfNalwOck3PgOtmlQ*>b+`kVEbkGE2_52_CMZ%m9BYINH;8`Vth3oUfPAIqH4TrxYMjZicv+}FtnHh(56d9?v_*f3mJY3> zkRU#nf<_kySV&lB`|puOoIGg`pMjXPa@h&Fy8^9Au6@3FosiS1E!v3$P4k=O3?t&O@^)n~*br_=zl}I@MgC$jN@r6Lr`TiIw zTv25d_Igw2Ov*iuEQA7h8%7=|cr^>khl{DfFkiZnGwAzye#<3~Sa_MNBBYg#@X^aP zI4eqdp~G+@=k$G;fN&1}U|w3}c#2I?@R}+fDVp8?1M&MR!dOD0^FmSzts~+wjPHGs z>FDf8zxE75;Jsxvpq7-XM-eoh$CZguZtRYc4;O@PE)8vC2&s=OhxUrAoNu6q@ zNuAm+HJ}O;atbN3WfiZIpc+amvKstZA*zC8jsK6mw}Fqds`AGtZAt^SPJp0YEE2HA zL|Bc&YHN!Og;@t|G$PR;FIxmkb*WZJpt?<)GR@L)IyB3ITUhiT6|_o)Ebgs;{{eR1cW}bWRx#ymH?z!ild+wV{ zL%4xq*RZ0_z*p!30Yt^Y#5Sw4k(~9Wpj=DC@6Ru%CmsVNDfg$F(R!;tik9DtBOa~0;^V0ss>K;CZ#L+a1H9sEizYsxR}#7Tx_{} ztVJ6bhn9=JJ%7%Ztp- zRkjntGij9Bd!SpmtDkpF_9vct30hkGuW_T$E{A4^;7yedouBS>+W=5FF&I_5QT3qA zthekUo}m~-{ZUw{hQsaOR>S$@Big)Sls3ouO{%ScOmlIZ=)>`XHfpMUkI}FBsZX@; zNye#%_f)KU6@U%``^9vqA!QqIu{j1NwsgEOJ5r7ATcLqOe_^^CS}faAjYDVR!eU#< z9N-O1@-RX`IuS?50M5n@FwIQySXhP5?LZY^=Ea9r;D`@)DZ=bI7591~4yWmS*Pz2z zfjv?cC&qV6Y%%FdEvW zUZZnj*NXdn+J`Vs45B#(se17{l%S837pHL}5jI%DZ)sW#anrE1Esu3Gfbu|Fs(D19 z3mi4#g(|c(?*M4t0}=j-V&Mj?jH|icds$M@B?BVwiTVL4QT?-isZ|G2YEjKn%{xHH zK~#AA#4Z36YU$N0&r|V0Q})DNRShNV5Cz7ZUp#i z(|N@rz~RoSfq)+&ouCPa(+T1*N-yK^Et4zE3?BW1n-cQfkUF>ua;dgmDcp45xRdX8 zL_1ek>NK9#!w{^8U%~N{jnmH`k+X=&_PuHn<6_S3zu*e<~_uuWuaWjB&syK(p$c-i3?< zQ*|M>Y?3gMf|g6GalnF$Q6)II0u}2GIC9Z>ARr=(6VVRDw#?b@medLnZ}+E z!=PNHhobA=9H{iO0Q@U%=hNYfLzOphx#wWox#Iukc78Xm)kUSh!4;WtfnIGzMd_Pfi9@0+e-u?3~iVGBkIw#i2eww+wm@v#l9 z`2O$;Q9wg7ec1&CbOpk}-WcdRYM2&jprS4>=9=p}rk2!9sAjNNt6{3WI;hZ!yPT>Z zzgLHQqftSBWd=wx;hufv(9c94r$#Gwj$L!w$?QY=&(SQi<)2p zS{H&@tabmY+u5j~qkeUe?HuZj7;646YGj^E=~c|z?Rs&crU4^Cwm1@twn{s&YB zd~rnzC`gr4K*7kM0{U1O8x#=EmT#{MJO%|vC)}9ucIDvyfd)SC5>}nO>F{G}_+^AQ ztd5AQQ`?+PzkgBM65;8FP}?Q`wLlE z5y3l{_K^a!mVz{%fmm+l*b42OSV1%ZZD&$>ZPe&qg$uc)dO)F$;P)3CVxsgz9j@u5U2bW zI7Rs|r09qq#%Q{2H>x9RdnchUo(Xe0-QJgO#ETwC zz#D8xjHmifPYK9c51lXG3mm=k;sb#*N2tJ|r(>r?9Q;8A2TtS%D#&#K`mvGz>Aw$G z@CMWXcr2}>Ruay^vXvaWf&(iC(v8pn!3ur|sv_M!6t0}9+5Q&;HQNzghxJ9blJ~9{ z)9yj7@0l0h9$oi-ECu^oqM9qnSh`C$>f&1Fs9{>h@@Dw!xG>H@Vi||3$*wNVK%j!p z%kGXW+PWM_X)@g9(EVS-Ur*)5%%U<)-gc+`Io;pI#8CXk= zLbXm=CsjT?p367ONw5J7)L_~^Rp zvC)bKbu73;QTJvQWXx$ytd4tPvC(%eo6tOK&hCS~JTG2Yc?f=W+W;VFYJ-I2C$W6Uyx(ds>NL^0LAHr2K!k-BL)2G&ax=}Or~$zH|xq4@qG_Tr@C zJ^1cXI(jS}w`v?q?r|k|Gm`?YwSb$_&1(px+tc325!_iH`BSA2v#dUplN;WI`V)sS z(R;y&9x?(qi>2Z_((!IyBr{QBV9BMMZ&jWQNUpHSh%E`X0e2*SRXTnfES^m?UYx~) zhTfLQkglg`C_VQaNX;~ZRK4>o^~`}meYGxginRp$(#^oryovtQ%(R<`8B8%)(*p))1oH9hNA|mOxM~N9YMb)~g z#`T~eG#4b)+zp$b0~?tYb}>nMT+xnMJvk! zz8II(9l79T9Eh&xaY`RUkPj0?v8pYY-RH+dvtv=pww=DoH*N*;Q@iq&UHOWxAcIC! zgoDx;+J;k!12WZN(KM>80{dx1ey7#TbRUvj1*uKO_sIUQ==BL~Shvekft{$NTSOnq zTQ?V3(YNlK4}i(&vAaUO9_t^FP2mpiC-49H6lfV#`H6(6-bf;ahq*tBJ2&=XXL=l{ zr_GD+U3H)NHrQkz6O=}ngi-7JXQih~=&}4r?rFiv-~^;Ib?=$@8?Enbzz_5n<8Z5D z3x2Yl=i)B}Ei(LL{6QjPqjeELQxQe$BvZ5=H;2?|4DL>|VD;E~D;a8S3^U^SUzckz zT8H3yY)8dBN|r7^OCPdy@gnGPvUK}ddXS|XS$aydB&C8l7DyIgYs)+dN7o;LVDffG zPWE|_k68r50PK(qFkl4bNz8fNRaRUZR}T3(PfA;Hx1Bey-ZMnzrXCz(S4iE<69K84 zcJOaz0Dr;k9;V>EEB>T93mTG>11a`M>f@E6fDyqgvJK}EuWA^1C8gUER)E#c!vopiy*l5+Tyl++J zF&a+Kc!OA`XVyDR);-L+$Ipsk!(_!hKD1x_tT&mgttRUTvyLz;Mak6hM7Wtb_^}dl zeeF>@@cxyUvuo#*|%P*@bY~RVDR4CRjGCj9`P5E8DR< zRQ4vr^J%8+eJp!lxa`t;f9=UXN4*GTX6N8ILyMSqDMD zB#360KjG;@N95c|244L#%MP2;H?bH(>ja_(n-P+IQ^aDxKH;qQYjkp0xfHNI{N{#_ z#iFjk=jK19=u=PBQBXQ#N!MyS?c0s$xNV>c$!vj23Nj9GHF^j z#-u472i^_C@_cmTjhuU=+j_wf-_qWjsLdvc3=8Ksu1?N|T5H5JNZ}s~t zghY+&=3CS8O{FuGvN;x1sy)65dpuFfL~~V1uI5d4GBM$d)0i>2^j6q*cB99{n;)Gip8%uU7wWX*4&3^fE!rc0PO1WB<>y!3U$ z#O~qmO0Eq&BNXS0$GB;>qV==GUzTXCd-tey?+)>JfvJ1J5?8$b<3#?EZX7$b{s^L15=oPM4)^))y5~h1~|8% zpO~WS@kir+bDpDWE|;brtiqHgb#Ep9!hcl2NRvoqmVl~-DY13%{x}umn!eUr8Z2sn zHFrnrFYJldU)C3`Ukc-pG5O(p!ZUI}Oa?+ISdx(0SFf{3@-2dQvOi49zaKdSjujI$c^suOQ86^R#vSR$VXa8w;FEh$ifyZ*H5VCv2!HhJ zUQ&{Lkk!NizOQRY$cV1tqd9nY5v0tJuaofAK!{A7m>UpGWW*pvXpV$3gvNU?!nRCj z456(N7)liA%TEAbJ8KY?e2{-5%ipzHK6uN*s<(k`HStlGijYeQXxss~Hd9428oshcUULC&Y13d_1^X#V0@NA}*w3)8xq^`>wNhB1F@= z-^@u*2toq|;k^)q8?P!W2;ZFnK^Q^fqXY<0*1Hr^Dg8EILl+DvlP#>jlg<(!al&7V z*^Xxp<wa#2t^Hum9)gK)z7kA?wC9D&bOcvi;th73 zRTDu=AZ7*O>C>6rFGq-%*z`0?nZD*<(j&qNl&~!0CV$Rmpff#m`4T(?pc}Ibp z=s|jd4t>80wfiF`_bi$4c+RSNenqtN65z3yynYDZJT4hsbE@`PKs8~15GEJ{LQMs4 zx|_4D?Qj&#@`;G&;3>=i8dM-0AB{w};-QU&(KUU5!Uy(k7tUy{8Gb>6O|91?3+J?+ zI{dWYXoM4YXKBYb{U2-kQ>vg&_za?_ciIo@g&E`Ls|@GMe;PK!xP?tC%5=&^GI8(- zPzblCtocliUVjHH&-_%=V32PWey$C|>((x7gQ@0?iBw~EHog=5AXBkan2?{?Lg}A& zv&j5ewtIF{PiNzU%rJbRwBeA=JgO+p8yU@H!#U=>Qr5-uaG=>V}VBAr-5>9%`5WPq?Y1y8}41~oI3y7pW& z#6+{qWEO`|Hj$WJIZqu=MkiZR{MJQI#V^QJi5Nzwzz<7c|%b5gGY;eHDQnWp^?Fob>1 zu}+0i$S|9RiUmqsnLs$3i3Q_rE*90Y#6*H#Y+wg+E>NFwLAlh!K%&0bA~dFB7s!O- zj7zzmI>To}48;xr0sh6v20+Ue4dn3*$ZpKJHt zK2y>;c%?9ph--E$Zr&^JN&PpM+E6C-3oiAPGN~M|zyh)DL`R31aVk>ngBH8B?MJXgfq|6E8M67b zXdp$G%q$a(;)i*nY>Q*|@pf;FHI2dT$1}5c49)z>RWH_30&PV_l?CDW<0|tOm43po<3dFq0igtmMXB4d|_)XN_Q-W-sEUx z_C^e;@eJx{Ji{_>2~s6(KtfK(bzCH1WO^|HA6FR?YRjd+7wN;xrU`MVA0`xinZ!>@ zw*}38B)VoQx!w-FO57r<`&su0V0w;{97(rrN#nV!BK7d8Hx&1VUZ_B-2a^pw__7k18woQG z13@3OMqBIna9Q3dI+6NT*{U>evD)SN!;0xIP%Ou%jjFZn>hS@yG44{C2zAmL+T9&_ zSCx==-o(h0Za*<`X}fCtT1-q-Y@1u=zHn%_u_&K8f zi4@jRv5a~j4;Rva7`y*Ld|>AY1`Kz=a89K|ah0IpRIFI|i_E!fY?kz}@c^l7p(AId z7S!=91QEkqh=))*oZlt0k+4|(t=QKEKUf>x!!H|+!E0wKJI6zNvpqm4r3sDNB zC8$as)ou?2n4PSI=aED$#OFKZ(_ruDfX11-Z58kQfet4gOf5AsdVQzGkguBm_clzh-K2`ZqOQ$y!BoC6|ryxm`*DC`g#hGBzDrg8p)wJxu?~(~A)$ zh$sg?j%w5((Z47m>Trvd46;P=Az(w4VQ)l;+Ez?LZ5TJzj#n)nV5v88^mO@k+rM-+nksSD8tq#Bar76KF-!55+VaVb&kmze(&; zFKe&73D}35^vsxHKjkFkDLLZEKnYDviaypLxzGDUr<|{ zi>QtJ)E-vCizTGQ)n*c0QsLSpSmL!P(H>vALa`fn9tTV3&dYXeBqx+6@T)uwy)5Iv z$cSUQdYFaM>A$EGCy4nnhbS9c6!>0Zzq7IB{%5QC1iMjTROSe%9}z-!&yQD)fIehO|f#IpjJTN z8Um#xZ-f&?QdJ_L;(jg=3_Uw_Cw5(o0cTf z7n*e^&RORKTsVs$|5VD+HT4iK;2J;#{W>}GtpHm4ocePvHU6CYtEB_vSl~P~pU!x5 zRtI~ZI84(um+9%=YUDBw(R_Wnc_+%@bzX2SC!$+XdORm52aIFqV}MTL!oBo`3W%a2 zZvfi44`2B(VOjP=fH@JfWVkH3qXxbJ*;n2&ogM(Zqp3*28L&n?8T--x9P;2*(BVzs z>j013WI(Y8fQYx+Y7d_e4*(3wIlfb@*81WM^9sOIaC}&QD0#CNs~qavD=2+)5FOqh zHjrxDZYWq}ngGpU)#w1`r9quxMA8EUJ08y0N~&}yw?M$!SZ^g=T)aC(ef~i%|BB)w z-li&e2+IKMZ~)WF1Ki;Ns>@{0xYU|5sh_i{5u7-M_wpj++RAgx!ip!F@X5sLZ3Ae) z^toN^X(Kqy$!!;_`?(UCu3X!nt3;JcD^>&4zVoOO&ZAX#jLUN{8awQ&+iFqL82ryy zA)WkfI_Q=t*pb4!YAOiqt4L7}N3gcZBGb~-*;;eAt$3dnf~od)8S%dpDIRBX@P-ix zR8Q*=L<8zDlJ+hfxAGj~Rzn%&64U7q90$Hx!|AmWl$lXcV%ET{!06ZEu0vRdNwyAT zi=TKyIFYUAC$=HcW}~X~Q_c^h)F1`NrByf<+t-TeGVI0UPsVqEGP8NX z=EI@}aj?&hzOW(L8$l*TS>*f7wbO8pmk~*fJe6`UWvjqk6!Ge^#T?(^sTXM*zWoQ%08zKwoRBS%D}7Rp@tI zs#$?hO3jF~&ZU-9kDt}lp{-JJRK@$f6eZRAITB9{__xjI@kI!{^KXaBszru?f7`&H z4S2&#H@cB6ON@Wpa`X+&&c6*)0jjON7uoPnngBWE+YV2?svps^>7y7**7cLr!(h38Yko@VqsULWSe!sSKo0;S8~eRaGn& zSO4xH|MOy(xj}VDU{Dn@IEdydQaBq%i)2X0@;#O0`3^+%YQ!yQL9;vxal(vy$EuA? zCCA0w+Q9nR2wl4O%;pXC5+WqZQoZs-0!qv(=5#iua0MdL6tk3bmtFxS#7K%;eMKZ> zey!RF!RidCJ-}-cWF6NM`hedhV>A{26su$)(7^m&hQiV*6b6shrxZnksz`k4ey+qsgOVzUgMO6&_|h* zXZQ>|#dT6tKd`EL_<{XkE82k5gmPRYv{wDa{RE{H6O=OhZuyog{!kK3haJ{vIR5t) zMf2Sj^nv_o$N;(w`vcOZ(>~Aj-Y>GO$)P^8n4C{;PxyBApDcc(NPy8eV1^UO5xB}h z^GLd5790;aq*&ID+@a$LddLj!g*-xX1WtWpCnpt_Xc5`EA>%Ae5E!LTCX(AGrOzD1 zX-jYhB?Tj^VYEo3oV`94%;N$=shEBU1mtH)@*8-@6i-@OsKCT#HlVnzAsru_7vC9O zw;a=bzcY(6$C33^a}SC{d&-z7lJh63ai7ii1k~i9VKYl`{oXbF>U|V4?k-8@jujmS zyBCWGu+65JU>BRhaE0ui<#VVi9q+*$hBp-Q*Ihp98bCS|t7ez?S}#nt4@Q>b5d7ex zl{6Yb76f@vtm#{ErLi4;deMLp?}iFaPX}fA3Bz`mz%CY888wElLuQ}MT73G(>Gglu zf1uyP?q-ZJLo7ueqVTocXOXTf=`XwiP+*4K*93t{w(nT93a`IXY(%GL&gRIII(LAB zLnv|xk+@iL2U>pzx3R2Ss?HuGv~B;0VS?4lUm!V`VPD~nvbPfOlGDv36K;XC$WKhS zP&Q4{Nv>e=O@tGqa1y-ot3?|DWd!nNK^+1Ym@#0P>UbFg_TpQu0-rn8ukWWq_MCO} zoO-S$!^6mMB4$pQUgJnHn68@afKg>b;PLo`ehlMWVhoq3|aGo@GFAoOL7t z+;Rixt(MkbeJE%hHHg6~3QsCW0?@_9vMJzu#EO=;4o~%{`8h(1W4crmFBLW8dD*SxP~)^X^pxe&4PIDIOl7K`QBX-A-A3p<(qD zj0Mb38d5SY2+tgux8vlT!O(&-$_}|^O9gO_2{0gIp(-#)=Hq+Eu6q6@qN6#vbYt>w!cn$AA4Aq1Xg$JzsNt5ql;h z%d2FU>&S`=H9f+ehRu8IIQWxSipRkw%HEU(JCBcG3+V_RD6si(JsbB8c+8ScC;BiP$z5yJDucmC(ajn<3bfXZat@sm| ztFF&B1?&@L@D32rOV&WMqjdfo%|ZbLM-=?)pv8$Gom#s?7|Q5pRQ zBcm6C_|@$@w7q)u>9F2I(M@pNgqPEce#EZQ0hiTCVjVKtt5+^X0h~F9rrtE3F>LZD z)71?K62q8e-!#x!KoB?MTg*rY^&;bsL;f5|K?78B*vTS#wm^3SS`*AXQ7dRtuhmpI zd8Qd4ITCrvQ)Zfj4dhjtVCIn{!CB^+nj3S2N&_UhX9sdm8-r3a`LvY&PBkml2}T#e z^em1E$|wvvs<=UHKnkVAM}J}<1rlKD zQy%|;S4awML|L{T9t^j*kMkLU6Ox-|iDA(Uvu!7D2H6o^|0`~iH4%7-g-wv^ViT0t z)ND2OupzXdDi!Jlf0X|W3yb?hVkogu64~f}hPe{AmqQ}_AoJqhiXDE*K?!8ZEX&_$ zx*rc`s_yaUBQHsuh>UBqrzMU;0>7agPec9jeFz-@&|}a?UL{;D*x8erb_AGF@q|bX zE>%%i0v^$!b#JCu*AZPGrB_}(n<^Vv%~aNhy4XS$oGrH-kLWn<+(4tlI?0rumbX50 zW(wu(X}%R&C2@O_OLLR+OC`mwhy5By*h$sW9M0CjmfD@?(F{N50q^o{h^ee zy?6u_eK5Xvb_aS3mUg)n9$y%`a*E(1S0NVH_2?l4_KTFH2vQGf;2MdxfLja42*pG@F zQaF^b?mqbHOU1U&xunn)g!5<65(qN~ET5n4E{2~4_~Eo6wxljfJe4N)rmjFm&}s8H zuB6rG*%BP?lud9x?~niW{sU`q#rMt%uoZ`7ci<_@>&Ae>Z~4y{!=2r~#3m+>krJ}beMV*T?OiKG6>WjkUu5e`V`N;@NM z=Zc=0tRiqEw4M`zt_HvrqM?$8$5{S$HqaTwNsDOxc2v(Jn zy%Q|11f4dT6vkq;5IH*!or$hHkmozA5J({$Gtn|l`3c+P8`q%*Tz+GW{uT<8aZV%M=D^D>)IOr%;IH`1JoWOc8DtIT(4xpq20y9$ z8&G#*=}i4@$bI>_U<)#r&eX3}_)KDwHW_)s24Aw(vZNYfV0|tq~cb@Ha;;5 z;AKlR3QKLA-OE&NGqZ!tqfd1f410eIWQuoUi&O8B`2Fl|8&Mq8sLX`;&EXf49QSuV zd}Wv|F%XJNNgNbHc+XLE4X+tUw)aNN)_B=WHl*90=EZwg;bimeQ0v}Bs-_`ulKlD{e&-%h2L zr&|yiV@>qm+vN^y&IQ+^H}&)5sk(JXFX?c@@U zRY2g)rYbFw;L?h3CTyq`e+1Fbe>~X^5^8Kw?{*}#&$n^Mj8^=bUlfbcwLm$1_Y{ig zmPi{N-%_z>K@}>dY{)qa?6w!l8ZnGqT$jZ4iC4031y2)*?6%>465JvQ3I2^0;xDuG zP=zW{Ix>o{ppQ8z!7_8k*A6`iFZ6uhL#L-%%58N?ZyK+dWI?)5irc%YmHlY+t`7a& zShPxsZak>ei4!oo=8Nivmi^w*HNQqK_6RZJPz5<%Cxw3iRPv7gGZwk*SRSX@6Phm; zooVb%EvT9({7lNRl=UQr4b(4n2Hgjgza`jAJyuz~lEVTn8xs&qA=o3aMNU7bPOr(+ z;q_-Pp+-so`UxVJ@gCOM}YFo~yOeB2u&ts3}D}Ei$1d z263Y!J_r#@q($Mp;{uAwdk4~b{JA+O|5T4+mF}PW`AB*>G0kjR{ z)QAQrsdEPtS+QyZK^n;}m~O@lN7gLO*fP8pX_C<{Wd=6a;bK@Mk!>iw%tG@vTzv6> zY{N^xCy{D^SFqxdL}q0bKb}q`A3@Eo9!aFG!MnE0s}jjy783RNe_KU=^5+Fy4Gr_S zPbO*ouO@CcLl_IA*M#@+ufJ5+b;i(SS*@CXe%Uu=Qf=KZXDDLaVk2e^D$^Y>XBHWA zhGo*U@mN_sZiexfen*7ZeGx)c%rV`q|7tAKuW17?w=AV_(AlWwmsnzy?CBgqw=uyO zV*r?Tx-7t@p4d!G0O~qfnt(~L68KoHOhcdGa3XneazVAcZm`u7slz$fi>~>s3XPT> z?OfwpRCZ<&t?MGiN6w|wN@WZ}N zWfoRH0OBI9*>A~7zsrp|ybc&cX80${2<$K0q6_4>1FL#rmkL+xlmz!LoxMpr&m6X$5ax1hm<_K7baN9rth2&Z<(_R)?(Uw|FH7O`7fCSqJ_n65Go2 zu!FEvB*rxARl8v*w&;xj=o34i;}Dbu;KuYaSOC11AwF~#?k4|nBK11E*4;m&1=fdX zX}NFwg1rTUp!O78`J(rPZ5I@=hD_5T1l8I831~yNrzUj1e#i6Dy6E^=R@yGOOrBRr z5o{BliEF)BvDRi1#7Z?`Ce#?k{bC-{EMSS5lX}4=j*C%Lc_KbIDiKS8k}Lgb8toDuQbav zR7I2+Am^yTB}Xus5z3DDHz*5eu z_a8W`e*3~yPVU%$w3kcrJ8kOoCtM%o2|F|;SK>Q(UYjejyp;ZPAcC4`!f7)T0k!F;#KBKU5EjC1HBGZeoG-C{M~CqN^u zn)(3daFP6!2XMxbEf(4o@hd0|2N+y5qK{SGM#f|GFd!v28{T=pzN@hy&X_~=%$l=3 zIPcg|$BC42KZ(TXO6k?eHirLw2nC@-xV`uY+o>C(rv*6^+F+VvzF_CZxAJHJDgH9h zYtK+s?pTdx6b=O|PC%8*Cj^SZ=R27nlsNVYmg8?2z+)L$92;1HONE(&tpXTh2JQ6r z*dG;7u4kjG8Bn;#ANsH2^eITsf6gG~E&vv1b^!=}ANiybr1?299D)wPnSiU-kyDRGZ8(zL+H%2Ko__*kE4J zGNe3;3i$mS3di7Z$~5bJd8aU%)E1?y!LQqh%%+wHC_7NmBOo7si;+lM4GBSiGN(jn zzUOD~8aG=z$QJG_i>~kEDu`*&Cj*W9agdn5#&9`*k8fm#HLmKl{uu0H+Elf~YpZ~oYk;reiN&5t2HW@nbE zDwudUFq?bpOtqnbv)-BDh>ANKWtnP>=g^fbkacHyUqY3g%8uYw0o{N2L~)lt0yO29 zC(=_Mc-!#+!)`0SAdL%6F&91=n+M|i3>jv%HIEmey>#n} z<#TYa&x?<=AB$fRuqhXnqQ=s@ZZ4a0dTAnWZukuBSV&PtbiLmnaP>mL?uK$syx(B& zr1kyjmdex6?fqt`D5>(XE}iyR)_WP@5~hCXM>Gr3JE_Bk*`kEZuyj%picRHEd=Myf z86A&og2SIU{&?Cbq5Jv{=Y4(bvDgU&L+r(TMHd6^s=ivTF>PHAY0#TJpJJC}yC&NU z?ycMAYb1}GfyaTnNMcwQM7rK-~0I=J85s>oZ1kWP1m5Ru5nVknFHCvb5n z?S}9UfCLvhtfEPfiJt*Zh#f3@D^2 zfkMLRs*osyCO=d=l#8eRScn3VKlq^|k{oIMi~()}OGogHe;u-#i8OM{g^@QE%xnBY z0DH4TVSPne@1h_mvVPbPlNHf57r6lgywP5YR_N#;%b3m=$_=}Qzs^W$C1axTffRR; zJ3w&#_)wr_+vCCl6gLVw*+qwnjg3zC+GV|~fX;Bepo>NYyOiWb*Pp4AQCByVzrdBR z?ivaa(h)%7Y(G)j$0nkEvR;*+NC|UybHrglk{g8cjkxwt`jmz&+ZGE`vxffGO=|DgUofI)5i_c~xH!ag> zfN^IA*9}^E^;PfYWs!j4Tmwn;o`YUOZj?tv?E6hE{KkL=xg^PbZWuWO{L>=?0QD`; z=$gENB$Mxyu_h<@5IhYH#p}`HIn}CtI!w*c&gi>wFj@mO%6gvw z+Du}p?L_}nROq;@5~ zW#}5dMHPe8p`|RQZI2a`*QA)(d@&F z8oc3e85GD>#cq8#P*5RMK{O%zxCfg!5uV)vNB~eV3+W%UWaJkckYu4&@)JB+h_zM? zzw3`Uk)ngDiEM)#3p9c~yI&QvQ{!t}k3l?XeE_$|gazQ&s=v*RtC&i_Y``i#UE8VV z4VM_#%$ zN2VP~)onnP_1=g2<4He^m&w8*t#becWLd9)qAnK`=w)dU)+f|{Zv}+P+j&$y)@3Db z`K-4LXdxj-34y@(ARjRR?%|VEPf6MAPbcC*47mDs&)wE`aT!vF(7lmQz}ErXl3Lk% zvL&@sReB$|ehXYXVJep+QK|eMs3#`dD&BYT>P;$sPda{2f5B=F(4?Y-aSXdvW;R0x8mr!Nj}6gZ7s-g_apBoVSBYXx7nXjX(K-~S5S<{O_LipZbl1Lw@Nh`x0|-aXGGSSXLqw&Epd#&dOLH?c#2?J`xn_Yh z{vcG#5Spo$oW5L=y0#o4h`ZHn=ABF76{ks{ItS1k*|JWg!#F~_q|F3lf|yY^ZAPr( z7&Wh^EE_E4xt7ORcYuHhCpi_Y5j-`fQZ+&11WsbBwH-l)h~I9{voc@Q2A-+6MT?aH^8$GUZCj@a>5MY1w=Ppk+az`R3ln zYy$2vz9^21PzQi>T(}u{A4yh)P`4_+9nVa%UVTq={pC9AfMm`3pd2b(bA^svL)nfl z5bfl?<5pG#{~jZig_Z%T~h336}zG{EurEO~Rq8|_%kV80xfOxw{>>SCg`@?XB z4BR;83YnpFBQ}lkOk-W@+_jXoZnKSS^|qmMU~>q@<#^l#5?#5GMWs7D6vb=(k7p1^ zO%UXNf-OK1!7N2z2o>d(D=JY!QK1}IO9@yN`fy48mV^jjEyZ_Sks#p}V!V;L5}Xw6 z+@{o{E*tRWbC&?DW2(zj{)6MoT-+WP*XrU%T-y5XZg%>l&>hM;7O%m ztNYi1(oh|5C#BhrZp8Dy{2Mh)S>t~U>D(AyQg4@Y7uZdvQb<|F)&Xd{Wc{0|n$wLt zp$pug96hO!)uSG^so4kA&A=#kA-BRjrKYKc(&0D;7GRqg?>DN!0u5HdE4vWux!7un z#mcg3cMIGDh~rdQm~==GnnX3;^CDu6 z-BfcrSW(qsg)ne33!e65-xBO2@~~#Pg`0sV2oKkPXFCd@RW%xNcZ@J_>}y0z7(J6v zG)J5mBOKL9&p6QY4K!Ig0q~dw2hS$}ex?P7h)n=IVZkRxdy56Hoe=gV7Q7*eO$%ly zG14$Ej?v@|Ja>kRvx7&@q=!R5ZliSIKZp}YpTG@;Cq88RHOxA*(@TYD3VIU7&n=R1 z$aHI$=+_0Lc4O@3p)V?if;Gj&&=lX3N_xj`9C%G-y@8wk6Lli>7$-F4&OnOx=dL|G zBr8b3PL$Izf(VHHjeXJk1~q}}HZGxcsyItev26ed`o26` zRe5wcxwIFiR4<=-M32s&Z3fFx1k2n#R#G10ivW`BF_3Px;`0+BwptMUEk+C zF>JEtam9qYFxguCG!gx&IIVgPt+Pn->yCnX_p%9K_1noX^t732_yY=<(ba)wQN`fPbrRnu(L?MmjP9N0r20JP{mkv5JZ z8`BAJk-p`&4NN1;UPp!URMO=VGv7m*sv?e8714$1{t|&6eTSm%6cj$L1JNSnpbYyD z^)$&ua8wLn*D8#R!%#yMH<2t_>_i~3omr5V>tjdX&jwB=bTTk8Y&ZizdkFuTX~yt$ zSTW=)iD39)Ef~$bojO#+^0EnXAh00}JUrDrl4{(un7iA! z-zU0e7?_Z|kd7sk&-iMYyKQA$BU|i|g;%2|Va7_TFkNdgiBtoKKs}p`e0Q?y!omWq zz$Q(VGfpg_L@i=hef0kL-o>d&6M)2GYH9&G6bl>^C3ab*7Et5^wMsQ5@H zakJ381JJTDsldgL#2aj=WZ$K!)r_0~T`K;t%wZS~OsG7Vq%w%9y!|T$-wkWyRtZI{ zHACP;YDWH+NDb7X8a!U~{^p^@;?3~nG%ckAUjyo_8=shT7YpFKR`LM}L9Z#g79WD# zHiBh&54iE0^$tgkMZ`TVX2hCP-sRtMDb<8_2_NVUzXEWS1$bNl*ku4< zlfN(vU!DD%!8l?m+N96hOhbrl0ce zKuT>W<;{T<1PXv6QRevOnUBu{-d~?@0JG6A+Mv92>iKnK zQfB*4UT(cz>OZK=zT}c+pCVNr9(1;Q+xbM*5XVXGY7NOLhOHP5W1>6a+;M zZ5`r`ee~CS-_r0_(oj<0L9Oq9KvrCRl_b+lp8(20eGU9-z?=HI>xod|o}kL`L}m1< z$`~+vfqFm=I+jSl`LMl=%0Ti_AGp0(!qd>EBH_aiLNwsdJC$q_mB9=jDar6jmx0>V zF7na612V|R?O{IZz}e$E_-AedkIs+Y1Wv+(&_ zBtoz^2!RN9&I>(s&Y8Az4x%KCQzaJ%aT}`Xp-Wj>Q4dXhBh*8$_}nF=>w72+xzLqP zDwX*!yTm!AiC=Ju4W)?}xI~_ZY2&#vFB>}roQ-H{rq z5V84Y5U3{zgmAYFXJa$SfYC@Xb5$4|S+B`$bjB(W66h#oAsCl}yNfgo`1!UBf*^d7 z3kx_em_&A|!{JDB{crW2wbB6XYtaQe5~-Vb<2HcT8s-35oc+#*!7TO%8wNs*JuV1_ z=)6t9qxZ*-hgp3K(mMnle8e#KZxK^EQ}YAz0@ntxTY=)&sncK|;C+-0a98{WstLdw z@O*lw0J87%m8IC^=zV=aduzGW`y)vCDpGD;JTHDrGN43%W`(!0;qY;lwMimdRJG$lrqa-`| z7+bDJVH$)O?HtdITC+g|fr-f|oPryHj5llyG9ChH7@vx7%Er6VvJoDg><;t*UiOQt z3*)yX+i#0};m~aSHi3F$I)2-{_{Noozzu-Ja2~Aeqj}I7?uy@*>Sx)QKcV{5Y`5xT z!4W>9(GBlP_q_O~D^r*W6*b6uZIBM=7tp7zkpD2yneADAcQztQUO{o4Fb)WMe#fo* z54h4;{I?-Wq7xP)MYV_QGlWPri#E|kAgHXY_jVWpU5VA(sm6@E!`>CrOREAiw~biP z>ING8Q;mI?jIP7~3?ZS=Iy3)UBt-qE{1;mUa_(qlF zxWx=K$N=Q!OvL%5KlAT6KpxK`?*QUOcx|TfehG%6B#jQY>yAK@8G~L#fiFUriaP81 z|D@48)M__s*N(K^fllU`gZTdI>+5f!TudGn4swKn5Y9cotv!QUw>&-zcbdSFF}ul$ z-QdKF(QDguqcB6I^1e#{uTBd*_(gCIO-cmE8n2 zj?cUCc_-?9cXZ7OzzrHPel&5+xKoEbUp1y+CF8=POuTRN9AUKdthancRD;cR_b9na z@P@aM4hB&UsJ0morB4W62mhf*{V-O|o9~2w30=1mKzEm8HYzt-65E0I87@wpUa2a1 zBL!w7826p%wI5KG?AjXImPc7!7!o=A--JsVh44`}oQ+k3m$-lwb|K~#>Z`$)`qmA0 z;y+eL6qD3+#5!$0zqeeBGSI>=LUdk?*zU^v$5G1{!wkrJmE?IUjwdidjrTh!43$BM zqUb~RhH6!E_>t~T#q}Z>TBZGW_(tSJ)b229s-e=J{DUu>o;)$|FAF$(^u*v7D|}^9 z&%OvfySOLYsW0@KIgOWU>;cU^uyAX!b=q+Ee&sIoH~VsqEU=SBuW%FRNQfHHtqp$4 z&jKlPLV30aQW}`moU1xkpmZ{Z`(^`Brwsob40fQCqMc7@xL0>s^rj+MAg z)<2x$Tc*7G`3v;vA|Cfu++?SvPbsVNUoWLvpi9`^~ofK0@1-}Na*JUuOYPaEE(KzuvA<)vKIPis9p;Q-t2)k zUdz6daPaQQA1FYz72_0hHp?cb}FK>rh} zvfd?FJ%m^3{b3G$OY(UcG1d%+wxEXqD#W$A8^E8Myr}$o9eh!`Xd#fUWfw06zy3MIFX)WYcKjZW#Fe(=bJAJDbnS(t z7q{c0@^pDG2-3w$(+z?w*pWKQpuedM`ik=CQ;L47pqESHMIU_wLyA0wwg3y>`edUK z!MWN=dpTgtuaNz=5ah5Q|8|t+{P>HYf_m+os8|Kree813dn#5!d)(N47uXN;Yj86s zG49HwqbXHTlR7fNM&tG$8NyJ8m}s9ml&jQjCo?Zq>r`}G>1mmx+PaEW)Uyx}z3sF3b)+$4cfn_dQaX!huCJ-uuyAkmfOs`*=MV zH*_Jkz0tDhygW8$a#9>nvI&e&jg!->LjH|4!&}I zKn`jl2N?Q%Z}DkhQL(r9{ERfOS^BQ)->rChmA zDr(kJmVKdhF{!$hx*T)nbZovjszd7YJU4_!M)mi=(a7CW@U--^ zd|A3NV*M^;@t0oC%1AhqMo$J@W<9V=4 zFS(rPL0Wd`^+!FNF7C?JC|kSoEK%G$PbF8~(#yT;iZeWiR?`fxYM<LE)%<@GQ5DKRiB=~ZW%CZl5~w)GeEEpOzZLj?WxOx#FoX8$*U2X>x|T_JX%hew&9 z%h*)zF80jKYQ*|QUdJNwo`YP7C98^NGAIyPxrP)JiTA&zg5pg(k+eQYCYW5OOD=S2C>&8d z(qGWMv)=E}l2A`ml1WMy!eb5Y*ozZmLYuY)-B2CRu?4u zs&GdRWR$s7m0XUlSYDi`17oQ;zfa-a0M`U24Fu;?#e*Cr7S$-f3!&;~POf2wAC+HQ zET(gyL{&`JLriIqke#h@C^Fj9X5_va!H`*a_*(F~)GWODr&65B1qn7*{I|f5J~IE? zC@w|O?@8gh$zTyjGU!!FVsENiXB$Nt{|=Pu7*i`6pN$B-A0=Lq68|BerPql(=#{Bk zYipZCO8!m9026!Ib%#x7{?#Uy-&2G}_z*%1;hr|<21v1M&d_bF9{`F#a~k+1fcKR* zC0-iypc?UvU7>s_fcC<9uw zJ4nQE>k{x???n0pdj>_3dl6d~2oCXQSL0J;mGY&^8g-HR7t{rm9_Xd33z6851sG*h zC8Hcisv$rI^~V*pF7OJ1mP4O>0;?2<*fVMEGd5%* ze2&^MMb!%-Y)Z&)I+n;r3=Rxm)tam)jF7wBcCfk-nkJwbayKU6*b?r%mLhZ;8j>J1 zfWSE?KZUZ1`ow17e_8+B>qpe0=b*&`uh|)NGjZLc%wkwyuI5^)#fKDkc?{F}*3wvs50*})ZD)41wO_(oE#IeLlDSw6!#g~aBX5&rO& zNH#4t*KoVkpzpw?sirq>gM8is;m8lW?*~ABW;t7UT)0~BsiKftfDJl9YNPATh6j+z zTUU)3*6^+=&Il2G3SHCr1{Q+#74BxS3AocB!r7WhnC!N>;NZ7NRW>#UU*@xcpYY;4 z1r_cesm4KE55wuBTyt3fT1au$n_DQEJ{=?XOob*{7f>gp8wa6xzzTFZau&HCgeL@7 zZYJCJMS^DB1z6Creq>P--uck+sxZnaZSyd*&EmDM;>zNI{PF#l?VcLFFMc4ITXiT_ zy-=!yIZt7j+UHH3U(xzh7#J3hVTIX`lO==5tU@+MPqg{0@;|5fpKKHZU=J%H+YH8b znO*N=qb){YbLqXlV4mu&N8*2sJQCl}qK3%OubcV3tLBv}g%w)ODO?B5P3FZE@5P^0 zhd`CSF`t0Yv^L;qSnJ>A=S$0Ej!JeEx4@4vqU4XU<>imWR|QMXA8NiTy0nl=DWn3Z zxvdHp?^HU$#X4;Bf#mbiL#YaeQq_+6Z8I5>rasB(uyhQJf|LR4X#ZnHTfHK)>^2I? zK)(#{lYwrk>S*8Zz-^Nl)n>r^0^r_s9YqBfTm0h5PB7`1xG3dIc3EY z@bQroad?4x-II@f#RyO&GVD!FDo#L=NGOyhphzU_wZT zZAkOof@6&Uiy*3A@=?YS@iNSE=7ZejwwkzS5vREpLgfkgRi!6%v-u|B)| zgi~5Q@JB}IP7}#cw4QBam_MMvgG$081vZfkDX?jZK?P=UC{;J*cA7|r2%MBw$B9}g zfxpa*am`A@5P}Htr<^q8G?_o;q`}i<{*;r3T9Q^Lat{h)q^Yh`BF{4+%gF|hR7Ri%>kO>7ima0H#c}mLOWI zWe7RE9E<$Qo3hG6`IYZvX`n3P8i+%{JZYxry5(q8XL^>{7+!10#t`=uO;605v1xk# z0l7n2f(dgL7v2Zj#~Me6=@I=e)vT4MbYwOJD3YQDUyv;^nEq68&OQ8QNCRU5f?ySV zWoJ7iV<0{OtTZVMg@&A3&t zHg9rIm1RG!R)Hl>?0VrF*k;4Z=vb9r*nxCW##T1OgQCh*2P*SMzekEU z61KE($U}2+;z7TcmyS%Q87Bhk2_p~%FV~e|4O25+kq(XuaU@y^;u1O&^*pcRE1DHe zbQ+Taaj{A{X{U=MQlv|yvpvudq&=>jq7U3pCJ(c`0#S9Lcxh+=@mr+;8dVhEb%C5l|9D0>BNra8>3{xE>1KXDYT`T=Qz!=kD$Oo` zlc}mG6AR1pLY>iRvGNzvU?GLn?<*v$$h7N?uh=S2J+KPg_>SMbs~;KwP2Ppe=n>~Y zRDOZQX~TOyoRD0r#>gL8c<^aA9clv^11) zaEiRzTKY8vK}Ca@C{jeH+xCLg7gKs9*^sM4+{Y{_M&upKMWV$V(edAO6AK=00(JzZ zWbqsH&3cc-4=}-#!u0KV*>}YVB^G+AN+8gxZK8jX6rdKpjSfz9bodA1j&|7Edig12 zs=?!Wt0CP>A0ec}y)PUixDqIf=|(z}dqhf*D8f+qtSlxK9(X4zA{UHp6-PgszkR7m z;$ARK;^F`$<5M*RMb#Tq6Br*kCcEESEf1@dUfbfsi0q zK}n5QAcxQST5B34GF@B)kxZ(FOnc;y2Y+tvf9Y5}b(*Vy^OEY!Y+LyG67JsGhr1y6 zRjwTJv9diOH*L6dXAhtYWf-cf#9W`FhZ;a5aFPkE9{WOLir%VDw(p6k$w?_a5Xl=O zP}BsL1Nw8iAQ@0Mo2|Nu$O<8`sxFf5^?M1cL2J}(m~wCp@>Xiy)N9Q(Asy-W%u1*; zP1FLCL5ywl8K^XCN+1}+W`q2v1h+J8FdHgiu$xx52DRKVC+)WScOh)AppJR25rEo& z3P*WCab~BYxQJ2fQBZK*YUb=pZ1Q$5=MG?1P#W-vmAkBHs`Atelh8imt%n1< zXq^%(sz-GbNoE>}h96sAJ;Y7ciPXZuDvK;L<;cq`B2KN;Vqs!y14z<+5FfeRjIQzq zo7rUlA4n!foYbL4012Ia%fE<4rIk~;oHRH8S*DW3xht66%FPUk=0J;C%7qqY<|TG{ z?*be3g--{w)tYR4Q9+i11oaD_ve~!{FHujrs3XifICS3YB6iu$7YXLX$|=al8kix! zCO^v*ID=LADa?kv?&zSAhnRV&6c$TusTZJBUqDqY>kU>J!>7%&Y6H8IS6r$JIk=Jt zK*Q1wKC;FCh(6ml$6skpt|7luvtprS{1|ceZP2>Ap5&SDAllF~laQP^H zMk4aEli|k)96#P751pdFqur#>%f_9j7lR2$6Fm}Y0}1V52e?zND6@4(MjEpV;)j=w zx=~07Yg58Rpk#@=qP31P7Q+(br2HpL`6LYe3_F8#Z^fe!DbdoF>R{qDCLSN4Jec_M z#YmhYtIcjPyr@geXZvyd3U-N2me+cCO}a#Dac{U5$j9pqZ(L->+VzIFK#Tj?z-z{`_AwI(5hj_#6Auf&YvG{4c5N#M&DWfS<;g^#@e`=JnBd56~aiUf}-3euytr_#wVcp;gl{ z&QwjtxYgVEDn+<(lfZWVk=74^(4ZV2o9C57 zoTCpkY@dJ_{< zyXpW)w35hMP@x)mbs(g1FoDC^WiA@DQ||;fFK4}vpa2pJqor< zeOd2Kh%zrq!L~bzW#gI#xzBQMbp7WcM@mj?32}O#RONxOr-|VqKOAFt0Abs7tM~Mv zR>fO&Go6cwGxf+rY!>etX{?(hF0Jcy6@zkpbt3u>-eKL@A|%|jM1JI+6u9sM5Y^NF z=^{GO&+C5$3k?b#KEV7vR8a>Ntn#Puyl;Hp+;}1SVfzGbD7LXEwi$L~0Vcjzar0~K z=FME2p&&jiPV0fPVi40Dz#{m1YEbPu2k0I%c215V95e990{o7cUr{1p_YhhDgA85t zL%1AqkWdm^TViVZ7au0nC5F7Su;SC7j1Ys)BbeGgY%gs>MN5LL-a8bPTuR%)sY}?t2`O zJ7)%!geLx^n-*%QZul#fCnB;ySRK7fK+_3Yk%*|l^G&=YK=RdU9G-OAR>8A2Kvkzv zGa1F(PjqGse#?&0LZaeHFc4?$7o#PPBWyTjaW+yB5zoNzZI+f;ow^plMa6ClX#x}0 zH9~^bd zzMFD6wlYCbx_!0Po$U}!sof2sy+nckvT;rWBEv_hn&~!LDjnZcUSH<2aSlz9;s3%P zl#xT%u1+`i&}`Fp>7fmvtnjRIHU4_(D*298RSaMpI1#6Bpz`TUyGP=U<0DZy3RExR z`PK~z!|aI~&V+cq{?iyWFQx}%a+>IxyHnQ^P=Q!MKMO;6C_%Ek(_{f|W?@n?-oriD zIViAs@t)}Vw?W?|jP;tGk7H?e?V*6?F+YiiUo{-nD00Cf0EE>z#xJ6K4$!rT7SI~Bl3Bv6?;<4%z zkfzEI3^^w-0|K+X44Rw;xm`d8%Ap~918x6WrZja7h#V~78?3r=J37D3WC zFFp`m^DpwfowvNN!GRAJ=cU<^&_Pj<-(sXi*!X^W1%HOV)y9v9B?CbFB=KUz>5U{q zlF*_(x2R>wJOTeTH_Q`Py^o8q+a&_FXk3Cnw7Kjv z!a7bv295F3t;P!?eB%ZAY9)Kj883)ZjIn_6GD09@qQGSwFka|#DM|?#FLS`oE-k<) ze3B>;=0~lFg|uF#cjXW3%1`aeR~kPbNHvxWaw(mbT(M+M;f@gLZzr$z;OLhyQ>ypVo>2cZt#w>iH&S+? z=4f}nfDDvF<3_uG6_~%+X!rh!jdn-=w??}m8JsYrjy>A_haIRO*3pi)>8}(cC_PEy*oS(21Yv`?j!)NIMXR}`N2-6>Lnwcnd!Jep@oA2x=58`jEOmL6K=Gb z`*3vK<#yy7dw{I8V1M2L@)kRi{dot-zx^K@`3@}|`O@-+9=KmST!W8?hF? zH2#QHCop4=EndxTi?(1OAK5&;DN-v2MXtd@`r{5kHDXtbW8D#EA7_i!0^h z@<*&zhwOhxtg<84FL1eDXvF&S4n=?b%M3+b7VX&M>(lU)mCn^x@7c)NB90VtRS8E5 z@sqmg0tW2MnkA3j>bjMAY_n5f`KC6PzjdW$5IPnQvE2p}1KSVrPIp1d$a={$uxQ3d z5R&Z!?gqVuZ=m0@10a#%6Xbghzq9eR{NdR&P?JvJgGJFX)4a~cwz$|or0^tMyh9dz zCUdVs|MOG0n^x}Onu*1aPSy}hglSn~OP}3fzs{Kxy{ma$#bc>QQqOq5+l~4s>Asl& zvRI|XaW%uNvGG>hWw zQ}Fh15GBa8DEIt=b>>WDG%D%7QU2j>k820UfRx*AEht)k24J}ynmU~=pBx+`D;DX} z9R%Pes}s^Hgz1bfh(cy`V@=QBn{6h;HHSh-WEm8BBEt`2fE|^7pceZ`pO+ZjJOZ3N zA8+8oPsI-zCcvLM!vV+>6vg+3R731?Df|^qj1Mn<^PCJ$m^4e6^m9(uwc`sZdP->4I8z^^2A5bs!{7BY70?Y*p%80ST#VA zp!^9?WY-jowmyOs`}=;+nYs7wW;fXg>ihio(CnR=GiT16IdkUBnSXQ@;%|@Zdv#y) z6eJ+JUecs=BzhCv7oTL}#$d*NkRvw!W0H1DPDXD^o07zKNu(#fdG#do?L?c?iB;&2 zz!S=5bt)n?aW^n}*zyBze$iVF-VO|XJ`nb&0E2r;8w5R?A;)u5>ELpwv`Hck0r5>Y zY-Kjjjbl?xx%niUxu79L@s)^0o80Jnsp4@`iw=p|C^6$DX0ycHA~ApNCyQ|HGIF&` z%o7r`h2_yP+aZzr8Og@O2?lx+xNrh%6+sTtn+4`KK1`(C0&TN+@OA*C;PXC=hbQIX z(Up`dd>9|kPEdjsk@_i^V9&sl@(6#7GMyKI(dSv^H*fj&dkB-V+x#D%w9gCVnPB@|AUV+|%QotP;QJGN)7M1+%P9u%Kx zFZ2R;VPWLxE8fGg!wGU!Tm|5Ky*D~^$GV@y=+Mm~@=xr8D6~rSLDat2Q53Lg^ zo*oz@=gl7pj4f5+%v+qjAJr-fI9j!3OGiU5^XKf1(s#(^M$fXr*o4h2Bjn7TRji;A z@pKwIvtJ>eEe20fMwdtrcbu?ZMH{3->!sR(&>QCdh|gj42a(JA_t|+2oxu01d0=;w!9o?aDG*A z%A}w)oSYXJI$a@7?Rbx1YsXI$#QoAROSEBVofapSvjan{D-;G12PO!=e3)F22|{s- zWr(DR!5%epgyO(DfEnn(G~pxX`qPBsx$|cVB84tC9m*)vWo8OrINy$1<6-5c6HAdS zGIee_MYkx2h}}#Un5FP!0We$_GLr>?%bhIrKqgr~HU14i(aA!uOcqLm7X!UlCks8W z9H|L(vcO?QgdXQ>(wSYtOBvbBT!ACKohuaP*~RBsp8W+u#DaWVKU0cvWaw{UKEar1U6<^XQVty@mT^--s;oUM!| zgx!FEc6|7DtJ_v163NmieF`FELj3K)(^4$j67AMYVUs820t&-X=b7{&SWf&NA zF0BHIdz}x(w^M#GxBPA?1f_5vZ!XotnispZ@ZO_0)!cNZnQG<;MGoUQxaw^4T32k) z*syW?*XP(V=soaPuhQ$g^;SJP<}LV_HsvZ#LBSxwh+u?W3VDh5(Fz^%riFODUq;)0m4eF{bZ^A3aBt#I69I_ zc3b+S@k**_C9pb1ZVS$^adm4;f9d$9l!A|Qg%TU0suX;j5R`~-YAN_Q!k37zx)gjI zxXS$c4%#)kcp|JGL`Hsw*4I>q$3ysKIEqV7bFCL*V zOV)T~Dx5qC3?)Wmut<>_K(=f(OdTfT`!RgmqnZcid8i-AhKTIhT`(Kx+t8wW5#p(3NxSEl2-Vn7@&SbO{sZLu+#?80 z7N=eQ?EyHSs*lAui?%rnyXNDx&V0P5x-{nM%eLh0*{O8253P%aVqb&siF>07pEy>K zCl39z-HRDPt!?eVgZ%w$y?AOe&}W!oc&qdNXV14^1c1}P49=#&U2eV%Q$Lu))Z0!C zFm*iw!c-h6y`b*m1p{Z{W5LB2)D4`5kGcyG!)G8aUVxZm`B8Vlf`Li2RYKV=aX3a( zcsQ^UFU_8ULQ^iy!%6YR%Cd0tJz6=53nzGRqiEd>=`m*>eD5PyZ?P;aj105DnFrtd z$S{{XTzME7X1+5Il^Pl55?Kft8K%yew_r3pOW>^@4Q8n`Z`o)t%bj^EMuS=A%v(Mh z%nD~-eYO|wKpZivjaG$QchWT&-2-Dkl>Hxx-xJ#yzGMD`!SG$F_|SrI^EP-3@v&x7 zeCUGuso4a8;zM=e<}U2Kj1OHLZmxp@&VEw!VsUl#!qJE*wIQ>|v#iD~p@!8W`f}zs zqP7{Tm3hqV!E{LK{t#NcXG36e~(+ zl~|^T(rCkpv;{_#Y#&}caHFM(QmMm2HV&ksl|H4NUQ~xuw`vrYMOKwC?yM3Cnxhi2 z%8F0js_aoxC}l@YZP)~Ls}$^#^L8{`_pc+xO35m0Kl^7^*-FNgQpypr01rm&$!vi+ z*_{=($4!f;FoKnZzxW=EV5N#lsiS`OLntRWc-66qoVFHpoKfg(BFyNVv3ckpTmABrA!g6(F{G)WOdn(3RY^I z@Qu2IX=IW7mm7cg;5ZG%GMxC3TJlgNmjbOma<`F0>A9Q#sp9h^I#I^Zku3&<>M<2~HhF16&vm{Vg(}gi@ zmg!^1NL3knMWfs;%rPjHvEq=`&+zPlS6n0{R_GC-mGtWEmz=3y%X64;A z;7_LW7}=ZX=e9{NV3bXWL;%`d&SAmpD9u@HesxAbX_XW$pGlW4)TVici}E zTDRxmw%W-cfogAPm;RU=SnW-?_T7X?IUG(`1CCqND>MrfB56az;c}OT!}+-@q^`n@ zT;OaU*er)J!7?&2oKw&oli@4F6<&8#GN^ZZV@HIwl`P(J?4TlmdGG*8!*}#50`5e| zU2fQeuh$3XUg{>7$OW&9<9*Oh@0+6sr+e4G?X&j`A9jD^KD|_NU)h@dfV8;A{u-fo zsa$t|1+N)7h|8W2mrICSCsbT>GRQACPu2kv$)^p%q0&86uCCWVtjLAf2Y)dTz`1-_ z7vMs0qr&%r_XvlOa9XIEYx4~g&~`|ulmz0m)DOr1g-_?==Y@L^v5Bis1CDrRqIVM> zo(F|ZA^+mA#(IhA~UcZP(OdZ^y1F!AI z7#!~}z_Ts7o=#lcou>)5{s}H$~_Ej9tPZ`E7icSsYaRN8PaORQxln2YVtnKt2G%iV5TO> zZ)#G31kl~;3+jvF@V1z-(@Ge_|3Z;mwIUh^Tnu zUMvu$6cdQ(&YWZlj;2}{PxL7J9X3YEao1--h0~4rO1Cn6cejiwm3*nCAN0pw5s7n1 zVzpwrLNUELx>w~{-*>$b5GWek!)Ch+S-D<4UG_Yn84`(#NRD2%B<{C~<*u87L;41; zvv3buvlp$o8#$qLIYyv^H}2MU?B~siUOO^`c0_*~R9%D7bI`P5!xA8ng`N{J_COE4 z&4!Oa81GER8xMr)4+D8G^zm#wbn~J-Awa5AHaD z7X!hD!(@@qERe#K3E#DljBzX`hi=eB<;R)}Q0RuW>c9CViB|9VqwUa5M4q*xBbVKS$WFmA%kNAS8#4 z)I0YN$&ZQ*a8?`5 z1h|+9C*L6)+v{_2Z#Y@4ob|bg)&3CTd@e2l7dxDWP0pfrRHZ|#eZ75<-_3I+M2al)d$code6M4u7wKUj<9{3KqY#})V50$&iRF4zM7 zI_XtQ*R((en#GB38<=NGvMrJETB08YJ_?S_9>T?)L2GvMpN%#9G2Fl>)@+w=&32h%A2i6HhL7UZ zC=GYdAQzKmEf7FLN-)H?Y%!AyB4tyJ_J8m2ww(g94OuZLN7K+UoPV)pk4qlQuK zxo2cd%bPtJVri>V1sYp5m#}amZu&qvQ-uZ?#^@nxU7hiOe(xzS4l7*;U;bxQWfa~^ zbw;)#i&ybn+(chQ|KqN7VN?p{K3S%c*F(sW|n{YX2W zXM~h)+=;>P>KS(nTo|m7b=)#c`4ht~Xw}`oQ$O*Yl_OYnvs8a^AfUA=R^4$DmuuDi zHOHzeWiX&KbhYVP6S{yBja!;|2fv;%oBzG$9rZ+Co_QAoOGg+Y-XW~}N6kBwH+I`D z-ndEl+yfP6`TWnb^Lh%{dC!z==M~ER-B*2*@ zXK=AxzB_g=3NkL$ZGU~)_)ou&k#3-@4OUao%KQ$pi_i2YD7&c7bjnx>3%F?MJ)5QZ z^E{>1pp9xd-&491(1uk_d+#o2YL4B_2rAx-x{lHHb>x27F~$Y>Da}4c&(#aaRirXO z7vR`@rk()Nza9{vdC!cwhBN;1GX25EOFCoh2>$qIpG6Ba`xsfY2f0dMQEcS7h3Sfw zBh9*K{x)0=kFLkS-MI`b+dF0k{&A2D3^#w?_Ad(j)42C;jH32U;IX1su4IgnkL!@D z2pnh!u?&6ogT#VRi)B3D9qPB?j7jC8pPz#}-bFcd3017{6x4ZDscz2n2@91Dr1$n4WSDvV} zax#w7GDgYRz~|jiB~zLqY_v>~oJ@4`6em%ZT~1Rn^Iepg>_1%J@BD-H{d5lLCDxaF zVSOfzT;Gkw>N;?kIe!($>xALvdr<*1&5~#Qh`$Q!VDx5pD@Wl5?{TqBsK>gmdSzX4 zYCi|EK`ew%rfV86FOOe+7X~b38j7{Hbt-4jxYb8yfBFDktkCezoE36b1>5Qt46mNnal+)%JWK5o?O&pya-ROOnB0a!i8VnDw* ztttDm7|@?D5m;Ws(~ZYjM99!kF<0EX0~6=k%khL&APi`@QqWJYw$CNqW@nnKKiGqM zELhO1y>Jkd$(^_^p9rxgSK%%^aM9e04>fdo-tFV@2#&53^uxoAionC&znYH$vm*Eo zCy&7t2u%tpTpxw~=gjwy)$=ace#QZjjTW zt-KaR&&|gBtDR^&&h-)~X540Og1|YR?@exW6FuJ@_&oyG9Y#0X{FqsWo1e#~t#ouf z8!CIBd~@$mDEnP}<30~jOL}vYYNo?QHcX*Z5bK4R21Iqly5brs1>7FZCOec;soB>S z$d2w>TK0x_=9i2n7&+@mdTJvjoDGHTdK*La%h1Hw9$|Z0#`jv`Go2atM;+%(-y)>x zTltWESvr4iaih1iPG#Sd?Drt@aIBu*!b0gZMz>lI5Wcn4mVJof=z8f)ZS}`^wbK67 zmfxQ`g<$k2#ZVh{aVL-6OrqLP8eW@?@dM0tfpR z1W<(8Hiq=B&WpT`^&ah5aMiS-W1&*$SZ%9c%z%* z@>-badcSRvVLhH2Lv;4<7ve%0+JWlKV(QV}8k{_m6q`S$!Uk(y{X;Y$GKs+;s4{5iK1a6hwKf%PfMk@oP77x-${ zI~`TspvNf+>W01ox}hIh4O)BPy&lmX`}>0p*#{BpH!w!T zxT@vl@|Tjas@mqOL5jF5?n{U|-|eNVH;ZGpWO7>LeC zBzs(5^r?lTC)?<@nET-&f7!@seAH>^bMPeKLhR3q?uJjO2M;M@n@D3%SwmD-|6Yq@ z-QydMhKB>gXB@-lRk85u)WD<|^&|cpd%#4oY zOM3%I{t~W?X7Fq?_CaW3lU-9h}q{yH71oAyU%m4Sg*2nmccutwb7x*g`yf|z)EK-`e||x8Px&aeD)bQ zg2eoWsh}H+VGmZtcr;#kmF)w&hyw4nI(0KOvpNaOjhXa^pa#n{Q_?O_v4qA=k5r)MEj=0|6w_tmm`)atMKS5fZ&a`E2;E z##>{p3)}UgdAFeh_*$^DtI{aQvme12d=WN}0Sb>c+Vp588SqzJrav&NKz2<&0k^RT zCDrigaYw%}^m~uLdV7|Mk!);v!Ins+?-K`>NZnS!C9j1;|bKxhF zYkkqt<>sX*_R6I*2f50EWk^wF5UW1w0X!kUm|r4sB9MrU)JQBeIIoXEVx&fB!}){y z_ke5T8Ya2X4v0V^wX(LU@z$~iUZF1(e*nD>+!lLY=A*3pJUjUU3-+$gtub^dp1C9bp2L8@~IC;>I@|VctfLU(m< zbk-Tyc~xn+Qr`>E4c6ZqIwTI|$5bmJ7bd1%Wxb*;``~po+H#P+;!!j!a10jEmj8)< zFG<6-Lgq;*JNkd{Pw0(^+$6{bJk$dWPlE$?~+f=Q_u z5gH8nHF;72F}99sZjOY1j5_!;(81y6yV3R_BGHRqA>wtg&#>{F=vv&s%WGHjjFfWTMXK&p z#a8_Ka9SMg_Cd{%KFr<{xC{3Nv^PPtEU`4zAd>6Su$x#sMBd$Lo&F{N+0&3!owJ5K z@mAwUKU^7`hCdTN)fWow$HZcP_=Bm;A0YsL37^qNPL<#M0v_L5 z=RY2hy%loGyh@z7GIFgo!-!N`OlCH5_FbAMh32bLV@EaFM5P5PJKCcg%DY^{k0yt>X`0(fiv_y zr}mhPOwE|>wa}~Da%c2iXQ=rx0X6As21zerlpqX`cR3I5-qmea$=*q*&-uUDtrZvfs_2E$c{- zWZ)w-@CmQbmLi2(@^0}Ui<5`To#nQ4y{!B{esSnf_s|4q{4iR-G@MqQ@+H{2=VP8? z6vBL}Brf7qoW=u#g{F>b!QcnW^oDPDYliWufP6oxJgx^Ane5w`*IFO7akp6{4@ z(cHQZM4d-q?o+k>C;c@%Od{Q>40&OXuqfzq+`zq~R^o9fIhTawj&QMT*{`%tS_nlh0x@f?*_JmaW|<>x4OP z4nn~$1~{^FA|m}yzf50m3#gZ8MfXYaFbz{!{q+PCO;Xe!7qE({KVD0Sj@9eSfA%e^ zZhN&n%3WdA-skt9><-mv==^*xj*~ca7}D38_gq}C6H`K@q1~1m%@1XSIC0UbY+yi5 zXQuv@%z}+A?TntM+OJ9DC{dW;1XLoYJ8Ja7l~N+>0$P!JBBNR{qh+a9RJ62aF8oK( z4g&3vZp>dnYDr(0)PzE`X0Vf)~`qq>; zlzZSe=^pq^&bTKpzHq{+iG%{^c*A9iDf*i(=p&0J`$NFw}clM;R9<2BVXkR7XV5NK2jad#SAe{Z# zAA|}~*=4ExD8!))y#Y&OEyx@is6|Al8=}3nAO25-dW}6oJLKr-X2c++GP)U|Pz=tl za{Nh^`}|zB9qWbC@3g86a60qweS)LUnzg}K?IeGX%}@0aPX17oCiM{2DH5S*844$_kQAz8s#DR2 zRHv$+$0O00s`mN=xqjij(V^hg0C01j7aa-*E@c?)0tW0q5YyUeI52=^(CCo#ox3nK z6Bf;W04%xY0A>>hLf3;)Hl6K67FHoWZ?0f(d_Z#?WF0devajFE^|*#-L1nI8kHS$v zS;L9L3%K+Cmk(vR1_FR_4OIfbNw)X;z)b)c_$*Qaac4QOm4Fg)~fxZr)c~#G;?GJmT zwq~|npOf}wo5rdPES5BWlBEqugBv{FcyN4u1z3fJcex8Va~I|s0`Yzi;v@qxae%r% zbJt-8;%q>~Q>Q7H=U(#u*xG#|R2Q?GD##Ze{H>Iq4Hfd!8p018*#|KrT;Q}0;s+AQ zNcga0{BaY6bR*SHVsmtn%9lbC zq}^?*!)SAJ_a7^{4K6jkx3!H%D2AWdj_#p~7WP>|-Wr=wEQ_;4-1gm>sA?I;ZYMkcc(ou~m;3UxYhhW9nod=Z7IgjQDf(V@r{r~|3; z+Af`Wau?Jz=g=LjtZX*y2{xn()aP`3SD5DWWDac$Ig{n3BWIvuA$+o!nw(;O`Yh{A zeT=fCBv=C?Jn99Uqh~-!vy+$w^0HhIBUUg1Z!9q?Z?<6Ct1~Xu=h)Z@u9qdq0u8|B z-@v=w;RBk9A5bp7znU9H64?1a$DA} zAH}98M}lcVklO@tL9VF$Qnko%at4sN8;B~W_TAh^C3K>2rpoF@JJwAl*5ipP;L&-~ zo)WrKYT~9)V6onQX7^r04>sir3>EMM?nc*`-cT_#)601QTg;F z(x-sx(7=Z!nhSHF;L%XMO~lpLp@9e?vBp{rK5?Op4dI6;H5~RcP8+a;gQ%E>HPZnu zgcJQWhzo3E(Rn~W0iEr$Mf|o>Nje)i8poVg8aN9aF?TTyplU$_iyGDUbrF(m(8*v} z8-l8SFe|uRfi;X-!IEGYvx23;FlGhIG|UpUPYZ%v^G0kX>F|P06AOF#HsZzNCRB_s z7`O8`F8e89O`ihBq{Vn*be4jWV@nNN1wmJXDIM(q5Akp0C7n(JsecSZHO|&F%Zh?T z((T^?)y&w>qi6&Hu9o(-+oi)ZEN1pc5KfEgCXwp@fb#?fyl9D{{=+UH?J}meP9xN) z5XS>;3-JOI$C}O3`{v`5AREPAW+H} znkNdlneVvwV>6YVk8^1#lsOrr6E3h*XUN3N=kJy-){c^4sIGt@H_YHS>c0fMZjyLj z?7onn?M5vg1d^=TKr7TWMW&!-k$IM(7tamNM3kb?8nne2k&Eajq$XmjL}0a-ICvTP zW|MP#YVyab98x|lqiwX^b7k~)VUjLSjK#OpYYs`PhiEDF>CB(+k_JXi(wPbThEz#4 zC1yV|n;Ljy_n9o+-$l`6dHoe^0cm~P#O+|}oS&i^6X5A;!a&}L!*s8MHe@T=T1@xG z*-E|4(=wYIUGTk1>S(x5EspAT$DAJQ^JnGTaGO7Wp!1rb^Oh9Cp1lof$ zh;-(8k+=n@+W<#bUlgNvP!yRE-_F0GhDu_^+=g8-+pJSJQ_9EEGF@iMz+rLuraoYK zn2Rq)_S{leqEw7b59utM+g!}lowcu?ApsGdUWaph7CX&MsYKKt--q#q!i9918n8$F zdVup0dOewd#ZWz2WHw0EO-m;(VLkAlqzij!u~G@d?Bm-qU<4lD#x&O5%6!Zt=S^7D zKFkJSy(P+|bDH6cI;$5)QEYEkopsI6{XToqR%?#`2re~4h1A}b0M%9DZjg|-^+uO8 z(56Ug)uel4-A~eThAzhSy{qF=GjMz?brD9OF4a<(hVzhnw$zjLs2Em{Z~x4%hqJ}j zBRkR71EX)9VbkzRv`!V_8J>XkkUIJpi_~s1C!9p<>~bE?EXv~Jf+`O@hfk)6`R)=< z;1ypE0E&uKp}w`iGPiXKJaEx=opXQiClK`uxbj~t+jJo!zMZ6mR=+ZScVe*(9W$5T z8}H1Qn{%O-Ng~DVco3*||MhUz8ZyGkHZg12o29d<$AvQCjnCoay_h2w9i!hU6G$y% zgLX+e>!r+Z|Jar}0cG0Q4)L8)V!lMqxqkxqC=#KnazXMcgO}Vlf z7?j|?$kWme`+weu^j1WTeMA~qZY$soJ@4~kUX7tgOlOQk>cjNSMk>*g%tkw_gy|+G zZvl%|_HJ-vNCkL+XV+;UPE{q1NDeGmauTy~B4PsrOP@@=Ie{E~V9CG`mc=xn%eav< zID>7|{0MTqIh`r&=P-y`6l$h-HTX;x0CJe zRv9^Y_^*}Y#6@l^rx5s|ZE(?C=f%0sAkGA~9yj!;#kA6%+V$0N-tDpo1&5o80P{f*LblZQ6=Lw!F zLoq5`DJ6(d0tuEa7Z6du39|8 zg0bbOJ%dx1k00c4Kime6wSIKacL%K9*Cq|zxY21?kL$@=oP})*Fblw$ja5Jjoapg9 zgs~Z5oI&==FN%t3_h6^yH)p;5_{P7sCcxmR6&mK_smyW6CbLF10sJ@dq4C%rNwLC? zW=H{c5^R$c-tfPgm-wTLS9)nFci~K&1=Q^xa7sDpO#A;(EHKQ)8++-L5ZB;!(6sT! znV4%l0i@=LNOp&OZ$T-c>`n45f{f`V?qI{|g=!ob*eP3RZ3#HhH~Rx_Zl%QcZM#1JBcE+iW;XA-~a6wg?Ch-wmdE$W07Qr-R31kR`k z%TZm<8n%87rI?*DoPmM+cKX$$)33Qssu&hMYG1GcT4#+zC+Gpf7CltI{vur5hBmWT z#tvfNE^EqD>Np+{?ONNonS8B37eV&0Xiu?XNnkqjo=zIW;l%Nf8VuDo`#C5QQcDjk z4>#}=7ne334uK;2fn(#*E!fww1-E~O*IfZqz|R|QUJfbYX&p2d?<-w*4$`w9LZoRq zT+mSC%SKMi?cS^{m*pGLJa9BJ+kZ6 z%o}nl2R?!rT(cjk4Bthu#7id~AnEX4v@3y!WL=FK8D9f$!tZEB%CUwX5W^GdJRS!D zMP?j<*j(1Dha}*yQ;c;qbAcF>4AHVkU<|9G6vBWaWQ#6DYg~)d##QO!ZBMD)@I#ea z9FjORP~HaN8{UO4`q9gWOylsai_HT#cOqTMI7Dlpe0~$t$P;Pu^2*{ zL-iNifmN12T1JpGD`7H_vMMT+c5&CN@1@}RN=H*9F+fW|8TRqUa8m1yBQ2oVj3YFO zaO7XQXq%@QyR2s1fre?qNYRD-8>#0GHKg9{y!dVh%)5U+FB(s0!hf_qu7fu^NL#FJ z?4UAgsP@^7fkyQAC1AG>Ft;f~(LAs)M_^;MVQ}u2Mr@#!V^tpmY5yP!&N8QsRPr=g z&^+Sz5aoBgqGIs0^aay+O3aEuxcLLnx+RN(X9?I9G0IX=k;oXl0D$T-ql8gC8K=^& zRrPy1tf+(;of50?C|$9PBVIA}2p!eA7!||#;=%9;sa{q91z2%jcX(Yl`vbHe$}bAs zIt5D1(lrAINat0SkOkwOGY^v*o6$R*DiNyOi&GCVDozkPbh(|fR1RDUYH$us-tVTq z&UpG7UjyeDTFv@pvDV5{*%^oZG((l$VO2H^T`(V!qM(7>s%#`cW!s7hVG;nm>3y^` zI?#7udjy0$M>D9U@gz>+(9(FlaSG@uxPtluT}Ixo$MLwv@B6|`4e5ypmv#R^CKqh= zSKf9&tCBHX9sT0_9E((2VJzy9v54xfO?6;kOSxI-!&uZ0yT0%4DpWf2i|@$jfmO1= zDWx|e{}5DXCMNSEejr!gu%2D!?_h^IPAx^4s9xgB{=?6$S=YcO|Q@pDSpQ$R|!Y zun(AT2wJqm0E? zHb(y8*C;k=$&61cPMv^p z^075bdhzVt`zs<69kFfK5 z_)FZ%&OL?O7|KBfj~5tN3bzAo=4am)3Wt<`L&`tA`y%|qFDydzMI{b)KJiFT_==&4 zG-RHE7U4A1mJ*btTUp8_C?y`}L6@fh5UGyA1UptE)0x+P9mX$!LjzP_1@%AI z8#E)vfM@?pMS$bM@9}L2t1Ptge18eG>Kk88$&42 zJ=2Q;m9FGEwuPHZq|NOukw6>*6`c7Xck6-+Divm|IdFJDx4jl~P)-g~a(K z|JLM=1ac#fDHiI_7VAn`!Q3d{<{lTwjXauLdT1x?hje19W%?{M2CCNKZeSF548?bp zL!r%YE61spd$C38h9k{KxcMuT8*L#qU&GD6L(7ph+WkAtXp19Q-A+&V_FhR6rPB!$ z*ozc;&=ghpA3ZE^er6aUm$Z?bBmdeir+e==b&r4 z$VLf(Zl(>KGH(hx_sfjC!(BYt>A@*sAK&HOS)+mf=`}m?mDOy3bxjp$!lTiI1)>YL z>>JRs@$DiN;pVm4ro)ilA|7>4qsZdktSSnD;sI?4sNV_M-fmUL3>U(Q$f)% z!(@+y4=ga$G+a;sqS7GQ_up7vL0Kmif|>AZq~h3>WrH+*tSe zi%}LA4Ct~zfcps~6i)v1AO{xHN$tK=>uo8g3htviRy9JspO$kfV00*Z&ym^%;bZBC ze_l_ph>1B1W0abhT__Jai`zgdq@Tj>^mn}4F9{i zcs+TFd!xlYG>+{v`)1odDYQ>DvUjNwfI30#a~Fwi*F4wmcxHcbV=z0Kce2&6_Z=b4 z%lyziGbF(tHnLlL2t1<2+#?i(^oWF1_NzE>FFfyIv&j~pKx%`ZDousbD+0-v29m*T z=AIl#erq6ka(uf~1sgb_Be;PRBL-D|k6yCY1-F7+*77#Qb-5d~Di6fg?%-s_o!>Uu z(KA7Lsr#5(-sZ?Q=z%G^*P52LZj9y^3vp3r?!A;c_uw2k4t)wfPAjoj+w3+6V5D46 zMF`}78^~$QY9JSo$wWz3csSov0H@h?0!VO0Q2Z86d~yMt+&iP&NoEKo0qXvyJi-AB z0?m+pPfRu>ndB*!y%*{hNfReKVRY(OFSvJ@ux`q)oSl(fqvZ7G6j*`teQ4`mxM(YLFcx^>s<9C=eUa}>VMaIyXf1&2$^zbmd! zJ1{2!+?Y%apx<2jRGAjL+V1r=spCe1T&@)*9@yw>fD#+;0zK%jxI|5QXJ4V-`LLf_ zsCRY+k_+_Cn*+&{vyX#e<`_~PN2QcIQ-gX@8-)K^XK4B^>>{8Hf7s6p!JLm;s9Q4S zuE5yNuq(Sn^Rm6c&sJyPynGcl-!kOR%lG_q9vk2|$t`cP%|~A5<+~%0&nlq$sjlcw z7#~h=SqjIzMPT52N};i(1)XiAWnMb=kb@^Qd5M{g*+2x zKTaut)kIqgU=;!5vU`SN-V@xK)+++hTPvyI^O!Y%gTUZTPlT_uoImTcx#_*D!tCPH|DhS_-!d6VV{q!64b&3-*eMj_7G zEmxp`_@vJ+z#^IGl77)8*m{L7NSu;-mY*uR1j!ZHsUT?wxw~-(O6^w%GSVjFG6qTO z52R5gVl#-lVTr|hgel$DFEO~Ei0 zc-T?~EQoDAyy-KrlLze}=(-=|z=`_6Exmq5bR826yh)(LuwSL4U%gSWjdw*TW$5qU zY_*czPsvtL%>jKt4cXZigkYZmvK)vTb0BKcvO|{AnQg>qA{i)YRbY}xnxPv`@D@tJ zMuDJ=DTK(Ftuhu=34>dJn9G-;=tf4jYh44;a`XKrVvM;FoXaK3;7Mn0%|Zphtc_B; zP{v3^#;bif?$4LBy?8N6qy=g8B%$6F*tscbKMtfBoeD1@|B7fpZaWzW*u^!GBR+*IBeS}v5+);iM=lKgfay&42mqA?Xa|7taSy3h8S;GGYnp8N zguG55jY~V%8xH68Lps)jRan^obW95#^sZx3-*yJc;@iHC5*rowHPo28ug_E*($|Tj zTygaKIK+ER+om=Or}b~tKMsM>GWRqKH~cGLqAA>$l7eJ9)|2juT{`m}h3-P`YLoz* zJQT8C?zQ`>+4RnK3OjtrA^F)rADh#90Dl8o@e^2`fHkEaSly18Ac(j){2hrXM}2fL zd@x=7x(kTdB&_ff{%%hOsF%Ydn)7M74g?b53N^0yb;b90G5xy4XFRM2u*=Tj=$PWT zs@ZUY)#jsLSM$-YTj%H7=I0Y{2kVYGr3JrmrYohWXVxp(dS;geawCr^79+4Bca|$< z1#<`dx~B(nBah}*|AhE;XMz^Clf8`^6LLoRo;oYb>rfH;KGibC=m@M=K;5gYJ_=9ajE+NzFz(e011PN486AZsL*1(r12{Ni=+#wtUdg8G zD2UMb0`ApE;uv~F+hV?HrlNwrSM*jj+C=o$B=wf|VhBTzo}sQj@u0CpZ6X4D4xvK( z3ozj6r1}y-N-KQyG1CftGKT_sOk=#%cloJGleh@ILaH*% zTZ;L26|%yg>3d6i)D6k*7W9_RV)Y0rPD)Mnyrr{|NN*{D)LY6J<1Ovu9F8ec=l^e9hAXgYjiO^}BIVVrZiU7{n6~MW~!wIfQKvJU8B#oxO?HzEZ>h2u-qOXSUM}8p6d4a`@S>L0w#m zRUEeTmJ*Zoa?T;y0jxHDn#4!E3fTC`62DC1Sv?zn;CIAB*Orzn?$P-YWR)Zs!-q69 zSb@-&rdDX zJHHf2F3>wa5lFV)QWmWK%U*g*8FclP!CY_YoBX^G%wR5hOEnwomgl`3>hr2YS4~d7 z3Y(AI%gdJvzOkk2Y0dP~_=0^U+K^@!e5ai*)cv|r`YdP~`^m~Tw^ zyz!Qr@RqgkmPVUO9v8V+yUBXOFsqTJYwIL^<67TIda8V@lT`PEU|x^6{+dVhkoNyw zJ*522th_-zq|9zSq#5fWg+oN@m*XLY;8*(>e`POFuOT++q3LVDI`QR5FBNy+9O0&( zNW_Ld4@gw5bXWnS#$b)tskb}ex)Enko37OaqQ(ESo;^?pI~HAdravg%6t0~X=|rdD ztpMpngVKpIbQ8iqMxWLsKS_EJ(kkFrleE5vyli&2Fg!c!C2de6)+!~a@rQU)aYrrJJfZZa8$v!2ALHP>Qo2R^RRQkXZXqMt?4od(}klr zvx+x^Vx$3Z`O?oR9wdqf!zPLc<2;k7zC;wF-o|;Wg1D=RE)SwQ2Lj$kI-$i>GTugP zF@*3jRwUGL0NzG%8FmQD6&}Rj1Iz%7_zyQL-vUC|L6Pmudq&meVIb^^H+8OZ^)?>g z?ZS<2tN_^FArkVH2aRkE8NP{3ZkDv`0%>##q23j4v{TaN2ht2rAd~uTR81hwdK;_Z zD(v~J<>XLIIsj-f-bQ};-bM+jw~>$mpJF12BFEeKiJTO88_90YJ934lR^qLn z?sr!=_%YE&=+-{QEM_~kxOFl4i7e1ABzvUMHD+AL#=&mCXs3v76aEqqnCjd`owRYg zpQ5qCtE_kWg^ET}sDH-2n2keecYk5r;mNu zdvz?bxHj4uPO{UOGho^AQ2dt8ht%Wxs?pgG0`QMJq&F8<>KU?yTN|T0>HpGGqTJEQ zFrKm4jjuL(x6mGRZLwM4*ILwLoLVRKnl9Hbod9frM~kph5H3^fo( z24{PYkzeRX^9CLP@dh42c-A@t;s=hE4-Vd4Qjxa`P*)JB!U9#e(QN`$BS71NK$9&H zRA)+n#tRT$^6aEyX>pD4pZKy&Lq=2Q1t>$DcMpp7IjIs$A85N z?-@1Q4(L5+-sqeM+#Wf!H3}JkGpE2tCKqsB&OE&3h0}H--SDGt#>HdM)os`bztS$+ zco8j)y_6VTB#!=wrhkM9)31A%1r zbR-A8YCj1iV^S+sDb=f{Rmt_LalVF9dVH&O?GDeY##tJ@Y6McR8e@W9HKs_N=L=nW znH8|{*GT+wiD${;cUvGq)=YwR z_z=mUcrr~|FSUyltnkv%3Ivq2O_IhbrGHCvc4dwmZYDF@u3FR$CtRc(j^O`xH(Z3( zqK%vpdkY;h=p;YIPc77)#|M%NbmzTzrOM#08><_x!_SL(EES0778}V8_h~=dnA~vZ z1@cwol{bOgvB@IK)@3>8>|o^ zJJ)Q35>FgsNA|=i#H;3s;|64+EMh6k`BT|DMOs6s824MrZXT(m=dIg&w-FO~>)7Am z+rlJNy>&f-G;y8=ymdDP(yBC{=dHUTkS1HdygQ&tF(+9lMGG_DF~*0J{{wa5KlhOD zL7OEoryV4Ws8is90Rs;jLwI#%h$+;&ECJ&fJZKDslP?@#N{vZ@>5deJ!pX_-pqaOx z*6ypDK)2EME<6qBY~8}Y8#?iKY0TB9oXOL(Q zc5*dz{Uo22wz+T!M%vPQ(%Q7_EGIFDJYGxB!V3P|4W9Z_-3>%2Dg^h${oRLxu_XBh zX8Lg^=JkP0m~Gf{Yz{vL_YVm5h@otXZ-*cH%n6Sy`>>$uy(WY{1T#*E&NUUsV^?q$ zmk%)DC`Ou5Qhv;fgZ)^Uy17if-ujin>E14OsE&A1gR-xz|}7^<}x*${0Y+H3F;m~R(X)} zWgwXvPQFhd_XHt1_%Z@REdIttu@X%s(QuUQmBgDRkpl=5Iq*p$Bf`l)W7uxPfIYM{ z_GTSt>nCK|FMHXJ%kh2HSi{QLXB$s&7ajz3My+nSAnwZl;AU-o%n=GPLVX`SxaPNZ z+p<0(+2S-b^Z3J=_sET4Q0<)=pIq(FqW-5pulK?>*%BHlIhQwuwXsg1I`^p;H;A^JUA1u zNx(Om`HhybsW3(T=4!pHc!XsM3WLQWIlynW%sX;YBm*=RI3bjWMhA%KV7#$8)WA1e zGM<)*W+3ZWD`up8ZO-Zq_OgEgwq^c0m%%k8OBJ{bm{&>aqVf zxbPonuttcH(?9ZV`m*+?o*)8JA}XL*o*tAFLphi83?80bZQK%SIF(I}2Z5qpa@~b~ zHjEpXg$m%D3Mx1--555}Ey%yH3v=WioXqP+CK04-5BEUL@&WiUTb2+01XIKC$6eGp zogNmQ+<|)NEiMWT8c~Z>WIIK#2{)1WsnM$=n^~}_fj(B$96AVl64Znroe^B|iw=Sj zD0x35s)XX01Bj{Ygvyax2AYohEevTT=d{{wtQ7%S@&Xh^u`pSF zSJV7Qq;k@s58{nYq54UH%Ai4^W8={d=rcG+WG>ThR{EnI;pB~+q?k+bG!@ek*#{8a z6i&{Q)OO}YG!A~Whm(h>T(L0&aXnOy(ObgFJ0xx+<7Cc)cbAj(i1U{B*X~#sJ- zR_FzxtxU8km%tk(T$xZ&J4?dXRRYqa94#p}OeI}`9M>IdV~B$>1GJ7vA^MionMzwC z!pSd--WKU}xn*6`W8N3u{`mFuU0(b&`xTk0r(|~Veq_lmJKjY+UAat)%yq|#Xc;nL zOHMpNF(J7W9MLKIWlS`thLgCF3|1ILk&u*jg_JLA_6cM}AlVZ0PF z&%+j znW5N?#60DZW8&%E--&i*mtYogVgw$NQvJbbkc6#+u0VpMrrDabL};08{Cn_buDjUy zDix=L3%xR=4F6?+44)E(JS6yzPE;#i5q4Iy2H|vK(14>b!M=g{)#}Z={p)b>jK{_5 zXBUUv5BE;y;YIZHpOJE9*b$HEsvn?(O>`3+hu|Q?Upp$y1QqssHok$|FkndysQh*Z zU|EZpP=A>;4ykV^nfWxY-BAheja*tbnKwB7>Jo;o=q6eA8ii^08ikDpGk-Jhe=ljS z{07lNyYxZ+?m^fTe|bN`J6UXpl30fyC~7|JcIq%H^6yRiEH1=JXpU;+z{^fL*yZv& zNW0;5_zMr~aHbtAMv2f*>{rDqBx%w6uxEjMjAfmOvCNF%JDoUy`iL~V37FD}gC=N! zx&TD(s%$J4nLzl+E$^r7Tp`_oh+^(m{wb~avIzkfCUTfrBNEGdtyZzDrUY>m zV)(k#g2l2!2E(%v&aMC%!APO)L;p8u_VTR%Ju>8Lapep7-=ahO}fxEtEytcH11VS`Q` z^_*XtITbIo`?sCadK4I^E@D5`Pu1cFBOs&A4`L;X+p#4dwgT~L_W4-r%N)M&mXj_3=EnIF*L*tRs{q-x)X{O%HBXZ#8g!0Hgm|J5&c*wn@DLF1=6{K78Y7M=K^)V7gPZ4ib0*wnA^>AV-QnY1+uZ|xxbs^k`*CqR zN?QJzBv$B*H$|OQZAM~S7wb3I_$)Aq#C{|$aG1tRTx7969IF1 zm%a>I8j4DSnO)+ax{bzVoyc4%#fvkl)9(8`TXJ8bxzVlYJdld!x*Lsaw-4oFF&YAj zA3U}eI8s{zlhBVAb-EWKH-3(pe!rvl3;$0$D{#4zfUazA0X6LYc*@)Y3b&D%kzwtS zSnn>^+YhtPun|jPJ=$@ml0HM9!0gtYEi+_O6{Lbhz&&EtfVot;OvysUIc4E0d%4>h zL!?e|b?ajQeuaUjuYr4O2F``#Nn|S+@5p&C*lmKg^+Lq7^3y$LhVHz>(Hhy2qeWHJ zN@&eC|LryIQ>>MfyWwO7a%Q;_4(Jj2MlD!AjBQW+6WPY41=gWNwndwy!j@;}Ak-8S zhAl#hJ{zapB4W#}?x&7$3N!5P!VEhKnf)u&T3~kDE7M+cQ0Q$#6z%k#${O?stP_a1 z>!&^GZxX0v_0v1?@7?o=29ZG%VhhzU$3o&9))K=M$%!yTaz(Y5jjoBu5BU zD%=KFh|E~40ON2vb1Hx_9(O@wfTo4u7`}D3)xjhQrZd~-;@b@7c!gV4eL8~e^wKvr zq7^{`7jEzgP0d%)TV-I-D+b)HRe`cm?kC9iFc8%+9ueP%m#9z)=u{yKhEhQ1M$p-5 zXk3pb0Qo5cfoB`Q2EmCrLZ$a*Gk+4`ZLd=w#M_s`odC< z)WI7i%R447?A1t}`G)xVpQy7VhdXFrQz79w!k^5;`v92ib7U10HuG~dkS~h^rZEP8&$5qnmfM9-j@BONqZ^{@%eO94;|*TBv+$6W&8dafk^9e$>>oxe5U9T=Uzan;G06C|jZ3b)ZNW-w{4b~vI9R#mrwAd5^P|&962<#!B ztaf;Z=9$UdBN^MBD1sGGV_T%JAov8`Db$^|=xrS}y-|*|Y4;FMrRgb9i?So*%jd}u(6Ycvs@${TiXt+Xg}Zuu z4yMFHr~BQ`5cS=px9}cbnu6$NEsW{ISh99IW5jcJmZ~o^{&5UrFNP|-8RbY^aAztf z;afQv5r|^QDvFFUBAh&o^)%d>hQ`k%!G4UUQS6w&ZVSJ-Di{keX5`vC4xVyevh}$8 zYXh2^&6`<`x@O)DEc9P+D1du{WeK160mKlYN>gYrsAzlrvN2{%qn%q>Vs6oGRw|fT z%!kHhrIf6ej*&MEU0f!#(r1UK{paU5k^|OhBYlqNio7f}us*Cb6?EkEXB6Qa~ZYa(}*%okf19k{dTj{%(wp^o z1^JUEKMIDT+sd;kR7)pY_vG=mEgt&KUU_IL=*kfXO|-iqNQC~y)lI`J0St~&Y$n$J>nb$(PH5Z%3*_G05Y}qd z4Q5g7DV9rvvh$D$*N}L?x%=jzM`Xit#w?IoXEnITGE#*p8bn?3PbyTu(%gSO@NSKT z{UcAX7P?LWwE;)@FGQw3JzY$7kI4@r9FNK+*=hpuT%zvA+_~m9uTbRtp5`PG!!Pq% z{w6`o#NpR~y$^|TT&xXj(91k5N2M)Io(d<+w1c7gs2s|fD->;0Xzl>rW)8nayBOC; z%R1T>PJYzy5|Zz5$+v|tP^W;|5>6hgFufM{Gc`hHFOK_FQ9|u5__h0%pv|1^n*ooF z9QeC5?_e9YXd;$*;2Y}mKY6pBiRCF@e(F=ke>;=ohrZp2wPL0hNPtAQ>l<;ixxj8v&2E@fjg0SPG! zC*K`_m#5WXTqwIB1asbKN6^D`1SJyc1%H7qdpa3Re;Lzsd$)d~^*Oo+@$Gwq#doLl zXdh6Yk+E2GY9fVsZ6ew!uUBf9H_z4R56)+Sj&x!h{!$FGQ&3Vmk+MO~f3fk4v~I)! zDIWiJ5B71OB`bzwJ=k`Kud4VD2>_n)C$y3^Dh!AW%$k?s`tP_>zFe@| zfEzHp(xnkIWwnyb=YN8A7~t9{D+Bo@)<8Z|J)9K+92Z=Wteir$gm7{krACsB?7`ft zm2f!uFp-*?rOCPwLfWY5%sAvnOcA%`yyz~wFoQAy)-Z=Lt+FO7k>UA-r@#467%tm!QR6So$m$$kwv;uwqnm&ts z?Y;=*-`TE$ww2Q4Y+#RcT6^#}U+uN3_YCLM0&PStN%t;DmKah4XQBxuPbE$EHYS31^%yzuaW4jz zCu7#U)r;ZdWS1et`pe`)?nR-z91e5CfTbgJgM{Ryo)0MW0I(m52d8d<0HVyFTG4E) z9JHY=$5IzF3_MSmQUCf_{DlsUmIK*i&_UXeKliNHmQy_u|NpS*F0kzKn(l1G zkmFvfoO<%hhcNNXZ}y6T!wNKkFCCn7NXy@Dix_*0)Urivb|Pd43Ez?m-;s*Bxti$6 zQ`k(DSG-w|CASKGkNn@smGi2voY@@tcHOQe&#tIgJN?TS-u8(ft?T~b{l9+lPk%o9 zn96aVIp^Y2wqCq`-V4|M_9N$gwJQF(pM3CJ+aJ8;o`rGf>T9Y_@!}HJl=C7N7(fZK)-*W96j(*L|i4R}*zgKOzbjv$GbmtAv@5!;uwzWW&j%ym%q36z8?+THu?TDyWjigPd(XGd0S}5%%`i%>rRWjbH&G&{4~Dt zt1o@)cRzXCJyRcC^Yj(_e>AS`nEj_baL&2&rd<5lk6e1~AGiMU+Z`L6#3%pyzGu#O z=*V9@HS3;f?Nip4UseCErPD5%F#q@8{o9>4f3fRp|MBeV7had1^YDXj_{&?qJhAgN zAGqqe>yCTptVa?QO*z4)eV&&^rqOF#X=_vSDDXl&xjH!e$6Jz4Sj+25*Z{N?4p zf5*VzV+(Y-0agWYFOM$x=A8H${ZqRqpY*4s*?=$}MsOS0nvx^SDnZL*HyarCrP$+re>J|Jw_uE%y`TMO6 zOYsxsbqxQdy7OxO#y{xb$ntee{Xp4BXnJa_TBqYj;f*eU0ybYzmF`RcqMZ$%DyxO7A6_p=fz~8-dmpsJZYd`(5Z}Rv4z2o7f4~5>fr~EzqeK~RD1N{BO)=A&y z@83GMp3C3m8-F~HzrVfr=fCG~Tkq)T!#K>gt}(Xu{~|kLg)9t)+9!TyXU3% z37f2XMO+vze<3-G(hU~Wa}YlFNe2FMm!@_2HvL(`o96^BC2UquHj(hji=3|$_U&4- ziSVug`zr}kXMRRAjkejodnw^1O+PwLc*{-C&LnKJaTC71plPcPy|#j|=bjgi5I+1? z{VKv~DPg#4 z${@mTF0%C`bQGjLLHO33MxPU2HM3qJ;S&RrI}tW*nobWsX!GqEZxLp0EW;OYG;RG& z0Xt#CJtZ#^t~lg;kFfEtUtCAH^sP@i6SiBrYaQW+H6M!=?0J3HPonfc8g0lSymIO* z&l5i7dua=yeeMg#2sf>N?S8_HuQu5T@8A7wgz$=?AALvo%>Z2+!^KSqkCYmixnm z=cK#7CY*Prdof|Z>E(?G*G!&1n=t+T#)k-(=?xbVc6wS%BYbvw{l60qTGZqO;qFHo z+)P;ZQ_{tRu{Tn^gx5|e{)O`!=g?sLNkKkd?JA7Mf3v}XuUjj-hsPMe)FfN<;aX$J_$9VlHx zc>E53cf#sdy+a5Wu6Mpec){F~&4ep=2QmqBzbYF;c+aeiorJcb=`Rz$*fO~t;iVnx zjU#;Z%9q|G%u0XdIl{XqZ|FjpGJXA2!pHQF-yrP%{;rLLw=Mr9oA9EiznDU}?hW?? zgdKl!9VLA5k?9qLX^YB}2_H{w_#k2b+{WJ%-c(vYMA&?SR*&$;5wG1t*kbkzUlBgt z<=MXx_HMl?gYbbncHd3d=+%$DA$0AEnocy;gpUqo+A8m*17=Utf9}hB0M~~!2-hI^d>st+gGNR5Kc``YDTCp_uNV7 zeY*HG;fMMRC*k1teJu&AzDiq3_`~i-9}^bMO}U2fjrF!G2%Q~EA0zyw<+NRdBZqp2 z6Mi2z9=Gmt@M-jggLWI))T%k z!nutwxpmpKgp0cbE+M@9)$|R758aWmm9X`JdXounKc3u`aB$(kY&*L9;6Z@FW9j$E zVRrlA!hCxld)O0+c>SgJ%rN~+)A9oqKDXT;h}c~rk2B)2Llv57GRxRO;Xd|qPoym1 zwr9HQ&>lM|O)K*HJkYS0Il}}IN(P;wNLIMB7#qm1kz?(dRd%o6o>^k|hDDh^kH0I5 zbyxSXy9`I*qP-$$FCs?WGkL@a}$KqRN`xCrM_mMFfEGSu#W+>CVWj3!YA5IU-Ys=>Iyg%lyQP#t!i zt{GwYhj?|RU-qnlaJFlvyEDRPxNeS@)8`Ags1t+&fpU9EAY>m=IH3Sd} zaYadqCnQ4{_p>7Crd*>6N7!9Zba?$G0XsfaxFQuHj|w=oA^M*`?2ULU@#6`@a(S>K z;&F4YK!3zRb+U&%?h3!#>33DvqT~v>x&~%w1Tz9!w%rpf#&2Yy&tbO=Bkbg7WmcfY zJNH3%&$bUL=$q-zME|7!D2eM93VB=+Z@_QrfyL;&o)GF^?m@7rm`q=V77AwpvU~RE ztciIFer5^dS(#y9Hf#p*s{+9#Em4HCvec#Z8tBw|h@Y_5eP9^%8#_qmbD=Szm-v&W zc|xJERub}f=p>f9Le1?`x)iAU@1x_z{u1Bn-!=cj@4w2upntqw_>@-thZ>YR4f>Jn zF|sGc_0MeofZs!X%sz5#nl{{D>GXNsqVI6XKvZ}{Mtc zC*+YMf<1t^JH-Gcdz!LM?e$;j+0hf7XWA7V8ucbONyA>^^?2Fm_oTL{m+&hX@cJVj*bm#C_G`u!6j;tStXnH0fgBpZF*wqIU5#2c289h?Sr$5Y8$Bz;tZ^%56e!B_(SVY`f*o#{+N97Yt+?gnvuAA zlszkiQ!3l;!teMv-<4*7aCLccz$YU{=ean`;8Ip$xNl}ocMsINQf$!jv*=faAE#lU z60I*HPJyO2r{k>sXzU=P9}RH3L!K~(81HN`7g6KlT!WlkN2=KCc6=nL?(8b2HHvkN~l{G{DlqmSru zHP!=uH_jlmgcxnhouL_?P}uJCh9mZ3r`uO;S7Q#JJfg+v*TH=Ho%f&PdBdLBeE&}$ z&!)9m9&z$GA=d1;D$bMX4qKRiP2vyv$8YT78G7z7tk*P8@&`GsNsQ^t=P<6!yZUN- zc?J3BvHPe$MNkQQk4r8YInv(Mj+OpkF$%EXBIus-K&V>u2b$2R6C#Sm-iVwu(=-}l zFpN+>G!89zWCBYFr_iNA!h^vgP$I?)(}bH9j$j!j23DMB6*!IjDn%L01Ma&!>DVUg zmA8WHBWrE`9Zr3x|Ia{auECcCdZ@P5m@&SY>+$Gk^j?&C*tWjQN{^k_tbAw%ioM0?mzzTPj4!|;aLBFU48j21E&4j|EJv}iF(&x03a% zm&JbcmT~xFXx>p&`=;L~82-UU94GqEr0N9q{$>9>HmCo_rg;^MTBVGC&o1M0xSP!P zeV(*)v@lQ1G|K0XvyJ=jX#(A?|U2(ys%j|hi5B+j>i=6Ixe`|qHlLtt@ zJ?x*C{qxS0etP5n34akkiCgki|D?W3eU|zz_2F@TF;_$a#u$Q272{0wmOD#5IW!h# zVukGGwTocoXrEQptq)CJRow+t%TzU`QeKL+EJo~# zpc;0W&&M=G^A7a;_OpjEm}3z4+s6){Y!CP`?$PW484VcWoVIP-iuo{9O}3~;?&&lH zMasNt7Q}uV&HZAjQb4w$C2bFzR5+?=*x<3l#|kqhJ>f&0deVOt8L=W1Q)gDhU4<1h zLKC42GZhZ57sX@Z7$`b2-Iq?{4|XgdR9G;rpIHr0In_`3ukzPj2WtDczEMn_bs>Fg zeJHS4y<)VKl~Q$zS1I1U{)+NqEWBv+#f59wTpNoYsH9XtLsn6pF@v5XUo<#+>Rx^vR7c(=#Hj43kUtDt2w zrq=+L-sM>O(b-bwEybEpPPsHG)}DnL3TK8mc|;qhjYOFx)pGI-I%p}6C}RV{iOm5| zC?}07^1tXG%Axiw_LkDQV6P0@%bis;@8;NxLKS{oFXNo066nl`SDHOXPstyZFM3o! zM%GFBz2z0k2+`nLSU3_5K+90- zA7P@ha1Dojk}3{tydA`t$U&qL?(8l2=k+(+i&s6Nyy9xC73G+PA}NLI!BVH!kNLnL ze4diXS^I${?uB7oE*g!GC1*uB)!U2f30mG_o$I8@27#lt7(1#+MF?XTPEjn@aS2>a zeNfaO(=E50y3!6GShuIjUWze}E?%jB%F{RA`6!dn6(g&1`%n7Yn4#B*vu0MA2gQmD zMJKKk#oQ^+fx7yO%2{V?sq19f4OI7Ie^3t}re}A6uHfl<8igZD++{MWXdW{X6hCK# zuInRWTu1wqgs^o+F%`>vsUM#ZaXyD5-U#-*D4IbZtqO2{WAl|Z8_*`$GbqIs5|#t( z5BjFug`n!j3r4AGzv0jO9cQB+0RJ;{dSiY!HVJ4v5~l<8FuF9M$;nWw@EeLo;n)L3 zceD?KGFn^=_#O=L*dU@4+=mg@eDR}A8Bti&RbC2Ri%rnMVj85n3M*yON{KgwE;z-7 zo)~rvr`_gj?GywYb>=TZzd{(X*9c9~Gr7;987@`fiT2NT`f0m_FGY(3RpRWj&NV%* z>)AtfgyGmtK^xdcBz_tF@>KUZ|>hOIQfHu%{w7-B8CYOeA7`hFzf<-e3?h zwUn1Xs$dLxF6w)x#Ole2!XCp6Pek0~)s#(apC0UC-qk%rP8a-Qscfp?kfKS2hFLiS zi<$^tcn~)u_Sw*)wAwbA7*VT%I$0Ry3X59cJ~6NT;{%d04`H(iTV-A>W8C&xWz?P2 z5*2%Fh=|7GM38pqPUpBQw} z1I0d}7$aR6x9F^*u_q9m?%-&aV2MHtEiAzTIO!uHr;DyD=)}Reoo%nc%G8?0K@BAK z@UuGGQTq z=Q{lO@Uwh>OrMRPh4{G#KXdUj6F+%cUW#3_Cr7ntgQl8zS`M||l80YI@Do3I#*QlF zu}gJs)37!eca7wTmAIrePQJK`Xe>DohdrgVpDNaTz5wDWW;D85qg|O|+#s1j({NT$ z?0goB-_~7FyEtf6R;xqwDrHm+OH>cuO~&>y_SI)o+ZBo}Kl^aZq|S)gEP|fA`uv;G zq3rg^EKzKv3}CP7CVqFP-__!CHGNLgphrF0$VhGpBRM zE^GcjwP0G=3p;5j6dYNh^5t_LRQ*6RD8=1x$qHA~R#OSRhcCm?&aQ#CC;SvTTL405|wH~b(`MPXM zrn^h`YtM3dM$VeE(n66&p^&%K>v#IZnIjhfcG$Z1Pp{Sx9QQ173dX(1^Fzi}x@r6t zXD3!+rj=^ME@l{~ePn)7j(sdTmt?<-DLA@HiH}DR8H(?^Ms%MQJ1vbNXJl6o}8@IcFE_|E(1aN=f8r_bkG1}2P zUx2-VWx#uY3xID9s?pa0&&3-X_W>Usj`Dy{;oY3A8fn^cydE(R_`uj2eH!pJ7xDpH zc~Bm(5V!;Qpcmf;2Ywx{(Hk_zGcEYb-dVtG`V;LydlkwB_Lz(OKo@Wg@G;;Hpmr1d z1io0dPEU4X_Nj1GpD> z1UT_Qj%O8DAU|;1O5_J_ z#T%o`fN!rseqar74Y1vFXlLMZ;0fTiO*MMc7I>Bg*bR8$^EG-Qa3U}Wy#8f;`2e^O zxDL1jxC>bE3fdd^4Y1X@XqPSMUqI(p^e^DdZ8dro@Q*iZ^rgVx|Aqbu-19d23-FWo zkssJ*7xLq&nxh{eKd{kmq%JPp+P2jm0Zc^u^eFa8Pl6*BV{J(`48GhVujX(;w(>!1rrVE^sowza9k+)@$^Yz|~qz-va!1a!fx6 zJf0HMwF@xk){E(O;Gk5jM}YO~$Mk8yWxyzKeZ!c(26$b1Oy32(AS0%q06yC&rZ;Vk zXBAt<^xnW3t&tDd_~Mwp0C-Uw+z;(chU6CL7KsV$E?glo!2>H4rKk(!J$PavRcucPX?idl%mjaI$puRx+ zHK;G}Kci6Ji}9@HXw(-tW(?{JymxF&F9U8Xg5SVVE~LJ99EGx`VcoCPs`CGa)i7GTCLh&S*tpw;TzDJu1Ahcg12$TS{J=|rD}iHx zTYzr^4+1l8NB&Ga;|sI{*8%f@SKopBz!ShIaO$1N4?GOq0vvM}@&oq*wT>9S@wRlAwR?~scpoqixD_}JIC%;3124Z9 z`GI!;w*bGr5BY)9?nnMCv@g&Oyy5}m2ey6?`GL;>qrf+TD}kQ@w*XH84+7gPL;lXN z53~cI;15Kd3M8 zn$w6E@aA6;FW{QrP%d!N?QR{#$JUk7U4@r-d-lnd+!%mb$8==wC^ zqrfO|@fGkFxVDe3?*Kl6Z+xBr9=k@@oA$tW491~c;9lTF;AvnLu<>|ZUkdC1d;wSp z+y|TiJPlk7Y}FHXfxUsHQ;;9H7gz;sfHxj21>PHg-@uU}_zkR?3%`3|9e0baX8|v{ z7x4nVu^jONrmR4mf%_kU-@uR8Azr{EFQZ)Gkatku%kV5eFb|ma9_kBx=L6IicnY`@ zxMVlV1^x^?2z+`E%FWfp(L#cjG<%GeRMj-8bw>RLcO{{&;4wvL`@a7}FHFOS#!ZJb zZZ)Dw`m6>~t^WmAUedDzMmDK42-x(OKlD*V3~1bResX@J)Z`JcB;{_<{UIN0k>?rm zdEniU{{!V3`E7HONP&EK6hCjC{zEUd$cqj6Hpnx6`$Hc{9;xzeecMs~4xkRL@7$fAV$vIayKQ00+)YJca@RtCL-!h; z{<5M`&#UjS-JY_r-rQ7ME*YkB_dvcIFH68uDy}zLR)ORvA>RS{wPtzpM4>?OY5{-h z;aZ|wJyU*)L&tj32x!u~3VMxtV{K_m&>Lbi^r$>H^e(%yM!((cw{3yZe)AxI_^KK` z-6BsFaw_Lh$ZzjkqyLy{Du>$dP^zVzozNSPYnU2~ozsS$qmcK++dw-sHQ6cPc5B{L z*dl*hpgxz5uhA!2>=YUP(%0q7CSZ*TU85bs(iO^I1bGzl0(1Yc4HX@OYGBvrzs$knb<6(NE&DAx}PT z)bAwZ>u`;Bj`@7BH4-NSmKFBP;LCQOTD}wxE$Sv{9 zUuc_~VjC?g0Ugq#Kh@WuvPPe8uIFHG4|)0vy+@%}GOI>^$E+9c_b-!8vbPg@4XbPP z8#9nlaUCJb4QELAM0`&|&xLEuDAWwS6yg=N}o*Uj+G5$o*z{ve&3z1oFd>-)NEl-HEdEoMMrWH{=^2p9}dl7Wr^P zz6bJWA+M``Cn0|x^19}S7MQo6g1oN&*9-DzAn#=^KOl-1@hyUUE9C3U^5iEC|00l& zy{$&yY>_{2$QMI?9P&>s@{bJp2FM>@h&P{E^oNAYb=N1idEptzejwM=L?ic38c+?B>k&tHsjr=q}wr(huKvOwWAs>Og zoH_Vx=q1lG{G0>%YREfU{Ag?V@gU@DAFk0aG3WQlBFO$`$TvZbC3oDu>}I0;{g7{i z{3^3t7BA#~Kz}3Vbw|^4P5L@KG8uCMsCq0clF|!}G zbYnb8!94gQ;YPvdDik(3c zeN8N;MExQEYK^|aoIm+~qx=q#AA!8C@nR6J_zz3u@_rp$v;ZSsh)1gGY{10UCeTdM_Zvn zwGwe%2)(R>nAgmDHW>_x`&!7y;|0qRiyr}_AMb?xiLYz)&&i;Qd-6V`A0LIh^bpQ- zi+sKz&uD_{Cdj|H$m8=$Hss5`snMMl|E3yoD1iKn!!`N@#BDWdx zg^>UIyBdAArThxRzqODL_`XK}%p%`w$ag~i2jp8V@>dP{QOH+duY8F`{!bwn{U6sw z=VA}NrP)7frwrjD<&yIs^laE$f6^QW(lbVNp8udX|3uyM{2a*J{aB;lYqn#%+vqnB zLVn**SodSTHrkWQdA)(~S^2XKdRP5kqaRO6(ECPArKBeOJ__U<1s*H6wz_o^CF zKWotp_X4oDPk+Y6DA$%|_|*&Ya$8JaVwRI%3$6WmD)c_Xy@9%}6XrmEZoQc9H2Y(l zYV?N(As>%>2Nzl7tql2Q$j3H}>6cRlReul3&`>@0Lp~kyd1iUCyig{PA_%RggDmggtM|xU$F?SEfQ9Z5q?_E%JVbd=BJ~G_TwL2O)n6 z@)MTwzc>2xX2@@C5!27bd2Q6+)>I6#)Svf5enY#M{uS0ahMd}IpLLy<(j0rr*>$&f z2gtL!#`I3+IFX%;RIic!y#RWhE{*Bk&HcibZHx~-$a{B-=^t6-yA1h4$d7f8>E#xA znIT^bd7qxO$Ajv-6Y{iPF@3N(Klyp3wO^iuUZ=}qdRMcaEz2mUMGMSvxv@IO$zG7J zfP5~>G~${pCnWNt2=e61WBT3{lbrTz-m;#LbD+2G%9#F&*$?t}ecWHN_bBuR_l@Zn zC+f9`>rsE+3B4=(#q=5GcCwX-Mj|^$A)lWY(;bO+#>MTBUW;>a?`c3xKbENXbzG0i zy9#uzdJmpe+ygjI36q;&EbK16CZ?Znk;~wcyaVLt zjf&|T@YyIQ`5D8{L6AQQIlYS8klQXX?7JaKLz)W2aKuPeh0{Jhum%%$66cX*dUUR zi|MN^_8&6ryCH8rKBjvt@@a;A9^?}tpJ0)XG31XzekbI)X8BAZ7WLZ(`6|fkx;{7r z`Iw1#p3a=#biJN}d*CII*EP;|fIN3nO#j)OKlum4zd?{UoE)oleNX+=4S71`Rp$Od z{nT&mrwgGsWeVn_RAf@~ne9!n$xHokE#&ozYcGf7J0Y(R`QOat*eZ>Fcogzt+*>Y% zu3?q{7Ku)nT>TlY2%(#Hw>r!`o zvmw73^7iKZrhT;n$Zv(b$}CTo8{<@_5Av@dA83}#Z7;e0hdiaM?)A!A$jczNoAXZ* z;Su?Fvb?VN9)gZpS;qDZw4-4%e-}u1KE&ofc#cV{`kId0pu4?uRFgF^68Mz zv*eGj#}-2V9^~UKa(UxM^nb`xX2kTDEb@(p|2rXH4*B~Q`P+v4DC8r3cy_@oH{G|$ zKp`H;>*~MRklzhCE+^ytM|N)!{{qNwfcz`7Jo$5@e0sCjfO0&`YmrYf{<7^2U&NHp}HS zEYE+)&x0JpbUgo9;hvDMg}e#mb1d32idu#yn^stg|MG{zKqAQyZ!B0tXUl{TYkbew$ZTqdF{UJ}^71KwV{j`lR;&2l3J|EyaG?qBr zY{a1jD!ckatkW#{`-=P&hhF%#V-MD`W;wO%KZOc;EymHQ(7SRku1kneae!X(R(UQe zy?M|(2)*`+_RhE3TMNC|B_M>&9>J%&ECN(|x0>AU|?AVZX(eXT)hLEmM0H3>bVy3uOaVgmh-(C@^2^Pry$>9mUCw#`BBK1@$*c*e1nrC&5R+Pw(!{do5A7xTWPv~xt=0U|qdp!X!6 zfgE9p_h1ok^5;RwKe`alOr|2C{GoQ68(&|Loo&$T+g{fv;j^KaTx7)U5agAR*A@4a zEbQ|_URS$zfZTr;`5?&MkY}6Am)kQUUT(;Pkk_>?oCo;~$m?1cJ_>mR^19ZA+aUKr z{&I?`{-<3$I^%OJngyk4SqxKS*b zD3_>b0rcL#Qr9RRA0$YLOy1?Ugvdq3oL9Rkngj^ z^Fw3&>;-u?o@MuDVho1g7U2m4S?oF|-d*?y#$b4PD4)>=l_C`06 zjR2bJwHA68FVXAV-`EMc3v!1g{*#UPABFtkrMmvQWt`n?jI$YC@Ex27bsZ4*qeQwu zCCPn|r!PZ4wTv5^#JEB7g^;htv%im7iojnH_$vZ`Mc}Up{9hA+X<{=D-`!?Z zj?tw(9g%d2Dt$etY0Hp~m7Jz67CM@Wn?2Z1mPxHu4sBxKxh_uMwG5m3IK&Sx);5bSOE#5-zsIPOu}i^+d-+Hbh&GbWEeYBphiHwB76gt3xw zKI0O`)r^}Mw=?c#Jj{5CF?BST&)AVMmvIQ=c*YXOO2+w&OBh!(ZerZdxR>!T<0;0} zF0%K7*oe``HUSIa~X#)j%O@ktYn2s(4roegu4dfCxSeq?<6*{AjH%*bC6v$DkujHX2;+Fh62?l#`HV{#S2J#6+|Ia{@i5~l z#?*-%f5wiCxr{>?$1|2NRx--mxF5Vq&R1$aR=h&R6RIC2BUExTXZ}pLQt}JO6ezA> zOuiUFXud4Wmps`RQy_Vozs3~i3w?S+oXS@hj)Df|Pwyc;xeIApJIwUR^dh92BHbk{ z)1M$sbL+d}p&&#BI4ALzqe}PPo<@B54p#r?aiqoH0O8Hby-#JdEujO>T z2{P^A^kb7{dK}Uelg`)5^aM_)h=)?J{y>`i{THXFvHV)`@IKzZ!Sb;9G8X(s+I+ZJ z{~3A-2M#yVRG+2d%MrMr$7vzNuabmxX+qkYkfwZOFGoCVjM($}uz~zk_)dpIvOns29iQ2=hi9ieQ8e z_RszV*B3n5Z^e9X#SatOnu?2|51#Z@Tnzo*Qh!>aeek4Tm1w`4)W3`Qb*fzOq`!vw z9g3$Lx;Rwa51M$=S8+eBcwU&FU^{tFa(%&*egoEP(1g~ zLbhYXf#YAsyb(8!f3y~!>@Q8U!|M?h7gbIYc+yvKQRO6Yd#Sjna)>8=6&F=b61P`V zu8%5*c+$^eUX`QHFBL~s4)LU~;;70=;`UW>ROJv)`YMj9oTMy}I977GhCX=Ge}Q>J zpZmiu=9OPb;7R`o^UANJc4Qq#V*7$8{Z`B?zmmBBbYoumMLg*bV_x}{)QXJbx{P_{ z7xAQD#k}$>iTm4K%qzc$C;c_dE5GDl+eZIqUin2l>F;A+`IU4INF1s^E5C>*eKqbV zzml2>bGx({`K89gLgtlU#FKs*^UAN+`9d?wyz+~9(qGEF^6Q}n(jPSr zD!+&)eKig$ztnhpknJeH)OdTEdF9stnk;cN<#AQ{MLgNhVqW?65RcD!3F9;Iq(3oX zd~VD7LFScT#FPF4=9OOqh{U1Bf8`hPBvRwQ@~au^?_xX3FXBmbgn8xHO=O&oXXH4j z{34$8TQRTv8cw=6x-qZ(BA)bzF|Yi}BxM}am{)!gPx@8NE5FVqWgK@gulypO^w%)2 z{NnDTZDC&dMLg;6V_x}H4;&pQm{)!gPx=kk$v7y#h@(U4E5C?0>np$1{A*`B3f20g zH}eXGar3XFq~xUJWbp$?wj~_(Qmse*gd;)SmXdHJsGpJiGy4tx-imzYkp|7Y^V`X~C6SieMjiTeLjfB(#WVto?R ziT)&}6ZI3*n$4DKOHFM+KdBHVrKHqHkQ>lX{aVt=_3G8H2O0hRH}XXN#B^eLiSqx` z>4s?;jndK@HOjz0I*?9JYuG3wBRwOXNRduUPtSm)5j2HXGmnYM4f24lg-^BV@>T4bf#b-4D8-gS- z^utGzkv2Hv1F2ZGi9iOGUkE{nv_&(~s>mb^ONq!t`9xloBAJ{QSj#A1YAV*GAO9#m zQU3q4M>I*ZMN_oYXnn0=G)>EhHqx3zn`-Aon``GrTWYPM=WDH_7it$r+h}d0?X(Wj zOs!KiOS>f6Me7>P(YoOcuRWu^wA|?B+7;10+EvlMTK{OCHZYp64UP`chDC>KS4Ru9 zYoepH(a|wlQFNR(Av#f;9G#+F8@*1O7IkW_s9P(EmTKPUbj=qn*86#uYwk{rc9-2SjdZCZ+!f|}He;vedhs?|rG8blkQUJbRhXd2$ppApT# zt(?Zu##$4tX|!pynRbrWJlZ_kLOWM$sht-+FN*r&o#CzV;Oj+r*LEAtuC>+LY3=c# zaAve)6g7`_*1BlfRQKqmT6e8SRMcL(Jlb39qg@%jO6wP`qyEv++Sq83HeQ<;ourA{ zN2h7Unmg*Dx@$AE@~A%=jE15Stx~JfW@~e_>kb5+NF8)9JEg} ztr^;>X|xI2t1;@-NNa@JWuTVnXvZ|vxgqM_05PbKSfnB*^$?vD#L0$;B_n!CQFD0z z7eB*>XbEZsY6IBA z=mlsS5f7~;#eyP1aiA#37^n!;UVjw<_=p%#6etc935o^%i>e-0Yb*?@)cyaZ{|(L0 z?_<@D$*d3%p;-E+I;cDtfh-_4{ARox** zCNoR-5R)}^Khi9rU`RD zystk<*pK_Ex;5RVN~$HEv)RtHN%&wo=Hqjcc4oV*0$*Fbo~(m^PS|OsMLBNRCJ@JK z%&%1O3`%~7;Lp>B@qG}b|Ebcyq=Qi8Z4T`)QnmT>BkONT(63?sAoHq$(h;a6+|57O z#cIDb^G6c+PRyTRUisMzd~N<*!TKi?^sfR>?fVl|5Jz_j8hz)nHaqm4L(*S#R4PVU zpT2`heDh)+Y7bv|6n`+J}C|G_MCPL^EJ%3 zWBc@uHS(v;e#b+CVuzsCYikygPw^j`^|#elzpF1ilaR!32Ig^N|Fe z-eE)jM48V+nvRc|-y&WnrfG^l44&#Wmg}`ns%yV8Z#yN4&CJioeirG!#ymH_M(=zl z{=Q$N;`gkd!Th|_k`V8d#mDoRpZka8#k*wjk=_wTc5X#2=;$ea<2!@QzrwtDcPwN> znE$Gw)StuplbK(2uH>&rnvUtrU&cJ2z8bwloyu)5zLbdXNwfaF%(tZz3WxYEEAR>C zyNj2};BUxCvGzLin=g`t&ip>+Uv47_@vc+Y`38J#{qtBI{D11;Rev5PUP^}h$>c1K z-?`lDm{-p?seWF~d^@SG)kim`IDE{!_zpW{Ety|^sq|mGD-?Vu=I4knspI_`Z09oO zs~?j3O*jrim{<2%t5|<5^K<$BYh$G8a5As%t8Qp4c|Y@m2T8-?9iR}+VP4&*%$Mrg zEzEz$_b(&t&%Ml#8Y+o9k*4EO=D!#rdGT&f@Xs-??&~60;&@H*;^muoha1~}mw9#H zSG>a$IX-3nM4?pVY}yg#`;C#jcvmO%|HJ%qZ1{6otY*W2L+z#R8{fu!Q|2!iFYT!F z@nYuHePt*6*#$h!Bc~I_`F^ZlGEpiH;QG?L`KerWKU%z_4P{SaUfnmI&Hj`yukKfW z#(bE0b>Dg`^HJv2{p%&n-_E?ck1gJ{3EBP3tNYpF-J0MZWBy{7^k0o*8=3!Nx@N&P>QJVLr^yAE^1UH}mSb1ShxGVCL2R_KTPw!~E5Mmjzxf zO2>O%!Phn}m9zdck4k+$?X|x%e{hxLKVtuHV}7IfQYPN}$^8Ayx1)&?#|bX?apuo? zLh^jNYR@x2fg6^GCv7|P^TbR1Fb=aFdWS#7xye(~&RpgXF@HDn;vI{S{mgtBP0%>R zI~9RRcz~1aWNwhWc!whRCd}t=l)QLnBKV7$fBJdJ(>jKZY~~xiD2Zdt_hEkWTatKG zs%s;d_rD=|o;I{e%-_CM@?34Ll=&;(lzgTHt&;icXu*I(yrU2}kNH{ulKciC#d9Fc zci{_59`3be;A`s-kFfsw_oW>V+u6i?V3*``ncrE59ksp+?Uwp#eYG3{w=g79par-z{AXMtuJ};4l3|JgRd=a zzt+L4IBXaw?Wp*~*#6thx1hptsCCyD%(s)Yrux5@FYT!QpDONupQlaZ`-^Z+9L*I^ zFSDUTR$H?xexsGoQv4<>-&^s|TlwLNf5FO6Qv8cnemZzMUwX0smq@R)YUZzFUe$L2 z^HJvc@pWw}^RFi8Kg|3==GFEP{VfYBH)oKHo8q@KKZkjK3{Lw9JdGzBEjV#BWk0`Q z{Z9u=J3O3eKQaIKP|0s){WRQ&rgDA5B(LVdcFZpuF8SfyF8!E4JVNqnUKq*z-~!1H zVf|^$-!@Y6b0uhD<{KAE;tJNkmHDBgCEu3$<;<6jk^Hml|0d?oA1nEHn17G?L(G58 z{CCX%t4Qh>vHf3}Z#`b}qnOXYb0HL;=@TR`-jxJfZJ0kbN%FK`Ku0d~y{Ab20p>?A z|KU{0zbnj-)7W9Rpw6IHShfo^(NqLyaeDoEe_T zquvx}2lMSjF8mEvF83eIk6=DIUFyHXyt=-ozhy;sV$APg{dUZ6ze)Nd-u(kv59Zyp zA%H`?^9PvEe9=E8&zIBMDCT{4OJ2O&2l~^%pDhkAJSFuLCDE(dSt250;81b^l}Dv4{ebC=LR zb6vuXD+KkWxev}1l1csqYK!|SX+>n9n28(FxQ`PWZMq9gMMn16sTfUaV`M(~_4 zL9<3O{u$z>I+`|+9qPb*nC+{1v#a1u2KZxM9sHO&cn{nE?Il^Sxx8)(Gv7%3(FBaM zc;1kXxpmmNAAB=f^=EewdZ)SDEn_=B9F_KG2q_+SWB!~YlAp)?tIY3vTk?6#?_$3G z_mcmL`NPcr%I%`~KbZIZBo)=VB@Ii8rntUHJinTOr~bc>Hy(Pk{Wi@1@`EgwzmB2x zV!jn$Hz|G?^HUZ`eRZ8amHEHFCV90FGlTh|9G}Oy+&ct+=6$inf@dWY(BG9O|1bQv zw0|qhUZ_KV59=S``!a)B{~+__4@*M)ElPa+f%(8E)2EM(J|pUw8$vA&P_(@P}5r=>QV`Fk744ldsL1(jRDQ@ym+a%79L|4Rjr z^P(HqG)3BbNZ8@ROt6vdx4KCh;M)M&JIqhak^YN!+9Kb6=Ka~yAKt#v{#}Rt)2!e7 zHd!d$51^wS7TDB(R!x!VQue=v;3a4Noyq#&@rJ#4mm(A{V}4U->CZ~e)Svm|JnzUT z;ay_P2fvX8s_W}1%tvXVg=48Srb=8tlJdx`CDW`4_lNz9kUYi}~Y{t{WCmzm!M zp8C&9J}-u`okOfYp7m8f{E_+gi=<*Tw_}X?1IH!rVml2mepCBSeO(gbZ?fWJOXfdX zA^F?cpG?7XW)ob&`UTCUqMFx6F#j%(w`v|7%lzVYQomk3Y0Sm^ji;pJs$FI?e_to5 zKZMI($ozzVNqzC|LCEND2T{E);PF}Qx6^#3+Ro&@wzUp^AKO{L_2O+u?IiP${vfRs zu`zmHpUPdr{p3dGGr-&Vvl&{mzMbbOHD7dOeihFn@5*XxeVD(CJLV`hHiY?CK9g|} z?@)wnBJ*>PNdxz?emV0Uxq}olUnO`>nBX?nUq?3_arjtvAM@=$lf)qAA7XyWlalCw z{zu1i%>RQIjLOcxn7`?DY5!ZPuI*)h$%m5Xuxej2|KuLY^ESHnBl96FG3L|R z|5eO4Z!X(wdsi8^yP0ndUaXVVb0$)(bz=QpJdm$r{VSONme(QIF<&TnPME;W`d{%p zf)%_tK1Dgyf95ro^}2-l27P74(zRFb}2Z< z`fHlYaZkJh6QUaCvwoI(ezw!Fg^bU@6OtIs{JG38;c>VJ^KF@bJX^+rhcm4w^9Oi5 zQRmkH=3~5{ugaak{Ef5$h(r9%EufeA6y6V1{UO5q0(E}z_%@IERwsoSJboyTJD7iv zE_iW>cZ&j72wqT@UmIAzkmpA`OLs88pZkv*hxdS|_$RJ!53>H-nKJ&bOVGY&ei6s{ z6IpHTH1kbgkp+ss@r{oS@I?^nw-wy4)H=Bp^BG^tdWmTGJg)Q6ROzGD&~*vmv-7Qzlr%~2PGl?7B@b=q4as&vvZvHF#p{@rM}t^{EGRX z6XNr;;H9qlcNzu|ivQ|=OMle3+6KJctjM2xvi=9ROX7T9f947P%nV~$zoM}WnD|=` zP;)bX&2d>SZ~tjGGvA8q>t&M=H~e4kzQs}kn7@p@IfGa6+?m|w!z5z4n4z+>rn#<7U?eQ(QvsqfQ+f_u}0vwQ@z%AKJZaLZp&ZX~o4Zzvo=PDdnImUG$VxxKWI$6euf)92nItHb9l zM)rbUj^c`voXc{1T@J_Ho>_qqlyZCZ(1Om8H&U(AJ+*?KN;6k0FGJ1!9w_Esu7$#| zbM@6)dBE-WYsKCGlKAZ?u8w#D6%pgJR|p-!ib%0nvZWsJ(Iv9DXGM_F>yJ3fp-EWc z3j{*GKxq$Dr^-=Y;nSewaQcE}PVuSO6OkWEo#o~7liTA1=jz_GXZPMh#~%olhvT0d zA&*m$DAeN z^;y#8&MM>!2YeL~Z@{lr_9F8Z@6MnqS&N;ZQo1|BVb7U#k27e^Q;9A|u`YL(dVte= z%;3noJYJvMTS<%qjYEA3JxC;7PM@p7=Ztt1F$>+p;|K>teuvZTc9fUNt|;^oXtyC{ zUGHp@h!awTb0#iQ2_>pBi)2EH+-8wXD3SC_xZz?arD&$hWKboP$YgM)%WQC_%Vdxe z#ZK3ZilBqec7Gt}vffwVyh7Ndp&*wiinkuL5n957X1C8Xt0sXuN=C8Wq>uB#TQy6(wO6s}-K53{VdujK(2Jy)2b@&`c~lApX7z~A3mB#Z5%fCz zo~nq$7jgwPl?eIF2{f!B3A#e@ge!6!f!N`SRQUsr*)CHeEEC~i zu^|2BVGs4}u(vcZ-OWOT&~?b9%7An?6i6eiQHnWEs)!fs501H6RvTyb zlXVl+D2ZM)OZG&~>GK6#G(}@cSKOwu46=|L+p%wpwEI-B-G)6fbL&gjk zIoL7ynn74<%XPQ<><$MU7*pI>GC2lKx@N%0;rY-Qdd)b;;9;C?*q||>ibm!u149c& z4IEJ57&TJ#u>FT&CrZ$?w_2fr$y$sWDv` zq9gc-F_TwTAbc8EkOG=ep|Dup(!fsR2(6cBlnaYF$66FE*J*hlbkMXM#+Z$?Cs>SY z2Dh8+TA~=n&^X;ebBLrxF>X&d5(?n*V0h6;_@^#NP;t5(DH64yY;0+kH&Q0&2Q081 z;Tc}cAQ)s_0e__@6mbMYfl{nG!&q`Uu;|Bx0qd?{buDfOLmqTp4|`75M2#`g`CV3Z zbd|7`nHdg*B36p3MFyyTWm?4LmK}y`S{e2SYiX*Xr6MGlaIol-je{u;ZHBsdLgiFx z#1yMtivop1Hmb-|j+%sJY&n?XT-;$H?eOqofto4omd!*eMn)|Bgf*Iw z6X#wLXw(tsA}tV&QprQTn?%Byc5&I^p_~t`ezPuvoK(kSY$N5ez7z z<_?;~U1;308IBUC*B96BrOBy4bakWG!LrXM!pGiFD{$|ZJu~c<%NMPX79I$KD-a5K zu&|+iE~<;1;!NRoBbRW_Q|}foVJ;>$jCbC!hx??+th%wVO6n9L(G9rcit8haAWD$y zMs2v??WuAEO0;qh#=6A*Bvol#qqac2JkD~O@ww&ML5wvj_EHE(I~qSYtw$tniXnj1)+pCdM3(XNLL0R|u%5g>YgR zlNB!RJ+u^@PF^|0#i^sbG$eY2Si5swOy{z3PN8kOce8p@QrqZ3?$H&j!&4RXd0p60 zQ5WWN1Q$W1RwB1~q3UpymSb#`Cz(SysG_Qt;HK5Kah7$@6`pfLnND{3(Gee(ML*(} z_mo?P-tN6bXAr$goK3<(3<*Y4sMAr7D8fp7s3B5aLSTrE&u69+RyGrD)YR5vMK=&7 z^O~CG%I>*5S5mh^W0^)`^TB~Vn1mgXfFoEE6n#d< zT6)Qy1La9pj{NXIT)K#U%Y&CZ$z@PQL9$(Nmf$)G0cSPX!K90x$c-W#QEjg_t-OAW zUAXR*deSC&BKA#?GtO|Q4dc=tk>_E@6oz=bl>an}%CZv{X<^X?MdOKr&8G@B@oG8s zOyi8vjZLQ`mPW;5v5&bzockOCaXO*(=^8A4zO#^Qiq0njj3Ex8vh--#bQH0O2Qvv( zu$GBYE^$=QrI8sPpR*eKmGZQw{%4F}@!+x>BJx->iIc&o9Cc^QSmOyf!xT-2I6>4J zK!uuolP3d~TOzuu!}~lX5e=3?6=CdzS$io*K+Ld4$&L|~jxoFsobQthVlvNDN3kZh zEUkv(^ANW;cV;*&Cw}(RJn@@)k#Q=C_QJS3Lv(l9K``W_?pS1$VspaO1g5S>^)QX; zIJ@X1bBohW3)ePQQr9%aUkt(Qx~IyUF!z=SN31pGG0Mf$g^^^V)Hh|FL+Cv9Cb!VK)(Sb#@x9gZ*#Oi%r$xK8!t2tN*6{g_Fls z<)n2OhJx7%U4&0EDqRj!q9^mYBsPvkqey3kZ#*hmP6T;PA;*$%1ncmS)f@8wZ)#U9 zCtO{QD;HoSB(Y3=@&_WGoKk;9PH_eHbGv%onn;y7F|+5mtNq9+F%pszwHOg>G!nL~Y^ z?t&VMah7{sa3~NV^I&MVE(e2`mV>jP9Gli>+{gK!60MN|Up2zB`|{Yq_sbOWT{@N; zx9f~F-H$tkzv-azpWyrogZ$h9-)`3Uac?7kZ+uF}kIJv!FQf1@p2MJnZWEG@%8%Ps z;>g2qvaRx~_s}R*e<3`p>lH#s?)MPQCv|VHNJT)1k^wtiK;J%0G~laH#j>D5U2|>7e|$)qF<$s=!ed zQ}IKG`a35IFOanHo60gDVI<7?)q8go7N(iC=@}4tD7-!)zj{B9LZzpysQRlkJ>O$4 zU%kgi;Y}Z@mXSFU?a|{0=KSjKx+rX@3SvyG|02$>N>T3xQi!*NSq{4;rD+c!P35cn z>it0qBMI?KEdTL@{OUbJ3fHO!rnub1_^k&|_oP+-QtuCuik^ShVvgJ<2Y2@l>e$9+z6SueD%Jh1uLXQ zIzP;Z%CGPf2+jG8@4>8;`RV)g=0oLE_*FuF_5P*2RWiSw&wpjZu0Ajx0g^3MfAxIT zw3j5a^6%CRc56~QhBW!#ErD10dnNE3PLYR1^ellY+pKyczo_MunZ#$6U(u9SeP3~e lOWFUtY{}B|FZH0T;-U`!?ulp`>S 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

    >j+kP`+&Ad!6 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 OxlEyd){IOu^Zzf5a_&0- diff --git a/build/bin/libopenjpwl.so.7 b/build/bin/libopenjpwl.so.7 deleted file mode 120000 index d542b9a47..000000000 --- a/build/bin/libopenjpwl.so.7 +++ /dev/null @@ -1 +0,0 @@ -libopenjpwl.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenmj2.so b/build/bin/libopenmj2.so deleted file mode 120000 index 678631da0..000000000 --- a/build/bin/libopenmj2.so +++ /dev/null @@ -1 +0,0 @@ -libopenmj2.so.7 \ No newline at end of file diff --git a/build/bin/libopenmj2.so.2.1.1 b/build/bin/libopenmj2.so.2.1.1 deleted file mode 100644 index dc1d02491d5b2865db475b44763f483bcb61cdcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261256 zcmeFad3aPs_C9{YA`#I<2AzmFMnH{>OGIFTfHq5OgQ8JEaZMl#2_z(DfuJBQ0ZG$D z;~rciZc$J&s2EYPK_n4TqoPJcjfhUiFk@s;BcgoYbL!OX>f0UEc|QOAp6A!l>HEHQ z>QvRKQ>W_Iy?uLu`@-|O#Kc(o)zv!3BGi(l7?&h?e&{MkmgTZitRDD#oYj|QyW1&| z2dgSnKK*G~i7Z5A9D;XarAlwC9KgK(^c=^~N|jHYuZ!esk$f$Z&;FFAw8&?yQe$<) zC%qemcYY2OIsHkp^h*7@B$JNgFI4q(er`I9#Vq})^Id{`)V@FZiWk94rM%AUl0pW+ zOMgmpxNUvFQ!UTGXtMS1E%&}vINts6)URH8?XbMWwqI_(;YP~$2HySgPQ;t49vkmU zLMyFXz2g`5Uzogb;b32#b$749p3GHatS&L$MV8fj>5&)4#>9KAZj?EnNe4;h=>6pIpsg@U9;*!U#EUW)e>qyJG;}Dlsl@wzg(m&Da5f=i96&qs}uIPPvVoZA9#ACeHwblt%?4mB#n1$)_ zJ-b}uihsmwdC90QRIFR~7^+K*HDq9X{PXwM=S_7^4ZiiOXEV6o~99k2* zbl{4Cla8{w4fG~jy=uBI&KwP!B~~O(i1GHa29ho4bt2v;J_E;R z;yoDev+y2*_fWk5f%kB{N8oL~Mgok&`y9Moc#pOTITh~=!Ss=dcedaheCFakQ*gd~UXRZryi4#d#d|j1Wq8wTuKM7= zmLNS3Z~H z^M1S^6#NiAAC}`s@VNr-NAZ3f?20l0A-GKL-cyGn~ZM^CAF5d6q{XX6w;JpoR z^YtOXM|gj1klS&*1Mko9{!;jz`20$acgg2B@)?v*`uNs3-Yv)f!RL2)w+r4QpZ}H5 zz4-hI?+(282}d8NKG~X9(m3(#=e}B7a8ko%jW0g-?C|XmjbG&{O8#f&n`yy2Tm0u# zj9WQ;Y}qyWZ`}XXa9{cp!@J!6Q@4kg%}RS4_=3Njb@@MzyJy)6+b&99T3$Z9_@ZfZ zclKF1d_>;`f8Y1>qvyO-`TY?MH%?r&;iK7a9G>uy&%5H;;h&_s-n!Cz>D_%#T0Q(< z<1SsbV72S|dCT7z(tO1W&$gXg^4id-RB+3iCm(im@#MwN4!@^=UFpDkE^7MM%SA8WcjM~Pmg^_1+Hl>T z+@t}Ar}Q{u-~1H=E?G75<7HLNxq1Iwe(!`;BM*Q0!_n@EtFGx+yy&+3FKYVfgHPu4 zesOBc_fL0S+55Y#?=SF-dZ={9fKgKt9vhYg{lmtNsrvfMSDSA=?4z>>Uvbpq-WN9? z;-C0*@Z>iOXMb~j;^KEb{~dqD#(!Hqj!C;@+{|kS&s_B6@OKC8yX}_Py3*3aZa(M1 zva26_B`;~=<70n0@0S;MEx{U{Z~w7(ed?;iFBre)2YfDl>w;A;ubeTib=0C4 zmk<2B+Z9t+4lla5C^qrq?{5BO@YtkJCVN)h{zTE}IfLqkFPr(-z)$b}bki93hr6Gv z&b;rVgu3(gcRB8v{bQzF{pPy(`o~sH_8#@@w4bhfVNLR3ucfYf<;7Er&*;_XyxX>| z7*^1G-ma~4_q;i={GwGaT{!8R!^c%^DY~L|_{%%GzS{4jl#-!!>rNYd=<4C8%( z{-Bk^-~Ifv(}tcgan-^eM*U?vgJFD*L;OzYItF|RSHn)7iu(IX%zjOb~U)?b;?YoJuTzElo z+1Gu_AAbNkSJvXoA5LBMdCscgZ>^fS#Wi(R@#9C2D0|_N2S2_&c+!q#XFv0N z+7p)^`UZUcTKM#qoo}A|KIGrKyRP)rj_13bKDqzZOG+;p+4jMAM;OB`;;^fAsMRqg zoW80j&1{jcZQY{t{UDkcDQ?wZvW})_c(3UE%bniyGPgaSdZvD#l>j#d8SKr z{@6pK^M5}iI{#fK^>65;p6_!ki8 zI;qdpPU`>kVbS#;(}|vxPW1Hbq@I^TzCYg1R{-@t(n$iZWIOb-p8P~5{t8U5MeJ9- ztY033!{Bv{80AwQFTJdXKT|xdo9NXn@_BDi&so;zhx3QElk3^bs#>IQPnFF|6aH~p z6yeohWwS10`}DH9eX0Z{oAoyPXD=&piK@XowNN`f0__5&5N3pI3_%F#&q%6RqrTq^?K2N z;2q9xy#!3J<3<09la&5MrOrB6^j~zCs;6E{`5{K_ohgguT~f~tqCfr@rS}uz&*X8` z%bF((ue(&Tl_By!%R=%Hk|A_; zBKk|Y*GhdJm;Rb1yj%Fz{feOT7kV8)anxS#5``t%sucUo`&ij$j7qi=dA{gnWxu2N zNy7g{_;%@cU7rWUuiC{wHNQvd|KU!h=Vh_OlRU5WvYNZ8c0D6}6~w5XXZKS?tCagU zvCkPriq8{%x%7LV7nT0WqNiHyU$I6BzAyYg@Jag5IiUEHL{EX#^K*$0bY4NPuZ8dJ zumcS@($oGMi&+<`535DW{ZbU1p_*r%CU&cPSJm?pk$+U|Uo8QH<{Nr-mvYxjzbsO; z^$+p49d9V&3(=n<@?UreS+#&L>iT?f~zfSD)fcXDN;m?D~7N_{q-qVznW#I3Jo+`YI`@oQBxtgn$y?Y&$ANut;%U+VdI zA0?>k|GMZ&s#b!x{Y4c((D9j}W^RZDk6dahoCr ziJoV~Zn;UyZdZtWo%q!{iA&>!e^UG*qn9#(w!c^6M*Rm$@FlU&Pa;430!2&{JsX98 z_7}zLb~+)?cmol>xud5_3<<=|t zI}~l*FYF4S<9Lz(Man%y#?f-9 zC3{|cqbjgc?DLt}f6W9{;1a3Nvtpl9WgV;I$&XUcw@*|Gaz%cv@Fxhb?NcoE`BnV( zagje9#Zi6cRVd;c;qMkbCoWd{Uq$`sb+Op(VX^aPinhK(^GQ#$~bG?!e zN_~Dq`Bcwy+7$np==oLTdj=H$Uy-Nzf#fHCt$4lOt`Yk@H&6-cb=ntV&qE(l@-d=k zsmR|i>zsR~o&{ou{a+}-U(kMfbrHMuC{uz}$WO21#Qw!H?q(|5>M8Z_yFwA4OS!4y zpFba`8v3xv*NdKj#Gi%2Q@2uki=I%#%TmvCM9==dO3w)*f0?xFPKon!+Gpho{})+D zY5hCIo`(J$`+Fc2Ip%$`zg>?aG#T{;~vAJuYq)Ke?VZb@9^c zb`m2!dy5q>%Oh(L$|wH1rHbz+`s1Wuev`O#x=Oaz!5>M!tE~4X2;W2M|Bhq*JXq{` z+EYq!q3FL%>Qh^ycrl;#tLUF7`ZGj-wdik6Q1&@b`17UyXH_cVJKv;ik^cp7o1Tr{Y)vzzU{wnqCEq2?fXzK^@&k9*rUoN~$RoAMP`ur;KxlZ&f6Te-0yt13U zK9u^LD+}0DMb9qr+e(R_F46P0*nge)=T70TgIa3Wr_U%t$HPg|t~1|Oe51$@l=}QA z>*2w|{|1MTw-O@eyA1H8f1a$b^!##!)bm*B@KaG9z1pQ+_uZoKH|oRsMC$X{=Zett z;1cn-E5vU7ME+9r|B;w~Ywj7qj7RvMN2q!xIOgRFvCk1QFUxSUlF?q$W8JItkblr? zs`S@rSh`dku2k0UbUc1$Y)lc+H z^C@D#@Lx&&9~gj)cwHy_htgm9&#H>o$)?yok>4lsvfW_)Ci1t+`XA=v*LM=HVmp+c z>*5rDjf~U4mkMjUO_1@pbGwosqmr#&(vQDxP{d~{+4_&PtEU9`T;U5vf2k}O{~>yA z7Wvn2SH#Pz+16q}^0$*EAPo@tx5W>~oT3DG3O_;m@l#qz;I##QNv~;Qhry+)B4b7W z(MaoU9c~RABm_(2Pg>ga{DN6&#U)dVO48D-wA@*_C01HCKCHCylP0ERW))>k&n+&= zDw;HLY+k{vtVvU+lB~QuKA;4vpm0W7*6gfVC29G^)0v)Cnm=uBNmg-QR(1(1po*f} znfV2?bF-}csd;$?8CFSdK8mE)WXw#<$eEdzJvBFv#Y;+x(Uy#Y{KBajNAn5qvDyl>VR2AWo69_wGMKjOxY!K737B7NNJ>^ zLiuc@6N_&!69w6c8DWVE>BJJl*u^k`S)tr4Wf@f=ja1HpqHLo=Hd2W*3I`iav5}ov z7OD^u6_Ui_(rHGbMk=uw#YNQfp=jRwTwUJ6J4okF=O3VpM zw2?~8*QKy^Y$Q1|^NK>X&Cy75W||es*GMPkP7USE&lIE*OJPQW*cROq2iLFQjFnjY9&VsiXR1qS+lI{Vj6%*KtRB7&42{Ps~Yx2S;fUx zh8o^81|vE|BvKamS7{;VK;W}TE}S8m%q-NPV6Lf`1T{@Dh6^*QU~@*vHWw;4YgR@9 zm1~w_i_I;aorWlwmR&S8A3-#mTZ{mhRa9hU7Z&BtD#^C8IgDm!ZMrlcgvNuBQOlx`;`k@%=?LJV&Qg0w_ znhK5-vZEYMXQ}9@i>?xJ)puJ#pI!TB3A~B-X zHm|8Oj8s{5*MwX`Gc;FGW?f^rLSa$C^t6H^bWK_w=1y)~M!~GvS(sxfjoc#_vo4ER zg}FTI=3>Gu&eCc?ibGjwXC9opBqLK2(@JtN1rt_{;6pV7YHLzr7!%5)j2yx=TqIjm zlC|r)C`Zr0v|KWET7*L-8;m0dx)@fX85`p+AN^Xwji&iMEe8XcMjJR9(- zS{a$4LuD_jha`m#RZ^acNJPWLvkHpxE#p|SU!RdSZEhh}g;YH&A5fZ7G)|WNn+3LNLG?7V`4B5N9gtBTBYgkFZ@!AH4t zK0=FUPt7aMVo6a+qIS(mT#QV-YBwF}Lh0CUnw^y@tN_B)^jQ`r1Go`%N!K7=snWD^ z5VNw%N+`NXf=C)R=E7~GX(N->D5#<-`Xpd_ku|$`mP~SF6}y5Yh`37OlrtG+$uvw7 z(l)NFK~o8tS=m!d^K?6kFbZgXMfVl!N*D_QrHkjQ&|%t~+>#s^7)xd%r3UsKVwN99 znx(5A>7;Z?WbM**q*NU`O4lvTfY+!x<>gMxKfSo%^kEi`GSpF8R_4@_sW?-bhM~u< zZ9!coNzk$a>kpFqhjspiygT-XrgdzxrP{91*Mk;rgq6 zOdR%E?Y~{EnE(IZ|Hmvq_nmjO{>^)5>VEFKZodaR5Z$fgd7sL%`sC&!wVO3aaB1IM z?5uRPhRDVY_4!wlpPWdgcd^s;_aLyH!LPb(_1PrfchG#H@Lt(3)4Yvk|4Z{-&QSXz z2@d}Gs}!H);A5vNKE=WJ%~QO`!B-4c{1gX&>{!L;IQW9|6kq1x*UeCTg@f;Mq2j9@ zeAz_B*E;xHQx#wD;Nxi{9Ir+P-zI#sgMW6Ck`FrgadLx5hl6jvT*)U?58!gN{qMO{ z@ktJT%t*zjIQSdoelgFAa6N^BQyqMT;Pg)T90#xUlsWhs!CnWS{-~-)m4mMrTu+)J+E0QGUhD60@QG5crTd>p zF}@ckINrgh2u^VDT7Qy*PZgZ(;0qs@es}OWf;|qtLgc47c(34e2VW!dg$}-2aG8Uz z7x@YYUnjWA!COzL`qw!4M!~fXK0)N`9lRb#0SBKf@=Xq2kE3P>?-BW+gO8VXwLAC@ z!Iq@!@t&ly{&e_5f`fMnPIT}sqCeTePZ6Br;B|dG4qp37s)N_+QA0|*EslO!F3M4S#Z6B_Xuuu@a=+|9DKUq76%_I^K8(;mkI80@QEUC z$*1o3Dv^tK@F{{59DJ?FCpq|3!O0F@+s)jYOh_(Z`q4!%)vt%FYyT<_pp1P2^^s^BIE-yyi!!RH7LI{0{57qvThuV72k zb-yQRtUo3GSBrdtgLer|bntZ|pX}hL2u^YE+HM{PZ?6L#ytZ4qgSXd#4qn@>%)!?P z_BwcNw<-r;FSy#lYrEAt_$I-14&Eg=;NXLT8y)-J9urk90y+|xX{6CyLlaa zt>6j=ukBXt-~)nd9DK6iItSk@xZc5g1UEYPcEL>!K3#B&gO7b$txJOrzD#h3gHIHB zOFnhKSBYG_gHI8h;NWXTKFPtS3Ql(L+HNifpCj1g;I-YRIC!t%bO*2PR_NfX1(!K^ zZMO;sUnjWA!6yo?aqx|TYaM)w;CctI^#>e$s^BIEuk|-O_#DAO2j3#Ny%XM&`^W(Uvm}u~C81hL5pKI{R2H#=uDFz=jc$dL1GkA}|%dK>rnriSH z4f!bs-__vL4gL&+&oTHSgD*7r*A2eR;BPi~ufgkk+$g!i;PrPGh_5pE%ZQLywZZ>g zllZJL_*V_S*5Glgo&BmacztgyCDt4KleRRTZDH_>48GCe$*1+J$>6tY5}(ZmKi1$| z44!;Tzk&w8Ta)-~H+VhvD7nMn^}VQ^?e>u0$}Of$#~OSRGwM&g!M7TGg28`e@QDWh zt-&W5yuR0%l9LVIW5}l%e6_*53?3HLV1~0d^a%zsj zpJT`u8a!^Xv|nWg|Gv%Qd&CC+uEAFr{0xJyGI-nqY`>}vezeWP{|#P$N12jq4L;M5 zuQT}D48Gpr&ocOc!M|+u*AV zev-jg8~j9ruQB*EgReFC%?4j*@NouTZ}77WK49>34ZhLfhZ}s8!LKywOKi%Nl4gO4n?=bj*25;RJ^8aB5A8YVq3_jlAA2;{} zgTLS46Ak{q2A^c`-x++e!JlXFDF#2q;9Um4-QYb2|GdGc8vI`keu}~87<{_HKV$GY z2A^W^g$DnD!Iv5QHwN!D_$>xsVes!5e3il18GN zYw(Q*A8+sz3_ii&Pc`^NgD)}oB!i!3@W}>WYVaurf0Dtw48F$TJqAD0;8P9$T7#cr z@Yfl9y1^e~@HqxQ#NZ1JzOTWT8NB`uA0>MYzMmmqVen5Fe3ijJXz1cU$D;1do0QiD%2`2QGuvcV5B_!NWp8@$Wl zpEY=o!QX1|sRnBocm?5D!s(3fBYY^~RK|A@?n&6icq!q-2q!aMNEnT^ zS`!)HK=^RN@r;WIA3@k+JcBTuO0>5B2I9nNgyRXfFuscLk%XHVUrLyk)~x}?6A1r> za2?|@g!>S#VSF}WS_-ySF&<2qmRzk~#)AmcRNq?2xIbZW#Z^9J1 zT3w8L5fY3Q}O7%wIKcf!ex7ZRo^t~HVI4TNdQ+8WQei16uzEygnlpFy~N zKleZ3WWp_suOfUV;U>nH5*|!Az<2`Tvk2EQ9z&R>oYoq~XA>SuxQg*$!nBla^)enr z_#cD|8TThlOSaZ@#(fFXDQasfFU%3AXy9l>1-cEQl;U>oK6Q(71Yk=_j=9E zS212g_&ma1#!nMIpKu}L6@)#6(;44Kcs$`$#&-~&K-k52Dd7tUCo^71m_lc3BI6qf zPb3`AxQOsYge}H12wzONeINHf;Z(vcjISb0Q%`FX<4XzCRM8q>Jc00KgzFfOAv}q2 z4db&3PbOT&crfA1340k2B76nmLdN|GPa&MnxG&)=38ymdO_-+mRu|)*gs&!?%(x5T zYX~PY-gg%8wS?mt?;%V}s8);dw}jIOxBtxjPdJ@$3*+sCrxI>r{61k?61D~yZy}sP zxQ_8g!kL6?7_TFoMYxLb8p7Fxy^NnGJe_bM;}wKy0%}cXd>`Rl!l{h!AUuPxi}6yz zGYKa%UPw5Pa3bRy20=z3AZrbPWWcRO^n|s zypV8!@fO16gzFe@B)o`l4dZo$7Za{xyoT^CguRTPCcK1jA>$Q>&KWiR8pi7gKTf!c@fyNU5cV>Dn(&i^3mLBzj{ZF`# za0}zB2>+9C6XQz>uOS>@Jc00YgzFfOA^bey8pdZ6et~cmG5(hDYlPeX z%l%I{K)8kRcETG7H!*&n@J7M`##;!#PPmToM#7s2*Dzj3_zl8UjMos}OxVl#X~GSJ z3mLB<+(PcGZCsd-JEKa?~kqoa0n>r;o{=Q#w4puRY}*N6bD7 zr$6gYQKvtLUVES=JMQ>#mUZpxbe5BSdff38qHs!7IjVIW!p;b{7!w|QOlvnDm~d#KB@p2pwjnsNiUCo)Sfd2SV1=| z9Q5GNwVS&aLNMmPk@Y#@WYnkpT&wi3*6Sdt>W%V`l=53i<$SAET6$+giaCtSjn?X}c~gZ_}QzlA(WbpmZ2(LcRK9HCmYp zOQFi~ZO79m3!ooWlVVta8Uq0?>CM-r`Kf4reWu6X?ZhOmh`Zy=0OaZ$T=9boXXLBH zK2$k%n9xNI{jLO0wP!<17qSe^w;nc4y~mfDNTMFUE3v`SItY2n1Kk>|;=#~b>29HH zFJT&iY)fU8x9-Gwl*^Zzq{>MScGX3u(0A$->%oy6UKnC&$tmol(BYKOA=Y$SLwbnK z3?1f#4)bv6Ql%Ag->9~fd3^35=%C+K=5udTNArB{WbmU7d#7DcQ!Ap;tqL;uL1NvRP76;-Mrzyql zes4Sy;RHR|U0QF`{N!!E)H2HNpWN(AC7a@Chp#FiY8za%K;se`TqU8yeqwLb&6@(% z4PNm{iHo875#phNNZ1f` zW2y`_J&Dqg2klaaDB%w3N?*L9E3||^qI`-hD6E=VV0ly*dTF^5LNz!pDVP|iBp(Ax zoK=vk5G@SOcc)HJh^G1E;eW~2~2KvD%Et42J97x7hmDx=!phE48blTo9)DedEGt&9E zv%n}V`T>gyv7^~(y-+eC>lR|4=&E94RNzp+Zby0O|4IO?P5@^$h2wNLk;yFaO z`>MR4DVyIl&tMmUZ99(m2ClHqi^$YM$9R>yw^CElapU;I<%*%H647jAOw$PW*0|fc zWBMeQf&S8tOwUehcBIABjZiI{dcoHlSEBl!k5cUjvI=nML*Xi(6Rj1>RG z4o}9Lo(*4i^~5y#EiN_aW2tg?2h}O)=W#f~-Lc?R1$kUW2BYV`*VYdr7zI#{F1oP6 z&5qJWjYG*QKDhULG8`eIvJaOSwQjC%zA*?D`@GBUjd8Q zv@=gC(!~_I$-Kn*VVbawz~25EU9#<#)aYvif6k*8X6F4T2|dvDwl+Vd}Ww@Z=iK9tfPx8w+< zu<0tOB7DT7@bB*Zs&hSlZiGsaoW2H+uY-%~P(`)-3%mK6=yb~Z=|}0bkXLy8T+MJ5 z(QE5-ceGtfg0=-Z^9b&saFv_sY=hPsIOo7x6tN+?!#u3AQG+8~l_D4l=XHo{ejuL%obvJEmQn;-V=fde$_ zWi;AKJid1*+s#k`Q6x&-=RW$h6?L{FW-?}!=1k{_%;aWuuE7~@AT{n?qo}?mgHTAb zhtI>ldcnDBtlOyXF_{;_hiu-BUQX zB%35pL^)JLzbhWm1lc)R3?FMJ_K8evYddhD!ObhOwllerILY%*-mPXjj70>a$XqWV zSGjvPg(Z}kFv7ii!Ru5k)#XYQ7wH~N$~|`f%W#jdT26yX!#za)708QwT!!;}51r`3 zM0KW*1nFdVavgjG<+G1mPP*LNMv-~gN9vT19EzXQ2|rg~26t6w7C$N>Z2Y6 z2Rnp?XIyqhu)4NALZov%i8E1IkCIshPe``*3i63vWkJ7?ke5 zF(Ug@cJ=`}J5Hjx8_tQyo)?jQhMj$vbA%lDf~<(L>s3F(@%o2qa!G`$y5zpPQb410Kgro_C{~bRFX%OR>#yYk5~@WK8KfXbZgF%WH-x z5%{byJ?L2O(Br_iR;Ye*6wyVBkTZ^mSz;%=SP!|gRpGK=i5zlK>hmbFhX!0cFG+UK zc@c_uz>P!coesE<5jmm{xQR3rLu&?^6rP0qpC53eNf!nj^@KU#daQOj#2n1AYQTM| zM~pUbug{zV?%QXb*;DN7D|B`};NITh%>HRa_MZ`cRp}WzJ1x-2d2U5^pL;6>|B|UN zZN1vWi)nDv)`ZoTM4Y|QY;+8%J~7zEr1P*w8e15%s+St)ya^Z@YOSBbhrUuiBn8mo zsoq~r@?oOCL3H@*rZGoGG-r_AoV%b?*Oa!sJFlr@@ZXDKFzrRu`(>&O+2tFakfYCk zKRx5@pK8pa2OIA}SowFxdnpy@81MhwZjN_6pHR(zC=Atf48~H$V*aBOvncZ)(q%BV z(zQQmKroO~+dniO{~{$EBp1%HBBH*4cFk*wXCG9*D^PBjz$y`jtAn4gr2-_o-EB6`2{<#Yko^irl=pm8Kvi zjZHGz($Lp79+2^EyT|X$zkR6Ku2k3`&9U=i z4Z$~QI+lU|Zy2hxiT>WFot^qH%yF=R{~a3nI|F|n73diF^&crGSEpq3GXzx4JHn=a zn46tvo?Rt5!9FEZn~zbJyeEk2s2N<{qU87vgD5m; zsX}xjw-lxFfUSbUP6zA&M7!t%b~z2@hynXwjG8|`U@J)%1}quX9IzkOI{Wr@1Z_2B zD)f-SC)<3=ht3hVHX{2XJNtN@T@Tn}BCLQeb8d49_^|>hh zcWOw2F55+s=&2;Qhu7n{(;mJAz8SrT8!#_K_V5Xi|I6V59Ll9eHmYk;zh4ekPl9wMktRX9s%lSyo$X5=hm4^ajZTVa zMx!fB5Xg1~6x|LmzcI!1wSk zu}w8_~ka+9-)ObqK{ z3Cc(Iy+nO5$%JM!z9O#fs%c9mal1b|-RgYwZFCjR`SgB|>dUPQ=!~U~d}I$QNPQV? z&vRr%a~?x|4mL6Eg-OCErU<9LnF@3`^{ZP=_bn5rz88gQ_mw^Msus55Zfpj}G{voz zK-FYUR#TBn`z``rGcv@j4Uqr7qW$+bh;-_|w`1T(_un4K7U{oJA^+$7_ZJ=|+eT4a zP5=F>#_51(LQ?rJ-CYR}s!Z*mzOSgFrqNNTmDHhM(iGt1l@d-?S|FnrL8p)~u0;|@ zH)2)x>jEaU3p(em0|zQ>UkPc&tqgNEktC_#i0X9aFJmJrUxIn^VE(d+IzDWVJYt%o zc;cMqDz~t|$UOlthvE zLMCA{*PW1#bTwJroP^P0yIR;{=mDrOTutPE#9;o@Q|0ZX3R5Ln$($Z#>Z&C+d8 zbelBGz7dsOtywzPv1OM>Wy_t&i;{Y#PUV~Fw17J8 z;?;k=Ex@}Se6Ahltlv@4kFd)pnq>=UyS%R0px;|VHi=ZW!WMWey1>o0Ky7q^bX$P# z>x)vvxwb%Ebb-Iw0?$Vm_!R>YEk-M7kr}0k9k#$L(FI<%1p|KLese2u6HyZ;sqr)4kJwA9B| z>p3hmnZ|xV#(oVd;-5^LSQRQ5yao&S-J8@}`$qm)@E5f?G(ep|j&3D$sU^~lyr~ek zh`-zSBxnRp41Y9SX}bjW!96OA=(}2~y`M!2%|qxVA^O6f5>oCFrfCTal@u$1dn2{X z=Aud_vq0NiM@4D_9G=crsaI2bRo^^wx3h2ljgpkukgB$xRc$@0+PYP>#Z;BMYstsZ z^$o#R7@q=n{VDiUH+*BfDUYwWXP~cNwPzs7 zepp2IBkk-Hbap)hJrR+8|DDd#-^bukr5~oV>sUM;+0~bNaCZ<{ePn}s8~H;U&Lk(J zLKA6_!4|wsY(*DijUnH`q48Ai-iAx%+eWyX=e^rD1EQpcz6(Ziq~4xREG}k;-@T(U zbw8!3arV?JxXXohtyHcqrAcAAwjdc_GIHiB22FD02!DlTBF-YjjweJI;!R9kYK+*o zbA@fj9)tFE?({2RMyJ#N>t)mF^QNf_S{qP~V;%N4IGKa`JBFBp%3*b3Yq7_9ScOq5 zczLF-0US-0!f1{<5}takvypH-Y8W{Z=0ZL+5?p#G9wVVKawIewBO#vDVI+_NcqG7U zXe89%?)1g;UNJvq_(YnUaMK+7SSeJ6e2k_@*od4E0=(|q6ejR!q`+D5kC29i zkpf*%2MF{~u7H+>>qj4iQt571goB3QGsqO-Y0}L9R5_cOhQ2+Rr>#aIwx=b-&_Q46 zF4(zQH5BtF6~_@abSv%+FR`;Vs~zCPyrNR7*d!EHK7W^0dMxEtX*!~&Ag%RFwt!9o z;9z?kdmr6w?V94Byi46j+09e_Z9Lz|s!n*6I_a4J zPebro=;$=AjD|Nwk1H=iMPyt#67v63T&X2>6j$JOW?X4o>Kp){uhW5H7|us&5ZNov z;^&-k<;{rf58K&)a>kV*$j)))UX_9%K;DhGg6P*|e-E1Oyr2`0P=NVm4NNEj=8xrg zlXB=t^T)E>!&xNc{IM(z8X;lD9RQ?SR{X@zHvVtanTuYIKKP zs_q8``qE=Rzk7G32kxr$sg>wTDAQLNF(uLE#b%x17!vhQ+>LrQE9ui#o6_kd{VCO& z+Il^TiVPldalG5}M(_x$;SHERjo=~j+c5sZ7wLSu8o59Z7z^|QQiTONS)T((K&>cx zFL64-Bhre{TuNsRf%RJJ#%H(=(3-Bk z1q-d|q{{EXhp9D5h33=MD4b7PR6qS|vD47M!flk;<)M@CxMc@^Q|+bJ?88!p+%D`A zn<#9EP`Jug82#jUKWt;4vLwzx0cmHJ~UQniO10@a;%uQmW?G~y!Pw8a#*+tGin2YXGeLyFXau&-iT7Xa)eiF%nAP1@=dPLOcMX2v9zGvHU9 z_sD+acJ@fhO0!2YbMj|X-}Qzh^<((C<9>?v=p(;toQj@d7aTvgQ$0~q19s|#QBqgf zsi{#?7pYWsh7@W;XS*A3!E2&B!)U08bcXvO|EHZ{7^$K?KG=#QpY&GqLZ>t2Vd_

    FyC<=vV^_H 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%0AKWPMI8$7UqiDWv5;5~R2S73!mQL8aYvWw^hC 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

    o^D>AXP&od6X^mZf)}MzTpQPrNM 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 DHVa;y diff --git a/build/bin/opj_compress b/build/bin/opj_compress deleted file mode 100644 index a096b005f188710a49ef3c0bd378ab8df3921ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161352 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 JJfuBZ{|(Xz79{`x diff --git a/build/bin/opj_dec_server b/build/bin/opj_dec_server deleted file mode 100644 index 0a9945df1774f6414ea6246cbad01ea8a00ea241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8528 zcmd^EeQX@n5r5~i<4fY4FUDz1faXG-C@J;X4vsM)E*9Pgv7r@7w&%OGz2UyN z+iRRC4Mt9?T#c!PT0xPTrfMsJ#2=|DwE_OXkx_uEm6BFTQGhBWq_qQxP#|(?@pb0y zjJ>zFF0Iu6`mFW5`MsHW^FH?No4H3ix;7WNT!M>Rd{rQKa-oT|P=jv;Re-dJCb1Cy z-zIJq3xF?{nAzT95@0iV^_q%Iz)o)^Ii~C((h_QOBFD;1l&KJY37{VO znp`4Tpnh3ldV>6ThA8VHi+V$(H$-|&eI(D6$A@FXr<>aCv>n>8FhyA`JFXfLthX*FFJ5`#P}#;O7e9C3mGO(ezjAzi z?;G#G{_r<$-S^1Thn^q(&|6k{`S`nk{J;w;^Og!|@jJ9e0mC+Xc@_XC{DFD!v-98q z!2R&p%L@QF*&m$;KQs^C47eX2dpQlj?RF6O%kcQba^ds&^I8|VOkCLTPo#X6sIuW@ zAnyk|cKPLiFNGdjXrJ>wUITcA@QU$8X15yk?jxMfr8@|pqJHguz6Chi@zXi>D9P7J zJB!6Jeo+bkl;rEkpV_@C<;z6_;Uq2u?Egeki|#>fqg##8HS`*ONDU7>r1pjMs7MbksHIvrzWN{E; zOIK%Wo4P)*KCof7-XLmYT0{@k!gTe+fb}#CpmvuQ>W68l-41iSE0IZswc5^Ds9)QW zN`$p^T95bFh7&MH=~{CYwEo)Oj2?~D_UiGCv`Dyyc#hzM#VuU({NY(uBz^)id@g2I z=&*C#q7l{~u}WQsFF=uK1s)53H+UPJr2RTb-v`E%gnQ_{V4V5a%l*W2SGGV6`2p0Kx|D;m z`Wo^$byH_0e;Iik($u)*FCvdanK~)?KOm1om^vZ(-y)AwJT*3}-!}%lEZ|pFL>Vbw zy%ty{+g|OdA0N)SPVJZw;;>H{IqZ1>r@Q{fsQ{!}2O4o2n-Vff=68Wv(dMzfRrCNf9XfiyGkb2YlD(`9zjJ*@ch_jiJ{Y?)y5uADZ?w4!RC3D}z?eRk@&K&^rbihq zSp`(Nds@j}HExEfzE}b*__SnC?$TT*dnRy}=XlVcLc!4umx1&s>t;Y-IX&Z6ve%W< zllLmFGs?LcqY4cElnj=kL3Y}1Z>af4ASN=k%5d|3to5KjWy(nNLEt98Gn30rDlmjI zB@YAdLiHgSnfPb|Otzcid#3tuVk94YAb5Xg_D{i{Ak4+;<3)0)HAr^_v!8WlZ*;A@ zD)-ju&)kzwegYOrZPO?Qto~$a}D?2gL{IzgL{H| zgX+ZC+n`od-D#d1u3OyqG=Y!!KJJDtjsX1~(C2`@3G`*4Q5aY^&_m$)J3!w9 z`W09?ya!=%9o#8ggFe?SWu=}mSE&ziy!-kSZrt=_edl_=i2?=DchO~a*Iy)7wkQ_x!%^sa67`aurlTfH86 zmc9&jPJtckxdYJuMd9xRe;4rJ!eXcREy8k}NkkV3lo8MO7Ya*e?UA)eQo z!#Ms<;kskt_D^PV3FM!m#o=#H6IJ+|GfnOMtvOEq@i(RljX+sulG*=ms*TZifcF3& zxV*nhNe*s~vP=`ecoS9F?{SjjZwmMSMZ#I`A31Y;;I4#V8_Mx|$R50wlIQifPW%NL z_}_`=agh1{8R59nZt&MMfHOod5d90$8$=iI1lSFH4$t?IEp2TZ{cC%AGjSv1zbmjI zP*-zjMsoFs>ze{~4eLzwbIi$Ryl-(_Z*zOip1#zZ{^Jz9`1>ehJ@nLQbF>4qjJK=bK7QuX8vd!~K!u@=JnP$X#!ufnA zSSV0&S^VVl0pom^!~7g3JAB@=o$pEc!g-$0|7WFqg*d_oKN|w-G~VCH_L~aU>s4uI zx#0Jl&77Bb;X3}A?C^Jll zMm0l=1nz3QyUAHd<}=h#Dit~anGPd$K=h?TF-XN^VzC3DV&PPold+1b>gJuntsQE| zwsy?$^(!LWQNG7r2EnVANgI((O z&6{_1bgSLL)~*ihPG)cBax(uW7iG^T&E|RX^F%EzoUCaOj#;UKjM1D1rg!qwLizbG zGX-Un&(9ncrnD?$l({5pVoD~g3esXSBj=cA%TIpgJ0b$<12H4i3luVCk`8c9kHb_X zMIfFqv_P=6v&IPZ6W1Tl1Y`!PMvsU9as#3CfCxkm#KE3Pjg;8}Nj*$*rL<@W z6{wbs8X_Ra8h~n`KLM8254&zM8F7hrmDG}O%1L?522VI2A?p& z7l8bp2*CRhgFWx?X8v~&#v5?7%;uE%{>PN#4YrE1*77A_@G1_+fh>GaWa=lJNikQ5 z)&sTb^L>(OwN2ix-wy3J;EvDz^SzTP#>iMWF0xj`P&O9#xShU_g$uSq{sfV9MgxO9b+Qq`CiPF_3i$XS#c05 zIH#=7_h+W#B*^{S$A5(MTS<=Z*-SZ3M1B12$FBc4U^pinr*fRkl;cSdk;T6LSwOA& zd~au(Bt0fRsxbY5O`q@gOxa)7XP)VgZTkGZWm>@#YwMTo{miD%zgsZ1U4!LXu`W{c zzBzZt;NNGM+UJXTroW{A*-iWJn47GfL7nv&e#xfKaSBt9ZNu}tvHojN@xp`e5Ej0_ z^6#5=dFGkoeHedNWPOf%1}V|Pa%dY1^Gx3c4EG-Eb9}_VANy!xcz?1U@1LhY7l+9D z97m0zQ&8;tkM)^e0~xFS>^+n^;C`er_{Vz8Unh+F=X;=!6z%f1`@`oa?r-+ps(%6x3n(d@aqib_#XGmNeg%c1Gb~8d GuKzD$jV$Z{ diff --git a/build/bin/opj_decompress b/build/bin/opj_decompress deleted file mode 100644 index 0beba959b2b93f48bc1de9fb01451ce78c98903b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153192 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 fF@FF%vG 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

    JrhXdKY(i^rvr)>3kcnbz+Nm5 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 z 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 diff --git a/build/bin/opj_jpwl_decompress b/build/bin/opj_jpwl_decompress deleted file mode 100644 index 443334c18fac8e54e3457051599cfdea58096e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105184 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 F{{^p@y>|cr diff --git a/build/bin/opj_mj2_compress b/build/bin/opj_mj2_compress deleted file mode 100644 index 13a71460b522ee5bfe2ef8ef458963650bb3ec6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44296 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 diff --git a/build/bin/opj_mj2_decompress b/build/bin/opj_mj2_decompress deleted file mode 100644 index a94405eca43ec7580dca7d1c6d98f21048f7280c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31552 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 diff --git a/build/bin/opj_mj2_wrap b/build/bin/opj_mj2_wrap deleted file mode 100644 index c4ccb34bd6a4775ef3d9a7286eea01ac06ca27f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35952 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 JsA#7B{{TyUC{6$X diff --git a/build/bin/test_tile_decoder b/build/bin/test_tile_decoder deleted file mode 100644 index 01b5019f409344bf57311985441984f15d9bd430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18872 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 diff --git a/build/bin/test_tile_encoder b/build/bin/test_tile_encoder deleted file mode 100644 index 9e660a7546043479adc5e4622635cbed533e8aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14040 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 diff --git a/build/bin/testempty2 b/build/bin/testempty2 deleted file mode 100644 index 19c9b41377e246b99d9ef31e6da39ef834db3cf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14176 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 diff --git a/build/description-pak b/build/description-pak deleted file mode 100644 index 97737e907..000000000 --- a/build/description-pak +++ /dev/null @@ -1 +0,0 @@ -Package created with checkinstall 1.6.2 diff --git a/build/doc/Doxyfile-html.dox b/build/doc/Doxyfile-html.dox deleted file mode 100644 index b1278cf79..000000000 --- a/build/doc/Doxyfile-html.dox +++ /dev/null @@ -1,279 +0,0 @@ -# Doxyfile 1.7.1 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = OpenJPEG -PROJECT_NUMBER = 2.3.1 -OUTPUT_DIRECTORY = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/doc -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = C:// -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -OPTIMIZE_FOR_FORTRAN = NO -OPTIMIZE_OUTPUT_VHDL = NO -EXTENSION_MAPPING = -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -SIP_SUPPORT = NO -IDL_PROPERTY_SUPPORT = YES -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -TYPEDEF_HIDES_STRUCT = NO -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -FORCE_LOCAL_INCLUDES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_MEMBERS_CTORS_1ST = NO -SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_FILES = YES -SHOW_NAMESPACES = YES -FILE_VERSION_FILTER = -LAYOUT_FILE = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/lib/openjp2 \ - /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/src/lib/openjpip \ - /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/build/doc -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.h \ - *.c \ - *.dox -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = */.svn/* -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = /media/longervision/Seagate/OpenSource/ImageProcessing/codecs/openjpeg/doc -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = ./html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_COLORSTYLE_HUE = 220 -HTML_COLORSTYLE_SAT = 100 -HTML_COLORSTYLE_GAMMA = 80 -HTML_TIMESTAMP = NO -HTML_DYNAMIC_SECTIONS = NO -GENERATE_DOCSET = NO -DOCSET_FEEDNAME = "Doxygen generated docs" -DOCSET_BUNDLE_ID = org.doxygen.Project -DOCSET_PUBLISHER_ID = org.doxygen.Publisher -DOCSET_PUBLISHER_NAME = Publisher -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -CHM_INDEX_ENCODING = -BINARY_TOC = NO -TOC_EXPAND = NO -GENERATE_QHP = NO -QCH_FILE = -QHP_NAMESPACE = org.doxygen.Project -QHP_VIRTUAL_FOLDER = doc -QHP_CUST_FILTER_NAME = -QHP_CUST_FILTER_ATTRS = -QHP_SECT_FILTER_ATTRS = -QHG_LOCATION = -GENERATE_ECLIPSEHELP = NO -ECLIPSE_DOC_ID = org.doxygen.Project -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -EXT_LINKS_IN_WINDOW = NO -FORMULA_FONTSIZE = 10 -FORMULA_TRANSPARENT = YES -SEARCHENGINE = NO -SERVER_BASED_SEARCH = NO -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -LATEX_SOURCE_CODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = USE_JPWL \ - USE_JPSEC -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -DOT_NUM_THREADS = 0 -DOT_FONTNAME = Helvetica -DOT_FONTSIZE = 10 -DOT_FONTPATH = -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES diff --git a/build/doc/doxygen_sqlite3.db b/build/doc/doxygen_sqlite3.db deleted file mode 100644 index 8927b2ae8e17f75567953e25892b154d2c625540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3198976 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

    $Y~@}2aA(P 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%0AHNNeZK%-n+J-7_|hz{j|KS3JV1Qq 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 S8*x|6hYyXY?Y5RlrZ{V#*-oD+QwXd?z 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

    OEm4W>5;<_aA3l>D7ya^P1c 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 `K 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%0D6s-#7ih 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ℜ|G^{?2%N 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 =dVF=(37nL&49+2m$)odJ(T;GTuuei4t= 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

    =37%`uTnCYyU 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⪙%fZqSx9T(Z)|HuD+HxhXA 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 Uq|itQtw8c|w#_=$PKS5#Z|LgP - - - - - - -OpenJPEG: Doxyfile-html.dox File Reference - - - - - - -

    -
    -
    -
    Doxyfile-html.dox File Reference
    -
    -
    -
    - -
    - - diff --git a/build/doc/html/annotated.html b/build/doc/html/annotated.html deleted file mode 100644 index ca6311577..000000000 --- a/build/doc/html/annotated.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - -OpenJPEG: Data Structures - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    Data Structures
    -
    -
    -
    Here are the data structures with brief descriptions:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Caux_response_param
     Cauxtrans_paramAuxiliary transport setting parameters
     Cbox_paramBox parameters
     Cboxcontents_param
     Cboxheader_paramBox header parameters
     Cboxlist_paramBox list parameters
     Ccache_paramCache parameters
     Ccachelist_param
     Ccachemodel_paramCache model parameters
     Ccachemodellist_paramCache model list parameters
     Cchannel_paramChannel parameters
     Cchannellist_paramChannel list parameters
     Ccodestream_paramCodestream parameters
     CCODmarker_paramA.6.1 Coding style default (COD)
     Cdec_server_recordDecoding server static records
     Cdwt_local
     Cfaixbox_paramFragment array index box parameters
     Cfaixelem4_param4byte parameters of a faix element
     Cfaixelem8_param8byte parameters of a faix element
     Cihdrbox_paramI.5.3.1 Image Header box
     Cimgreg_paramImage region parameters
     Cindex_paramIndex parameters
     Cj2k_prog_order
     Cjpip_dec_paramJPIP decoding parameters
     Cmanfbox_paramManifest box parameters
     Cmarker_paramMarker parameters
     Cmarkeridx_paramMarker index parameters
     Cmessage_paramMessage parameters
     Cmetadata_paramMetadata-bin parameters
     Cmetadatalist_paramMetadata-bin list parameters
     Cmhixbox_paramHeader index table box parameters
     Cmsgqueue_paramMessage queue parameters
     Copj_bioIndividual bit input-output stream (BIO)
     Copj_codec_privateMain codec handler used for compression or decompression
     Copj_codestream_indexIndex structure of the codestream (FIXME should be expand and enhance)
     Copj_codestream_infoIndex structure of the codestream
     Copj_codestream_info_v2Information structure about the codestream (FIXME should be expand and enhance)
     Copj_cpCoding parameters
     Copj_cparametersCompression parameters
     Copj_dec_memory_marker_handler
     Copj_decoding_param
     Copj_dparametersDecompression parameters
     Copj_dwd_decode_h_job_t
     Copj_dwd_decode_v_job_t
     Copj_encoding_param
     Copj_event_mgrMessage handler object used for
     Copj_imageDefines image data and characteristics
     Copj_image_compDefines a single image component
     Copj_image_comptparmComponent parameters structure used by the opj_image_create function
     Copj_j2kJPEG-2000 codestream reader/writer
     Copj_j2k_dec
     Copj_j2k_enc
     Copj_job_list_t
     Copj_jp2JPEG-2000 file format reader/writer
     Copj_jp2_boxJP2 Box
     Copj_jp2_cdefChannel descriptions and number of descriptions
     Copj_jp2_cdef_infoChannel description: channel index, type, association
     Copj_jp2_cmap_compComponent mappings: channel index, mapping type, palette index
     Copj_jp2_colorCollector for ICC profile, palette, component mapping, channel description
     Copj_jp2_compsJP2 component
     Copj_jp2_header_handler
     Copj_jp2_img_header_writer_handler
     Copj_jp2_indexIndex structure of the JP2 file EXPERIMENTAL FOR THE MOMENT
     Copj_jp2_metadataInfo structure of the JP2 file EXPERIMENTAL FOR THE MOMENT
     Copj_jp2_pclrPalette data: table entries, palette columns
     Copj_marker_infoMarker structure
     Copj_mct_dataFIXME DOC
     Copj_mqcMQ coder
     Copj_mqc_stateThis struct defines the state of a context
     Copj_packet_infoIndex structure : Information concerning a packet inside tile
     Copj_pi_compFIXME DOC
     Copj_pi_iteratorPacket iterator
     Copj_pi_resolutionFIXME DOC
     Copj_pocProgression order changes
     Copj_ppx_struct
     Copj_procedure_listA list of procedures
     Copj_simple_mcc_decorrelation_dataFIXME DOC
     Copj_sparse_array_int32
     Copj_stepsizeQuantization stepsize
     Copj_stream_privateByte input-output stream
     Copj_t1Tier-1 coding (coding of code-block coefficients)
     Copj_t1_cblk_decode_processing_job_t
     Copj_t2Tier-2 coding
     Copj_tccpTile-component coding parameters
     Copj_tccp_infoTile-component coding parameters information
     Copj_tcdTile coder/decoder
     Copj_tcd_bandSub-band structure
     Copj_tcd_cblk_decCode-block for decoding
     Copj_tcd_cblk_encFIXME DOC
     Copj_tcd_imageFIXME DOC
     Copj_tcd_layerFIXME DOC
     Copj_tcd_marker_infoStructure to hold information needed to generate some markers
     Copj_tcd_passFIXME DOC
     Copj_tcd_precinctPrecinct structure
     Copj_tcd_resolutionTile-component resolution structure
     Copj_tcd_segSegment of a code-block
     Copj_tcd_seg_data_chunkChunk of codestream data that is part of a code block
     Copj_tcd_tileFIXME DOC
     Copj_tcd_tilecompTile-component structure
     Copj_tcpTile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)
     Copj_tgt_nodeTag node
     Copj_tgt_treeTag tree
     Copj_thread_pool_t
     Copj_tile_indexIndex structure about a tile
     Copj_tile_infoIndex structure : information regarding tiles
     Copj_tile_v2_infoTile coding parameters information
     Copj_tls_key_val_t
     Copj_tls_t
     Copj_tp_indexIndex structure about a tile part
     Copj_tp_infoIndex structure : Information concerning tile-parts
     Copj_v4_t
     Copj_worker_thread_job_t
     Copj_worker_thread_list_t
     Copj_worker_thread_t
     Cplaceholder_paramA.3.6.3 Placeholder box format
     Cplaceholderlist_paramPlaceholder box list parameters
     Cquery_paramQuery parameters
     Crange_param1-dimensional range parameters
     Csession_paramSession parameters
     Csessionlist_paramSession list parameters
     CSIZmarker_paramProgression order
     Csubfaixbox4_param4byte parameters of fragment array index box
     Csubfaixbox8_param8byte parameters of fragment array index box
     Csubfaixbox_paramVariable sized parameters in fragment array index box
     Ctarget_paramTarget parameters
     Ctargetlist_paramTarget list parameters
     Cv4dwt_local
    -
    -
    - - - - diff --git a/build/doc/html/auxtrans__manager_8c.html b/build/doc/html/auxtrans__manager_8c.html deleted file mode 100644 index b1078b2c6..000000000 --- a/build/doc/html/auxtrans__manager_8c.html +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - -OpenJPEG: auxtrans_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    auxtrans_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include "auxtrans_manager.h"
    -#include <pthread.h>
    -
    - - - -

    -Data Structures

    struct  aux_response_param
     
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - -

    -Typedefs

    typedef struct aux_response_param aux_response_param_t
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    auxtrans_param_t init_aux_transport (int tcp_auxport, int udp_auxport)
     Initialize auxiliary transport server of JPIP server. More...
     
    void close_aux_transport (auxtrans_param_t auxtrans)
     Close auxiliary transport server of JPIP server. More...
     
    aux_response_param_tgene_auxresponse (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
     
    void delete_auxresponse (aux_response_param_t **auxresponse)
     
    void * aux_streaming (void *arg)
     
    void send_responsedata_on_aux (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
     Send response data on aux transport. More...
     
    OPJ_BOOL identify_cid (SOCKET connected_socket, char refcid[], FILE *fp)
     Identify cid sent from client. More...
     
    OPJ_BOOL recv_ack (SOCKET connected_socket, void *data)
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ aux_response_param_t

    - -
    -
    - - - - -
    typedef struct aux_response_param aux_response_param_t
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ aux_streaming()

    - - - -

    ◆ close_aux_transport()

    - -
    -
    - - - - - - - - -
    void close_aux_transport (auxtrans_param_t auxtrans)
    -
    - -

    Close auxiliary transport server of JPIP server.

    -

    auxiliary response parameters

    - -

    References close_socket(), auxtrans_param::tcplistensock, and auxtrans_param::udplistensock.

    - -
    -
    - -

    ◆ delete_auxresponse()

    - -
    -
    - - - - - - - - -
    void delete_auxresponse (aux_response_param_t ** auxresponse)
    -
    - -

    References opj_free().

    - -

    Referenced by aux_streaming().

    - -
    -
    - -

    ◆ gene_auxresponse()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    aux_response_param_t * gene_auxresponse (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T datalen,
    OPJ_SIZE_T maxlenPerFrame 
    )
    -
    -
    - -

    ◆ identify_cid()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL identify_cid (SOCKET connected_socket,
    char refcid[],
    FILE * fp 
    )
    -
    - -

    Identify cid sent from client.

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]refcidrefenrece channel ID
    [in]fpfile pointer for log of aux stream
    -
    -
    -
    Returns
    true if identified, false otherwise
    - -

    References OPJ_FALSE, opj_free(), OPJ_TRUE, and receive_string().

    - -

    Referenced by aux_streaming().

    - -
    -
    - -

    ◆ init_aux_transport()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    auxtrans_param_t init_aux_transport (int tcp_auxport,
    int udp_auxport 
    )
    -
    - -

    Initialize auxiliary transport server of JPIP server.

    -
    Parameters
    - - - -
    [in]tcp_auxportopening tcp auxiliary port ( 0 not to open, valid No. 49152-65535)
    [in]udp_auxportopening udp auxiliary port ( 0 not to open, valid No. 49152-65535)
    -
    -
    -
    Returns
    initialized transport parameters
    - -

    References open_listeningsocket(), auxtrans_param::tcpauxport, auxtrans_param::tcplistensock, auxtrans_param::udpauxport, and auxtrans_param::udplistensock.

    - -
    -
    - -

    ◆ recv_ack()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL recv_ack (SOCKET connected_socket,
    void * data 
    )
    -
    - -

    References OPJ_FALSE, opj_free(), OPJ_TRUE, and receive_stream().

    - -

    Referenced by aux_streaming().

    - -
    -
    - -

    ◆ send_responsedata_on_aux()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_responsedata_on_aux (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T length,
    OPJ_SIZE_T maxlenPerFrame 
    )
    -
    - -

    Send response data on aux transport.

    -
    Parameters
    - - - - - - - -
    [in]istcptrue if tcp, false if udp
    [in]auxtransavailable transport parameters
    [in]cidchannel ID
    [in]datasending data
    [in]lengthlength of data
    [in]maxlenPerFramemaximum data length to send per frame
    -
    -
    - -

    References aux_streaming(), FCGI_stderr, gene_auxresponse(), and auxtrans_param::tcplistensock.

    - -
    -
    -
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    #define MAX(a, b)
    Definition: tpix_manager.c:38
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    Message handler object used for.
    Definition: event.h:50
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    - -
    int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:86
    -
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    -
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    -
    int num_tps
    number of tile parts
    Definition: openjpeg.h:837
    -
    #define JPIP_TPIX
    Definition: indexbox_manager.h:48
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    -
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    -
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    -
    int tp_end_pos
    end position of tile part
    Definition: openjpeg.h:795
    -
    int get_num_max_tile_parts(opj_codestream_info_t cstr_info)
    Definition: tpix_manager.c:181
    - - - - diff --git a/build/doc/html/auxtrans__manager_8h.html b/build/doc/html/auxtrans__manager_8h.html deleted file mode 100644 index 111655d54..000000000 --- a/build/doc/html/auxtrans__manager_8h.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -OpenJPEG: auxtrans_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    auxtrans_manager.h File Reference
    -
    -
    -
    #include "sock_manager.h"
    -#include "opj_includes.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  auxtrans_param
     auxiliary transport setting parameters More...
     
    - - - - -

    -Typedefs

    typedef struct auxtrans_param auxtrans_param_t
     auxiliary transport setting parameters More...
     
    - - - - - - - - - - -

    -Functions

    auxtrans_param_t init_aux_transport (int tcp_auxport, int udp_auxport)
     Initialize auxiliary transport server of JPIP server. More...
     
    void close_aux_transport (auxtrans_param_t auxtrans)
     Close auxiliary transport server of JPIP server. More...
     
    void send_responsedata_on_aux (OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame)
     Send response data on aux transport. More...
     
    -

    Typedef Documentation

    - -

    ◆ auxtrans_param_t

    - -
    -
    - - - - -
    typedef struct auxtrans_param auxtrans_param_t
    -
    - -

    auxiliary transport setting parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ close_aux_transport()

    - -
    -
    - - - - - - - - -
    void close_aux_transport (auxtrans_param_t auxtrans)
    -
    - -

    Close auxiliary transport server of JPIP server.

    -
    Parameters
    - - -
    [in]auxtransclosing transport server
    -
    -
    -

    auxiliary response parameters

    - -

    References close_socket(), auxtrans_param::tcplistensock, and auxtrans_param::udplistensock.

    - -
    -
    - -

    ◆ init_aux_transport()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    auxtrans_param_t init_aux_transport (int tcp_auxport,
    int udp_auxport 
    )
    -
    - -

    Initialize auxiliary transport server of JPIP server.

    -
    Parameters
    - - - -
    [in]tcp_auxportopening tcp auxiliary port ( 0 not to open, valid No. 49152-65535)
    [in]udp_auxportopening udp auxiliary port ( 0 not to open, valid No. 49152-65535)
    -
    -
    -
    Returns
    initialized transport parameters
    - -

    References open_listeningsocket(), auxtrans_param::tcpauxport, auxtrans_param::tcplistensock, auxtrans_param::udpauxport, and auxtrans_param::udplistensock.

    - -
    -
    - -

    ◆ send_responsedata_on_aux()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_responsedata_on_aux (OPJ_BOOL istcp,
    auxtrans_param_t auxtrans,
    const char cid[],
    void * data,
    OPJ_SIZE_T length,
    OPJ_SIZE_T maxlenPerFrame 
    )
    -
    - -

    Send response data on aux transport.

    -
    Parameters
    - - - - - - - -
    [in]istcptrue if tcp, false if udp
    [in]auxtransavailable transport parameters
    [in]cidchannel ID
    [in]datasending data
    [in]lengthlength of data
    [in]maxlenPerFramemaximum data length to send per frame
    -
    -
    - -

    References aux_streaming(), FCGI_stderr, gene_auxresponse(), and auxtrans_param::tcplistensock.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/auxtrans__manager_8h_source.html b/build/doc/html/auxtrans__manager_8h_source.html deleted file mode 100644 index ebda6e99d..000000000 --- a/build/doc/html/auxtrans__manager_8h_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -OpenJPEG: auxtrans_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    auxtrans_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef AUXTRANS_MANAGER_H_
    -
    32 # define AUXTRANS_MANAGER_H_
    -
    33 
    -
    34 #include "sock_manager.h"
    -
    35 #include "opj_includes.h"
    -
    36 
    -
    38 typedef struct auxtrans_param {
    -
    39  int tcpauxport;
    -
    40  int udpauxport;
    - - - -
    44 
    -
    52 auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport);
    -
    53 
    - -
    60 
    - -
    72  const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame);
    -
    73 
    -
    74 #endif /* !AUXTRANS_MANAGER_H_ */
    -
    -
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    -
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    -
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T length, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    -
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    -
    unsigned char * data
    Definition: auxtrans_manager.c:87
    -
    struct aux_response_param aux_response_param_t
    -
    aux_response_param_t * gene_auxresponse(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Definition: auxtrans_manager.c:149
    -
    void delete_auxresponse(aux_response_param_t **auxresponse)
    Definition: auxtrans_manager.c:167
    -
    #define FCGI_stderr
    Definition: auxtrans_manager.c:47
    -
    Definition: auxtrans_manager.c:85
    -
    void * aux_streaming(void *arg)
    Definition: auxtrans_manager.c:189
    -
    OPJ_SIZE_T datalen
    Definition: auxtrans_manager.c:88
    -
    int SOCKET
    Definition: sock_manager.h:40
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    -
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    -
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    -
    OPJ_SIZE_T maxlenPerFrame
    Definition: auxtrans_manager.c:89
    -
    struct auxtrans_param auxtrans_param_t
    auxiliary transport setting parameters
    - -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    int udpauxport
    udp port
    Definition: auxtrans_manager.h:40
    -
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    -
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    -
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    -
    SOCKET listensock
    Definition: auxtrans_manager.c:90
    -
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    -
    OPJ_BOOL recv_ack(SOCKET connected_socket, void *data)
    Definition: auxtrans_manager.c:274
    -
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    -
    SOCKET tcplistensock
    listenning socket for aux tcp (-1 if not open)
    Definition: auxtrans_manager.h:41
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    -
    char * cid
    Definition: auxtrans_manager.c:86
    -
    OPJ_BOOL identify_cid(SOCKET connected_socket, char refcid[], FILE *fp)
    Identify cid sent from client.
    Definition: auxtrans_manager.c:253
    - -
    int tcpauxport
    tcp port
    Definition: auxtrans_manager.h:39
    -
    SOCKET udplistensock
    listenning socket for aux udp (-1 if not open)
    Definition: auxtrans_manager.h:42
    - - - - diff --git a/build/doc/html/bc_s.png b/build/doc/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/build/doc/html/bdwn.png b/build/doc/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -OpenJPEG: bench_dwt.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    bench_dwt.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include <sys/time.h>
    -#include <sys/resource.h>
    -#include <sys/times.h>
    -
    - - - - - - - - - - - - - - -

    -Functions

    OPJ_INT32 getValue (OPJ_UINT32 i)
     
    void init_tilec (opj_tcd_tilecomp_t *l_tilec, OPJ_INT32 x0, OPJ_INT32 y0, OPJ_INT32 x1, OPJ_INT32 y1, OPJ_UINT32 numresolutions)
     
    void free_tilec (opj_tcd_tilecomp_t *l_tilec)
     
    void usage (void)
     
    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    int main (int argc, char **argv)
     
    -

    Function Documentation

    - -

    ◆ free_tilec()

    - -
    -
    - - - - - - - - -
    void free_tilec (opj_tcd_tilecomp_tl_tilec)
    -
    - -

    References opj_tcd_tilecomp::data, opj_free(), and opj_tcd_tilecomp::resolutions.

    - -

    Referenced by main().

    - -
    -
    - -

    ◆ getValue()

    - -
    -
    - - - - - - - - -
    OPJ_INT32 getValue (OPJ_UINT32 i)
    -
    - -

    Referenced by init_tilec(), and main().

    - -
    -
    - -

    ◆ init_tilec()

    - - - -

    ◆ main()

    - - - -

    ◆ opj_clock()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_clock (void )
    -
    - -

    Difference in successive opj_clock() calls tells you the elapsed time.

    -
    Returns
    Returns time in seconds
    - -

    Referenced by main().

    - -
    -
    - -

    ◆ usage()

    - -
    -
    - - - - - - - - -
    void usage (void )
    -
    - -

    Referenced by main().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/bio_8c.html b/build/doc/html/bio_8c.html deleted file mode 100644 index 038c714a9..000000000 --- a/build/doc/html/bio_8c.html +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - -OpenJPEG: bio.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    bio.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Local static functions
    static void opj_bio_putbit (opj_bio_t *bio, OPJ_UINT32 b)
     Write a bit. More...
     
    static OPJ_UINT32 opj_bio_getbit (opj_bio_t *bio)
     Read a bit. More...
     
    static OPJ_BOOL opj_bio_byteout (opj_bio_t *bio)
     Write a byte. More...
     
    static OPJ_BOOL opj_bio_bytein (opj_bio_t *bio)
     Read a byte. More...
     
    opj_bio_topj_bio_create (void)
     Create a new BIO handle. More...
     
    void opj_bio_destroy (opj_bio_t *bio)
     Destroy a previously created BIO handle. More...
     
    ptrdiff_t opj_bio_numbytes (opj_bio_t *bio)
     Number of bytes written. More...
     
    void opj_bio_init_enc (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init encoder. More...
     
    void opj_bio_init_dec (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init decoder. More...
     
    void opj_bio_write (opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
     Write bits. More...
     
    OPJ_UINT32 opj_bio_read (opj_bio_t *bio, OPJ_UINT32 n)
     Read bits. More...
     
    OPJ_BOOL opj_bio_flush (opj_bio_t *bio)
     Flush bits. More...
     
    OPJ_BOOL opj_bio_inalign (opj_bio_t *bio)
     Passes the ending bits (coming from flushing) More...
     
    -

    Function Documentation

    - -

    ◆ opj_bio_bytein()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_bio_bytein (opj_bio_tbio)
    -
    -static
    -
    - -

    Read a byte.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_bio_getbit(), and opj_bio_inalign().

    - -
    -
    - -

    ◆ opj_bio_byteout()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_bio_byteout (opj_bio_tbio)
    -
    -static
    -
    - -

    Write a byte.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_bio_flush(), and opj_bio_putbit().

    - -
    -
    - -

    ◆ opj_bio_create()

    - -
    -
    - - - - - - - - -
    opj_bio_t* opj_bio_create (void )
    -
    - -

    Create a new BIO handle.

    -
    Returns
    Returns a new BIO handle if successful, returns NULL otherwise
    - -

    References opj_malloc().

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_destroy()

    - -
    -
    - - - - - - - - -
    void opj_bio_destroy (opj_bio_tbio)
    -
    - -

    Destroy a previously created BIO handle.

    -
    Parameters
    - - -
    bioBIO handle to destroy
    -
    -
    - -

    References opj_free().

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_flush()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_bio_flush (opj_bio_tbio)
    -
    - -

    Flush bits.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::ct, opj_bio_byteout(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_bio_getbit()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_bio_getbit (opj_bio_tbio)
    -
    -static
    -
    - -

    Read a bit.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns the read bit
    - -

    References opj_bio::buf, opj_bio::ct, and opj_bio_bytein().

    - -

    Referenced by opj_bio_read().

    - -
    -
    - -

    ◆ opj_bio_inalign()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_bio_inalign (opj_bio_tbio)
    -
    - -

    Passes the ending bits (coming from flushing)

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::buf, opj_bio::ct, opj_bio_bytein(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_init_dec (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    -
    - -

    Init decoder.

    -
    Parameters
    - - - - -
    bioBIO handle
    bpInput buffer
    lenInput buffer length
    -
    -
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_init_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_init_enc (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    -
    - -

    Init encoder.

    -
    Parameters
    - - - - -
    bioBIO handle
    bpOutput buffer
    lenOutput buffer length
    -
    -
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_bio_numbytes()

    - -
    -
    - - - - - - - - -
    ptrdiff_t opj_bio_numbytes (opj_bio_tbio)
    -
    - -

    Number of bytes written.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns the number of bytes written
    - -

    References opj_bio::bp, and opj_bio::start.

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_putbit()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_bio_putbit (opj_bio_tbio,
    OPJ_UINT32 b 
    )
    -
    -static
    -
    - -

    Write a bit.

    -
    Parameters
    - - - -
    bioBIO handle
    bBit to write (0 or 1)
    -
    -
    - -

    References opj_bio::buf, opj_bio::ct, and opj_bio_byteout().

    - -

    Referenced by opj_bio_write().

    - -
    -
    - -

    ◆ opj_bio_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_bio_read (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    -
    - -

    Read bits.

    -
    Parameters
    - - - -
    bioBIO handle
    nNumber of bits to read
    -
    -
    -
    Returns
    Returns the corresponding read number
    - -

    References opj_bio_getbit().

    - -

    Referenced by opj_t2_getcommacode(), opj_t2_getnumpasses(), opj_t2_read_packet_header(), and opj_tgt_decode().

    - -
    -
    - -

    ◆ opj_bio_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_write (opj_bio_tbio,
    OPJ_UINT32 v,
    OPJ_UINT32 n 
    )
    -
    - -

    Write bits.

    -
    Parameters
    - - - - -
    bioBIO handle
    vValue of bits
    nNumber of bits to write
    -
    -
    - -

    References opj_bio_putbit().

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_putcommacode(), opj_t2_putnumpasses(), and opj_tgt_encode().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/bio_8h.html b/build/doc/html/bio_8h.html deleted file mode 100644 index 5636fdd25..000000000 --- a/build/doc/html/bio_8h.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - - - - -OpenJPEG: bio.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    bio.h File Reference
    -
    -
    - -

    Implementation of an individual bit input-output (BIO) -More...

    -
    #include <stddef.h>
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_bio
     Individual bit input-output stream (BIO) More...
     
    - - - - -

    -Typedefs

    typedef struct opj_bio opj_bio_t
     Individual bit input-output stream (BIO) More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    opj_bio_topj_bio_create (void)
     Create a new BIO handle. More...
     
    void opj_bio_destroy (opj_bio_t *bio)
     Destroy a previously created BIO handle. More...
     
    ptrdiff_t opj_bio_numbytes (opj_bio_t *bio)
     Number of bytes written. More...
     
    void opj_bio_init_enc (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init encoder. More...
     
    void opj_bio_init_dec (opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
     Init decoder. More...
     
    void opj_bio_write (opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
     Write bits. More...
     
    OPJ_UINT32 opj_bio_read (opj_bio_t *bio, OPJ_UINT32 n)
     Read bits. More...
     
    OPJ_BOOL opj_bio_flush (opj_bio_t *bio)
     Flush bits. More...
     
    OPJ_BOOL opj_bio_inalign (opj_bio_t *bio)
     Passes the ending bits (coming from flushing) More...
     
    -

    Detailed Description

    -

    Implementation of an individual bit input-output (BIO)

    -

    The functions in BIO.C have for goal to realize an individual bit input - output.

    -

    Typedef Documentation

    - -

    ◆ opj_bio_t

    - -
    -
    - - - - -
    typedef struct opj_bio opj_bio_t
    -
    - -

    Individual bit input-output stream (BIO)

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_bio_create()

    - -
    -
    - - - - - - - - -
    opj_bio_t* opj_bio_create (void )
    -
    - -

    Create a new BIO handle.

    -
    Returns
    Returns a new BIO handle if successful, returns NULL otherwise
    - -

    References opj_malloc().

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_destroy()

    - -
    -
    - - - - - - - - -
    void opj_bio_destroy (opj_bio_tbio)
    -
    - -

    Destroy a previously created BIO handle.

    -
    Parameters
    - - -
    bioBIO handle to destroy
    -
    -
    - -

    References opj_free().

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_flush()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_bio_flush (opj_bio_tbio)
    -
    - -

    Flush bits.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::ct, opj_bio_byteout(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_bio_inalign()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_bio_inalign (opj_bio_tbio)
    -
    - -

    Passes the ending bits (coming from flushing)

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns OPJ_TRUE if successful, returns OPJ_FALSE otherwise
    - -

    References opj_bio::buf, opj_bio::ct, opj_bio_bytein(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_init_dec (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    -
    - -

    Init decoder.

    -
    Parameters
    - - - - -
    bioBIO handle
    bpInput buffer
    lenInput buffer length
    -
    -
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_init_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_init_enc (opj_bio_tbio,
    OPJ_BYTEbp,
    OPJ_UINT32 len 
    )
    -
    - -

    Init encoder.

    -
    Parameters
    - - - - -
    bioBIO handle
    bpOutput buffer
    lenOutput buffer length
    -
    -
    - -

    References opj_bio::bp, opj_bio::buf, opj_bio::ct, opj_bio::end, and opj_bio::start.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_bio_numbytes()

    - -
    -
    - - - - - - - - -
    ptrdiff_t opj_bio_numbytes (opj_bio_tbio)
    -
    - -

    Number of bytes written.

    -
    Parameters
    - - -
    bioBIO handle
    -
    -
    -
    Returns
    Returns the number of bytes written
    - -

    References opj_bio::bp, and opj_bio::start.

    - -

    Referenced by opj_t2_encode_packet(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_bio_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_bio_read (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    -
    - -

    Read bits.

    -
    Parameters
    - - - -
    bioBIO handle
    nNumber of bits to read
    -
    -
    -
    Returns
    Returns the corresponding read number
    - -

    References opj_bio_getbit().

    - -

    Referenced by opj_t2_getcommacode(), opj_t2_getnumpasses(), opj_t2_read_packet_header(), and opj_tgt_decode().

    - -
    -
    - -

    ◆ opj_bio_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_bio_write (opj_bio_tbio,
    OPJ_UINT32 v,
    OPJ_UINT32 n 
    )
    -
    - -

    Write bits.

    -
    Parameters
    - - - - -
    bioBIO handle
    vValue of bits
    nNumber of bits to write
    -
    -
    - -

    References opj_bio_putbit().

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_putcommacode(), opj_t2_putnumpasses(), and opj_tgt_encode().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/bio_8h_source.html b/build/doc/html/bio_8h_source.html deleted file mode 100644 index 5ccc02e67..000000000 --- a/build/doc/html/bio_8h_source.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - -OpenJPEG: bio.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    bio.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * All rights reserved.
    -
    15  *
    -
    16  * Redistribution and use in source and binary forms, with or without
    -
    17  * modification, are permitted provided that the following conditions
    -
    18  * are met:
    -
    19  * 1. Redistributions of source code must retain the above copyright
    -
    20  * notice, this list of conditions and the following disclaimer.
    -
    21  * 2. Redistributions in binary form must reproduce the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer in the
    -
    23  * documentation and/or other materials provided with the distribution.
    -
    24  *
    -
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    35  * POSSIBILITY OF SUCH DAMAGE.
    -
    36  */
    -
    37 
    -
    38 #ifndef OPJ_BIO_H
    -
    39 #define OPJ_BIO_H
    -
    40 
    -
    41 #include <stddef.h> /* ptrdiff_t */
    -
    42 
    -
    52 
    -
    56 typedef struct opj_bio {
    - - - - - -
    67 } opj_bio_t;
    -
    68 
    -
    71 /* ----------------------------------------------------------------------- */
    - -
    81 void opj_bio_destroy(opj_bio_t *bio);
    -
    87 ptrdiff_t opj_bio_numbytes(opj_bio_t *bio);
    -
    94 void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
    -
    101 void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len);
    - - - - -
    128 /* ----------------------------------------------------------------------- */
    -
    132 
    -
    133 #endif /* OPJ_BIO_H */
    -
    134 
    -
    -
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: bio.h:60
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: bench_dwt.c:108
    -
    opj_image_t * image
    image header
    Definition: tcd.h:265
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    -
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    -
    void usage(void)
    Definition: bench_dwt.c:98
    -
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    -
    OPJ_INT32 x0
    Definition: tcd.h:173
    -
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    -
    int main(int argc, char **argv)
    Definition: bench_dwt.c:134
    -
    OPJ_INT32 y1
    Definition: tcd.h:173
    -
    OPJ_INT32 x1
    Definition: tcd.h:173
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    -
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    -
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    -
    OPJ_INT32 x1
    Definition: tcd.h:191
    -
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    -
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    static void opj_bio_putbit(opj_bio_t *bio, OPJ_UINT32 b)
    Write a bit.
    Definition: bio.c:103
    -
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    OPJ_INT32 x0
    Definition: tcd.h:191
    -
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: bio.h:58
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:278
    -
    OPJ_INT32 x1
    Definition: tcd.h:230
    -
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    -
    FIXME DOC.
    Definition: tcd.h:242
    -
    OPJ_UINT32 buf
    temporary place where each byte is read or written
    Definition: bio.h:64
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    -
    OPJ_INT32 getValue(OPJ_UINT32 i)
    Definition: bench_dwt.c:42
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:280
    -
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_BYTE * bp
    pointer to the present position in the buffer
    Definition: bio.h:62
    -
    static OPJ_UINT32 opj_bio_getbit(opj_bio_t *bio)
    Read a bit.
    Definition: bio.c:113
    -
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    -
    OPJ_INT32 y0
    Definition: tcd.h:173
    -
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    -
    OPJ_INT32 x0
    Definition: tcd.h:230
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_INT32 y1
    Definition: tcd.h:230
    -
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    -
    OPJ_INT32 y0
    Definition: tcd.h:191
    -
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:279
    -
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    -
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    -
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    -
    OPJ_INT32 * data
    Definition: tcd.h:204
    -
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    -
    static OPJ_BOOL opj_bio_byteout(opj_bio_t *bio)
    Write a byte.
    Definition: bio.c:81
    -
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    -
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    -
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    -
    FIXME DOC.
    Definition: tcd.h:228
    -
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    -
    void init_tilec(opj_tcd_tilecomp_t *l_tilec, OPJ_INT32 x0, OPJ_INT32 y0, OPJ_INT32 x1, OPJ_INT32 y1, OPJ_UINT32 numresolutions)
    Definition: bench_dwt.c:47
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    static OPJ_BOOL opj_bio_bytein(opj_bio_t *bio)
    Read a byte.
    Definition: bio.c:92
    -
    OPJ_INT32 y1
    Definition: tcd.h:191
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    -
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_INT32 y0
    Definition: tcd.h:230
    -
    struct opj_bio opj_bio_t
    Individual bit input-output stream (BIO)
    -
    OPJ_UINT32 win_x0
    Coordinates of the window of interest, in grid reference space.
    Definition: tcd.h:277
    -
    void free_tilec(opj_tcd_tilecomp_t *l_tilec)
    Definition: bench_dwt.c:92
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    -
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    -
    Definition: thread.c:605
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    OPJ_UINT32 ct
    coder : number of bits free to write.
    Definition: bio.h:66
    - - - - diff --git a/build/doc/html/box__manager_8c.html b/build/doc/html/box__manager_8c.html deleted file mode 100644 index 7ac2c1230..000000000 --- a/build/doc/html/box__manager_8c.html +++ /dev/null @@ -1,1114 +0,0 @@ - - - - - - - -OpenJPEG: box_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    box_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include <ctype.h>
    -#include <assert.h>
    -#include "box_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    boxlist_param_tgene_boxlist (void)
     generate a box list More...
     
    boxlist_param_tget_boxstructure (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     get box structure of JP2 file More...
     
    box_param_tgene_boxbyOffset (int fd, OPJ_OFF_T offset)
     generate box from JP2 file at the given offset More...
     
    box_param_tgene_boxbyOffinStream (Byte_t *stream, OPJ_OFF_T offset)
     generate box from code stream (JPP or JPT stream) at the given offset More...
     
    box_param_tgene_boxbyType (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from JP2 file More...
     
    box_param_tgene_boxbyTypeinStream (Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from code stream More...
     
    box_param_tgene_childboxbyOffset (box_param_t *superbox, OPJ_OFF_T offset)
     generate child box from JP2 file at the given offset More...
     
    box_param_tgene_childboxbyType (box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
     generate(search) box from JP2 file More...
     
    OPJ_OFF_T get_DBoxoff (box_param_t *box)
     get DBox offset More...
     
    OPJ_SIZE_T get_DBoxlen (box_param_t *box)
     get DBox length More...
     
    Byte_tfetch_headbytes (box_param_t *box)
     fetch header bytes in file stream More...
     
    Byte_tfetch_DBoxbytes (box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch DBox (Box Contents) bytes of data in file stream More...
     
    Byte_t fetch_DBox1byte (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_DBox2bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_DBox4bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_DBox8bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream More...
     
    box_param_tsearch_box (const char type[], boxlist_param_t *boxlist)
     search a box by box type More...
     
    void print_box (box_param_t *box)
     print box parameters More...
     
    void print_allbox (boxlist_param_t *boxlist)
     print all box parameters More...
     
    void delete_box_in_list (box_param_t **box, boxlist_param_t *boxlist)
     delete a box in list More...
     
    void delete_box_in_list_by_type (const char type[], boxlist_param_t *boxlist)
     delete a box in list by Type More...
     
    void delete_boxlist (boxlist_param_t **boxlist)
     delete box list More...
     
    void insert_box_into_list (box_param_t *box, boxlist_param_t *boxlist)
     insert a box into list More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_box_in_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_box_in_list (box_param_t ** box,
    boxlist_param_tboxlist 
    )
    -
    - -

    delete a box in list

    -
    Parameters
    - - - -
    [in,out]boxaddress of the deleting box pointer
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    - -

    Referenced by const_metadatalist(), and delete_box_in_list_by_type().

    - -
    -
    - -

    ◆ delete_box_in_list_by_type()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_box_in_list_by_type (const char type[],
    boxlist_param_tboxlist 
    )
    -
    - -

    delete a box in list by Type

    -
    Parameters
    - - - -
    [in,out]typebox type
    [in]boxlistbox list pointer
    -
    -
    - -

    References delete_box_in_list(), and search_box().

    - -
    -
    - -

    ◆ delete_boxlist()

    - -
    -
    - - - - - - - - -
    void delete_boxlist (boxlist_param_t ** boxlist)
    -
    - -

    delete box list

    -
    Parameters
    - - -
    [in,out]boxlistaddress of the box list pointer
    -
    -
    - -

    References box_param::next.

    - -

    Referenced by delete_metadata(), and parse_jp2file().

    - -
    -
    - -

    ◆ fetch_DBox1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_DBox1byte (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 1-byte Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_1byte(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), and gene_faixbox().

    - -
    -
    - -

    ◆ fetch_DBox2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_DBox2bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_2bytebigendian(), and get_DBoxoff().

    - -

    Referenced by gene_mhixbox(), and set_cptrdata().

    - -
    -
    - -

    ◆ fetch_DBox4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_DBox4bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_4bytebigendian(), and get_DBoxoff().

    - -

    Referenced by gene_faixbox().

    - -
    -
    - -

    ◆ fetch_DBox8bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t fetch_DBox8bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_8bytebigendian(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), gene_faixbox(), gene_mhixbox(), set_cptrdata(), and set_mainmhixdata().

    - -
    -
    - -

    ◆ fetch_DBoxbytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_DBoxbytes (box_param_tbox,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch DBox (Box Contents) bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References box_param::fd, fetch_bytes(), and get_DBoxoff().

    - -
    -
    - -

    ◆ fetch_headbytes()

    - -
    -
    - - - - - - - - -
    Byte_t* fetch_headbytes (box_param_tbox)
    -
    - -

    fetch header bytes in file stream

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    -
    Returns
    pointer to the fetched bytes
    - -

    References box_param::fd, fetch_bytes(), box_param::headlen, and box_param::offset.

    - -

    Referenced by gene_placeholder().

    - -
    -
    - -

    ◆ gene_boxbyOffinStream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyOffinStream (Byte_tstream,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate box from code stream (JPP or JPT stream) at the given offset

    -
    Parameters
    - - - -
    [in]streamcode stream of a box
    [in]offsetBox offset of the whole stream
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References big4(), big8(), box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by parse_metadata().

    - -
    -
    - -

    ◆ gene_boxbyOffset()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyOffset (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate box from JP2 file at the given offset

    -
    Parameters
    - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_childboxbyOffset(), get_boxstructure(), and set_ppixdata().

    - -
    -
    - -

    ◆ gene_boxbyType()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyType (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from JP2 file

    -
    Parameters
    - - - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), get_filesize(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_childboxbyType(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    - -
    -
    - -

    ◆ gene_boxbyTypeinStream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyTypeinStream (Byte_tstream,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from code stream

    -
    Parameters
    - - - - - -
    [in]streamcode stream ( from the first byte)
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_ihdrbox().

    - -
    -
    - -

    ◆ gene_boxlist()

    - -
    -
    - - - - - - - - -
    boxlist_param_t* gene_boxlist (void )
    -
    - -

    generate a box list

    -
    Returns
    pointer to the generated box list
    - -

    References boxlist_param::first, and boxlist_param::last.

    - -

    Referenced by get_boxstructure(), and parse_metadata().

    - -
    -
    - -

    ◆ gene_childboxbyOffset()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_childboxbyOffset (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate child box from JP2 file at the given offset

    -
    Parameters
    - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References box_param::fd, gene_boxbyOffset(), and get_DBoxoff().

    - -
    -
    - -

    ◆ gene_childboxbyType()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_childboxbyType (box_param_tsuperbox,
    OPJ_OFF_T offset,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from JP2 file

    -
    Parameters
    - - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References FCGI_stderr, box_param::fd, gene_boxbyType(), get_DBoxlen(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx().

    - -
    -
    - -

    ◆ get_boxstructure()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    boxlist_param_t* get_boxstructure (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    get box structure of JP2 file

    -
    Parameters
    - - - - -
    [in]fdfile descriptor
    [in]offsetoffset of the decomposing region
    [in]lengthlength of the decomposing region
    -
    -
    -
    Returns
    pointer to the generated boxlist
    - -

    References gene_boxbyOffset(), gene_boxlist(), insert_box_into_list(), and box_param::length.

    - -

    Referenced by const_metadatalist(), and parse_jp2file().

    - -
    -
    - -

    ◆ get_DBoxlen()

    - -
    -
    - - - - - - - - -
    OPJ_SIZE_T get_DBoxlen (box_param_tbox)
    -
    - -

    get DBox length

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    -
    Returns
    DBox length ( content length)
    - -

    References box_param::headlen, and box_param::length.

    - -

    Referenced by const_metadatalist(), gene_childboxbyType(), gene_ihdrbox(), gene_manfbox(), gene_mhixbox(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    - -
    -
    - -

    ◆ get_DBoxoff()

    - - - -

    ◆ insert_box_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_box_into_list (box_param_tbox,
    boxlist_param_tboxlist 
    )
    -
    - -

    insert a box into list

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    - -

    Referenced by get_boxstructure(), and parse_metadata().

    - -
    -
    - -

    ◆ print_allbox()

    - -
    -
    - - - - - - - - -
    void print_allbox (boxlist_param_tboxlist)
    -
    - -

    print all box parameters

    -
    Parameters
    - - -
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, logstream, box_param::next, and print_box().

    - -

    Referenced by print_metadata().

    - -
    -
    - -

    ◆ print_box()

    - -
    -
    - - - - - - - - -
    void print_box (box_param_tbox)
    -
    - -

    print box parameters

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    - -

    References box_param::headlen, box_param::length, logstream, box_param::offset, and box_param::type.

    - -

    Referenced by print_allbox().

    - -
    -
    - -

    ◆ search_box()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* search_box (const char type[],
    boxlist_param_tboxlist 
    )
    -
    - -

    search a box by box type

    -
    Parameters
    - - - -
    [in]typebox type
    [in]boxlistbox list pointer
    -
    -
    -
    Returns
    found box pointer
    - -

    References FCGI_stderr, boxlist_param::first, box_param::next, and box_param::type.

    - -

    Referenced by check_JP2boxidx(), delete_box_in_list_by_type(), gene_ihdrbox(), and parse_jp2file().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/box__manager_8h.html b/build/doc/html/box__manager_8h.html deleted file mode 100644 index 986706359..000000000 --- a/build/doc/html/box__manager_8h.html +++ /dev/null @@ -1,1110 +0,0 @@ - - - - - - - -OpenJPEG: box_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    box_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  box_param
     box parameters More...
     
    struct  boxlist_param
     Box list parameters. More...
     
    - - - - - - - -

    -Typedefs

    typedef struct box_param box_param_t
     box parameters More...
     
    typedef struct boxlist_param boxlist_param_t
     Box list parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    boxlist_param_tgene_boxlist (void)
     generate a box list More...
     
    boxlist_param_tget_boxstructure (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     get box structure of JP2 file More...
     
    box_param_tgene_boxbyOffset (int fd, OPJ_OFF_T offset)
     generate box from JP2 file at the given offset More...
     
    box_param_tgene_boxbyOffinStream (Byte_t *stream, OPJ_OFF_T offset)
     generate box from code stream (JPP or JPT stream) at the given offset More...
     
    box_param_tgene_boxbyType (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from JP2 file More...
     
    box_param_tgene_boxbyTypeinStream (Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
     generate(search) box from code stream More...
     
    box_param_tgene_childboxbyOffset (box_param_t *superbox, OPJ_OFF_T offset)
     generate child box from JP2 file at the given offset More...
     
    box_param_tgene_childboxbyType (box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
     generate(search) box from JP2 file More...
     
    OPJ_OFF_T get_DBoxoff (box_param_t *box)
     get DBox offset More...
     
    OPJ_SIZE_T get_DBoxlen (box_param_t *box)
     get DBox length More...
     
    Byte_tfetch_headbytes (box_param_t *box)
     fetch header bytes in file stream More...
     
    Byte_tfetch_DBoxbytes (box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch DBox (Box Contents) bytes of data in file stream More...
     
    Byte_t fetch_DBox1byte (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_DBox2bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_DBox4bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_DBox8bytebigendian (box_param_t *box, OPJ_OFF_T offset)
     fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream More...
     
    box_param_tsearch_box (const char type[], boxlist_param_t *boxlist)
     search a box by box type More...
     
    void print_box (box_param_t *box)
     print box parameters More...
     
    void print_allbox (boxlist_param_t *boxlist)
     print all box parameters More...
     
    void delete_box_in_list (box_param_t **box, boxlist_param_t *boxlist)
     delete a box in list More...
     
    void delete_box_in_list_by_type (const char type[], boxlist_param_t *boxlist)
     delete a box in list by Type More...
     
    void delete_boxlist (boxlist_param_t **boxlist)
     delete box list More...
     
    void insert_box_into_list (box_param_t *box, boxlist_param_t *boxlist)
     insert a box into list More...
     
    -

    Typedef Documentation

    - -

    ◆ box_param_t

    - -
    -
    - - - - -
    typedef struct box_param box_param_t
    -
    - -

    box parameters

    - -
    -
    - -

    ◆ boxlist_param_t

    - -
    -
    - - - - -
    typedef struct boxlist_param boxlist_param_t
    -
    - -

    Box list parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_box_in_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_box_in_list (box_param_t ** box,
    boxlist_param_tboxlist 
    )
    -
    - -

    delete a box in list

    -
    Parameters
    - - - -
    [in,out]boxaddress of the deleting box pointer
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    - -

    Referenced by const_metadatalist(), and delete_box_in_list_by_type().

    - -
    -
    - -

    ◆ delete_box_in_list_by_type()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_box_in_list_by_type (const char type[],
    boxlist_param_tboxlist 
    )
    -
    - -

    delete a box in list by Type

    -
    Parameters
    - - - -
    [in,out]typebox type
    [in]boxlistbox list pointer
    -
    -
    - -

    References delete_box_in_list(), and search_box().

    - -
    -
    - -

    ◆ delete_boxlist()

    - -
    -
    - - - - - - - - -
    void delete_boxlist (boxlist_param_t ** boxlist)
    -
    - -

    delete box list

    -
    Parameters
    - - -
    [in,out]boxlistaddress of the box list pointer
    -
    -
    - -

    References box_param::next.

    - -

    Referenced by delete_metadata(), and parse_jp2file().

    - -
    -
    - -

    ◆ fetch_DBox1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_DBox1byte (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 1-byte Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_1byte(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), and gene_faixbox().

    - -
    -
    - -

    ◆ fetch_DBox2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_DBox2bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_2bytebigendian(), and get_DBoxoff().

    - -

    Referenced by gene_mhixbox(), and set_cptrdata().

    - -
    -
    - -

    ◆ fetch_DBox4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_DBox4bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_4bytebigendian(), and get_DBoxoff().

    - -

    Referenced by gene_faixbox().

    - -
    -
    - -

    ◆ fetch_DBox8bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t fetch_DBox8bytebigendian (box_param_tbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    -
    -
    -
    Returns
    fetched code
    - -

    References box_param::fd, fetch_8bytebigendian(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), gene_faixbox(), gene_mhixbox(), set_cptrdata(), and set_mainmhixdata().

    - -
    -
    - -

    ◆ fetch_DBoxbytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_DBoxbytes (box_param_tbox,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch DBox (Box Contents) bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]boxbox pointer
    [in]offsetstart Byte position in DBox
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References box_param::fd, fetch_bytes(), and get_DBoxoff().

    - -
    -
    - -

    ◆ fetch_headbytes()

    - -
    -
    - - - - - - - - -
    Byte_t* fetch_headbytes (box_param_tbox)
    -
    - -

    fetch header bytes in file stream

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    -
    Returns
    pointer to the fetched bytes
    - -

    References box_param::fd, fetch_bytes(), box_param::headlen, and box_param::offset.

    - -

    Referenced by gene_placeholder().

    - -
    -
    - -

    ◆ gene_boxbyOffinStream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyOffinStream (Byte_tstream,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate box from code stream (JPP or JPT stream) at the given offset

    -
    Parameters
    - - - -
    [in]streamcode stream of a box
    [in]offsetBox offset of the whole stream
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References big4(), big8(), box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by parse_metadata().

    - -
    -
    - -

    ◆ gene_boxbyOffset()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyOffset (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate box from JP2 file at the given offset

    -
    Parameters
    - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_childboxbyOffset(), get_boxstructure(), and set_ppixdata().

    - -
    -
    - -

    ◆ gene_boxbyType()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyType (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from JP2 file

    -
    Parameters
    - - - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, fetch_bytes(), get_filesize(), box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_childboxbyType(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    - -
    -
    - -

    ◆ gene_boxbyTypeinStream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_boxbyTypeinStream (Byte_tstream,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from code stream

    -
    Parameters
    - - - - - -
    [in]streamcode stream ( from the first byte)
    [in]offsetstart Byte position of the search
    [in]lengthByte length of the search, if 0, size to the end of file
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References big4(), big8(), FCGI_stderr, box_param::fd, box_param::headlen, box_param::length, box_param::next, box_param::offset, and box_param::type.

    - -

    Referenced by gene_ihdrbox().

    - -
    -
    - -

    ◆ gene_boxlist()

    - -
    -
    - - - - - - - - -
    boxlist_param_t* gene_boxlist (void )
    -
    - -

    generate a box list

    -
    Returns
    pointer to the generated box list
    - -

    References boxlist_param::first, and boxlist_param::last.

    - -

    Referenced by get_boxstructure(), and parse_metadata().

    - -
    -
    - -

    ◆ gene_childboxbyOffset()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_childboxbyOffset (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate child box from JP2 file at the given offset

    -
    Parameters
    - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    -
    -
    -
    Returns
    pointer to the structure of generate box parameters
    - -

    References box_param::fd, gene_boxbyOffset(), and get_DBoxoff().

    - -
    -
    - -

    ◆ gene_childboxbyType()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    box_param_t* gene_childboxbyType (box_param_tsuperbox,
    OPJ_OFF_T offset,
    const char TBox[] 
    )
    -
    - -

    generate(search) box from JP2 file

    -
    Parameters
    - - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    [in]TBoxBox Type
    -
    -
    -
    Returns
    pointer to the structure of generate/found box parameters
    - -

    References FCGI_stderr, box_param::fd, gene_boxbyType(), get_DBoxlen(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx().

    - -
    -
    - -

    ◆ get_boxstructure()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    boxlist_param_t* get_boxstructure (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    get box structure of JP2 file

    -
    Parameters
    - - - - -
    [in]fdfile descriptor
    [in]offsetoffset of the decomposing region
    [in]lengthlength of the decomposing region
    -
    -
    -
    Returns
    pointer to the generated boxlist
    - -

    References gene_boxbyOffset(), gene_boxlist(), insert_box_into_list(), and box_param::length.

    - -

    Referenced by const_metadatalist(), and parse_jp2file().

    - -
    -
    - -

    ◆ get_DBoxlen()

    - -
    -
    - - - - - - - - -
    OPJ_SIZE_T get_DBoxlen (box_param_tbox)
    -
    - -

    get DBox length

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    -
    Returns
    DBox length ( content length)
    - -

    References box_param::headlen, and box_param::length.

    - -

    Referenced by const_metadatalist(), gene_childboxbyType(), gene_ihdrbox(), gene_manfbox(), gene_mhixbox(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    - -
    -
    - -

    ◆ get_DBoxoff()

    - - - -

    ◆ insert_box_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_box_into_list (box_param_tbox,
    boxlist_param_tboxlist 
    )
    -
    - -

    insert a box into list

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, boxlist_param::last, and box_param::next.

    - -

    Referenced by get_boxstructure(), and parse_metadata().

    - -
    -
    - -

    ◆ print_allbox()

    - -
    -
    - - - - - - - - -
    void print_allbox (boxlist_param_tboxlist)
    -
    - -

    print all box parameters

    -
    Parameters
    - - -
    [in]boxlistbox list pointer
    -
    -
    - -

    References boxlist_param::first, logstream, box_param::next, and print_box().

    - -

    Referenced by print_metadata().

    - -
    -
    - -

    ◆ print_box()

    - -
    -
    - - - - - - - - -
    void print_box (box_param_tbox)
    -
    - -

    print box parameters

    -
    Parameters
    - - -
    [in]boxbox pointer
    -
    -
    - -

    References box_param::headlen, box_param::length, logstream, box_param::offset, and box_param::type.

    - -

    Referenced by print_allbox().

    - -
    -
    - -

    ◆ search_box()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    box_param_t* search_box (const char type[],
    boxlist_param_tboxlist 
    )
    -
    - -

    search a box by box type

    -
    Parameters
    - - - -
    [in]typebox type
    [in]boxlistbox list pointer
    -
    -
    -
    Returns
    found box pointer
    - -

    References FCGI_stderr, boxlist_param::first, box_param::next, and box_param::type.

    - -

    Referenced by check_JP2boxidx(), delete_box_in_list_by_type(), gene_ihdrbox(), and parse_jp2file().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/box__manager_8h_source.html b/build/doc/html/box__manager_8h_source.html deleted file mode 100644 index 5d8daa2df..000000000 --- a/build/doc/html/box__manager_8h_source.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - -OpenJPEG: box_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    box_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef BOX_MANAGER_H_
    -
    32 # define BOX_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 
    -
    37 typedef struct box_param {
    -
    38  int fd;
    - - - -
    42  char type[4];
    -
    43  struct box_param *next;
    -
    44 } box_param_t;
    -
    45 
    -
    46 
    -
    48 typedef struct boxlist_param {
    - - - -
    52 
    -
    53 
    - -
    60 
    -
    69 boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length);
    -
    70 
    -
    71 
    -
    79 box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset);
    -
    80 
    -
    81 
    - -
    90 
    -
    100 box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length,
    -
    101  const char TBox[]);
    -
    102 
    - -
    113  OPJ_SIZE_T length, const char TBox[]);
    -
    114 
    - -
    123 
    - -
    133  const char TBox[]);
    -
    134 
    - -
    142 
    -
    143 
    - -
    151 
    -
    152 
    - -
    160 
    -
    161 
    - -
    171 
    - -
    180 
    - -
    189 
    - -
    198 
    - -
    207 
    -
    208 
    -
    216 box_param_t * search_box(const char type[], boxlist_param_t *boxlist);
    -
    217 
    -
    223 void print_box(box_param_t *box);
    -
    224 
    -
    225 
    -
    231 void print_allbox(boxlist_param_t *boxlist);
    -
    232 
    -
    239 void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist);
    -
    240 
    -
    241 
    -
    248 void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist);
    -
    249 
    -
    250 
    -
    256 void delete_boxlist(boxlist_param_t **boxlist);
    -
    257 
    -
    258 
    - -
    266 
    -
    267 #endif /* !BOX_MANAGER_H_ */
    -
    -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    -
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    -
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    -
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    -
    Byte_t * fetch_DBoxbytes(box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch DBox (Box Contents) bytes of data in file stream
    Definition: box_manager.c:321
    -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    Byte_t headlen
    header length 8 or 16
    Definition: box_manager.h:40
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    Byte_t * fetch_DBoxbytes(box_param_t *box, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch DBox (Box Contents) bytes of data in file stream
    Definition: box_manager.c:321
    -
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    -
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    -
    box parameters
    Definition: box_manager.h:37
    -
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    -
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    -
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    -
    #define FCGI_stderr
    Definition: box_manager.c:44
    -
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    -
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    -
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    -
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    -
    box_param_t * gene_childboxbyOffset(box_param_t *superbox, OPJ_OFF_T offset)
    generate child box from JP2 file at the given offset
    Definition: box_manager.c:288
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void print_box(box_param_t *box)
    print box parameters
    Definition: box_manager.c:365
    -
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    -
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    -
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    -
    struct box_param box_param_t
    box parameters
    -
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    -
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    -
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    -
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    -
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    struct boxlist_param boxlist_param_t
    Box list parameters.
    -
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    -
    char type[4]
    type of information in the DBox
    Definition: box_manager.h:42
    -
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    -
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    -
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    -
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    -
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    -
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    -
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    -
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    -
    void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist)
    delete a box in list by Type
    Definition: box_manager.c:415
    - -
    void delete_box_in_list_by_type(const char type[], boxlist_param_t *boxlist)
    delete a box in list by Type
    Definition: box_manager.c:415
    -
    box_param_t * last
    last box pointer of the list
    Definition: box_manager.h:50
    -
    void print_box(box_param_t *box)
    print box parameters
    Definition: box_manager.c:365
    -
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    Box list parameters.
    Definition: box_manager.h:48
    -
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    - -
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    -
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    -
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    -
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    - -
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    -
    int fd
    file descriptor
    Definition: box_manager.h:38
    -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    -
    #define logstream
    Definition: box_manager.c:45
    -
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    -
    box_param_t * gene_childboxbyOffset(box_param_t *superbox, OPJ_OFF_T offset)
    generate child box from JP2 file at the given offset
    Definition: box_manager.c:288
    -
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    - - - - diff --git a/build/doc/html/boxheader__manager_8c.html b/build/doc/html/boxheader__manager_8c.html deleted file mode 100644 index 50027776b..000000000 --- a/build/doc/html/boxheader__manager_8c.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - -OpenJPEG: boxheader_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    boxheader_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include "boxheader_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - -

    -Functions

    boxheader_param_tgene_boxheader (int fd, OPJ_OFF_T offset)
     generate a box header at the given offset More...
     
    boxheader_param_tgene_childboxheader (box_param_t *superbox, OPJ_OFF_T offset)
     generate a child box header at the given offset More...
     
    void print_boxheader (boxheader_param_t *boxheader)
     print box header parameters More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ gene_boxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* gene_boxheader (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate a box header at the given offset

    -
    Parameters
    - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    -
    -
    -
    Returns
    pointer to the structure of generate box header parameters
    - -

    References fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_bytes(), boxheader_param::headlen, boxheader_param::length, boxheader_param::next, and boxheader_param::type.

    - -

    Referenced by gene_childboxheader().

    - -
    -
    - -

    ◆ gene_childboxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* gene_childboxheader (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate a child box header at the given offset

    -
    Parameters
    - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    -
    -
    -
    Returns
    pointer to the structure of generate box header parameters
    - -

    References box_param::fd, gene_boxheader(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), and gene_manfbox().

    - -
    -
    - -

    ◆ print_boxheader()

    - -
    -
    - - - - - - - - -
    void print_boxheader (boxheader_param_tboxheader)
    -
    - -

    print box header parameters

    -
    Parameters
    - - -
    [in]boxheaderboxheader pointer
    -
    -
    - -

    References boxheader_param::length, logstream, and boxheader_param::type.

    - -

    Referenced by print_manfbox().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/boxheader__manager_8h.html b/build/doc/html/boxheader__manager_8h.html deleted file mode 100644 index 9667928cb..000000000 --- a/build/doc/html/boxheader__manager_8h.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - -OpenJPEG: boxheader_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    boxheader_manager.h File Reference
    -
    -
    -
    #include "openjpeg.h"
    -#include "byte_manager.h"
    -#include "box_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  boxheader_param
     box header parameters More...
     
    - - - - -

    -Typedefs

    typedef struct boxheader_param boxheader_param_t
     box header parameters More...
     
    - - - - - - - - - - -

    -Functions

    boxheader_param_tgene_boxheader (int fd, OPJ_OFF_T offset)
     generate a box header at the given offset More...
     
    boxheader_param_tgene_childboxheader (box_param_t *superbox, OPJ_OFF_T offset)
     generate a child box header at the given offset More...
     
    void print_boxheader (boxheader_param_t *boxheader)
     print box header parameters More...
     
    -

    Typedef Documentation

    - -

    ◆ boxheader_param_t

    - -
    -
    - - - - -
    typedef struct boxheader_param boxheader_param_t
    -
    - -

    box header parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ gene_boxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* gene_boxheader (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate a box header at the given offset

    -
    Parameters
    - - - -
    [in]fdfile discriptor of the JP2 file
    [in]offsetBox offset
    -
    -
    -
    Returns
    pointer to the structure of generate box header parameters
    - -

    References fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_bytes(), boxheader_param::headlen, boxheader_param::length, boxheader_param::next, and boxheader_param::type.

    - -

    Referenced by gene_childboxheader().

    - -
    -
    - -

    ◆ gene_childboxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* gene_childboxheader (box_param_tsuperbox,
    OPJ_OFF_T offset 
    )
    -
    - -

    generate a child box header at the given offset

    -
    Parameters
    - - - -
    [in]superboxsuper box pointer
    [in]offsetoffset from DBox first byte of superbox
    -
    -
    -
    Returns
    pointer to the structure of generate box header parameters
    - -

    References box_param::fd, gene_boxheader(), and get_DBoxoff().

    - -

    Referenced by check_JP2boxidx(), and gene_manfbox().

    - -
    -
    - -

    ◆ print_boxheader()

    - -
    -
    - - - - - - - - -
    void print_boxheader (boxheader_param_tboxheader)
    -
    - -

    print box header parameters

    -
    Parameters
    - - -
    [in]boxheaderboxheader pointer
    -
    -
    - -

    References boxheader_param::length, logstream, and boxheader_param::type.

    - -

    Referenced by print_manfbox().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/boxheader__manager_8h_source.html b/build/doc/html/boxheader__manager_8h_source.html deleted file mode 100644 index 260982f8d..000000000 --- a/build/doc/html/boxheader__manager_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -OpenJPEG: boxheader_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    boxheader_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef BOXHEADER_MANAGER_H_
    -
    32 # define BOXHEADER_MANAGER_H_
    -
    33 
    -
    34 #include "openjpeg.h"
    -
    35 #include "byte_manager.h"
    -
    36 #include "box_manager.h"
    -
    37 
    -
    39 typedef struct boxheader_param {
    - - -
    42  char type[4];
    - - -
    45 
    -
    46 
    - -
    55 
    - -
    64  OPJ_OFF_T offset);
    -
    65 
    -
    71 void print_boxheader(boxheader_param_t *boxheader);
    -
    72 
    -
    73 #endif /* !BOXHEADER_MANAGER_H_ */
    -
    -
    boxheader_param_t * gene_boxheader(int fd, OPJ_OFF_T offset)
    generate a box header at the given offset
    Definition: boxheader_manager.c:48
    -
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    -
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    -
    box header parameters
    Definition: boxheader_manager.h:39
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    box parameters
    Definition: box_manager.h:37
    -
    #define logstream
    Definition: boxheader_manager.c:44
    -
    struct boxheader_param boxheader_param_t
    box header parameters
    -
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    - -
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    -
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    -
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    -
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    - - -
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    -
    boxheader_param_t * gene_boxheader(int fd, OPJ_OFF_T offset)
    generate a box header at the given offset
    Definition: boxheader_manager.c:48
    - -
    int fd
    file descriptor
    Definition: box_manager.h:38
    -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte8_t length
    length of the reference Box
    Definition: boxheader_manager.h:41
    - -
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    - - - - diff --git a/build/doc/html/byte__manager_8c.html b/build/doc/html/byte__manager_8c.html deleted file mode 100644 index b5e7cbf45..000000000 --- a/build/doc/html/byte__manager_8c.html +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - - -OpenJPEG: byte_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    byte_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <sys/types.h>
    -#include <unistd.h>
    -#include <stdlib.h>
    -#include <sys/stat.h>
    -#include "byte_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Byte_tfetch_bytes (int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch bytes of data in file stream More...
     
    Byte_t fetch_1byte (int fd, OPJ_OFF_T offset)
     fetch a 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_2bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_4bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_8bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 8-byte big endian Byte codes in file stream More...
     
    Byte2_t big2 (Byte_t *buf)
     convert 2-byte big endian Byte codes to number More...
     
    Byte4_t big4 (Byte_t *buf)
     convert 4-byte big endian Byte codes to number More...
     
    Byte8_t big8 (Byte_t *buf)
     convert 8-byte big endian Byte codes to number More...
     
    void modify_4Bytecode (Byte4_t code, Byte_t *stream)
     modify 4Byte code in a codestream More...
     
    OPJ_OFF_T get_filesize (int fd)
     Get file size. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ big2()

    - -
    -
    - - - - - - - - -
    Byte2_t big2 (Byte_tbuf)
    -
    - -

    convert 2-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    Referenced by fetch_2bytebigendian(), gene_ihdrbox(), get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), and modify_COCmkrstream().

    - -
    -
    - -

    ◆ big4()

    - -
    -
    - - - - - - - - -
    Byte4_t big4 (Byte_tbuf)
    -
    - -

    convert 4-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    Referenced by add_emptyboxstream(), big8(), fetch_4bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), gene_ihdrbox(), get_SIZmkrdata_from_j2kstream(), and parse_phld().

    - -
    -
    - -

    ◆ big8()

    - -
    -
    - - - - - - - - -
    Byte8_t big8 (Byte_tbuf)
    -
    - -

    convert 8-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    References big4().

    - -

    Referenced by add_emptyboxstream(), fetch_8bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), and parse_phld().

    - -
    -
    - -

    ◆ fetch_1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_1byte (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 1-byte Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by fetch_codestream1byte(), and fetch_DBox1byte().

    - -
    -
    - -

    ◆ fetch_2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_2bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big2(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_codestream2bytebigendian(), and fetch_DBox2bytebigendian().

    - -
    -
    - -

    ◆ fetch_4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_4bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big4(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_codestream4bytebigendian(), fetch_DBox4bytebigendian(), and gene_boxheader().

    - -
    -
    - -

    ◆ fetch_8bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t fetch_8bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 8-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big8(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_DBox8bytebigendian(), and gene_boxheader().

    - -
    -
    - -

    ◆ fetch_bytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_bytes (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by add_body_stream(), fetch_2bytebigendian(), fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_codestreambytes(), fetch_DBoxbytes(), fetch_headbytes(), gene_boxbyOffset(), gene_boxbyType(), and gene_boxheader().

    - -
    -
    - -

    ◆ get_filesize()

    - -
    -
    - - - - - - - - -
    OPJ_OFF_T get_filesize (int fd)
    -
    - -

    Get file size.

    -
    Parameters
    - - -
    [in]fdfile discriptor
    -
    -
    -
    Returns
    file size
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by const_metadatalist(), fread_jpip(), gene_boxbyType(), and parse_jp2file().

    - -
    -
    - -

    ◆ modify_4Bytecode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void modify_4Bytecode (Byte4_t code,
    Byte_tstream 
    )
    -
    - -

    modify 4Byte code in a codestream

    -
    Parameters
    - - - -
    [in]codecode value
    [out]streammodifying codestream
    -
    -
    - -

    Referenced by modify_SIZmkrstream(), and modify_tileheader().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/byte__manager_8h.html b/build/doc/html/byte__manager_8h.html deleted file mode 100644 index 6d5ccfed6..000000000 --- a/build/doc/html/byte__manager_8h.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - - - - -OpenJPEG: byte_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    byte_manager.h File Reference
    -
    -
    -
    #include <stddef.h>
    -#include "openjpeg.h"
    -#include "opj_stdint.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - -

    -Typedefs

    typedef uint8_t Byte_t
     
    typedef uint16_t Byte2_t
     
    typedef uint32_t Byte4_t
     
    typedef uint64_t Byte8_t
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Byte_tfetch_bytes (int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch bytes of data in file stream More...
     
    Byte_t fetch_1byte (int fd, OPJ_OFF_T offset)
     fetch a 1-byte Byte codes in file stream More...
     
    Byte2_t fetch_2bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_4bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 4-byte big endian Byte codes in file stream More...
     
    Byte8_t fetch_8bytebigendian (int fd, OPJ_OFF_T offset)
     fetch a 8-byte big endian Byte codes in file stream More...
     
    Byte2_t big2 (Byte_t *buf)
     convert 2-byte big endian Byte codes to number More...
     
    Byte4_t big4 (Byte_t *buf)
     convert 4-byte big endian Byte codes to number More...
     
    Byte8_t big8 (Byte_t *buf)
     convert 8-byte big endian Byte codes to number More...
     
    void modify_4Bytecode (Byte4_t code, Byte_t *stream)
     modify 4Byte code in a codestream More...
     
    OPJ_OFF_T get_filesize (int fd)
     Get file size. More...
     
    -

    Typedef Documentation

    - -

    ◆ Byte2_t

    - -
    -
    - - - - -
    typedef uint16_t Byte2_t
    -
    - -
    -
    - -

    ◆ Byte4_t

    - -
    -
    - - - - -
    typedef uint32_t Byte4_t
    -
    - -
    -
    - -

    ◆ Byte8_t

    - -
    -
    - - - - -
    typedef uint64_t Byte8_t
    -
    - -
    -
    - -

    ◆ Byte_t

    - -
    -
    - - - - -
    typedef uint8_t Byte_t
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ big2()

    - -
    -
    - - - - - - - - -
    Byte2_t big2 (Byte_tbuf)
    -
    - -

    convert 2-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    Referenced by fetch_2bytebigendian(), gene_ihdrbox(), get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), and modify_COCmkrstream().

    - -
    -
    - -

    ◆ big4()

    - -
    -
    - - - - - - - - -
    Byte4_t big4 (Byte_tbuf)
    -
    - -

    convert 4-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    Referenced by add_emptyboxstream(), big8(), fetch_4bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), gene_ihdrbox(), get_SIZmkrdata_from_j2kstream(), and parse_phld().

    - -
    -
    - -

    ◆ big8()

    - -
    -
    - - - - - - - - -
    Byte8_t big8 (Byte_tbuf)
    -
    - -

    convert 8-byte big endian Byte codes to number

    -
    Parameters
    - - -
    [in]bufByte codes
    -
    -
    -
    Returns
    resolved number
    - -

    References big4().

    - -

    Referenced by add_emptyboxstream(), fetch_8bytebigendian(), gene_boxbyOffinStream(), gene_boxbyOffset(), gene_boxbyType(), gene_boxbyTypeinStream(), and parse_phld().

    - -
    -
    - -

    ◆ fetch_1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_1byte (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 1-byte Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by fetch_codestream1byte(), and fetch_DBox1byte().

    - -
    -
    - -

    ◆ fetch_2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_2bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big2(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_codestream2bytebigendian(), and fetch_DBox2bytebigendian().

    - -
    -
    - -

    ◆ fetch_4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_4bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big4(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_codestream4bytebigendian(), fetch_DBox4bytebigendian(), and gene_boxheader().

    - -
    -
    - -

    ◆ fetch_8bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t fetch_8bytebigendian (int fd,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch a 8-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    -
    -
    -
    Returns
    fetched codes
    - -

    References big8(), FCGI_stderr, and fetch_bytes().

    - -

    Referenced by fetch_DBox8bytebigendian(), and gene_boxheader().

    - -
    -
    - -

    ◆ fetch_bytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_bytes (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]fdfile discriptor
    [in]offsetstart Byte position
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by add_body_stream(), fetch_2bytebigendian(), fetch_4bytebigendian(), fetch_8bytebigendian(), fetch_codestreambytes(), fetch_DBoxbytes(), fetch_headbytes(), gene_boxbyOffset(), gene_boxbyType(), and gene_boxheader().

    - -
    -
    - -

    ◆ get_filesize()

    - -
    -
    - - - - - - - - -
    OPJ_OFF_T get_filesize (int fd)
    -
    - -

    Get file size.

    -
    Parameters
    - - -
    [in]fdfile discriptor
    -
    -
    -
    Returns
    file size
    - -

    References FCGI_stderr, and FCGI_stdout.

    - -

    Referenced by const_metadatalist(), fread_jpip(), gene_boxbyType(), and parse_jp2file().

    - -
    -
    - -

    ◆ modify_4Bytecode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void modify_4Bytecode (Byte4_t code,
    Byte_tstream 
    )
    -
    - -

    modify 4Byte code in a codestream

    -
    Parameters
    - - - -
    [in]codecode value
    [out]streammodifying codestream
    -
    -
    - -

    Referenced by modify_SIZmkrstream(), and modify_tileheader().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/byte__manager_8h_source.html b/build/doc/html/byte__manager_8h_source.html deleted file mode 100644 index 960204d1e..000000000 --- a/build/doc/html/byte__manager_8h_source.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -OpenJPEG: byte_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    byte_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef BYTE_MANAGER_H_
    -
    32 #define BYTE_MANAGER_H_
    -
    33 
    -
    34 #include <stddef.h>
    -
    35 #include "openjpeg.h"
    -
    36 #include "opj_stdint.h"
    -
    37 typedef uint8_t Byte_t;
    -
    38 typedef uint16_t Byte2_t;
    -
    39 typedef uint32_t Byte4_t;
    -
    40 typedef uint64_t Byte8_t;
    -
    41 
    -
    50 Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size);
    -
    51 
    -
    52 
    -
    60 Byte_t fetch_1byte(int fd, OPJ_OFF_T offset);
    -
    61 
    -
    69 Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset);
    -
    70 
    -
    78 Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset);
    -
    79 
    -
    87 Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset);
    -
    88 
    -
    89 
    -
    96 Byte2_t big2(Byte_t *buf);
    -
    97 
    -
    104 Byte4_t big4(Byte_t *buf);
    -
    105 
    -
    112 Byte8_t big8(Byte_t *buf);
    -
    113 
    -
    120 void modify_4Bytecode(Byte4_t code, Byte_t *stream);
    -
    121 
    -
    128 OPJ_OFF_T get_filesize(int fd);
    -
    129 
    -
    130 #endif /* !BYTE_MANAGER_H_ */
    -
    -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    #define FCGI_stderr
    Definition: byte_manager.c:47
    - -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    -
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    -
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    -
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    -
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    -
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    - -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    -
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    -
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    -
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    - -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    #define FCGI_stdout
    Definition: byte_manager.c:46
    -
    Byte8_t fetch_8bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 8-byte big endian Byte codes in file stream
    Definition: byte_manager.c:125
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    - - - - diff --git a/build/doc/html/cache__manager_8c.html b/build/doc/html/cache__manager_8c.html deleted file mode 100644 index 1606aaffb..000000000 --- a/build/doc/html/cache__manager_8c.html +++ /dev/null @@ -1,676 +0,0 @@ - - - - - - - -OpenJPEG: cache_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cache_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include "cache_manager.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    cachelist_param_tgene_cachelist (void)
     generate a cache list More...
     
    void delete_cachelist (cachelist_param_t **cachelist)
     delete cache list More...
     
    cache_param_tgene_cache (const char *targetname, int csn, char *tid, char *cid)
     generate a cache More...
     
    void delete_cache (cache_param_t **cache)
     delete a cache More...
     
    void insert_cache_into_list (cache_param_t *cache, cachelist_param_t *cachelist)
     insert a cache into list More...
     
    cache_param_tsearch_cache (const char targetname[], cachelist_param_t *cachelist)
     search a cache by target name More...
     
    cache_param_tsearch_cacheBycsn (int csn, cachelist_param_t *cachelist)
     search a cache by csn More...
     
    cache_param_tsearch_cacheBycid (const char cid[], cachelist_param_t *cachelist)
     search a cache by cid More...
     
    cache_param_tsearch_cacheBytid (const char tid[], cachelist_param_t *cachelist)
     search a cache by tid More...
     
    void add_cachecid (const char *cid, cache_param_t *cache)
     add cid into a cache More...
     
    void update_cachetid (const char *tid, cache_param_t *cache)
     update tid of a cache More...
     
    void remove_cidInCache (const char *cid, cache_param_t *cache)
     
    void remove_cachecid (const char *cid, cachelist_param_t *cachelist)
     remove cid in cache More...
     
    void print_cache (cache_param_t *cache)
     print cache parameters More...
     
    void print_allcache (cachelist_param_t *cachelist)
     print all cache parameters More...
     
    -

    Function Documentation

    - -

    ◆ add_cachecid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void add_cachecid (const char * cid,
    cache_param_tcache 
    )
    -
    - -

    add cid into a cache

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::cid, and cache_param::numOfcid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ delete_cache()

    - -
    -
    - - - - - - - - -
    void delete_cache (cache_param_t ** cache)
    -
    - -

    delete a cache

    -
    Parameters
    - - -
    [in]cacheaddress of the cache pointer
    -
    -
    - -

    References delete_metadatalist().

    - -

    Referenced by delete_cachelist().

    - -
    -
    - -

    ◆ delete_cachelist()

    - -
    -
    - - - - - - - - -
    void delete_cachelist (cachelist_param_t ** cachelist)
    -
    - -

    delete cache list

    -
    Parameters
    - - -
    [in,out]cachelistaddress of the cache list pointer
    -
    -
    - -

    References delete_cache(), and cache_param::next.

    - -

    Referenced by terminate_dec_server().

    - -
    -
    - -

    ◆ gene_cache()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cache_param_t* gene_cache (const char * targetname,
    int csn,
    char * tid,
    char * cid 
    )
    -
    - -

    generate a cache

    -
    Parameters
    - - - - - -
    [in]targetnametarget file name
    [in]csncodestream number
    [in]tidtarget identifier
    [in]cidchannel identifier
    -
    -
    -
    Returns
    pointer to the generated cache
    - -

    References cache_param::cid, cache_param::csn, cache_param::filename, gene_metadatalist(), cache_param::ihdrbox, cache_param::metadatalist, cache_param::next, cache_param::numOfcid, and cache_param::tid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ gene_cachelist()

    - -
    -
    - - - - - - - - -
    cachelist_param_t* gene_cachelist (void )
    -
    - -

    generate a cache list

    -
    Returns
    pointer to the generated cache list
    - -

    References cachelist_param::first, and cachelist_param::last.

    - -

    Referenced by init_dec_server().

    - -
    -
    - -

    ◆ insert_cache_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_cache_into_list (cache_param_tcache,
    cachelist_param_tcachelist 
    )
    -
    - -

    insert a cache into list

    -
    Parameters
    - - - -
    [in]cachecache pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References cachelist_param::first, cachelist_param::last, and cache_param::next.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ print_allcache()

    - -
    -
    - - - - - - - - -
    void print_allcache (cachelist_param_tcachelist)
    -
    - -

    print all cache parameters

    -
    Parameters
    - - -
    [in]cachelistcache list pointer
    -
    -
    - -

    References cachelist_param::first, cache_param::next, and print_cache().

    - -
    -
    - -

    ◆ print_cache()

    - -
    -
    - - - - - - - - -
    void print_cache (cache_param_tcache)
    -
    - -

    print cache parameters

    -
    Parameters
    - - -
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::cid, cache_param::csn, cache_param::filename, cache_param::numOfcid, and cache_param::tid.

    - -

    Referenced by print_allcache().

    - -
    -
    - -

    ◆ remove_cachecid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void remove_cachecid (const char * cid,
    cachelist_param_tcachelist 
    )
    -
    - -

    remove cid in cache

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachelistcachelist pointer
    -
    -
    - -

    References remove_cidInCache(), and search_cacheBycid().

    - -

    Referenced by handle_dstCIDreqMSG().

    - -
    -
    - -

    ◆ remove_cidInCache()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void remove_cidInCache (const char * cid,
    cache_param_tcache 
    )
    -
    - -

    References cache_param::cid, and cache_param::numOfcid.

    - -

    Referenced by remove_cachecid().

    - -
    -
    - -

    ◆ search_cache()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cache (const char targetname[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by target name

    -
    Parameters
    - - - -
    [in]targetnametarget filename
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::filename, cachelist_param::first, and cache_param::next.

    - -

    Referenced by handle_CIDreqMSG(), handle_JPIPstreamMSG(), and handle_TIDreqMSG().

    - -
    -
    - -

    ◆ search_cacheBycid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBycid (const char cid[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by cid

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::cid, cachelist_param::first, cache_param::next, and cache_param::numOfcid.

    - -

    Referenced by handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_XMLreqMSG(), and remove_cachecid().

    - -
    -
    - -

    ◆ search_cacheBycsn()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBycsn (int csn,
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by csn

    -
    Parameters
    - - - -
    [in]csncodestream number
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::csn, cachelist_param::first, and cache_param::next.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ search_cacheBytid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBytid (const char tid[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by tid

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cachelist_param::first, cache_param::next, and cache_param::tid.

    - -

    Referenced by handle_PNMreqMSG(), and handle_SIZreqMSG().

    - -
    -
    - -

    ◆ update_cachetid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void update_cachetid (const char * tid,
    cache_param_tcache 
    )
    -
    - -

    update tid of a cache

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::filename, and cache_param::tid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/cache__manager_8h.html b/build/doc/html/cache__manager_8h.html deleted file mode 100644 index db1f61aac..000000000 --- a/build/doc/html/cache__manager_8h.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - - - - -OpenJPEG: cache_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cache_manager.h File Reference
    -
    -
    -
    #include "metadata_manager.h"
    -#include "ihdrbox_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - -

    -Data Structures

    struct  cache_param
     cache parameters More...
     
    struct  cachelist_param
     
    - - - - - - -

    -Typedefs

    typedef struct cache_param cache_param_t
     cache parameters More...
     
    typedef struct cachelist_param cachelist_param_t
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    cachelist_param_tgene_cachelist (void)
     generate a cache list More...
     
    void delete_cachelist (cachelist_param_t **cachelist)
     delete cache list More...
     
    cache_param_tgene_cache (const char *targetname, int csn, char *tid, char *cid)
     generate a cache More...
     
    void delete_cache (cache_param_t **cache)
     delete a cache More...
     
    void insert_cache_into_list (cache_param_t *cache, cachelist_param_t *cachelist)
     insert a cache into list More...
     
    cache_param_tsearch_cache (const char targetname[], cachelist_param_t *cachelist)
     search a cache by target name More...
     
    cache_param_tsearch_cacheBycsn (int csn, cachelist_param_t *cachelist)
     search a cache by csn More...
     
    cache_param_tsearch_cacheBycid (const char cid[], cachelist_param_t *cachelist)
     search a cache by cid More...
     
    cache_param_tsearch_cacheBytid (const char tid[], cachelist_param_t *cachelist)
     search a cache by tid More...
     
    void add_cachecid (const char *cid, cache_param_t *cache)
     add cid into a cache More...
     
    void update_cachetid (const char *tid, cache_param_t *cache)
     update tid of a cache More...
     
    void remove_cachecid (const char *cid, cachelist_param_t *cachelist)
     remove cid in cache More...
     
    void print_cache (cache_param_t *cache)
     print cache parameters More...
     
    void print_allcache (cachelist_param_t *cachelist)
     print all cache parameters More...
     
    -

    Typedef Documentation

    - -

    ◆ cache_param_t

    - -
    -
    - - - - -
    typedef struct cache_param cache_param_t
    -
    - -

    cache parameters

    -

    cache list parameters

    - -
    -
    - -

    ◆ cachelist_param_t

    - -
    -
    - - - - -
    typedef struct cachelist_param cachelist_param_t
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ add_cachecid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void add_cachecid (const char * cid,
    cache_param_tcache 
    )
    -
    - -

    add cid into a cache

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::cid, and cache_param::numOfcid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ delete_cache()

    - -
    -
    - - - - - - - - -
    void delete_cache (cache_param_t ** cache)
    -
    - -

    delete a cache

    -
    Parameters
    - - -
    [in]cacheaddress of the cache pointer
    -
    -
    - -

    References delete_metadatalist().

    - -

    Referenced by delete_cachelist().

    - -
    -
    - -

    ◆ delete_cachelist()

    - -
    -
    - - - - - - - - -
    void delete_cachelist (cachelist_param_t ** cachelist)
    -
    - -

    delete cache list

    -
    Parameters
    - - -
    [in,out]cachelistaddress of the cache list pointer
    -
    -
    - -

    References delete_cache(), and cache_param::next.

    - -

    Referenced by terminate_dec_server().

    - -
    -
    - -

    ◆ gene_cache()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cache_param_t* gene_cache (const char * targetname,
    int csn,
    char * tid,
    char * cid 
    )
    -
    - -

    generate a cache

    -
    Parameters
    - - - - - -
    [in]targetnametarget file name
    [in]csncodestream number
    [in]tidtarget identifier
    [in]cidchannel identifier
    -
    -
    -
    Returns
    pointer to the generated cache
    - -

    References cache_param::cid, cache_param::csn, cache_param::filename, gene_metadatalist(), cache_param::ihdrbox, cache_param::metadatalist, cache_param::next, cache_param::numOfcid, and cache_param::tid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ gene_cachelist()

    - -
    -
    - - - - - - - - -
    cachelist_param_t* gene_cachelist (void )
    -
    - -

    generate a cache list

    -
    Returns
    pointer to the generated cache list
    - -

    References cachelist_param::first, and cachelist_param::last.

    - -

    Referenced by init_dec_server().

    - -
    -
    - -

    ◆ insert_cache_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_cache_into_list (cache_param_tcache,
    cachelist_param_tcachelist 
    )
    -
    - -

    insert a cache into list

    -
    Parameters
    - - - -
    [in]cachecache pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References cachelist_param::first, cachelist_param::last, and cache_param::next.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ print_allcache()

    - -
    -
    - - - - - - - - -
    void print_allcache (cachelist_param_tcachelist)
    -
    - -

    print all cache parameters

    -
    Parameters
    - - -
    [in]cachelistcache list pointer
    -
    -
    - -

    References cachelist_param::first, cache_param::next, and print_cache().

    - -
    -
    - -

    ◆ print_cache()

    - -
    -
    - - - - - - - - -
    void print_cache (cache_param_tcache)
    -
    - -

    print cache parameters

    -
    Parameters
    - - -
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::cid, cache_param::csn, cache_param::filename, cache_param::numOfcid, and cache_param::tid.

    - -

    Referenced by print_allcache().

    - -
    -
    - -

    ◆ remove_cachecid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void remove_cachecid (const char * cid,
    cachelist_param_tcachelist 
    )
    -
    - -

    remove cid in cache

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachelistcachelist pointer
    -
    -
    - -

    References remove_cidInCache(), and search_cacheBycid().

    - -

    Referenced by handle_dstCIDreqMSG().

    - -
    -
    - -

    ◆ search_cache()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cache (const char targetname[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by target name

    -
    Parameters
    - - - -
    [in]targetnametarget filename
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::filename, cachelist_param::first, and cache_param::next.

    - -

    Referenced by handle_CIDreqMSG(), handle_JPIPstreamMSG(), and handle_TIDreqMSG().

    - -
    -
    - -

    ◆ search_cacheBycid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBycid (const char cid[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by cid

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::cid, cachelist_param::first, cache_param::next, and cache_param::numOfcid.

    - -

    Referenced by handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_XMLreqMSG(), and remove_cachecid().

    - -
    -
    - -

    ◆ search_cacheBycsn()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBycsn (int csn,
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by csn

    -
    Parameters
    - - - -
    [in]csncodestream number
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cache_param::csn, cachelist_param::first, and cache_param::next.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ search_cacheBytid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cache_param_t* search_cacheBytid (const char tid[],
    cachelist_param_tcachelist 
    )
    -
    - -

    search a cache by tid

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]cachelistcache list pointer
    -
    -
    -
    Returns
    found cache pointer
    - -

    References cachelist_param::first, cache_param::next, and cache_param::tid.

    - -

    Referenced by handle_PNMreqMSG(), and handle_SIZreqMSG().

    - -
    -
    - -

    ◆ update_cachetid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void update_cachetid (const char * tid,
    cache_param_tcache 
    )
    -
    - -

    update tid of a cache

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]cachecache pointer
    -
    -
    - -

    References cache_param::filename, and cache_param::tid.

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/cache__manager_8h_source.html b/build/doc/html/cache__manager_8h_source.html deleted file mode 100644 index ef0fb5beb..000000000 --- a/build/doc/html/cache__manager_8h_source.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - -OpenJPEG: cache_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    cache_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef CACHE_MANAGER_H_
    -
    32 # define CACHE_MANAGER_H_
    -
    33 
    -
    34 #include "metadata_manager.h"
    -
    35 #include "ihdrbox_manager.h"
    -
    36 
    -
    38 typedef struct cache_param {
    -
    39  char *filename;
    -
    40  char *tid;
    -
    41  int csn;
    -
    42  char **cid;
    -
    43  int numOfcid;
    - - -
    46  struct cache_param *next;
    - -
    48 
    -
    50 typedef struct cachelist_param {
    - - - -
    54 
    -
    55 
    - -
    62 
    -
    68 void delete_cachelist(cachelist_param_t **cachelist);
    -
    69 
    -
    79 cache_param_t * gene_cache(const char *targetname, int csn, char *tid,
    -
    80  char *cid);
    -
    81 
    -
    87 void delete_cache(cache_param_t **cache);
    -
    88 
    - -
    96 
    -
    97 
    -
    105 cache_param_t * search_cache(const char targetname[],
    -
    106  cachelist_param_t *cachelist);
    -
    107 
    -
    108 
    -
    116 cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist);
    -
    117 
    -
    118 
    -
    126 cache_param_t * search_cacheBycid(const char cid[],
    -
    127  cachelist_param_t *cachelist);
    -
    128 
    -
    129 
    -
    137 cache_param_t * search_cacheBytid(const char tid[],
    -
    138  cachelist_param_t *cachelist);
    -
    139 
    -
    146 void add_cachecid(const char *cid, cache_param_t *cache);
    -
    147 
    -
    148 
    -
    155 void update_cachetid(const char *tid, cache_param_t *cache);
    -
    156 
    -
    157 
    -
    164 void remove_cachecid(const char *cid, cachelist_param_t *cachelist);
    -
    165 
    -
    166 
    -
    172 void print_cache(cache_param_t *cache);
    -
    173 
    -
    179 void print_allcache(cachelist_param_t *cachelist);
    -
    180 
    -
    181 #endif /* !CACHE_MANAGER_H_ */
    -
    -
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    -
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    -
    void print_cache(cache_param_t *cache)
    print cache parameters
    Definition: cache_manager.c:267
    -
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    -
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    -
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    - - -
    void delete_cache(cache_param_t **cache)
    delete a cache
    Definition: cache_manager.c:84
    -
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    -
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    -
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    -
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    -
    char * tid
    taregt identifier
    Definition: cache_manager.h:40
    -
    int numOfcid
    number of cids
    Definition: cache_manager.h:43
    -
    char ** cid
    dynamic array of channel identifiers
    Definition: cache_manager.h:42
    -
    void print_allcache(cachelist_param_t *cachelist)
    print all cache parameters
    Definition: cache_manager.c:283
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    cache parameters
    Definition: cache_manager.h:38
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    -
    cache_param_t * last
    last cache pointer of the list
    Definition: cache_manager.h:52
    -
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    -
    struct cachelist_param cachelist_param_t
    -
    cache_param_t * first
    first cache pointer of the list
    Definition: cache_manager.h:51
    -
    struct cache_param cache_param_t
    cache parameters
    -
    struct cache_param * next
    pointer to the next cache
    Definition: cache_manager.h:46
    -
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    -
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    -
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    - -
    void remove_cidInCache(const char *cid, cache_param_t *cache)
    Definition: cache_manager.c:233
    -
    char * filename
    file name
    Definition: cache_manager.h:39
    -
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    -
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    -
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    -
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    -
    void delete_cache(cache_param_t **cache)
    delete a cache
    Definition: cache_manager.c:84
    -
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    -
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    -
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    -
    void print_allcache(cachelist_param_t *cachelist)
    print all cache parameters
    Definition: cache_manager.c:283
    -
    Definition: cache_manager.h:50
    -
    ihdrbox_param_t * ihdrbox
    ihdrbox
    Definition: cache_manager.h:45
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    -
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    -
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    -
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: cache_manager.h:44
    -
    int csn
    codestream number
    Definition: cache_manager.h:41
    -
    void print_cache(cache_param_t *cache)
    print cache parameters
    Definition: cache_manager.c:267
    - - - - diff --git a/build/doc/html/cachemodel__manager_8c.html b/build/doc/html/cachemodel__manager_8c.html deleted file mode 100644 index 94890a3e4..000000000 --- a/build/doc/html/cachemodel__manager_8c.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -OpenJPEG: cachemodel_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cachemodel_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include "cachemodel_manager.h"
    -#include "faixbox_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    cachemodellist_param_tgene_cachemodellist (void)
     generate a cache model list More...
     
    cachemodel_param_tgene_cachemodel (cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
     generate a cache model under a list More...
     
    void print_cachemodel (cachemodel_param_t cachemodel)
     print cache model More...
     
    cachemodel_param_tsearch_cachemodel (target_param_t *target, cachemodellist_param_t *cachemodellist)
     search a cache model of a target More...
     
    void delete_cachemodellist (cachemodellist_param_t **cachemodellist)
     delete cachemodel list More...
     
    void delete_cachemodel (cachemodel_param_t **cachemodel)
     delete a cache model More...
     
    OPJ_BOOL is_allsent (cachemodel_param_t cachemodel)
     check if all data has been sent More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_cachemodel()

    - -
    -
    - - - - - - - - -
    void delete_cachemodel (cachemodel_param_t ** cachemodel)
    -
    - -

    delete a cache model

    -
    Parameters
    - - -
    [in]cachemodeladdress of the cachemodel pointer
    -
    -
    - -

    References logstream, opj_free(), and unrefer_target().

    - -

    Referenced by delete_cachemodellist(), and delete_msgqueue().

    - -
    -
    - -

    ◆ delete_cachemodellist()

    - -
    -
    - - - - - - - - -
    void delete_cachemodellist (cachemodellist_param_t ** cachemodellist)
    -
    - -

    delete cachemodel list

    -
    Parameters
    - - -
    [in,out]cachemodellistaddress of the cachemodel list pointer
    -
    -
    - -

    References delete_cachemodel(), cachemodel_param::next, and opj_free().

    - -

    Referenced by delete_session(), and delete_sessionlist().

    - -
    -
    - -

    ◆ gene_cachemodel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    cachemodel_param_t* gene_cachemodel (cachemodellist_param_tcachemodellist,
    target_param_ttarget,
    OPJ_BOOL reqJPP 
    )
    -
    - -

    generate a cache model under a list

    -
    Parameters
    - - - - -
    [in]cachemodellistcachemodel list to insert the generated cache model, NULL for stateless
    [in]targetpointer the reference target
    [in]reqJPPif JPP-stream is desired true, JPT-stream false
    -
    -
    -
    Returns
    pointer to the generated cache model
    - -

    References target_param::codeidx, SIZmarker_param::Csiz, cachemodellist_param::first, get_m(), get_nmax(), cachemodel_param::jppstream, target_param::jppstream, target_param::jptstream, cachemodellist_param::last, logstream, cachemodel_param::mhead_model, cachemodel_param::next, opj_calloc(), OPJ_FALSE, opj_malloc(), OPJ_TRUE, cachemodel_param::pp_model, index_param::precpacket, refer_target(), index_param::SIZ, cachemodel_param::target, cachemodel_param::th_model, index_param::tilepart, and cachemodel_param::tp_model.

    - -

    Referenced by gene_JPIPstream(), and open_channel().

    - -
    -
    - -

    ◆ gene_cachemodellist()

    - -
    -
    - - - - - - - - -
    cachemodellist_param_t* gene_cachemodellist (void )
    -
    - -

    generate a cache model list

    -
    Returns
    pointer to the generated cache model list
    - -

    References cachemodellist_param::first, cachemodellist_param::last, and opj_malloc().

    - -

    Referenced by gene_session().

    - -
    -
    - -

    ◆ is_allsent()

    - - - -

    ◆ print_cachemodel()

    - - - -

    ◆ search_cachemodel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cachemodel_param_t* search_cachemodel (target_param_ttarget,
    cachemodellist_param_tcachemodellist 
    )
    -
    - -

    search a cache model of a target

    -
    Parameters
    - - - -
    [in]targetreferring target
    [in]cachemodellistcache model list
    -
    -
    -
    Returns
    found cache model pointer
    - -

    References cachemodellist_param::first, cachemodel_param::next, and cachemodel_param::target.

    - -

    Referenced by open_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/cachemodel__manager_8h.html b/build/doc/html/cachemodel__manager_8h.html deleted file mode 100644 index b2a246f22..000000000 --- a/build/doc/html/cachemodel__manager_8h.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - -OpenJPEG: cachemodel_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cachemodel_manager.h File Reference
    -
    -
    -
    #include "target_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  cachemodel_param
     Cache model parameters. More...
     
    struct  cachemodellist_param
     Cache model list parameters. More...
     
    - - - - - - - -

    -Typedefs

    typedef struct cachemodel_param cachemodel_param_t
     Cache model parameters. More...
     
    typedef struct cachemodellist_param cachemodellist_param_t
     Cache model list parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    cachemodellist_param_tgene_cachemodellist (void)
     generate a cache model list More...
     
    cachemodel_param_tgene_cachemodel (cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
     generate a cache model under a list More...
     
    void print_cachemodel (cachemodel_param_t cachemodel)
     print cache model More...
     
    cachemodel_param_tsearch_cachemodel (target_param_t *target, cachemodellist_param_t *cachemodellist)
     search a cache model of a target More...
     
    OPJ_BOOL is_allsent (cachemodel_param_t cachemodel)
     check if all data has been sent More...
     
    void delete_cachemodel (cachemodel_param_t **cachemodel)
     delete a cache model More...
     
    void delete_cachemodellist (cachemodellist_param_t **cachemodellist)
     delete cachemodel list More...
     
    -

    Typedef Documentation

    - -

    ◆ cachemodel_param_t

    - -
    -
    - - - - -
    typedef struct cachemodel_param cachemodel_param_t
    -
    - -

    Cache model parameters.

    - -
    -
    - -

    ◆ cachemodellist_param_t

    - -
    -
    - - - - -
    typedef struct cachemodellist_param cachemodellist_param_t
    -
    - -

    Cache model list parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_cachemodel()

    - -
    -
    - - - - - - - - -
    void delete_cachemodel (cachemodel_param_t ** cachemodel)
    -
    - -

    delete a cache model

    -
    Parameters
    - - -
    [in]cachemodeladdress of the cachemodel pointer
    -
    -
    - -

    References logstream, opj_free(), and unrefer_target().

    - -

    Referenced by delete_cachemodellist(), and delete_msgqueue().

    - -
    -
    - -

    ◆ delete_cachemodellist()

    - -
    -
    - - - - - - - - -
    void delete_cachemodellist (cachemodellist_param_t ** cachemodellist)
    -
    - -

    delete cachemodel list

    -
    Parameters
    - - -
    [in,out]cachemodellistaddress of the cachemodel list pointer
    -
    -
    - -

    References delete_cachemodel(), cachemodel_param::next, and opj_free().

    - -

    Referenced by delete_session(), and delete_sessionlist().

    - -
    -
    - -

    ◆ gene_cachemodel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    cachemodel_param_t* gene_cachemodel (cachemodellist_param_tcachemodellist,
    target_param_ttarget,
    OPJ_BOOL reqJPP 
    )
    -
    - -

    generate a cache model under a list

    -
    Parameters
    - - - - -
    [in]cachemodellistcachemodel list to insert the generated cache model, NULL for stateless
    [in]targetpointer the reference target
    [in]reqJPPif JPP-stream is desired true, JPT-stream false
    -
    -
    -
    Returns
    pointer to the generated cache model
    - -

    References target_param::codeidx, SIZmarker_param::Csiz, cachemodellist_param::first, get_m(), get_nmax(), cachemodel_param::jppstream, target_param::jppstream, target_param::jptstream, cachemodellist_param::last, logstream, cachemodel_param::mhead_model, cachemodel_param::next, opj_calloc(), OPJ_FALSE, opj_malloc(), OPJ_TRUE, cachemodel_param::pp_model, index_param::precpacket, refer_target(), index_param::SIZ, cachemodel_param::target, cachemodel_param::th_model, index_param::tilepart, and cachemodel_param::tp_model.

    - -

    Referenced by gene_JPIPstream(), and open_channel().

    - -
    -
    - -

    ◆ gene_cachemodellist()

    - -
    -
    - - - - - - - - -
    cachemodellist_param_t* gene_cachemodellist (void )
    -
    - -

    generate a cache model list

    -
    Returns
    pointer to the generated cache model list
    - -

    References cachemodellist_param::first, cachemodellist_param::last, and opj_malloc().

    - -

    Referenced by gene_session().

    - -
    -
    - -

    ◆ is_allsent()

    - - - -

    ◆ print_cachemodel()

    - - - -

    ◆ search_cachemodel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    cachemodel_param_t* search_cachemodel (target_param_ttarget,
    cachemodellist_param_tcachemodellist 
    )
    -
    - -

    search a cache model of a target

    -
    Parameters
    - - - -
    [in]targetreferring target
    [in]cachemodellistcache model list
    -
    -
    -
    Returns
    found cache model pointer
    - -

    References cachemodellist_param::first, cachemodel_param::next, and cachemodel_param::target.

    - -

    Referenced by open_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/cachemodel__manager_8h_source.html b/build/doc/html/cachemodel__manager_8h_source.html deleted file mode 100644 index 67ec24ce6..000000000 --- a/build/doc/html/cachemodel__manager_8h_source.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -OpenJPEG: cachemodel_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    cachemodel_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef CACHEMODEL_MANAGER_H_
    -
    32 # define CACHEMODEL_MANAGER_H_
    -
    33 
    -
    34 #include "target_manager.h"
    -
    35 
    -
    37 typedef struct cachemodel_param {
    - - - - - - - - -
    46 
    -
    48 typedef struct cachemodellist_param {
    - - - -
    52 
    -
    53 
    - -
    60 
    - -
    70  target_param_t *target, OPJ_BOOL reqJPP);
    -
    71 
    -
    72 
    -
    78 void print_cachemodel(cachemodel_param_t cachemodel);
    -
    79 
    -
    80 
    - -
    89  cachemodellist_param_t *cachemodellist);
    -
    90 
    -
    91 
    - -
    99 
    -
    100 
    -
    106 void delete_cachemodel(cachemodel_param_t **cachemodel);
    -
    107 
    -
    113 void delete_cachemodellist(cachemodellist_param_t **cachemodellist);
    -
    114 
    -
    115 
    -
    116 #endif /* !CACHEMODEL_MANAGER_H_ */
    -
    -
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    -
    OPJ_BOOL ** pp_model
    dynamic array pointer of precint packet model
    Definition: cachemodel_manager.h:43
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    -
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    -
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    -
    OPJ_BOOL jppstream
    if this target can return JPP-stream
    Definition: target_manager.h:51
    -
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    -
    OPJ_BOOL jppstream
    return type, true: JPP-stream, false: JPT-stream
    Definition: cachemodel_manager.h:39
    -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    -
    OPJ_BOOL jptstream
    if this target can return JPP-stream
    Definition: target_manager.h:52
    - -
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    -
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    -
    struct cachemodel_param cachemodel_param_t
    Cache model parameters.
    -
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    -
    OPJ_BOOL * tp_model
    dynamic array pointer of tile part model, if sent, 1, else 0
    Definition: cachemodel_manager.h:41
    -
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    -
    OPJ_BOOL * th_model
    dynamic array pointer of tile header model
    Definition: cachemodel_manager.h:42
    -
    #define logstream
    Definition: cachemodel_manager.c:43
    -
    Cache model list parameters.
    Definition: cachemodel_manager.h:48
    -
    struct cachemodellist_param cachemodellist_param_t
    Cache model list parameters.
    -
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    -
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    -
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    -
    struct cachemodel_param * next
    pointer to the next cache model
    Definition: cachemodel_manager.h:44
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    -
    target parameters
    Definition: target_manager.h:40
    -
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    -
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    -
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    - -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    cachemodel_param_t * first
    first cache model pointer of the list
    Definition: cachemodel_manager.h:49
    - -
    cachemodel_param_t * last
    last cache model pointer of the list
    Definition: cachemodel_manager.h:50
    -
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    -
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    - -
    void print_cachemodel(cachemodel_param_t cachemodel)
    print cache model
    Definition: cachemodel_manager.c:120
    -
    void print_cachemodel(cachemodel_param_t cachemodel)
    print cache model
    Definition: cachemodel_manager.c:120
    -
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    - - - - diff --git a/build/doc/html/channel__manager_8c.html b/build/doc/html/channel__manager_8c.html deleted file mode 100644 index 645e9f122..000000000 --- a/build/doc/html/channel__manager_8c.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - - -OpenJPEG: channel_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    channel_manager.c File Reference
    -
    -
    -
    #include <stdlib.h>
    -#include <string.h>
    -#include <stdio.h>
    -#include "channel_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    channellist_param_tgene_channellist (void)
     generate a channel list More...
     
    channel_param_tgene_channel (query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
     generate a channel under the channel list More...
     
    void set_channel_variable_param (query_param_t query_param, channel_param_t *channel)
     set channel variable parameters More...
     
    void delete_channel (channel_param_t **channel, channellist_param_t *channellist)
     delete a channel More...
     
    void delete_channellist (channellist_param_t **channellist)
     delete channel list More...
     
    void print_allchannel (channellist_param_t *channellist)
     print all channel parameters More...
     
    channel_param_tsearch_channel (const char cid[], channellist_param_t *channellist)
     search a channel by channel ID More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_channel (channel_param_t ** channel,
    channellist_param_tchannellist 
    )
    -
    - -

    delete a channel

    -
    Parameters
    - - - -
    [in]channeladdress of the deleting channel pointer
    [in,out]channellistchannel list pointer
    -
    -
    - -

    References channellist_param::first, channellist_param::last, logstream, channel_param::next, and opj_free().

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ delete_channellist()

    - -
    -
    - - - - - - - - -
    void delete_channellist (channellist_param_t ** channellist)
    -
    - -

    delete channel list

    -
    Parameters
    - - -
    [in,out]channellistaddress of the channel list pointer
    -
    -
    - -

    References channel_param::cid, logstream, channel_param::next, and opj_free().

    - -

    Referenced by delete_session(), and delete_sessionlist().

    - -
    -
    - -

    ◆ gene_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    channel_param_t* gene_channel (query_param_t query_param,
    auxtrans_param_t auxtrans,
    cachemodel_param_tcachemodel,
    channellist_param_tchannellist 
    )
    -
    - -

    generate a channel under the channel list

    -
    Parameters
    - - - - - -
    [in]query_paramquery parameters
    [in]auxtransauxiliary transport
    [in]cachemodelreference cachemodel
    [in]channellistchannel list pointer
    -
    -
    -
    Returns
    pointer to the generated channel
    - -

    References channel_param::aux, channel_param::cachemodel, channel_param::cid, query_param::cnew, FCGI_stdout, channellist_param::first, channellist_param::last, MAX_LENOFCID, channel_param::next, opj_malloc(), set_channel_variable_param(), channel_param::start_tm, tcp, auxtrans_param::tcpauxport, udp, and auxtrans_param::udpauxport.

    - -

    Referenced by open_channel().

    - -
    -
    - -

    ◆ gene_channellist()

    - -
    -
    - - - - - - - - -
    channellist_param_t* gene_channellist (void )
    -
    - -

    generate a channel list

    -
    Returns
    pointer to the generated channel list
    - -

    References channellist_param::first, channellist_param::last, and opj_malloc().

    - -

    Referenced by gene_session().

    - -
    -
    - -

    ◆ print_allchannel()

    - -
    -
    - - - - - - - - -
    void print_allchannel (channellist_param_tchannellist)
    -
    - -

    print all channel parameters

    -
    Parameters
    - - -
    [in]channellistchannel list pointer
    -
    -
    - -

    References channel_param::cachemodel, channel_param::cid, channellist_param::first, logstream, channel_param::next, cachemodel_param::target, and target_param::targetname.

    - -

    Referenced by print_allsession().

    - -
    -
    - -

    ◆ search_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    channel_param_t* search_channel (const char cid[],
    channellist_param_tchannellist 
    )
    -
    - -

    search a channel by channel ID

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]channellistchannel list pointer
    -
    -
    -
    Returns
    found channel pointer
    - -

    References channel_param::cid, FCGI_stdout, channellist_param::first, and channel_param::next.

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ set_channel_variable_param()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void set_channel_variable_param (query_param_t query_param,
    channel_param_tchannel 
    )
    -
    - -

    set channel variable parameters

    -
    Parameters
    - - - -
    [in]query_paramquery parameters
    [in,out]channelpointer to the modifying channel
    -
    -
    - -

    Referenced by associate_channel(), and gene_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/channel__manager_8h.html b/build/doc/html/channel__manager_8h.html deleted file mode 100644 index 7ead1ca9e..000000000 --- a/build/doc/html/channel__manager_8h.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - -OpenJPEG: channel_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    channel_manager.h File Reference
    -
    -
    -
    #include <time.h>
    -#include "query_parser.h"
    -#include "cachemodel_manager.h"
    -#include "auxtrans_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  channel_param
     Channel parameters. More...
     
    struct  channellist_param
     Channel list parameters. More...
     
    - - - - -

    -Macros

    #define MAX_LENOFCID   30
     maximum length of channel identifier More...
     
    - - - - - - - -

    -Typedefs

    typedef struct channel_param channel_param_t
     Channel parameters. More...
     
    typedef struct channellist_param channellist_param_t
     Channel list parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    channellist_param_tgene_channellist (void)
     generate a channel list More...
     
    channel_param_tgene_channel (query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
     generate a channel under the channel list More...
     
    void set_channel_variable_param (query_param_t query_param, channel_param_t *channel)
     set channel variable parameters More...
     
    void delete_channel (channel_param_t **channel, channellist_param_t *channellist)
     delete a channel More...
     
    void delete_channellist (channellist_param_t **channellist)
     delete channel list More...
     
    void print_allchannel (channellist_param_t *channellist)
     print all channel parameters More...
     
    channel_param_tsearch_channel (const char cid[], channellist_param_t *channellist)
     search a channel by channel ID More...
     
    -

    Macro Definition Documentation

    - -

    ◆ MAX_LENOFCID

    - -
    -
    - - - - -
    #define MAX_LENOFCID   30
    -
    - -

    maximum length of channel identifier

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ channel_param_t

    - -
    -
    - - - - -
    typedef struct channel_param channel_param_t
    -
    - -

    Channel parameters.

    - -
    -
    - -

    ◆ channellist_param_t

    - -
    -
    - - - - -
    typedef struct channellist_param channellist_param_t
    -
    - -

    Channel list parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_channel (channel_param_t ** channel,
    channellist_param_tchannellist 
    )
    -
    - -

    delete a channel

    -
    Parameters
    - - - -
    [in]channeladdress of the deleting channel pointer
    [in,out]channellistchannel list pointer
    -
    -
    - -

    References channellist_param::first, channellist_param::last, logstream, channel_param::next, and opj_free().

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ delete_channellist()

    - -
    -
    - - - - - - - - -
    void delete_channellist (channellist_param_t ** channellist)
    -
    - -

    delete channel list

    -
    Parameters
    - - -
    [in,out]channellistaddress of the channel list pointer
    -
    -
    - -

    References channel_param::cid, logstream, channel_param::next, and opj_free().

    - -

    Referenced by delete_session(), and delete_sessionlist().

    - -
    -
    - -

    ◆ gene_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    channel_param_t* gene_channel (query_param_t query_param,
    auxtrans_param_t auxtrans,
    cachemodel_param_tcachemodel,
    channellist_param_tchannellist 
    )
    -
    - -

    generate a channel under the channel list

    -
    Parameters
    - - - - - -
    [in]query_paramquery parameters
    [in]auxtransauxiliary transport
    [in]cachemodelreference cachemodel
    [in]channellistchannel list pointer
    -
    -
    -
    Returns
    pointer to the generated channel
    - -

    References channel_param::aux, channel_param::cachemodel, channel_param::cid, query_param::cnew, FCGI_stdout, channellist_param::first, channellist_param::last, MAX_LENOFCID, channel_param::next, opj_malloc(), set_channel_variable_param(), channel_param::start_tm, tcp, auxtrans_param::tcpauxport, udp, and auxtrans_param::udpauxport.

    - -

    Referenced by open_channel().

    - -
    -
    - -

    ◆ gene_channellist()

    - -
    -
    - - - - - - - - -
    channellist_param_t* gene_channellist (void )
    -
    - -

    generate a channel list

    -
    Returns
    pointer to the generated channel list
    - -

    References channellist_param::first, channellist_param::last, and opj_malloc().

    - -

    Referenced by gene_session().

    - -
    -
    - -

    ◆ print_allchannel()

    - -
    -
    - - - - - - - - -
    void print_allchannel (channellist_param_tchannellist)
    -
    - -

    print all channel parameters

    -
    Parameters
    - - -
    [in]channellistchannel list pointer
    -
    -
    - -

    References channel_param::cachemodel, channel_param::cid, channellist_param::first, logstream, channel_param::next, cachemodel_param::target, and target_param::targetname.

    - -

    Referenced by print_allsession().

    - -
    -
    - -

    ◆ search_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    channel_param_t* search_channel (const char cid[],
    channellist_param_tchannellist 
    )
    -
    - -

    search a channel by channel ID

    -
    Parameters
    - - - -
    [in]cidchannel identifier
    [in]channellistchannel list pointer
    -
    -
    -
    Returns
    found channel pointer
    - -

    References channel_param::cid, FCGI_stdout, channellist_param::first, and channel_param::next.

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ set_channel_variable_param()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void set_channel_variable_param (query_param_t query_param,
    channel_param_tchannel 
    )
    -
    - -

    set channel variable parameters

    -
    Parameters
    - - - -
    [in]query_paramquery parameters
    [in,out]channelpointer to the modifying channel
    -
    -
    - -

    Referenced by associate_channel(), and gene_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/channel__manager_8h_source.html b/build/doc/html/channel__manager_8h_source.html deleted file mode 100644 index b6875d229..000000000 --- a/build/doc/html/channel__manager_8h_source.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -OpenJPEG: channel_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    channel_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef CHANNEL_MANAGER_H_
    -
    32 # define CHANNEL_MANAGER_H_
    -
    33 
    -
    34 #include <time.h>
    -
    35 #include "query_parser.h"
    -
    36 #include "cachemodel_manager.h"
    -
    37 #include "auxtrans_manager.h"
    -
    38 
    -
    40 #define MAX_LENOFCID 30
    -
    41 
    -
    43 typedef struct channel_param {
    - -
    45  char cid[MAX_LENOFCID];
    - -
    47  /* - a record of the client's capabilities and preferences to the extent that the server queues requests*/
    -
    48  time_t start_tm;
    -
    49  struct channel_param *next;
    - -
    51 
    -
    52 
    -
    54 typedef struct channellist_param {
    - - - -
    58 
    -
    59 
    - -
    66 
    -
    67 
    - -
    78  auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel,
    -
    79  channellist_param_t *channellist);
    -
    80 
    - -
    88  channel_param_t *channel);
    -
    89 
    -
    96 void delete_channel(channel_param_t **channel,
    -
    97  channellist_param_t *channellist);
    -
    98 
    -
    99 
    -
    105 void delete_channellist(channellist_param_t **channellist);
    -
    106 
    -
    107 
    -
    113 void print_allchannel(channellist_param_t *channellist);
    -
    114 
    -
    115 
    -
    123 channel_param_t * search_channel(const char cid[],
    -
    124  channellist_param_t *channellist);
    -
    125 #endif /* !CHANNEL_MANAGER_H_ */
    -
    -
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    -
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    -
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    -
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    -
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    - -
    cnew_transport_t aux
    auxiliary transport
    Definition: channel_manager.h:46
    -
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    -
    @ tcp
    Definition: query_parser.h:41
    -
    channel_param_t * first
    first channel pointer of the list
    Definition: channel_manager.h:55
    -
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    -
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    -
    #define MAX_LENOFCID
    maximum length of channel identifier
    Definition: channel_manager.h:40
    -
    channel_param_t * last
    last channel pointer of the list
    Definition: channel_manager.h:56
    -
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    -
    time_t start_tm
    starting time
    Definition: channel_manager.h:48
    -
    struct channellist_param channellist_param_t
    Channel list parameters.
    -
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    -
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    - -
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    @ udp
    Definition: query_parser.h:41
    -
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    -
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    -
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    int udpauxport
    udp port
    Definition: auxtrans_manager.h:40
    -
    struct channel_param * next
    pointer to the next channel
    Definition: channel_manager.h:49
    -
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    -
    cachemodel_param_t * cachemodel
    reference pointer to the cache model
    Definition: channel_manager.h:44
    -
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    -
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    -
    Channel list parameters.
    Definition: channel_manager.h:54
    -
    Query parameters.
    Definition: query_parser.h:47
    -
    char cid[MAX_LENOFCID]
    channel identifier
    Definition: channel_manager.h:45
    -
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    - -
    #define logstream
    Definition: channel_manager.c:45
    -
    Channel parameters.
    Definition: channel_manager.h:43
    -
    int tcpauxport
    tcp port
    Definition: auxtrans_manager.h:39
    -
    struct channel_param channel_param_t
    Channel parameters.
    -
    #define FCGI_stdout
    Definition: channel_manager.c:43
    - -
    enum cnew_transport cnew_transport_t
    cnew aux transport name
    - - - - diff --git a/build/doc/html/cidx__manager_8c.html b/build/doc/html/cidx__manager_8c.html deleted file mode 100644 index a2a741074..000000000 --- a/build/doc/html/cidx__manager_8c.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - -OpenJPEG: cidx_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cidx_manager.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - -

    -Functions

    void opj_write_cptr (int coff, int clen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_cidx (int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
     
    void opj_write_manf (int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_mainmhix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_check_EPHuse (int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Function Documentation

    - -

    ◆ opj_check_EPHuse()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_check_EPHuse (int coff,
    opj_marker_info_tmarkers,
    int marknum,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_cidx()

    - - - -

    ◆ opj_write_cptr()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_cptr (int coff,
    int clen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_mainmhix()

    - - - -

    ◆ opj_write_manf()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_manf (int second,
    int v,
    opj_jp2_box_tbox,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/cidx__manager_8h.html b/build/doc/html/cidx__manager_8h.html deleted file mode 100644 index d59f79349..000000000 --- a/build/doc/html/cidx__manager_8h.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -OpenJPEG: cidx_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cidx_manager.h File Reference
    -
    -
    - -

    Modification of jpip.h from 2KAN indexer. -More...

    -
    #include "openjpeg.h"
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Functions

    int opj_write_cidx (int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_check_EPHuse (int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.h from 2KAN indexer.

    -

    Function Documentation

    - -

    ◆ opj_check_EPHuse()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_check_EPHuse (int coff,
    opj_marker_info_tmarkers,
    int marknum,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_cidx()

    - - -
    - - - - diff --git a/build/doc/html/cidx__manager_8h_source.html b/build/doc/html/cidx__manager_8h_source.html deleted file mode 100644 index 6164318c5..000000000 --- a/build/doc/html/cidx__manager_8h_source.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -OpenJPEG: cidx_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    cidx_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id: cidx_manager.h 897 2011-08-28 21:43:57Z Kaori.Hagihara@gmail.com $
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2003-2004, Yannick Verschueren
    -
    7  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    37 #ifndef CIDX_MANAGER_H_
    -
    38 # define CIDX_MANAGER_H_
    -
    39 
    -
    40 #include "openjpeg.h"
    -
    41 
    -
    42 
    -
    43 /*
    -
    44  * Write Codestream index box (superbox)
    -
    45  *
    -
    46  * @param[in] offset offset of j2k codestream
    -
    47  * @param[in] cio file output handle
    -
    48  * @param[in] image image data
    -
    49  * @param[in] cstr_info codestream information
    -
    50  * @param[in] j2klen length of j2k codestream
    -
    51  * @return length of cidx box
    -
    52  */
    -
    53 int opj_write_cidx(int offset, opj_stream_private_t *cio,
    -
    54  opj_codestream_info_t cstr_info, int j2klen,
    -
    55  opj_event_mgr_t * p_manager);
    -
    56 
    -
    57 /*
    -
    58  * Check if EPH option is used
    -
    59  *
    -
    60  * @param[in] coff offset of j2k codestream
    -
    61  * @param[in] markers marker information
    -
    62  * @param[in] marknum number of markers
    -
    63  * @param[in] cio file output handle
    -
    64  * @return true if EPH is used
    -
    65  */
    -
    66 OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum,
    - -
    68  opj_event_mgr_t * p_manager);
    -
    69 
    -
    70 #endif /* !CIDX_MANAGER_H_ */
    -
    -
    OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:233
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    void opj_write_cptr(int coff, int clen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:128
    -
    #define JPIP_THIX
    Definition: indexbox_manager.h:49
    -
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    -
    #define JPIP_MHIX
    Definition: indexbox_manager.h:47
    -
    #define JPIP_PHIX
    Definition: indexbox_manager.h:51
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    int main_head_start
    main header position
    Definition: openjpeg.h:885
    -
    Message handler object used for.
    Definition: event.h:50
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_UINT32 type
    Definition: jp2.h:200
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    - -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:880
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    int opj_write_cidx(int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:50
    -
    int len
    length, marker val included
    Definition: openjpeg.h:782
    -
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    -
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    -
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    -
    #define JPIP_CPTR
    Definition: indexbox_manager.h:44
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    - -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    #define JPIP_PPIX
    Definition: indexbox_manager.h:50
    -
    #define JPIP_MANF
    Definition: indexbox_manager.h:45
    -
    int main_head_end
    main header position
    Definition: openjpeg.h:887
    -
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    -
    #define JPIP_TPIX
    Definition: indexbox_manager.h:48
    -
    OPJ_UINT32 length
    Definition: jp2.h:199
    -
    OPJ_BOOL opj_check_EPHuse(int coff, opj_marker_info_t *markers, int marknum, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:233
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    #define opj_read_bytes
    Definition: cio.h:65
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:192
    -
    #define JPIP_CIDX
    Definition: indexbox_manager.h:43
    -
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    int opj_write_cidx(int offset, opj_stream_private_t *cio, opj_codestream_info_t cstr_info, int j2klen, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:50
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    #define J2K_MS_COD
    COD marker value.
    Definition: j2k.h:75
    -
    Marker structure.
    Definition: openjpeg.h:776
    -
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    -
    int marknum
    number of markers
    Definition: openjpeg.h:878
    -
    int codestream_size
    codestream's size
    Definition: openjpeg.h:889
    - - - - diff --git a/build/doc/html/cio_8c.html b/build/doc/html/cio_8c.html deleted file mode 100644 index ffaec74cf..000000000 --- a/build/doc/html/cio_8c.html +++ /dev/null @@ -1,1671 +0,0 @@ - - - - - - - -OpenJPEG: cio.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cio.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void opj_write_bytes_BE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_bytes_LE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_bytes_BE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_bytes_LE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     
    void opj_write_double_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_double_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_double_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_float_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     
    void opj_write_float_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_float_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_float_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
     Creates an abstract stream. More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL l_is_input)
     Creates an abstract stream. More...
     
    void OPJ_CALLCONV opj_stream_destroy (opj_stream_t *p_stream)
     Destroys a stream created by opj_create_stream. More...
     
    void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_t *p_stream, opj_stream_read_fn p_function)
     Sets the given function to be used as a read function. More...
     
    void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_t *p_stream, opj_stream_seek_fn p_function)
     Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior. More...
     
    void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_t *p_stream, opj_stream_write_fn p_function)
     Sets the given function to be used as a write function. More...
     
    void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_t *p_stream, opj_stream_skip_fn p_function)
     Sets the given function to be used as a skip function. More...
     
    void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
     Sets the given data to be used as a user data for the stream. More...
     
    void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_t *p_stream, OPJ_UINT64 data_length)
     Sets the length of the user data for the stream. More...
     
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
     Reads some bytes from the stream. More...
     
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
     Writes some bytes to the stream. More...
     
    OPJ_BOOL opj_stream_flush (opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
     Writes the content of the stream buffer to the stream. More...
     
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_tell (const opj_stream_private_t *p_stream)
     Tells the byte offset on the stream (similar to ftell). More...
     
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t *p_stream)
     Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). More...
     
    OPJ_OFF_T opj_stream_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Seeks a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t *p_stream)
     Tells if the given stream is seekable. More...
     
    OPJ_SIZE_T opj_stream_default_read (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_SIZE_T opj_stream_default_write (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    -

    Function Documentation

    - -

    ◆ opj_read_bytes_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_read_bytes_BE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    -
    -
    -
    Returns
    the number of bytes read or -1 if an error occurred.
    - -
    -
    - -

    ◆ opj_read_bytes_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_read_bytes_LE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    -
    -
    -
    Returns
    the number of bytes read or -1 if an error occurred.
    - -
    -
    - -

    ◆ opj_read_double_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_double_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_double_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_double_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_float_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_float_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_float_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_float_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_stream_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_stream_t* OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_input 
    )
    -
    -
    - -

    ◆ opj_stream_default_create()

    - -
    -
    - - - - - - - - -
    opj_stream_t* OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
    -
    - -

    Creates an abstract stream.

    -

    This function does nothing except allocating memory and initializing the abstract stream.

    -
    Parameters
    - - -
    p_is_inputif set to true then the stream will be an input stream, an output stream else.
    -
    -
    -
    Returns
    a stream object.
    - -

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_default_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_default_read (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_default_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED, and OPJ_FALSE.

    - -

    Referenced by opj_stream_create(), and opj_stream_has_seek().

    - -
    -
    - -

    ◆ opj_stream_default_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_default_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_default_write (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_destroy()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_stream_destroy (opj_stream_tp_stream)
    -
    - -

    Destroys a stream created by opj_create_stream.

    -

    This function does NOT close the abstract stream. If needed the user must close its own implementation of the stream.

    -
    Parameters
    - - -
    p_streamthe stream to destroy.
    -
    -
    - -

    References opj_stream_private::m_free_user_data_fn, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, and opj_free().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_stream_flush()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_flush (opj_stream_private_tp_stream,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Writes the content of the stream buffer to the stream.

    -
    Parameters
    - - - -
    p_streamthe stream to write data to.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    true if the data could be flushed, false else.
    - -

    References EVT_INFO, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_write_fn, opj_event_msg(), OPJ_FALSE, OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    - -

    Referenced by opj_j2k_write_eoc(), opj_stream_write_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    - -
    -
    - -

    ◆ opj_stream_get_number_byte_left()

    - -
    -
    - - - - - - - - -
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_tp_stream)
    -
    - -

    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).

    -
    Parameters
    - - -
    p_streamthe stream to get the information from.
    -
    -
    -
    Returns
    Number of bytes left before the end of the stream.
    - -

    References opj_stream_private::m_byte_offset, and opj_stream_private::m_user_data_length.

    - -

    Referenced by opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_stream_has_seek()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_tp_stream)
    -
    - -

    Tells if the given stream is seekable.

    - -

    References opj_stream_private::m_seek_fn, and opj_stream_default_seek().

    - -

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_jp2_default_validation(), and opj_jp2_write_jp2c().

    - -
    -
    - -

    ◆ opj_stream_read_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_tp_stream,
    OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Reads some bytes from the stream.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    p_bufferpointer to the data buffer that will receive the data.
    p_sizenumber of bytes to read.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes read, or -1 if an error occurred or if the stream is at the end.
    - -

    References EVT_INFO, opj_stream_private::m_buffer_size, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_read_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_event_msg(), and OPJ_STREAM_STATUS_END.

    - -

    Referenced by opj_check_EPHuse(), opj_j2k_decode_tile(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_header_procedure(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_stream_read_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    OPJ_TRUE if success, or OPJ_FALSE if an error occurred.
    - -

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_ARG_NOT_USED, OPJ_FALSE, OPJ_STREAM_STATUS_END, and OPJ_TRUE.

    - -

    Referenced by opj_j2k_decode_one_tile(), opj_stream_create(), and opj_stream_read_skip().

    - -
    -
    - -

    ◆ opj_stream_read_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_user_data_length, opj_event_msg(), opj_stream_read_seek(), and OPJ_STREAM_STATUS_END.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Seeks a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    true if the stream is seekable.
    - -

    References opj_stream_private::m_opj_seek.

    - -

    Referenced by opj_check_EPHuse(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_write_updated_tlm(), opj_jp2_write_jp2c(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ opj_stream_set_read_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_tp_stream,
    opj_stream_read_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a read function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a read function.
    -
    -
    - -

    References opj_stream_private::m_read_fn, opj_stream_private::m_status, and OPJ_STREAM_STATUS_INPUT.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_seek_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_tp_stream,
    opj_stream_seek_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    -
    -
    - -

    References opj_stream_private::m_seek_fn.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_skip_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_tp_stream,
    opj_stream_skip_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a skip function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    -
    -
    - -

    References opj_stream_private::m_skip_fn.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_user_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_tp_stream,
    void * p_data,
    opj_stream_free_user_data_fn p_function 
    )
    -
    - -

    Sets the given data to be used as a user data for the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to modify
    p_datathe data to set.
    p_functionthe function to free p_data when opj_stream_destroy() is called.
    -
    -
    - -

    References opj_stream_private::m_free_user_data_fn, and opj_stream_private::m_user_data.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_user_data_length()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_tp_stream,
    OPJ_UINT64 data_length 
    )
    -
    - -

    Sets the length of the user data for the stream.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    data_lengthlength of the user_data.
    -
    -
    - -

    References opj_stream_private::m_user_data_length.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_write_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_tp_stream,
    opj_stream_write_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a write function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a write function.
    -
    -
    - -

    References opj_stream_private::m_status, opj_stream_private::m_write_fn, and OPJ_STREAM_STATUS_OUTPUT.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References opj_stream_private::m_opj_skip.

    - -

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_tile_header(), opj_jp2_read_header_procedure(), opj_jp2_skip_jp2c(), opj_jpip_skip_iptr(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ opj_stream_tell()

    - - - -

    ◆ opj_stream_write_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_tp_stream,
    const OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    -
    - -

    ◆ opj_stream_write_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_FALSE, opj_stream_flush(), OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_write_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_user_data, opj_event_msg(), opj_stream_flush(), and OPJ_STREAM_STATUS_ERROR.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_write_bytes_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_bytes_BE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    -
    -
    - -
    -
    - -

    ◆ opj_write_bytes_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_bytes_LE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    -
    -
    -
    Returns
    the number of bytes written or -1 if an error occurred
    - -
    -
    - -

    ◆ opj_write_double_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_double_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    -
    - -
    -
    - -

    ◆ opj_write_double_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_double_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    -
    -
    - -
    -
    - -

    ◆ opj_write_float_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_float_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    -
    - -
    -
    - -

    ◆ opj_write_float_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_float_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    -
    -
    - -
    -
    -
    - - - - diff --git a/build/doc/html/cio_8h.html b/build/doc/html/cio_8h.html deleted file mode 100644 index 103c5b69d..000000000 --- a/build/doc/html/cio_8h.html +++ /dev/null @@ -1,1491 +0,0 @@ - - - - - - - -OpenJPEG: cio.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    cio.h File Reference
    -
    -
    - -

    Implementation of a byte input-output process (CIO) -More...

    -
    #include "opj_config_private.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_stream_private
     Byte input-output stream. More...
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define opj_write_bytes   opj_write_bytes_LE
     
    #define opj_read_bytes   opj_read_bytes_LE
     
    #define opj_write_double   opj_write_double_LE
     
    #define opj_read_double   opj_read_double_LE
     
    #define opj_write_float   opj_write_float_LE
     
    #define opj_read_float   opj_read_float_LE
     
    #define OPJ_STREAM_STATUS_OUTPUT   0x1U
     
    #define OPJ_STREAM_STATUS_INPUT   0x2U
     
    #define OPJ_STREAM_STATUS_END   0x4U
     
    #define OPJ_STREAM_STATUS_ERROR   0x8U
     
    - - - - -

    -Typedefs

    typedef struct opj_stream_private opj_stream_private_t
     Byte input-output stream. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions (see also openjpeg.h)
    void opj_write_bytes_BE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_bytes_BE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_bytes_LE (OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_bytes_LE (const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_double_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
     
    void opj_read_double_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_double_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_read_float_LE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_read_float_BE (const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
     Reads some bytes from the given data buffer, this function is used in Big Endian cpus. More...
     
    void opj_write_float_LE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     Write some bytes to the given data buffer, this function is used in Little Endian cpus. More...
     
    void opj_write_float_BE (OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
     
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
     Reads some bytes from the stream. More...
     
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
     Writes some bytes to the stream. More...
     
    OPJ_BOOL opj_stream_flush (opj_stream_private_t *p_stream, struct opj_event_mgr *p_event_mgr)
     Writes the content of the stream buffer to the stream. More...
     
    OPJ_OFF_T opj_stream_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_tell (const opj_stream_private_t *p_stream)
     Tells the byte offset on the stream (similar to ftell). More...
     
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_t *p_stream)
     Get the number of bytes left before the end of the stream (similar to cio_numbytesleft). More...
     
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Skips a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_seek (opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
     Seeks a number of bytes from the stream. More...
     
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_t *p_stream)
     Tells if the given stream is seekable. More...
     
    OPJ_SIZE_T opj_stream_default_read (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_SIZE_T opj_stream_default_write (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     FIXME DOC. More...
     
    -

    Detailed Description

    -

    Implementation of a byte input-output process (CIO)

    -

    The functions in CIO.C have for goal to realize a byte input / output process.

    -

    Macro Definition Documentation

    - -

    ◆ opj_read_bytes

    - -
    -
    - - - - -
    #define opj_read_bytes   opj_read_bytes_LE
    -
    - -
    -
    - -

    ◆ opj_read_double

    - -
    -
    - - - - -
    #define opj_read_double   opj_read_double_LE
    -
    - -
    -
    - -

    ◆ opj_read_float

    - -
    -
    - - - - -
    #define opj_read_float   opj_read_float_LE
    -
    - -
    -
    - -

    ◆ OPJ_STREAM_STATUS_END

    - -
    -
    - - - - -
    #define OPJ_STREAM_STATUS_END   0x4U
    -
    - -
    -
    - -

    ◆ OPJ_STREAM_STATUS_ERROR

    - -
    -
    - - - - -
    #define OPJ_STREAM_STATUS_ERROR   0x8U
    -
    - -
    -
    - -

    ◆ OPJ_STREAM_STATUS_INPUT

    - -
    -
    - - - - -
    #define OPJ_STREAM_STATUS_INPUT   0x2U
    -
    - -
    -
    - -

    ◆ OPJ_STREAM_STATUS_OUTPUT

    - -
    -
    - - - - -
    #define OPJ_STREAM_STATUS_OUTPUT   0x1U
    -
    - -
    -
    - -

    ◆ opj_write_bytes

    - -
    -
    - - - - -
    #define opj_write_bytes   opj_write_bytes_LE
    -
    - -
    -
    - -

    ◆ opj_write_double

    - -
    -
    - - - - -
    #define opj_write_double   opj_write_double_LE
    -
    - -
    -
    - -

    ◆ opj_write_float

    - -
    -
    - - - - -
    #define opj_write_float   opj_write_float_LE
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ opj_stream_private_t

    - -
    -
    - - - - -
    typedef struct opj_stream_private opj_stream_private_t
    -
    - -

    Byte input-output stream.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_read_bytes_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_read_bytes_BE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    -
    -
    -
    Returns
    the number of bytes read or -1 if an error occurred.
    - -
    -
    - -

    ◆ opj_read_bytes_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_read_bytes_LE (const OPJ_BYTEp_buffer,
    OPJ_UINT32p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    p_nb_bytesthe nb bytes to read.
    -
    -
    -
    Returns
    the number of bytes read or -1 if an error occurred.
    - -
    -
    - -

    ◆ opj_read_double_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_double_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_double_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_double_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT64p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_float_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_float_BE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_read_float_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_read_float_LE (const OPJ_BYTEp_buffer,
    OPJ_FLOAT32p_value 
    )
    -
    - -

    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to read data from.
    p_valuepointer to the value that will store the data.
    -
    -
    - -
    -
    - -

    ◆ opj_stream_default_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_default_read (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_default_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_default_seek (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED, and OPJ_FALSE.

    - -

    Referenced by opj_stream_create(), and opj_stream_has_seek().

    - -
    -
    - -

    ◆ opj_stream_default_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_default_skip (OPJ_OFF_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_default_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_default_write (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    void * p_user_data 
    )
    -
    - -

    FIXME DOC.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_flush()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_flush (opj_stream_private_tp_stream,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Writes the content of the stream buffer to the stream.

    -
    Parameters
    - - - -
    p_streamthe stream to write data to.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    true if the data could be flushed, false else.
    - -

    References EVT_INFO, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_write_fn, opj_event_msg(), OPJ_FALSE, OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    - -

    Referenced by opj_j2k_write_eoc(), opj_stream_write_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    - -
    -
    - -

    ◆ opj_stream_get_number_byte_left()

    - -
    -
    - - - - - - - - -
    OPJ_OFF_T opj_stream_get_number_byte_left (const opj_stream_private_tp_stream)
    -
    - -

    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).

    -
    Parameters
    - - -
    p_streamthe stream to get the information from.
    -
    -
    -
    Returns
    Number of bytes left before the end of the stream.
    - -

    References opj_stream_private::m_byte_offset, and opj_stream_private::m_user_data_length.

    - -

    Referenced by opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_stream_has_seek()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_stream_has_seek (const opj_stream_private_tp_stream)
    -
    - -

    Tells if the given stream is seekable.

    - -

    References opj_stream_private::m_seek_fn, and opj_stream_default_seek().

    - -

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_jp2_default_validation(), and opj_jp2_write_jp2c().

    - -
    -
    - -

    ◆ opj_stream_read_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_read_data (opj_stream_private_tp_stream,
    OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Reads some bytes from the stream.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    p_bufferpointer to the data buffer that will receive the data.
    p_sizenumber of bytes to read.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes read, or -1 if an error occurred or if the stream is at the end.
    - -

    References EVT_INFO, opj_stream_private::m_buffer_size, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_read_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_event_msg(), and OPJ_STREAM_STATUS_END.

    - -

    Referenced by opj_check_EPHuse(), opj_j2k_decode_tile(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_header_procedure(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_jp2_read_boxhdr(), and opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_stream_read_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_read_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    OPJ_TRUE if success, or OPJ_FALSE if an error occurred.
    - -

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_ARG_NOT_USED, OPJ_FALSE, OPJ_STREAM_STATUS_END, and OPJ_TRUE.

    - -

    Referenced by opj_j2k_decode_one_tile(), opj_stream_create(), and opj_stream_read_skip().

    - -
    -
    - -

    ◆ opj_stream_read_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_read_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, opj_stream_private::m_user_data_length, opj_event_msg(), opj_stream_read_seek(), and OPJ_STREAM_STATUS_END.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Seeks a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    true if the stream is seekable.
    - -

    References opj_stream_private::m_opj_seek.

    - -

    Referenced by opj_check_EPHuse(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_write_updated_tlm(), opj_jp2_write_jp2c(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ opj_stream_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References opj_stream_private::m_opj_skip.

    - -

    Referenced by opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_tile_header(), opj_jp2_read_header_procedure(), opj_jp2_skip_jp2c(), opj_jpip_skip_iptr(), opj_write_cidx(), opj_write_cptr(), opj_write_mainmhix(), opj_write_manf(), opj_write_phix(), opj_write_phixfaix(), opj_write_ppix(), opj_write_ppixfaix(), opj_write_thix(), opj_write_tilemhix(), opj_write_tpix(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ opj_stream_tell()

    - - - -

    ◆ opj_stream_write_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T opj_stream_write_data (opj_stream_private_tp_stream,
    const OPJ_BYTEp_buffer,
    OPJ_SIZE_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    -
    - -

    ◆ opj_stream_write_seek()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_stream_write_seek (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_current_data, opj_stream_private::m_seek_fn, opj_stream_private::m_status, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, OPJ_FALSE, opj_stream_flush(), OPJ_STREAM_STATUS_ERROR, and OPJ_TRUE.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_write_skip()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_OFF_T opj_stream_write_skip (opj_stream_private_tp_stream,
    OPJ_OFF_T p_size,
    struct opj_event_mgrp_event_mgr 
    )
    -
    - -

    Skips a number of bytes from the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to skip data from.
    p_sizethe number of bytes to skip.
    p_event_mgrthe user event manager to be notified of special events.
    -
    -
    -
    Returns
    the number of bytes skipped, or -1 if an error occurred.
    - -

    References EVT_INFO, opj_stream_private::m_byte_offset, opj_stream_private::m_bytes_in_buffer, opj_stream_private::m_skip_fn, opj_stream_private::m_status, opj_stream_private::m_user_data, opj_event_msg(), opj_stream_flush(), and OPJ_STREAM_STATUS_ERROR.

    - -

    Referenced by opj_stream_create().

    - -
    -
    - -

    ◆ opj_write_bytes_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_bytes_BE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Big Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    -
    -
    - -
    -
    - -

    ◆ opj_write_bytes_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_bytes_LE (OPJ_BYTEp_buffer,
    OPJ_UINT32 p_value,
    OPJ_UINT32 p_nb_bytes 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    p_nb_bytesthe number of bytes to write
    -
    -
    -
    Returns
    the number of bytes written or -1 if an error occurred
    - -
    -
    - -

    ◆ opj_write_double_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_double_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    -
    - -
    -
    - -

    ◆ opj_write_double_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_double_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT64 p_value 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    -
    -
    - -
    -
    - -

    ◆ opj_write_float_BE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_float_BE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    -
    - -
    -
    - -

    ◆ opj_write_float_LE()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_write_float_LE (OPJ_BYTEp_buffer,
    OPJ_FLOAT32 p_value 
    )
    -
    - -

    Write some bytes to the given data buffer, this function is used in Little Endian cpus.

    -
    Parameters
    - - - -
    p_bufferpointer the data buffer to write data to.
    p_valuethe value to write
    -
    -
    - -
    -
    -
    - - - - diff --git a/build/doc/html/cio_8h_source.html b/build/doc/html/cio_8h_source.html deleted file mode 100644 index b18b960bb..000000000 --- a/build/doc/html/cio_8h_source.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - -OpenJPEG: cio.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    cio.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    16  * All rights reserved.
    -
    17  *
    -
    18  * Redistribution and use in source and binary forms, with or without
    -
    19  * modification, are permitted provided that the following conditions
    -
    20  * are met:
    -
    21  * 1. Redistributions of source code must retain the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer.
    -
    23  * 2. Redistributions in binary form must reproduce the above copyright
    -
    24  * notice, this list of conditions and the following disclaimer in the
    -
    25  * documentation and/or other materials provided with the distribution.
    -
    26  *
    -
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    37  * POSSIBILITY OF SUCH DAMAGE.
    -
    38  */
    -
    39 
    -
    40 #ifndef OPJ_CIO_H
    -
    41 #define OPJ_CIO_H
    -
    42 
    -
    51 
    -
    52 #include "opj_config_private.h"
    -
    53 
    -
    54 /* ----------------------------------------------------------------------- */
    -
    55 
    -
    56 #if defined(OPJ_BIG_ENDIAN)
    -
    57 #define opj_write_bytes opj_write_bytes_BE
    -
    58 #define opj_read_bytes opj_read_bytes_BE
    -
    59 #define opj_write_double opj_write_double_BE
    -
    60 #define opj_read_double opj_read_double_BE
    -
    61 #define opj_write_float opj_write_float_BE
    -
    62 #define opj_read_float opj_read_float_BE
    -
    63 #else
    -
    64 #define opj_write_bytes opj_write_bytes_LE
    -
    65 #define opj_read_bytes opj_read_bytes_LE
    -
    66 #define opj_write_double opj_write_double_LE
    -
    67 #define opj_read_double opj_read_double_LE
    -
    68 #define opj_write_float opj_write_float_LE
    -
    69 #define opj_read_float opj_read_float_LE
    -
    70 #endif
    -
    71 
    -
    72 
    -
    73 #define OPJ_STREAM_STATUS_OUTPUT 0x1U
    -
    74 #define OPJ_STREAM_STATUS_INPUT 0x2U
    -
    75 #define OPJ_STREAM_STATUS_END 0x4U
    -
    76 #define OPJ_STREAM_STATUS_ERROR 0x8U
    -
    77 
    -
    81 typedef struct opj_stream_private {
    -
    85  void * m_user_data;
    -
    86 
    - -
    93 
    - -
    98 
    - -
    103 
    - -
    108 
    - -
    114 
    - -
    119 
    - -
    125 
    - -
    130 
    - -
    135  struct opj_event_mgr *);
    -
    136 
    - -
    141  struct opj_event_mgr *);
    -
    142 
    - -
    147 
    - -
    152 
    - -
    157 
    - -
    163 
    -
    164 }
    - -
    166 
    -
    169 /* ----------------------------------------------------------------------- */
    -
    176 void opj_write_bytes_BE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
    -
    177  OPJ_UINT32 p_nb_bytes);
    -
    178 
    -
    186 void opj_read_bytes_BE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
    -
    187  OPJ_UINT32 p_nb_bytes);
    -
    188 
    -
    196 void opj_write_bytes_LE(OPJ_BYTE * p_buffer, OPJ_UINT32 p_value,
    -
    197  OPJ_UINT32 p_nb_bytes);
    -
    198 
    -
    206 void opj_read_bytes_LE(const OPJ_BYTE * p_buffer, OPJ_UINT32 * p_value,
    -
    207  OPJ_UINT32 p_nb_bytes);
    -
    208 
    -
    209 
    -
    215 void opj_write_double_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
    -
    216 
    -
    217 /***
    -
    218  * Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    -
    219  * @param p_buffer pointer the data buffer to write data to.
    -
    220  * @param p_value the value to write
    -
    221  */
    -
    222 void opj_write_double_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT64 p_value);
    -
    223 
    -
    229 void opj_read_double_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
    -
    230 
    -
    236 void opj_read_double_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT64 * p_value);
    -
    237 
    -
    243 void opj_read_float_LE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
    -
    244 
    -
    250 void opj_read_float_BE(const OPJ_BYTE * p_buffer, OPJ_FLOAT32 * p_value);
    -
    251 
    -
    257 void opj_write_float_LE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
    -
    258 
    -
    259 /***
    -
    260  * Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    -
    261  * @param p_buffer pointer the data buffer to write data to.
    -
    262  * @param p_value the value to write
    -
    263  */
    -
    264 void opj_write_float_BE(OPJ_BYTE * p_buffer, OPJ_FLOAT32 p_value);
    -
    265 
    - -
    275  OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr * p_event_mgr);
    -
    276 
    - -
    286  const OPJ_BYTE * p_buffer, OPJ_SIZE_T p_size,
    -
    287  struct opj_event_mgr * p_event_mgr);
    -
    288 
    - -
    296  struct opj_event_mgr * p_event_mgr);
    -
    297 
    - -
    306  struct opj_event_mgr * p_event_mgr);
    -
    307 
    - -
    316 
    -
    317 
    - -
    326  p_stream);
    -
    327 
    - -
    336  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    -
    337 
    - -
    346  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    -
    347 
    - -
    356  struct opj_event_mgr * p_event_mgr);
    -
    357 
    - -
    366  OPJ_OFF_T p_size, struct opj_event_mgr * p_event_mgr);
    -
    367 
    - -
    376  struct opj_event_mgr * p_event_mgr);
    -
    377 
    - -
    382 
    -
    386 OPJ_SIZE_T opj_stream_default_read(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    -
    387  void * p_user_data);
    -
    388 
    -
    392 OPJ_SIZE_T opj_stream_default_write(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    -
    393  void * p_user_data);
    -
    394 
    -
    398 OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void * p_user_data);
    -
    399 
    -
    403 OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void * p_user_data);
    -
    404 
    -
    405 /* ----------------------------------------------------------------------- */
    -
    409 
    -
    410 
    -
    411 #endif /* OPJ_CIO_H */
    -
    412 
    -
    -
    OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:538
    -
    opj_stream_skip_fn m_skip_fn
    Pointer to actual skip function (NULL at the initialization of the cio.
    Definition: cio.h:113
    -
    OPJ_SIZE_T(* opj_stream_read_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:631
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:671
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:678
    -
    void opj_write_float_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Definition: cio.c:127
    -
    struct opj_stream_private opj_stream_private_t
    Byte input-output stream.
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:649
    -
    OPJ_OFF_T(* m_opj_skip)(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    FIXME DOC.
    Definition: cio.h:134
    -
    void * m_user_data
    User data, be it files, ...
    Definition: cio.h:85
    -
    void opj_write_bytes_LE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:58
    -
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    -
    OPJ_BOOL opj_stream_default_seek(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:678
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    OPJ_OFF_T m_byte_offset
    The number of bytes read/written from the beginning of the stream.
    Definition: cio.h:151
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, struct opj_event_mgr *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void(* opj_stream_free_user_data_fn)(void *p_user_data)
    Definition: openjpeg.h:655
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    OPJ_BOOL(* m_opj_seek)(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    FIXME DOC.
    Definition: cio.h:140
    -
    Message handler object used for.
    Definition: event.h:50
    -
    void * opj_stream_t
    Definition: openjpeg.h:660
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    void opj_read_double_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:112
    -
    void opj_write_bytes_BE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:47
    -
    OPJ_UINT64 m_user_data_length
    User data length.
    Definition: cio.h:97
    -
    OPJ_BYTE * m_stored_data
    Actual data stored into the stream if readed from.
    Definition: cio.h:124
    -
    #define OPJ_STREAM_STATUS_INPUT
    Definition: cio.h:74
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    OPJ_SIZE_T opj_stream_default_write(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:662
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    OPJ_SIZE_T opj_stream_default_write(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:662
    -
    void opj_read_double_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:118
    -
    OPJ_BYTE * m_current_data
    Pointer to the current read data.
    Definition: cio.h:129
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void opj_write_bytes_BE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:47
    -
    void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    -
    void opj_read_bytes_LE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:82
    - -
    void opj_write_double_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Definition: cio.c:96
    -
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    -
    #define OPJ_STREAM_STATUS_OUTPUT
    Definition: cio.h:73
    -
    opj_stream_read_fn m_read_fn
    Pointer to actual read function (NULL at the initialization of the cio.
    Definition: cio.h:102
    -
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    -
    OPJ_BOOL opj_stream_write_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:620
    -
    OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:463
    -
    void opj_read_double_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:118
    -
    opj_stream_seek_fn m_seek_fn
    Pointer to actual seek function (if available).
    Definition: cio.h:118
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void opj_write_double_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Definition: cio.c:96
    -
    void opj_read_float_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:149
    -
    void opj_read_float_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:143
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    #define OPJ_STREAM_STATUS_ERROR
    Definition: cio.h:76
    -
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    -
    void opj_read_bytes_BE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:71
    -
    void opj_read_double_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT64 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:112
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_OFF_T opj_stream_default_skip(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:671
    -
    void opj_read_float_BE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:143
    -
    OPJ_OFF_T opj_stream_write_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:538
    -
    OPJ_BOOL opj_stream_write_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:620
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    void opj_read_bytes_BE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Big Endian cpus.
    Definition: cio.c:71
    -
    void opj_write_float_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:133
    -
    OPJ_UINT32 m_status
    Flags to tell the status of the stream.
    Definition: cio.h:162
    -
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    -
    void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    -
    void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    -
    void opj_read_float_LE(const OPJ_BYTE *p_buffer, OPJ_FLOAT32 *p_value)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:149
    -
    void opj_write_bytes_LE(OPJ_BYTE *p_buffer, OPJ_UINT32 p_value, OPJ_UINT32 p_nb_bytes)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:58
    -
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    -
    OPJ_SIZE_T m_bytes_in_buffer
    number of bytes containing in the buffer.
    Definition: cio.h:146
    -
    OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:643
    -
    #define OPJ_STREAM_STATUS_END
    Definition: cio.h:75
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    -
    void opj_write_double_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:102
    -
    void opj_write_float_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:133
    -
    void opj_read_bytes_LE(const OPJ_BYTE *p_buffer, OPJ_UINT32 *p_value, OPJ_UINT32 p_nb_bytes)
    Reads some bytes from the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:82
    -
    #define OPJ_J2K_STREAM_CHUNK_SIZE
    Definition: openjpeg.h:150
    -
    OPJ_SIZE_T opj_stream_default_read(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:653
    -
    opj_stream_free_user_data_fn m_free_user_data_fn
    Pointer to function to free m_user_data (NULL at initialization) when destroying the stream.
    Definition: cio.h:92
    -
    OPJ_SIZE_T(* opj_stream_write_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:637
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    -
    void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    -
    OPJ_OFF_T opj_stream_read_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:463
    -
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, struct opj_event_mgr *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    -
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    -
    void opj_write_double_LE(OPJ_BYTE *p_buffer, OPJ_FLOAT64 p_value)
    Write some bytes to the given data buffer, this function is used in Little Endian cpus.
    Definition: cio.c:102
    -
    OPJ_SIZE_T m_buffer_size
    The size of the buffer.
    Definition: cio.h:156
    -
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    -
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    -
    OPJ_SIZE_T opj_stream_default_read(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    FIXME DOC.
    Definition: cio.c:653
    -
    void opj_write_float_BE(OPJ_BYTE *p_buffer, OPJ_FLOAT32 p_value)
    Definition: cio.c:127
    -
    opj_stream_write_fn m_write_fn
    Pointer to actual write function (NULL at the initialization of the cio.
    Definition: cio.h:107
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:194
    -
    void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    - - - - diff --git a/build/doc/html/classes.html b/build/doc/html/classes.html deleted file mode 100644 index f48034431..000000000 --- a/build/doc/html/classes.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - - -OpenJPEG: Data Structure Index - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    Data Structure Index
    -
    -
    -
    a | b | c | d | f | i | j | m | o | p | q | r | s | t | v
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      a  
    -
    imgreg_param   opj_image   opj_stepsize   opj_v4_t   
    index_param   opj_image_comp   opj_stream_private   opj_worker_thread_job_t   
    aux_response_param   
      j  
    -
    opj_image_comptparm   opj_t1   opj_worker_thread_list_t   
    auxtrans_param   opj_j2k   opj_t1_cblk_decode_processing_job_t   opj_worker_thread_t   
      b  
    -
    j2k_prog_order   opj_j2k_dec   opj_t2   
      p  
    -
    jpip_dec_param   opj_j2k_enc   opj_tccp   
    box_param   
      m  
    -
    opj_job_list_t   opj_tccp_info   placeholder_param   
    boxcontents_param   opj_jp2   opj_tcd   placeholderlist_param   
    boxheader_param   manfbox_param   opj_jp2_box   opj_tcd_band   
      q  
    -
    boxlist_param   marker_param   opj_jp2_cdef   opj_tcd_cblk_dec   
      c  
    -
    markeridx_param   opj_jp2_cdef_info   opj_tcd_cblk_enc   query_param   
    message_param   opj_jp2_cmap_comp   opj_tcd_image   
      r  
    -
    cache_param   metadata_param   opj_jp2_color   opj_tcd_layer   
    cachelist_param   metadatalist_param   opj_jp2_comps   opj_tcd_marker_info   range_param   
    cachemodel_param   mhixbox_param   opj_jp2_header_handler   opj_tcd_pass   
      s  
    -
    cachemodellist_param   msgqueue_param   opj_jp2_img_header_writer_handler   opj_tcd_precinct   
    channel_param   
      o  
    -
    opj_jp2_index   opj_tcd_resolution   session_param   
    channellist_param   opj_jp2_metadata   opj_tcd_seg   sessionlist_param   
    codestream_param   opj_bio   opj_jp2_pclr   opj_tcd_seg_data_chunk   SIZmarker_param   
    CODmarker_param   opj_codec_private   opj_marker_info   opj_tcd_tile   subfaixbox4_param   
      d  
    -
    opj_codestream_index   opj_mct_data   opj_tcd_tilecomp   subfaixbox8_param   
    opj_codestream_info   opj_mqc   opj_tcp   subfaixbox_param   
    dec_server_record   opj_codestream_info_v2   opj_mqc_state   opj_tgt_node   
      t  
    -
    dwt_local   opj_cp   opj_packet_info   opj_tgt_tree   
      f  
    -
    opj_cparameters   opj_pi_comp   opj_thread_pool_t   target_param   
    opj_dec_memory_marker_handler   opj_pi_iterator   opj_tile_index   targetlist_param   
    faixbox_param   opj_decoding_param   opj_pi_resolution   opj_tile_info   
      v  
    -
    faixelem4_param   opj_dparameters   opj_poc   opj_tile_v2_info   
    faixelem8_param   opj_dwd_decode_h_job_t   opj_ppx_struct   opj_tls_key_val_t   v4dwt_local   
      i  
    -
    opj_dwd_decode_v_job_t   opj_procedure_list   opj_tls_t   
    opj_encoding_param   opj_simple_mcc_decorrelation_data   opj_tp_index   
    ihdrbox_param   opj_event_mgr   opj_sparse_array_int32   opj_tp_info   
    -
    a | b | c | d | f | i | j | m | o | p | q | r | s | t | v
    -
    - - - - diff --git a/build/doc/html/closed.png b/build/doc/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/build/doc/html/codestream__manager_8c.html b/build/doc/html/codestream__manager_8c.html deleted file mode 100644 index e9517309c..000000000 --- a/build/doc/html/codestream__manager_8c.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - - -OpenJPEG: codestream_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    codestream_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include "codestream_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    codestream_param_t set_codestream (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     set codestream parameters from inputs More...
     
    Byte_tfetch_codestreambytes (codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch Codestream bytes of data in file stream More...
     
    Byte_t fetch_codestream1byte (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 1-byte Byte code in file stream More...
     
    Byte2_t fetch_codestream2bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_codestream4bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 4-byte big endian Byte codes in file stream More...
     
    void print_codestream (codestream_param_t cs)
     print codestream parameters More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ fetch_codestream1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_codestream1byte (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 1-byte Byte code in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_1byte(), and codestream_param::offset.

    - -

    Referenced by fetch_marker1byte().

    - -
    -
    - -

    ◆ fetch_codestream2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_codestream2bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_2bytebigendian(), and codestream_param::offset.

    - -

    Referenced by fetch_marker2bytebigendian().

    - -
    -
    - -

    ◆ fetch_codestream4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_codestream4bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_4bytebigendian(), and codestream_param::offset.

    - -

    Referenced by fetch_marker4bytebigendian().

    - -
    -
    - -

    ◆ fetch_codestreambytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_codestreambytes (codestream_param_tcs,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch Codestream bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References codestream_param::fd, fetch_bytes(), and codestream_param::offset.

    - -
    -
    - -

    ◆ print_codestream()

    - -
    -
    - - - - - - - - -
    void print_codestream (codestream_param_t cs)
    -
    - -

    print codestream parameters

    -
    Parameters
    - - -
    [in]cscodestream
    -
    -
    - -

    References codestream_param::fd, codestream_param::length, logstream, and codestream_param::offset.

    - -
    -
    - -

    ◆ set_codestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    codestream_param_t set_codestream (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    set codestream parameters from inputs

    -
    Parameters
    - - - - -
    [in]fdfile descriptor
    [in]offsetoffset in the file
    [in]lengthcodestream length
    -
    -
    -
    Returns
    structure of generated codestream parameters
    - -

    References codestream_param::fd, codestream_param::length, and codestream_param::offset.

    - -

    Referenced by set_cidxdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/codestream__manager_8h.html b/build/doc/html/codestream__manager_8h.html deleted file mode 100644 index 1a0885070..000000000 --- a/build/doc/html/codestream__manager_8h.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -OpenJPEG: codestream_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    codestream_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  codestream_param
     codestream parameters More...
     
    - - - - -

    -Typedefs

    typedef struct codestream_param codestream_param_t
     codestream parameters More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    codestream_param_t set_codestream (int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
     set codestream parameters from inputs More...
     
    Byte_tfetch_codestreambytes (codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
     fetch Codestream bytes of data in file stream More...
     
    Byte_t fetch_codestream1byte (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 1-byte Byte code in file stream More...
     
    Byte2_t fetch_codestream2bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_codestream4bytebigendian (codestream_param_t *cs, OPJ_OFF_T offset)
     fetch Codestream 4-byte big endian Byte codes in file stream More...
     
    void print_codestream (codestream_param_t cs)
     print codestream parameters More...
     
    -

    Typedef Documentation

    - -

    ◆ codestream_param_t

    - -
    -
    - - - - -
    typedef struct codestream_param codestream_param_t
    -
    - -

    codestream parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ fetch_codestream1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_codestream1byte (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 1-byte Byte code in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_1byte(), and codestream_param::offset.

    - -

    Referenced by fetch_marker1byte().

    - -
    -
    - -

    ◆ fetch_codestream2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_codestream2bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_2bytebigendian(), and codestream_param::offset.

    - -

    Referenced by fetch_marker2bytebigendian().

    - -
    -
    - -

    ◆ fetch_codestream4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_codestream4bytebigendian (codestream_param_tcs,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch Codestream 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    -
    -
    -
    Returns
    fetched code
    - -

    References codestream_param::fd, fetch_4bytebigendian(), and codestream_param::offset.

    - -

    Referenced by fetch_marker4bytebigendian().

    - -
    -
    - -

    ◆ fetch_codestreambytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* fetch_codestreambytes (codestream_param_tcs,
    OPJ_OFF_T offset,
    OPJ_SIZE_T size 
    )
    -
    - -

    fetch Codestream bytes of data in file stream

    -
    Parameters
    - - - - -
    [in]cscodestream pointer
    [in]offsetstart Byte position in codestream
    [in]sizeByte length
    -
    -
    -
    Returns
    pointer to the fetched data
    - -

    References codestream_param::fd, fetch_bytes(), and codestream_param::offset.

    - -
    -
    - -

    ◆ print_codestream()

    - -
    -
    - - - - - - - - -
    void print_codestream (codestream_param_t cs)
    -
    - -

    print codestream parameters

    -
    Parameters
    - - -
    [in]cscodestream
    -
    -
    - -

    References codestream_param::fd, codestream_param::length, logstream, and codestream_param::offset.

    - -
    -
    - -

    ◆ set_codestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    codestream_param_t set_codestream (int fd,
    OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    set codestream parameters from inputs

    -
    Parameters
    - - - - -
    [in]fdfile descriptor
    [in]offsetoffset in the file
    [in]lengthcodestream length
    -
    -
    -
    Returns
    structure of generated codestream parameters
    - -

    References codestream_param::fd, codestream_param::length, and codestream_param::offset.

    - -

    Referenced by set_cidxdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/codestream__manager_8h_source.html b/build/doc/html/codestream__manager_8h_source.html deleted file mode 100644 index b53df3663..000000000 --- a/build/doc/html/codestream__manager_8h_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -OpenJPEG: codestream_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    codestream_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef CODESTREAM_MANAGER_H_
    -
    32 # define CODESTREAM_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 
    -
    37 typedef struct codestream_param {
    -
    38  int fd;
    - - - -
    42 
    -
    43 
    - -
    53 
    -
    54 
    - -
    64  OPJ_SIZE_T size);
    -
    65 
    - -
    74 
    - -
    83  OPJ_OFF_T offset);
    -
    84 
    - -
    93  OPJ_OFF_T offset);
    -
    94 
    -
    95 
    - -
    102 
    -
    103 
    -
    104 #endif /* !CODESTREAM_MANAGER_H_ */
    -
    -
    Byte_t * fetch_codestreambytes(codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch Codestream bytes of data in file stream
    Definition: codestream_manager.c:55
    -
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    -
    void print_codestream(codestream_param_t cs)
    print codestream parameters
    Definition: codestream_manager.c:76
    -
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    #define logstream
    Definition: codestream_manager.c:41
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    -
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    codestream parameters
    Definition: codestream_manager.h:37
    -
    Byte4_t fetch_4bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 4-byte big endian Byte codes in file stream
    Definition: byte_manager.c:109
    -
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    - -
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    Byte2_t fetch_2bytebigendian(int fd, OPJ_OFF_T offset)
    fetch a 2-byte big endian Byte codes in file stream
    Definition: byte_manager.c:93
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    int fd
    file descriptor
    Definition: codestream_manager.h:38
    -
    Byte_t fetch_1byte(int fd, OPJ_OFF_T offset)
    fetch a 1-byte Byte codes in file stream
    Definition: byte_manager.c:75
    -
    Byte8_t length
    content length
    Definition: codestream_manager.h:40
    -
    OPJ_OFF_T offset
    byte position of DBox (Box Contents) in the file
    Definition: codestream_manager.h:39
    -
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    - -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    - -
    void print_codestream(codestream_param_t cs)
    print codestream parameters
    Definition: codestream_manager.c:76
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    struct codestream_param codestream_param_t
    codestream parameters
    -
    Byte_t * fetch_codestreambytes(codestream_param_t *cs, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch Codestream bytes of data in file stream
    Definition: codestream_manager.c:55
    -
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    - - - - diff --git a/build/doc/html/dec__clientmsg__handler_8c.html b/build/doc/html/dec__clientmsg__handler_8c.html deleted file mode 100644 index f19179087..000000000 --- a/build/doc/html/dec__clientmsg__handler_8c.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - -OpenJPEG: dec_clientmsg_handler.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    dec_clientmsg_handler.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <assert.h>
    -#include <limits.h>
    -#include "dec_clientmsg_handler.h"
    -#include "ihdrbox_manager.h"
    -#include "jpipstream_manager.h"
    -#include "jp2k_encoder.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void handle_JPIPstreamMSG (SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
     handle JPT- JPP- stream message More...
     
    void handle_PNMreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle PNM request message More...
     
    void handle_XMLreqMSG (SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
     handle XML request message More...
     
    void handle_TIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle TargetID request message More...
     
    void handle_CIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle ChannelID request message More...
     
    void handle_dstCIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle distroy ChannelID message More...
     
    void handle_SIZreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle SIZ request message More...
     
    void handle_JP2saveMSG (SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
     handle saving JP2 file request message More...
     
    -

    Function Documentation

    - -

    ◆ handle_CIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_CIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle ChannelID request message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    -
    -
    - -

    References cache_param::cid, cache_param::numOfcid, opj_free(), receive_string(), search_cache(), and send_CIDstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_dstCIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_dstCIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle distroy ChannelID message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in,out]cachelistcache list pointer
    -
    -
    - -

    References opj_free(), OPJ_TRUE, receive_string(), remove_cachecid(), and response_signal().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_JP2saveMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_JP2saveMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    msgqueue_param_tmsgqueue,
    Byte_tjpipstream 
    )
    -
    - -

    handle saving JP2 file request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in]msgqueuemessage queue pointer
    [in]jpipstreamaddress of caching jpipstream pointer
    -
    -
    - -

    References cache_param::csn, opj_free(), receive_string(), recons_jp2(), save_codestream(), and search_cacheBycid().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_JPIPstreamMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_JPIPstreamMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    Byte_t ** jpipstream,
    OPJ_SIZE_Tstreamlen,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    handle JPT- JPP- stream message

    -
    Parameters
    - - - - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in,out]jpipstreamaddress of JPT- JPP- stream pointer
    [in,out]streamlenaddress of stream length
    [in,out]msgqueuemessage queue pointer
    -
    -
    - -

    References add_cachecid(), message_param::csn, delete_metadatalist(), gene_cache(), gene_metadatalist(), insert_cache_into_list(), msgqueue_param::last, cache_param::metadatalist, opj_free(), OPJ_TRUE, parse_JPIPstream(), parse_metamsg(), receive_JPIPstream(), response_signal(), search_cache(), search_cacheBycsn(), update_cachetid(), and update_JPIPstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_PNMreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_PNMreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle PNM request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamjpipstream pointer
    [in]msgqueuemessage queue pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References ihdrbox_param::bpc, cache_param::csn, ihdrbox_param::height, jpipstream_to_pnm(), ihdrbox_param::nc, opj_free(), receive_line(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_PNMstream(), and ihdrbox_param::width.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_SIZreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_SIZreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle SIZ request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]msgqueuemessage queue pointer
    [in,out]cachelistcache list pointer
    -
    -
    - -

    References cache_param::csn, get_SIZ_from_jpipstream(), ihdrbox_param::height, cache_param::ihdrbox, opj_free(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_SIZstream(), and ihdrbox_param::width.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_TIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_TIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle TargetID request message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    -
    -
    - -

    References opj_free(), receive_string(), search_cache(), send_TIDstream(), and cache_param::tid.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_XMLreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_XMLreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle XML request message

    -
    Parameters
    - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References metadata_param::boxcontents, metadatalist_param::last, boxcontents_param::length, cache_param::metadatalist, boxcontents_param::offset, opj_free(), opj_malloc(), receive_string(), search_cacheBycid(), and send_XMLstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/dec__clientmsg__handler_8h.html b/build/doc/html/dec__clientmsg__handler_8h.html deleted file mode 100644 index 53b0963c4..000000000 --- a/build/doc/html/dec__clientmsg__handler_8h.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - - -OpenJPEG: dec_clientmsg_handler.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    dec_clientmsg_handler.h File Reference
    -
    -
    -
    #include "imgsock_manager.h"
    -#include "cache_manager.h"
    -#include "byte_manager.h"
    -#include "msgqueue_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void handle_JPIPstreamMSG (SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
     handle JPT- JPP- stream message More...
     
    void handle_PNMreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle PNM request message More...
     
    void handle_XMLreqMSG (SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
     handle XML request message More...
     
    void handle_TIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle TargetID request message More...
     
    void handle_CIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle ChannelID request message More...
     
    void handle_dstCIDreqMSG (SOCKET connected_socket, cachelist_param_t *cachelist)
     handle distroy ChannelID message More...
     
    void handle_SIZreqMSG (SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
     handle SIZ request message More...
     
    void handle_JP2saveMSG (SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
     handle saving JP2 file request message More...
     
    -

    Function Documentation

    - -

    ◆ handle_CIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_CIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle ChannelID request message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    -
    -
    - -

    References cache_param::cid, cache_param::numOfcid, opj_free(), receive_string(), search_cache(), and send_CIDstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_dstCIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_dstCIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle distroy ChannelID message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in,out]cachelistcache list pointer
    -
    -
    - -

    References opj_free(), OPJ_TRUE, receive_string(), remove_cachecid(), and response_signal().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_JP2saveMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_JP2saveMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    msgqueue_param_tmsgqueue,
    Byte_tjpipstream 
    )
    -
    - -

    handle saving JP2 file request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in]msgqueuemessage queue pointer
    [in]jpipstreamaddress of caching jpipstream pointer
    -
    -
    - -

    References cache_param::csn, opj_free(), receive_string(), recons_jp2(), save_codestream(), and search_cacheBycid().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_JPIPstreamMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_JPIPstreamMSG (SOCKET connected_socket,
    cachelist_param_tcachelist,
    Byte_t ** jpipstream,
    OPJ_SIZE_Tstreamlen,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    handle JPT- JPP- stream message

    -
    Parameters
    - - - - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    [in,out]jpipstreamaddress of JPT- JPP- stream pointer
    [in,out]streamlenaddress of stream length
    [in,out]msgqueuemessage queue pointer
    -
    -
    - -

    References add_cachecid(), message_param::csn, delete_metadatalist(), gene_cache(), gene_metadatalist(), insert_cache_into_list(), msgqueue_param::last, cache_param::metadatalist, opj_free(), OPJ_TRUE, parse_JPIPstream(), parse_metamsg(), receive_JPIPstream(), response_signal(), search_cache(), search_cacheBycsn(), update_cachetid(), and update_JPIPstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_PNMreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_PNMreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle PNM request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamjpipstream pointer
    [in]msgqueuemessage queue pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References ihdrbox_param::bpc, cache_param::csn, ihdrbox_param::height, jpipstream_to_pnm(), ihdrbox_param::nc, opj_free(), receive_line(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_PNMstream(), and ihdrbox_param::width.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_SIZreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_SIZreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle SIZ request message

    -
    Parameters
    - - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]msgqueuemessage queue pointer
    [in,out]cachelistcache list pointer
    -
    -
    - -

    References cache_param::csn, get_SIZ_from_jpipstream(), ihdrbox_param::height, cache_param::ihdrbox, opj_free(), receive_string(), search_cacheBycid(), search_cacheBytid(), send_SIZstream(), and ihdrbox_param::width.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_TIDreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void handle_TIDreqMSG (SOCKET connected_socket,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle TargetID request message

    -
    Parameters
    - - - -
    [in]connected_socketsocket descriptor
    [in]cachelistcache list pointer
    -
    -
    - -

    References opj_free(), receive_string(), search_cache(), send_TIDstream(), and cache_param::tid.

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ handle_XMLreqMSG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_XMLreqMSG (SOCKET connected_socket,
    Byte_tjpipstream,
    cachelist_param_tcachelist 
    )
    -
    - -

    handle XML request message

    -
    Parameters
    - - - - -
    [in]connected_socketsocket descriptor
    [in]jpipstreamaddress of caching jpipstream pointer
    [in]cachelistcache list pointer
    -
    -
    - -

    References metadata_param::boxcontents, metadatalist_param::last, boxcontents_param::length, cache_param::metadatalist, boxcontents_param::offset, opj_free(), opj_malloc(), receive_string(), search_cacheBycid(), and send_XMLstream().

    - -

    Referenced by handle_clientreq().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/dec__clientmsg__handler_8h_source.html b/build/doc/html/dec__clientmsg__handler_8h_source.html deleted file mode 100644 index 814f200bb..000000000 --- a/build/doc/html/dec__clientmsg__handler_8h_source.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -OpenJPEG: dec_clientmsg_handler.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    dec_clientmsg_handler.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef DEC_CLIENTMSG_HANDLER_H_
    -
    33 # define DEC_CLIENTMSG_HANDLER_H_
    -
    34 
    -
    35 #include "imgsock_manager.h"
    -
    36 #include "cache_manager.h"
    -
    37 #include "byte_manager.h"
    -
    38 #include "msgqueue_manager.h"
    -
    39 
    -
    49 void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist,
    -
    50  Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue);
    -
    51 
    -
    60 void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    -
    61  msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
    -
    62 
    -
    70 void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    -
    71  cachelist_param_t *cachelist);
    -
    72 
    -
    79 void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    -
    80 
    -
    87 void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    -
    88 
    -
    95 void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist);
    -
    96 
    -
    105 void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream,
    -
    106  msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
    -
    107 
    -
    116 void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist,
    -
    117  msgqueue_param_t *msgqueue, Byte_t *jpipstream);
    -
    118 
    -
    119 
    -
    120 #endif /* !DEC_CLIENTMSG_HANDLER_H_ */
    -
    -
    cache_param_t * search_cache(const char targetname[], cachelist_param_t *cachelist)
    search a cache by target name
    Definition: cache_manager.c:113
    -
    void add_cachecid(const char *cid, cache_param_t *cache)
    add cid into a cache
    Definition: cache_manager.c:193
    - -
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    -
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    - -
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    -
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    -
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    -
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    -
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    -
    cache_param_t * search_cacheBycid(const char cid[], cachelist_param_t *cachelist)
    search a cache by cid
    Definition: cache_manager.c:151
    -
    char * tid
    taregt identifier
    Definition: cache_manager.h:40
    -
    int numOfcid
    number of cids
    Definition: cache_manager.h:43
    -
    char ** cid
    dynamic array of channel identifiers
    Definition: cache_manager.h:42
    -
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    -
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    -
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    -
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    cache parameters
    Definition: cache_manager.h:38
    -
    int SOCKET
    Definition: sock_manager.h:40
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    -
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    -
    void remove_cachecid(const char *cid, cachelist_param_t *cachelist)
    remove cid in cache
    Definition: cache_manager.c:225
    -
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    -
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    -
    Definition: metadata_manager.h:37
    - -
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    -
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    -
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    -
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void insert_cache_into_list(cache_param_t *cache, cachelist_param_t *cachelist)
    insert a cache into list
    Definition: cache_manager.c:103
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    - -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    - -
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    -
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    - -
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    -
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    -
    message_param_t * last
    last message pointer of the list
    Definition: msgqueue_manager.h:65
    -
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    -
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    -
    cache_param_t * search_cacheBytid(const char tid[], cachelist_param_t *cachelist)
    search a cache by tid
    Definition: cache_manager.c:173
    -
    cache_param_t * gene_cache(const char *targetname, int csn, char *tid, char *cid)
    generate a cache
    Definition: cache_manager.c:61
    -
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    -
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    -
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    -
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    -
    void update_cachetid(const char *tid, cache_param_t *cache)
    update tid of a cache
    Definition: cache_manager.c:210
    -
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    - -
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    -
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    -
    metadata_param_t * last
    last metadata-bin pointer of the list
    Definition: metadata_manager.h:56
    -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    -
    Definition: cache_manager.h:50
    -
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    - -
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    -
    ihdrbox_param_t * ihdrbox
    ihdrbox
    Definition: cache_manager.h:45
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    -
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    cache_param_t * search_cacheBycsn(int csn, cachelist_param_t *cachelist)
    search a cache by csn
    Definition: cache_manager.c:135
    -
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    -
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    - -
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    -
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: cache_manager.h:44
    -
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    -
    int csn
    codestream number
    Definition: cache_manager.h:41
    - - - - diff --git a/build/doc/html/dir_0890392e63c951145007159392cffa14.html b/build/doc/html/dir_0890392e63c951145007159392cffa14.html deleted file mode 100644 index b6c61d9a8..000000000 --- a/build/doc/html/dir_0890392e63c951145007159392cffa14.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: ImageProcessing Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    ImageProcessing Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  codecs
     
    -
    - - - - diff --git a/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html b/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html deleted file mode 100644 index ca19388fd..000000000 --- a/build/doc/html/dir_10275b101dc47501bdbace8d72b4147f.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: Seagate Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    Seagate Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  OpenSource
     
    -
    - - - - diff --git a/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html b/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html deleted file mode 100644 index 8c80c8548..000000000 --- a/build/doc/html/dir_1dc7d7133d4b72a2e3f4a1d14d62afce.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - -OpenJPEG: doc Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    doc Directory Reference
    -
    -
    -
    - - - - diff --git a/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html b/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html deleted file mode 100644 index d2b7cb474..000000000 --- a/build/doc/html/dir_39dc0668bd5a501998f94e8b4e546c71.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: media Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    media Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  longervision
     
    -
    - - - - diff --git a/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html b/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html deleted file mode 100644 index eb1cebab5..000000000 --- a/build/doc/html/dir_6329a0b1ceb33c3e049f1dc7ed697498.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: src Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    src Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  lib
     
    -
    - - - - diff --git a/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html b/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html deleted file mode 100644 index 6dc2f4ade..000000000 --- a/build/doc/html/dir_715f52f3461ba74d7c46f17c199ef422.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: build Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    build Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  doc
     
    -
    - - - - diff --git a/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html b/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html deleted file mode 100644 index 9134c9be9..000000000 --- a/build/doc/html/dir_73dd1390edfd70d9070c8b9661f68f38.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: longervision Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    longervision Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  Seagate
     
    -
    - - - - diff --git a/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html b/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html deleted file mode 100644 index 5ea37d93e..000000000 --- a/build/doc/html/dir_7da9f56fa789e1efc974f837eafb38e7.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - -OpenJPEG: lib Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    lib Directory Reference
    -
    -
    - - - - - - -

    -Directories

    directory  openjp2
     
    directory  openjpip
     
    -
    - - - - diff --git a/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html b/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html deleted file mode 100644 index 3a0d8b34a..000000000 --- a/build/doc/html/dir_8a78b8e1a976303cf0c6d581706edd29.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: OpenSource Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    OpenSource Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  ImageProcessing
     
    -
    - - - - diff --git a/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html b/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html deleted file mode 100644 index 0f7c1dcff..000000000 --- a/build/doc/html/dir_b64e2f079b39f83729a5c1f19735390b.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - -OpenJPEG: openjpeg Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    openjpeg Directory Reference
    -
    -
    - - - - - - -

    -Directories

    directory  build
     
    directory  src
     
    -
    - - - - diff --git a/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html b/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html deleted file mode 100644 index d0a41e959..000000000 --- a/build/doc/html/dir_c31727019deda5d7e4796a0b15f5d8ba.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: codecs Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    codecs Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  openjpeg
     
    -
    - - - - diff --git a/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html b/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html deleted file mode 100644 index d6b537b4d..000000000 --- a/build/doc/html/dir_cc90a325d355047f074438f2f9a1bee1.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -OpenJPEG: openjpip Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    openjpip Directory Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

    file  auxtrans_manager.c
     
    file  auxtrans_manager.h [code]
     
    file  box_manager.c
     
    file  box_manager.h [code]
     
    file  boxheader_manager.c
     
    file  boxheader_manager.h [code]
     
    file  byte_manager.c
     
    file  byte_manager.h [code]
     
    file  cache_manager.c
     
    file  cache_manager.h [code]
     
    file  cachemodel_manager.c
     
    file  cachemodel_manager.h [code]
     
    file  channel_manager.c
     
    file  channel_manager.h [code]
     
    file  codestream_manager.c
     
    file  codestream_manager.h [code]
     
    file  dec_clientmsg_handler.c
     
    file  dec_clientmsg_handler.h [code]
     
    file  faixbox_manager.c
     
    file  faixbox_manager.h [code]
     
    file  ihdrbox_manager.c
     
    file  ihdrbox_manager.h [code]
     
    file  imgreg_manager.c
     
    file  imgreg_manager.h [code]
     
    file  imgsock_manager.c
     
    file  imgsock_manager.h [code]
     
    file  index_manager.c
     
    file  index_manager.h [code]
     
    file  j2kheader_manager.c
     
    file  j2kheader_manager.h [code]
     
    file  jp2k_decoder.c
     
    file  jp2k_decoder.h [code]
     
    file  jp2k_encoder.c
     
    file  jp2k_encoder.h [code]
     
    file  jpip_parser.c
     
    file  jpip_parser.h [code]
     
    file  jpipstream_manager.c
     
    file  jpipstream_manager.h [code]
     
    file  manfbox_manager.c
     
    file  manfbox_manager.h [code]
     
    file  marker_manager.c
     
    file  marker_manager.h [code]
     
     
     
    file  mhixbox_manager.c
     
    file  mhixbox_manager.h [code]
     
    file  msgqueue_manager.c
     
    file  msgqueue_manager.h [code]
     
    file  openjpip.c
     
    file  openjpip.h [code]
     
    file  placeholder_manager.c
     
    file  placeholder_manager.h [code]
     
    file  query_parser.c
     
    file  query_parser.h [code]
     
    file  session_manager.c
     
    file  session_manager.h [code]
     
    file  sock_manager.c
     
    file  sock_manager.h [code]
     
    file  target_manager.c
     
    file  target_manager.h [code]
     
    -
    - - - - diff --git a/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html b/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html deleted file mode 100644 index 8971a007b..000000000 --- a/build/doc/html/dir_e7d9765d20bce32490435b765db0901b.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - -OpenJPEG: openjp2 Directory Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    openjp2 Directory Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

    file  bench_dwt.c
     
    file  bio.c
     
    file  bio.h [code]
     Implementation of an individual bit input-output (BIO)
     
    file  cidx_manager.c
     
    file  cidx_manager.h [code]
     Modification of jpip.h from 2KAN indexer.
     
    file  cio.c
     
    file  cio.h [code]
     Implementation of a byte input-output process (CIO)
     
    file  dwt.c
     
    file  dwt.h [code]
     Implementation of a discrete wavelet transform (DWT)
     
    file  event.c
     
    file  event.h [code]
     Implementation of a event callback system.
     
    file  function_list.c
     
    file  function_list.h [code]
     Implementation of a list of procedures.
     
    file  image.c
     
    file  image.h [code]
     Implementation of operations on images (IMAGE)
     
    file  indexbox_manager.h [code]
     Modification of jpip.c from 2KAN indexer.
     
    file  invert.c
     
    file  invert.h [code]
     Implementation of the matrix inversion.
     
    file  j2k.c
     
    file  j2k.h [code]
     The JPEG-2000 Codestream Reader/Writer (J2K)
     
    file  jp2.c
     
    file  jp2.h [code]
     The JPEG-2000 file format Reader/Writer (JP2)
     
    file  mct.c
     
    file  mct.h [code]
     Implementation of a multi-component transforms (MCT)
     
    file  mqc.c
     
    file  mqc.h [code]
     Implementation of an MQ-Coder (MQC)
     
    file  mqc_inl.h [code]
     
    file  openjpeg.c
     
    file  openjpeg.h [code]
     
    file  opj_clock.c
     
    file  opj_clock.h [code]
     Internal function for timing.
     
    file  opj_codec.h [code]
     
    file  opj_common.h [code]
     
    file  opj_includes.h [code]
     
    file  opj_intmath.h [code]
     Implementation of operations on integers (INT)
     
    file  opj_inttypes.h [code]
     
    file  opj_malloc.c
     
    file  opj_malloc.h [code]
     Internal functions.
     
    file  opj_stdint.h [code]
     
    file  phix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  pi.c
     
    file  pi.h [code]
     Implementation of a packet iterator (PI)
     
    file  ppix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  sparse_array.c
     
    file  sparse_array.h [code]
     Sparse array management.
     
    file  t1.c
     
    file  t1.h [code]
     Implementation of the tier-1 coding (coding of code-block coefficients) (T1)
     
    file  t1_generate_luts.c
     
    file  t1_luts.h [code]
     
    file  t2.c
     
    file  t2.h [code]
     Implementation of a tier-2 coding (packetization of code-block data) (T2)
     
    file  tcd.c
     
    file  tcd.h [code]
     Implementation of a tile coder/decoder (TCD)
     
    file  test_sparse_array.c
     
    file  tgt.c
     
    file  tgt.h [code]
     Implementation of a tag-tree coder (TGT)
     
    file  thix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    file  thread.c
     
    file  thread.h [code]
     Thread API.
     
    file  tls_keys.h [code]
     
    file  tpix_manager.c
     Modification of jpip.c from 2KAN indexer.
     
    -
    - - - - diff --git a/build/doc/html/doc.png b/build/doc/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/build/doc/html/doxygen.css b/build/doc/html/doxygen.css deleted file mode 100644 index 5e35db3f4..000000000 --- a/build/doc/html/doxygen.css +++ /dev/null @@ -1,1730 +0,0 @@ -/* The standard CSS for doxygen 1.8.18 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/build/doc/html/doxygen.png b/build/doc/html/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 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 diff --git a/build/doc/html/dwt_8c.html b/build/doc/html/dwt_8c.html deleted file mode 100644 index be8eb77af..000000000 --- a/build/doc/html/dwt_8c.html +++ /dev/null @@ -1,2975 +0,0 @@ - - - - - - - -OpenJPEG: dwt.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    dwt.c File Reference
    -
    -
    -
    #include <assert.h>
    -#include "opj_includes.h"
    -
    - - - - - - - - - - - -

    -Data Structures

    struct  dwt_local
     
    union  opj_v4_t
     
    struct  v4dwt_local
     
    struct  opj_dwd_decode_h_job_t
     
    struct  opj_dwd_decode_v_job_t
     
    - - - - - - - - - - - - - -

    -Macros

    #define OPJ_SKIP_POISON
     
    #define OPJ_WS(i)   v->mem[(i)*2]
     
    #define OPJ_WD(i)   v->mem[(1+(i)*2)]
     
    #define VREG_INT_COUNT   4
     Number of int32 values in a SSE2 register. More...
     
    #define PARALLEL_COLS_53   (2*VREG_INT_COUNT)
     Number of columns that we can process in parallel in the vertical pass. More...
     
    - - - - - - - - - - - - - - - - - - - - -

    -Local data structures

    typedef struct dwt_local opj_dwt_t
     
    typedef struct v4dwt_local opj_v4dwt_t
     
    typedef void(* DWT1DFN) (const opj_dwt_t *v)
     Virtual function type for wavelet transform in 1-D. More...
     
    static const OPJ_FLOAT32 opj_dwt_alpha = 1.586134342f
     
    static const OPJ_FLOAT32 opj_dwt_beta = 0.052980118f
     
    static const OPJ_FLOAT32 opj_dwt_gamma = -0.882911075f
     
    static const OPJ_FLOAT32 opj_dwt_delta = -0.443506852f
     
    static const OPJ_FLOAT32 opj_K = 1.230174105f
     
    static const OPJ_FLOAT32 opj_c13318 = 1.625732422f
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    #define OPJ_S(i)   a[(i)*2]
     
    #define OPJ_D(i)   a[(1+(i)*2)]
     
    #define OPJ_S_(i)   ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))
     
    #define OPJ_D_(i)   ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))
     
    #define OPJ_SS_(i)   ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))
     
    #define OPJ_DD_(i)   ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))
     
    #define OPJ_S_off(i, off)   a[(OPJ_UINT32)(i)*2*4+off]
     
    #define OPJ_D_off(i, off)   a[(1+(OPJ_UINT32)(i)*2)*4+off]
     
    #define OPJ_S__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))
     
    #define OPJ_D__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))
     
    #define OPJ_SS__off(i, off)   ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))
     
    #define OPJ_DD__off(i, off)   ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))
     
    static const OPJ_FLOAT64 opj_dwt_norms [4][10]
     
    static const OPJ_FLOAT64 opj_dwt_norms_real [4][10]
     
    static void opj_dwt_deinterleave_h (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward lazy transform (horizontal) More...
     
    static void opj_dwt_deinterleave_v (OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 x, OPJ_INT32 cas)
     Forward lazy transform (vertical) More...
     
    static void opj_dwt_encode_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward 5-3 wavelet transform in 1-D. More...
     
    static void opj_dwt_encode_1_real (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
     Forward 9-7 wavelet transform in 1-D. More...
     
    static void opj_dwt_encode_stepsize (OPJ_INT32 stepsize, OPJ_INT32 numbps, opj_stepsize_t *bandno_stepsize)
     Explicit calculation of the Quantization Stepsizes. More...
     
    static OPJ_BOOL opj_dwt_decode_tile (opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 i)
     Inverse wavelet transform in 2-D. More...
     
    static OPJ_BOOL opj_dwt_decode_partial_tile (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     
    static OPJ_BOOL opj_dwt_encode_procedure (opj_tcd_tilecomp_t *tilec, void(*p_function)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32))
     
    static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
     
    static void opj_v4dwt_decode (opj_v4dwt_t *OPJ_RESTRICT dwt)
     
    static void opj_v4dwt_interleave_h (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
     
    static void opj_v4dwt_interleave_v (opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
     
    static void opj_v4dwt_decode_step1 (opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
     
    static void opj_v4dwt_decode_step2 (opj_v4_t *l, opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
     
    static void opj_idwt53_h_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
     
    static void opj_idwt53_h_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
     
    static void opj_idwt53_h (const opj_dwt_t *dwt, OPJ_INT32 *tiledp)
     
    static void opj_idwt3_v_cas0 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
     Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate. More...
     
    static void opj_idwt3_v_cas1 (OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
     Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate. More...
     
    static void opj_idwt53_v (const opj_dwt_t *dwt, OPJ_INT32 *tiledp_col, OPJ_SIZE_T stride, OPJ_INT32 nb_cols)
     
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_t *tilec)
     Forward 5-3 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     Inverse 5-3 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
     Get the gain of a subband for the reversible 5-3 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. More...
     
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_t *tilec)
     Forward 9-7 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
     Get the gain of a subband for the irreversible 9-7 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT. More...
     
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_t *tccp, OPJ_UINT32 prec)
     Explicit calculation of the Quantization Stepsizes. More...
     
    static void opj_dwt_decode_h_func (void *user_data, opj_tls_t *tls)
     
    static void opj_dwt_decode_v_func (void *user_data, opj_tls_t *tls)
     
    static void opj_dwt_interleave_partial_h (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 sn, OPJ_UINT32 win_l_x0, OPJ_UINT32 win_l_x1, OPJ_UINT32 win_h_x0, OPJ_UINT32 win_h_x1)
     
    static void opj_dwt_interleave_partial_v (OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_cols, OPJ_UINT32 sn, OPJ_UINT32 win_l_y0, OPJ_UINT32 win_l_y1, OPJ_UINT32 win_h_y0, OPJ_UINT32 win_h_y1)
     
    static void opj_dwt_decode_partial_1 (OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
     
    static void opj_dwt_decode_partial_1_parallel (OPJ_INT32 *a, OPJ_UINT32 nb_cols, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
     
    static void opj_dwt_get_band_coordinates (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 tcx0, OPJ_UINT32 tcy0, OPJ_UINT32 tcx1, OPJ_UINT32 tcy1, OPJ_UINT32 *tbx0, OPJ_UINT32 *tby0, OPJ_UINT32 *tbx1, OPJ_UINT32 *tby1)
     
    static void opj_dwt_segment_grow (OPJ_UINT32 filter_width, OPJ_UINT32 max_size, OPJ_UINT32 *start, OPJ_UINT32 *end)
     
    static opj_sparse_array_int32_topj_dwt_init_sparse_array (opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     
    static void opj_v4dwt_interleave_partial_h (opj_v4dwt_t *dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 remaining_height)
     
    static void opj_v4dwt_interleave_partial_v (opj_v4dwt_t *OPJ_RESTRICT dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_elts_read)
     
    static OPJ_BOOL opj_dwt_decode_tile_97 (opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     
    static OPJ_BOOL opj_dwt_decode_partial_97 (opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     Inverse 9-7 wavelet transform in 2-D. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_D

    - -
    -
    - - - - - - - - -
    #define OPJ_D( i)   a[(1+(i)*2)]
    -
    - -
    -
    - -

    ◆ OPJ_D_

    - -
    -
    - - - - - - - - -
    #define OPJ_D_( i)   ((i)<0?OPJ_D(0):((i)>=dn?OPJ_D(dn-1):OPJ_D(i)))
    -
    - -
    -
    - -

    ◆ OPJ_D__off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_D__off( i,
     off 
    )   ((i)<0?OPJ_D_off(0,off):((i)>=dn?OPJ_D_off(dn-1,off):OPJ_D_off(i,off)))
    -
    - -
    -
    - -

    ◆ OPJ_D_off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_D_off( i,
     off 
    )   a[(1+(OPJ_UINT32)(i)*2)*4+off]
    -
    - -
    -
    - -

    ◆ OPJ_DD_

    - -
    -
    - - - - - - - - -
    #define OPJ_DD_( i)   ((i)<0?OPJ_D(0):((i)>=sn?OPJ_D(sn-1):OPJ_D(i)))
    -
    - -
    -
    - -

    ◆ OPJ_DD__off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_DD__off( i,
     off 
    )   ((i)<0?OPJ_D_off(0,off):((i)>=sn?OPJ_D_off(sn-1,off):OPJ_D_off(i,off)))
    -
    - -
    -
    - -

    ◆ OPJ_S

    - -
    -
    - - - - - - - - -
    #define OPJ_S( i)   a[(i)*2]
    -
    - -
    -
    - -

    ◆ OPJ_S_

    - -
    -
    - - - - - - - - -
    #define OPJ_S_( i)   ((i)<0?OPJ_S(0):((i)>=sn?OPJ_S(sn-1):OPJ_S(i)))
    -
    - -
    -
    - -

    ◆ OPJ_S__off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_S__off( i,
     off 
    )   ((i)<0?OPJ_S_off(0,off):((i)>=sn?OPJ_S_off(sn-1,off):OPJ_S_off(i,off)))
    -
    - -
    -
    - -

    ◆ OPJ_S_off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_S_off( i,
     off 
    )   a[(OPJ_UINT32)(i)*2*4+off]
    -
    - -
    -
    - -

    ◆ OPJ_SKIP_POISON

    - -
    -
    - - - - -
    #define OPJ_SKIP_POISON
    -
    - -
    -
    - -

    ◆ OPJ_SS_

    - -
    -
    - - - - - - - - -
    #define OPJ_SS_( i)   ((i)<0?OPJ_S(0):((i)>=dn?OPJ_S(dn-1):OPJ_S(i)))
    -
    - -
    -
    - -

    ◆ OPJ_SS__off

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_SS__off( i,
     off 
    )   ((i)<0?OPJ_S_off(0,off):((i)>=dn?OPJ_S_off(dn-1,off):OPJ_S_off(i,off)))
    -
    - -
    -
    - -

    ◆ OPJ_WD

    - -
    -
    - - - - - - - - -
    #define OPJ_WD( i)   v->mem[(1+(i)*2)]
    -
    - -
    -
    - -

    ◆ OPJ_WS

    - -
    -
    - - - - - - - - -
    #define OPJ_WS( i)   v->mem[(i)*2]
    -
    - -
    -
    - -

    ◆ PARALLEL_COLS_53

    - -
    -
    - - - - -
    #define PARALLEL_COLS_53   (2*VREG_INT_COUNT)
    -
    - -

    Number of columns that we can process in parallel in the vertical pass.

    - -
    -
    - -

    ◆ VREG_INT_COUNT

    - -
    -
    - - - - -
    #define VREG_INT_COUNT   4
    -
    - -

    Number of int32 values in a SSE2 register.

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ DWT1DFN

    - -
    -
    - - - - -
    typedef void(* DWT1DFN) (const opj_dwt_t *v)
    -
    - -

    Virtual function type for wavelet transform in 1-D.

    - -
    -
    - -

    ◆ opj_dwt_t

    - -
    -
    - - - - -
    typedef struct dwt_local opj_dwt_t
    -
    - -
    -
    - -

    ◆ opj_v4dwt_t

    - -
    -
    - - - - -
    typedef struct v4dwt_local opj_v4dwt_t
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_dwt_calc_explicit_stepsizes()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_ttccp,
    OPJ_UINT32 prec 
    )
    -
    - -

    Explicit calculation of the Quantization Stepsizes.

    -
    Parameters
    - - - -
    tccpTile-component coding parameters
    precPrecint analyzed
    -
    -
    - -

    References J2K_CCP_QNTSTY_NOQNT, opj_tccp::numresolutions, opj_dwt_encode_stepsize(), opj_dwt_norms_real, opj_tccp::qmfbid, opj_tccp::qntsty, and opj_tccp::stepsizes.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_dwt_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_dwt_decode (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 numres 
    )
    -
    - -

    Inverse 5-3 wavelet transform in 2-D.

    -

    Apply a reversible inverse DWT transform to a component of an image.

    Parameters
    - - - - -
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    -
    -
    - -

    References opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

    - -

    Referenced by main(), and opj_tcd_dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_decode_h_func()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_decode_h_func (void * user_data,
    opj_tls_ttls 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_decode_partial_1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_decode_partial_1 (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas,
    OPJ_INT32 win_l_x0,
    OPJ_INT32 win_l_x1,
    OPJ_INT32 win_h_x0,
    OPJ_INT32 win_h_x1 
    )
    -
    -static
    -
    - -

    References OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, and OPJ_SS_.

    - -

    Referenced by opj_dwt_decode_partial_tile().

    - -
    -
    - -

    ◆ opj_dwt_decode_partial_1_parallel()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_decode_partial_1_parallel (OPJ_INT32a,
    OPJ_UINT32 nb_cols,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas,
    OPJ_INT32 win_l_x0,
    OPJ_INT32 win_l_x1,
    OPJ_INT32 win_h_x0,
    OPJ_INT32 win_h_x1 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_decode_partial_97()

    - - - -

    ◆ opj_dwt_decode_partial_tile()

    - - - -

    ◆ opj_dwt_decode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_t *OPJ_RESTRICT tilec,
    OPJ_UINT32 numres 
    )
    -
    - -

    Inverse 9-7 wavelet transform in 2-D.

    -

    Apply an irreversible inverse DWT transform to a component of an image.

    Parameters
    - - - - -
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    -
    -
    - -

    References opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), and opj_tcd::whole_tile_decoding.

    - -

    Referenced by opj_tcd_dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_decode_tile()

    - - - -

    ◆ opj_dwt_decode_tile_97()

    - - - -

    ◆ opj_dwt_decode_v_func()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_decode_v_func (void * user_data,
    opj_tls_ttls 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_deinterleave_h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_deinterleave_h (OPJ_INT32a,
    OPJ_INT32b,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    -
    -static
    -
    - -

    Forward lazy transform (horizontal)

    - -

    Referenced by opj_dwt_encode_procedure().

    - -
    -
    - -

    ◆ opj_dwt_deinterleave_v()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_deinterleave_v (OPJ_INT32a,
    OPJ_INT32b,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 x,
    OPJ_INT32 cas 
    )
    -
    -static
    -
    - -

    Forward lazy transform (vertical)

    - -

    Referenced by opj_dwt_encode_procedure().

    - -
    -
    - -

    ◆ opj_dwt_encode()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_ttilec)
    -
    - -

    Forward 5-3 wavelet transform in 2-D.

    -

    Apply a reversible DWT transform to a component of an image.

    Parameters
    - - -
    tilecTile component information (current tile)
    -
    -
    - -

    References opj_dwt_encode_1(), and opj_dwt_encode_procedure().

    - -

    Referenced by main(), and opj_tcd_dwt_encode().

    - -
    -
    - -

    ◆ opj_dwt_encode_1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_encode_1 (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    -
    -static
    -
    - -

    Forward 5-3 wavelet transform in 1-D.

    - -

    References OPJ_D, OPJ_D_, OPJ_DD_, OPJ_S, OPJ_S_, and OPJ_SS_.

    - -

    Referenced by opj_dwt_encode().

    - -
    -
    - -

    ◆ opj_dwt_encode_1_real()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_encode_1_real (OPJ_INT32a,
    OPJ_INT32 dn,
    OPJ_INT32 sn,
    OPJ_INT32 cas 
    )
    -
    -static
    -
    - -

    Forward 9-7 wavelet transform in 1-D.

    - -

    References OPJ_D, OPJ_D_, OPJ_DD_, opj_int_fix_mul(), OPJ_S, OPJ_S_, and OPJ_SS_.

    - -

    Referenced by opj_dwt_encode_real().

    - -
    -
    - -

    ◆ opj_dwt_encode_procedure()

    - - - -

    ◆ opj_dwt_encode_real()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_ttilec)
    -
    - -

    Forward 9-7 wavelet transform in 2-D.

    -

    Apply an irreversible DWT transform to a component of an image.

    Parameters
    - - -
    tilecTile component information (current tile)
    -
    -
    - -

    References opj_dwt_encode_1_real(), and opj_dwt_encode_procedure().

    - -

    Referenced by opj_tcd_dwt_encode().

    - -
    -
    - -

    ◆ opj_dwt_encode_stepsize()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_encode_stepsize (OPJ_INT32 stepsize,
    OPJ_INT32 numbps,
    opj_stepsize_tbandno_stepsize 
    )
    -
    -static
    -
    - -

    Explicit calculation of the Quantization Stepsizes.

    - -

    References opj_stepsize::expn, opj_stepsize::mant, and opj_int_floorlog2().

    - -

    Referenced by opj_dwt_calc_explicit_stepsizes().

    - -
    -
    - -

    ◆ opj_dwt_get_band_coordinates()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_get_band_coordinates (opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 tcx0,
    OPJ_UINT32 tcy0,
    OPJ_UINT32 tcx1,
    OPJ_UINT32 tcy1,
    OPJ_UINT32tbx0,
    OPJ_UINT32tby0,
    OPJ_UINT32tbx1,
    OPJ_UINT32tby1 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_getgain()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
    -
    - -

    Get the gain of a subband for the reversible 5-3 DWT.

    -
    Parameters
    - - -
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    -
    -
    -
    Returns
    Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_dwt_getgain_real()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
    -
    - -

    Get the gain of a subband for the irreversible 9-7 DWT.

    -
    Parameters
    - - -
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    -
    -
    -
    Returns
    Returns the gain of the 9-7 wavelet transform
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_dwt_getnorm()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    -
    - -

    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.

    -
    Parameters
    - - - -
    levelLevel of the wavelet function
    orientBand of the wavelet function
    -
    -
    -
    Returns
    Returns the norm of the wavelet function
    - -

    References opj_dwt_norms.

    - -

    Referenced by opj_t1_getwmsedec().

    - -
    -
    - -

    ◆ opj_dwt_getnorm_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    -
    - -

    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.

    -
    Parameters
    - - - -
    levelLevel of the wavelet function
    orientBand of the wavelet function
    -
    -
    -
    Returns
    Returns the norm of the 9-7 wavelet
    - -

    References opj_dwt_norms_real.

    - -

    Referenced by opj_t1_getwmsedec().

    - -
    -
    - -

    ◆ opj_dwt_init_sparse_array()

    - - - -

    ◆ opj_dwt_interleave_partial_h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_interleave_partial_h (OPJ_INT32dest,
    OPJ_INT32 cas,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_line,
    OPJ_UINT32 sn,
    OPJ_UINT32 win_l_x0,
    OPJ_UINT32 win_l_x1,
    OPJ_UINT32 win_h_x0,
    OPJ_UINT32 win_h_x1 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_interleave_partial_v()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_interleave_partial_v (OPJ_INT32dest,
    OPJ_INT32 cas,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_col,
    OPJ_UINT32 nb_cols,
    OPJ_UINT32 sn,
    OPJ_UINT32 win_l_y0,
    OPJ_UINT32 win_l_y1,
    OPJ_UINT32 win_h_y0,
    OPJ_UINT32 win_h_y1 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_max_resolution()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_UINT32 opj_dwt_max_resolution (opj_tcd_resolution_t *OPJ_RESTRICT r,
    OPJ_UINT32 i 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_dwt_segment_grow()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_dwt_segment_grow (OPJ_UINT32 filter_width,
    OPJ_UINT32 max_size,
    OPJ_UINT32start,
    OPJ_UINT32end 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_idwt3_v_cas0()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_idwt3_v_cas0 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp_col,
    const OPJ_SIZE_T stride 
    )
    -
    -static
    -
    - -

    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate.

    - -

    Referenced by opj_idwt53_v().

    - -
    -
    - -

    ◆ opj_idwt3_v_cas1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_idwt3_v_cas1 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp_col,
    const OPJ_SIZE_T stride 
    )
    -
    -static
    -
    - -

    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate.

    - -

    Referenced by opj_idwt53_v().

    - -
    -
    - -

    ◆ opj_idwt53_h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_idwt53_h (const opj_dwt_tdwt,
    OPJ_INT32tiledp 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_idwt53_h_cas0()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_idwt53_h_cas0 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp 
    )
    -
    -static
    -
    - -

    Referenced by opj_idwt53_h().

    - -
    -
    - -

    ◆ opj_idwt53_h_cas1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_idwt53_h_cas1 (OPJ_INT32tmp,
    const OPJ_INT32 sn,
    const OPJ_INT32 len,
    OPJ_INT32tiledp 
    )
    -
    -static
    -
    - -

    Referenced by opj_idwt53_h().

    - -
    -
    - -

    ◆ opj_idwt53_v()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_idwt53_v (const opj_dwt_tdwt,
    OPJ_INT32tiledp_col,
    OPJ_SIZE_T stride,
    OPJ_INT32 nb_cols 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_v4dwt_decode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_v4dwt_decode (opj_v4dwt_t *OPJ_RESTRICT dwt)
    -
    -static
    -
    -
    - -

    ◆ opj_v4dwt_decode_step1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_decode_step1 (opj_v4_tw,
    OPJ_UINT32 start,
    OPJ_UINT32 end,
    const OPJ_FLOAT32 c 
    )
    -
    -static
    -
    - -

    References OPJ_RESTRICT.

    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_v4dwt_decode_step2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_decode_step2 (opj_v4_tl,
    opj_v4_tw,
    OPJ_UINT32 start,
    OPJ_UINT32 end,
    OPJ_UINT32 m,
    OPJ_FLOAT32 c 
    )
    -
    -static
    -
    - -

    References opj_uint_min().

    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_v4dwt_interleave_h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_interleave_h (opj_v4dwt_t *OPJ_RESTRICT dwt,
    OPJ_FLOAT32 *OPJ_RESTRICT a,
    OPJ_UINT32 width,
    OPJ_UINT32 remaining_height 
    )
    -
    -static
    -
    - -

    References OPJ_RESTRICT.

    - -

    Referenced by opj_dwt_decode_tile_97().

    - -
    -
    - -

    ◆ opj_v4dwt_interleave_partial_h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_interleave_partial_h (opj_v4dwt_tdwt,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_line,
    OPJ_UINT32 remaining_height 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_v4dwt_interleave_partial_v()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_interleave_partial_v (opj_v4dwt_t *OPJ_RESTRICT dwt,
    opj_sparse_array_int32_tsa,
    OPJ_UINT32 sa_col,
    OPJ_UINT32 nb_elts_read 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_v4dwt_interleave_v()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_v4dwt_interleave_v (opj_v4dwt_t *OPJ_RESTRICT dwt,
    OPJ_FLOAT32 *OPJ_RESTRICT a,
    OPJ_UINT32 width,
    OPJ_UINT32 nb_elts_read 
    )
    -
    -static
    -
    - -

    References OPJ_RESTRICT.

    - -

    Referenced by opj_dwt_decode_tile_97().

    - -
    -
    -

    Variable Documentation

    - -

    ◆ opj_c13318

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_c13318 = 1.625732422f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_alpha

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_dwt_alpha = 1.586134342f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_beta

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_dwt_beta = 0.052980118f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_delta

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_dwt_delta = -0.443506852f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_gamma

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_dwt_gamma = -0.882911075f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_norms

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT64 opj_dwt_norms[4][10]
    -
    -static
    -
    -Initial value:
    = {
    -
    {1.000, 1.500, 2.750, 5.375, 10.68, 21.34, 42.67, 85.33, 170.7, 341.3},
    -
    {1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
    -
    {1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
    -
    {.7186, .9218, 1.586, 3.043, 6.019, 12.01, 24.00, 47.97, 95.93}
    -
    }
    -
    -

    Referenced by opj_dwt_getnorm().

    - -
    -
    - -

    ◆ opj_dwt_norms_real

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT64 opj_dwt_norms_real[4][10]
    -
    -static
    -
    -Initial value:
    = {
    -
    {1.000, 1.965, 4.177, 8.403, 16.90, 33.84, 67.69, 135.3, 270.6, 540.9},
    -
    {2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
    -
    {2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
    -
    {2.080, 3.865, 8.307, 17.18, 34.71, 69.59, 139.3, 278.6, 557.2}
    -
    }
    -
    -

    Referenced by opj_dwt_calc_explicit_stepsizes(), and opj_dwt_getnorm_real().

    - -
    -
    - -

    ◆ opj_K

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT32 opj_K = 1.230174105f
    -
    -static
    -
    - -

    Referenced by opj_v4dwt_decode().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/dwt_8h.html b/build/doc/html/dwt_8h.html deleted file mode 100644 index 63d46d8ab..000000000 --- a/build/doc/html/dwt_8h.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - -OpenJPEG: dwt.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    dwt.h File Reference
    -
    -
    - -

    Implementation of a discrete wavelet transform (DWT) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_t *tilec)
     Forward 5-3 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
     Inverse 5-3 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
     Get the gain of a subband for the reversible 5-3 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT. More...
     
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_t *tilec)
     Forward 9-7 wavelet transform in 2-D. More...
     
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
     Inverse 9-7 wavelet transform in 2-D. More...
     
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
     Get the gain of a subband for the irreversible 9-7 DWT. More...
     
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level, OPJ_UINT32 orient)
     Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT. More...
     
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_t *tccp, OPJ_UINT32 prec)
     Explicit calculation of the Quantization Stepsizes. More...
     
    -

    Detailed Description

    -

    Implementation of a discrete wavelet transform (DWT)

    -

    The functions in DWT.C have for goal to realize forward and inverse discret wavelet transform with filter 5-3 (reversible) and filter 9-7 (irreversible). The functions in DWT.C are used by some function in TCD.C.

    -

    Function Documentation

    - -

    ◆ opj_dwt_calc_explicit_stepsizes()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_dwt_calc_explicit_stepsizes (opj_tccp_ttccp,
    OPJ_UINT32 prec 
    )
    -
    - -

    Explicit calculation of the Quantization Stepsizes.

    -
    Parameters
    - - - -
    tccpTile-component coding parameters
    precPrecint analyzed
    -
    -
    - -

    References J2K_CCP_QNTSTY_NOQNT, opj_tccp::numresolutions, opj_dwt_encode_stepsize(), opj_dwt_norms_real, opj_tccp::qmfbid, opj_tccp::qntsty, and opj_tccp::stepsizes.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_dwt_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_dwt_decode (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_ttilec,
    OPJ_UINT32 numres 
    )
    -
    - -

    Inverse 5-3 wavelet transform in 2-D.

    -

    Apply a reversible inverse DWT transform to a component of an image.

    Parameters
    - - - - -
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    -
    -
    - -

    References opj_dwt_decode_partial_tile(), opj_dwt_decode_tile(), opj_tcd::thread_pool, and opj_tcd::whole_tile_decoding.

    - -

    Referenced by main(), and opj_tcd_dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_decode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_dwt_decode_real (opj_tcd_tp_tcd,
    opj_tcd_tilecomp_t *OPJ_RESTRICT tilec,
    OPJ_UINT32 numres 
    )
    -
    - -

    Inverse 9-7 wavelet transform in 2-D.

    -

    Apply an irreversible inverse DWT transform to a component of an image.

    Parameters
    - - - - -
    p_tcdTCD handle
    tilecTile component information (current tile)
    numresNumber of resolution levels to decode
    -
    -
    - -

    References opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), and opj_tcd::whole_tile_decoding.

    - -

    Referenced by opj_tcd_dwt_decode().

    - -
    -
    - -

    ◆ opj_dwt_encode()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_dwt_encode (opj_tcd_tilecomp_ttilec)
    -
    - -

    Forward 5-3 wavelet transform in 2-D.

    -

    Apply a reversible DWT transform to a component of an image.

    Parameters
    - - -
    tilecTile component information (current tile)
    -
    -
    - -

    References opj_dwt_encode_1(), and opj_dwt_encode_procedure().

    - -

    Referenced by main(), and opj_tcd_dwt_encode().

    - -
    -
    - -

    ◆ opj_dwt_encode_real()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_dwt_encode_real (opj_tcd_tilecomp_ttilec)
    -
    - -

    Forward 9-7 wavelet transform in 2-D.

    -

    Apply an irreversible DWT transform to a component of an image.

    Parameters
    - - -
    tilecTile component information (current tile)
    -
    -
    - -

    References opj_dwt_encode_1_real(), and opj_dwt_encode_procedure().

    - -

    Referenced by opj_tcd_dwt_encode().

    - -
    -
    - -

    ◆ opj_dwt_getgain()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_dwt_getgain (OPJ_UINT32 orient)
    -
    - -

    Get the gain of a subband for the reversible 5-3 DWT.

    -
    Parameters
    - - -
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    -
    -
    -
    Returns
    Returns 0 if orient = 0, returns 1 if orient = 1 or 2, returns 2 otherwise
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_dwt_getgain_real()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_dwt_getgain_real (OPJ_UINT32 orient)
    -
    - -

    Get the gain of a subband for the irreversible 9-7 DWT.

    -
    Parameters
    - - -
    orientNumber that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
    -
    -
    -
    Returns
    Returns the gain of the 9-7 wavelet transform
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_dwt_getnorm()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_FLOAT64 opj_dwt_getnorm (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    -
    - -

    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.

    -
    Parameters
    - - - -
    levelLevel of the wavelet function
    orientBand of the wavelet function
    -
    -
    -
    Returns
    Returns the norm of the wavelet function
    - -

    References opj_dwt_norms.

    - -

    Referenced by opj_t1_getwmsedec().

    - -
    -
    - -

    ◆ opj_dwt_getnorm_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_FLOAT64 opj_dwt_getnorm_real (OPJ_UINT32 level,
    OPJ_UINT32 orient 
    )
    -
    - -

    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.

    -
    Parameters
    - - - -
    levelLevel of the wavelet function
    orientBand of the wavelet function
    -
    -
    -
    Returns
    Returns the norm of the 9-7 wavelet
    - -

    References opj_dwt_norms_real.

    - -

    Referenced by opj_t1_getwmsedec().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/dwt_8h_source.html b/build/doc/html/dwt_8h_source.html deleted file mode 100644 index 1cee5c959..000000000 --- a/build/doc/html/dwt_8h_source.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -OpenJPEG: dwt.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    dwt.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * All rights reserved.
    -
    15  *
    -
    16  * Redistribution and use in source and binary forms, with or without
    -
    17  * modification, are permitted provided that the following conditions
    -
    18  * are met:
    -
    19  * 1. Redistributions of source code must retain the above copyright
    -
    20  * notice, this list of conditions and the following disclaimer.
    -
    21  * 2. Redistributions in binary form must reproduce the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer in the
    -
    23  * documentation and/or other materials provided with the distribution.
    -
    24  *
    -
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    35  * POSSIBILITY OF SUCH DAMAGE.
    -
    36  */
    -
    37 
    -
    38 #ifndef OPJ_DWT_H
    -
    39 #define OPJ_DWT_H
    -
    40 
    -
    51 
    -
    52 
    -
    55 /* ----------------------------------------------------------------------- */
    - -
    62 
    - -
    71  opj_tcd_tilecomp_t* tilec,
    -
    72  OPJ_UINT32 numres);
    -
    73 
    - - - - - -
    102  OPJ_UINT32 numres);
    -
    103 
    - - - -
    123 /* ----------------------------------------------------------------------- */
    -
    127 
    -
    128 #endif /* OPJ_DWT_H */
    -
    -
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    -
    OPJ_UINT32 cw
    Definition: tcd.h:145
    -
    Definition: thread.c:504
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    -
    OPJ_UINT32 w
    Definition: dwt.c:1327
    -
    static void opj_dwt_segment_grow(OPJ_UINT32 filter_width, OPJ_UINT32 max_size, OPJ_UINT32 *start, OPJ_UINT32 *end)
    Definition: dwt.c:1858
    -
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    -
    OPJ_UINT32 win_x0
    Definition: tcd.h:215
    -
    static void opj_v4dwt_decode_step2(opj_v4_t *l, opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, OPJ_UINT32 m, OPJ_FLOAT32 c)
    Definition: dwt.c:2395
    -
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    -
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    -
    opj_dwt_t v
    Definition: dwt.c:1349
    -
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    -
    OPJ_INT32 x0
    Definition: tcd.h:159
    -
    static OPJ_UINT32 opj_dwt_max_resolution(opj_tcd_resolution_t *OPJ_RESTRICT r, OPJ_UINT32 i)
    Definition: dwt.c:1307
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    -
    #define OPJ_D__off(i, off)
    Definition: dwt.c:1675
    -
    #define PARALLEL_COLS_53
    Number of columns that we can process in parallel in the vertical pass.
    Definition: dwt.c:78
    -
    static void opj_v4dwt_interleave_partial_h(opj_v4dwt_t *dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 remaining_height)
    Definition: dwt.c:2225
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:216
    -
    static const OPJ_FLOAT32 opj_dwt_delta
    Definition: dwt.c:108
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    OPJ_INT32 x0
    Definition: tcd.h:173
    -
    OPJ_INT32 y1
    Definition: tcd.h:173
    -
    OPJ_INT32 x1
    Definition: tcd.h:173
    -
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    -
    OPJ_UINT32 win_l_x0
    Definition: dwt.c:99
    -
    OPJ_INT32 x1
    Definition: tcd.h:124
    -
    static OPJ_BOOL opj_dwt_decode_partial_97(opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Definition: dwt.c:2642
    -
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    -
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    -
    static void opj_dwt_interleave_partial_v(OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_cols, OPJ_UINT32 sn, OPJ_UINT32 win_l_y0, OPJ_UINT32 win_l_y1, OPJ_UINT32 win_h_y0, OPJ_UINT32 win_h_y1)
    Definition: dwt.c:1570
    -
    Definition: dwt.c:1324
    -
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    -
    static void opj_idwt53_h_cas1(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
    Definition: dwt.c:483
    -
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    -
    #define OPJ_S_(i)
    Definition: dwt.c:210
    -
    OPJ_UINT32 max_j
    Definition: dwt.c:1330
    -
    static OPJ_BOOL opj_dwt_decode_partial_tile(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Definition: dwt.c:1925
    -
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    -
    Definition: dwt.c:1348
    -
    Definition: dwt.c:90
    -
    static void opj_idwt53_v(const opj_dwt_t *dwt, OPJ_INT32 *tiledp_col, OPJ_SIZE_T stride, OPJ_INT32 nb_cols)
    Definition: dwt.c:953
    -
    static const OPJ_FLOAT32 opj_K
    Definition: dwt.c:110
    -
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    -
    static OPJ_BOOL opj_dwt_decode_tile_97(opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Definition: dwt.c:2510
    -
    OPJ_INT32 *OPJ_RESTRICT tiledp
    Definition: dwt.c:1328
    -
    Definition: dwt.c:83
    -
    OPJ_UINT32 min_j
    Definition: dwt.c:1353
    -
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    -
    OPJ_INT32 x1
    Definition: tcd.h:191
    -
    OPJ_UINT32 win_h_x1
    Definition: dwt.c:102
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    static void opj_dwt_encode_1(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward 5-3 wavelet transform in 1-D.
    Definition: dwt.c:347
    -
    OPJ_UINT32 ph
    Definition: tcd.h:175
    -
    static void opj_dwt_encode_1_real(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward 9-7 wavelet transform in 1-D.
    Definition: dwt.c:1040
    -
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    -
    OPJ_INT32 y1
    Definition: tcd.h:124
    -
    OPJ_UINT32 rh
    Definition: dwt.c:1350
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    -
    static void opj_idwt3_v_cas0(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on even coordinate.
    Definition: dwt.c:854
    -
    #define OPJ_D_off(i, off)
    Definition: dwt.c:1673
    -
    OPJ_INT32 x0
    Definition: tcd.h:191
    -
    OPJ_UINT32 pw
    Definition: tcd.h:175
    -
    OPJ_INT32 x0
    Definition: tcd.h:124
    -
    void(* DWT1DFN)(const opj_dwt_t *v)
    Virtual function type for wavelet transform in 1-D.
    Definition: dwt.c:118
    -
    Quantization stepsize.
    Definition: j2k.h:165
    -
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    -
    static void opj_dwt_encode_stepsize(OPJ_INT32 stepsize, OPJ_INT32 numbps, opj_stepsize_t *bandno_stepsize)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1089
    -
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    -
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    -
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    -
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    -
    OPJ_UINT32 rw
    Definition: dwt.c:1326
    -
    static const OPJ_FLOAT32 opj_c13318
    Definition: dwt.c:111
    -
    static const OPJ_FLOAT32 opj_dwt_beta
    Definition: dwt.c:106
    -
    opj_dwt_t h
    Definition: dwt.c:1325
    -
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    -
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    static void opj_v4dwt_interleave_v(opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 nb_elts_read)
    Definition: dwt.c:2251
    -
    Precinct structure.
    Definition: tcd.h:142
    - -
    static const OPJ_FLOAT32 opj_dwt_gamma
    Definition: dwt.c:107
    -
    static void opj_v4dwt_decode(opj_v4dwt_t *OPJ_RESTRICT dwt)
    Definition: dwt.c:2444
    -
    struct v4dwt_local opj_v4dwt_t
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    Sub-band structure.
    Definition: tcd.h:157
    -
    static void opj_v4dwt_interleave_h(opj_v4dwt_t *OPJ_RESTRICT dwt, OPJ_FLOAT32 *OPJ_RESTRICT a, OPJ_UINT32 width, OPJ_UINT32 remaining_height)
    Definition: dwt.c:2171
    -
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    -
    static void opj_dwt_interleave_partial_h(OPJ_INT32 *dest, OPJ_INT32 cas, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_line, OPJ_UINT32 sn, OPJ_UINT32 win_l_x0, OPJ_UINT32 win_l_x1, OPJ_UINT32 win_h_x0, OPJ_UINT32 win_h_x1)
    Definition: dwt.c:1543
    -
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    #define VREG_INT_COUNT
    Number of int32 values in a SSE2 register.
    Definition: dwt.c:74
    -
    static OPJ_BOOL opj_dwt_encode_procedure(opj_tcd_tilecomp_t *tilec, void(*p_function)(OPJ_INT32 *, OPJ_INT32, OPJ_INT32, OPJ_INT32))
    Definition: dwt.c:1109
    -
    OPJ_INT32 cas
    Definition: dwt.c:87
    -
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    -
    OPJ_INT32 y0
    Definition: tcd.h:173
    -
    static const OPJ_FLOAT64 opj_dwt_norms_real[4][10]
    Definition: dwt.c:233
    -
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:218
    -
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    -
    static void opj_idwt3_v_cas1(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp_col, const OPJ_SIZE_T stride)
    Vertical inverse 5x3 wavelet transform for one column, when top-most pixel is on odd coordinate.
    Definition: dwt.c:904
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    OPJ_UINT32 min_j
    Definition: dwt.c:1329
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    -
    static void opj_dwt_deinterleave_v(OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 x, OPJ_INT32 cas)
    Forward lazy transform (vertical)
    Definition: dwt.c:273
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_FLOAT32 f[4]
    Definition: dwt.c:91
    -
    #define OPJ_SS__off(i, off)
    Definition: dwt.c:1676
    -
    union opj_tcd_precinct::@3 cblks
    -
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    -
    Definition: sparse_array.c:35
    -
    OPJ_UINT32 qntsty
    quantisation style
    Definition: j2k.h:189
    -
    #define OPJ_D(i)
    Definition: dwt.c:209
    -
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    -
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    -
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    -
    static INLINE OPJ_UINT32 opj_uint_subs(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated difference of two unsigned integers.
    Definition: opj_intmath.h:102
    -
    static void opj_dwt_decode_partial_1(OPJ_INT32 *a, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
    Definition: dwt.c:1597
    -
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    -
    OPJ_INT32 *OPJ_RESTRICT tiledp
    Definition: dwt.c:1352
    -
    #define OPJ_DD__off(i, off)
    Definition: dwt.c:1677
    -
    OPJ_INT32 y0
    Definition: tcd.h:159
    -
    #define OPJ_DD_(i)
    Definition: dwt.c:214
    -
    Code-block for decoding.
    Definition: tcd.h:120
    -
    OPJ_UINT32 w
    Definition: dwt.c:1351
    -
    static opj_sparse_array_int32_t * opj_dwt_init_sparse_array(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Definition: dwt.c:1869
    -
    Tile-component coding parameters.
    Definition: j2k.h:175
    -
    OPJ_INT32 * data
    Definition: tcd.h:204
    -
    OPJ_INT32 * mem
    Definition: dwt.c:84
    -
    opj_v4_t * wavelet
    Definition: dwt.c:95
    -
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    -
    static const OPJ_FLOAT32 opj_dwt_alpha
    Definition: dwt.c:105
    -
    struct dwt_local opj_dwt_t
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    -
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    OPJ_UINT32 win_l_x1
    Definition: dwt.c:100
    -
    static void opj_idwt53_h_cas0(OPJ_INT32 *tmp, const OPJ_INT32 sn, const OPJ_INT32 len, OPJ_INT32 *tiledp)
    Definition: dwt.c:415
    -
    OPJ_INT32 y0
    Definition: tcd.h:124
    -
    static void opj_dwt_decode_partial_1_parallel(OPJ_INT32 *a, OPJ_UINT32 nb_cols, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas, OPJ_INT32 win_l_x0, OPJ_INT32 win_l_x1, OPJ_INT32 win_h_x0, OPJ_INT32 win_h_x1)
    Definition: dwt.c:1679
    -
    OPJ_UINT32 win_h_x0
    Definition: dwt.c:101
    -
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    -
    static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t *tp, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 i)
    Inverse wavelet transform in 2-D.
    Definition: dwt.c:1381
    -
    static void opj_v4dwt_decode_step1(opj_v4_t *w, OPJ_UINT32 start, OPJ_UINT32 end, const OPJ_FLOAT32 c)
    Definition: dwt.c:2376
    -
    static void opj_v4dwt_interleave_partial_v(opj_v4dwt_t *OPJ_RESTRICT dwt, opj_sparse_array_int32_t *sa, OPJ_UINT32 sa_col, OPJ_UINT32 nb_elts_read)
    Definition: dwt.c:2273
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    -
    #define OPJ_S_off(i, off)
    Definition: dwt.c:1672
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:217
    -
    OPJ_INT32 sn
    Definition: dwt.c:86
    -
    #define OPJ_S(i)
    Definition: dwt.c:208
    -
    OPJ_INT32 cas
    Definition: dwt.c:98
    -
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    static void opj_dwt_get_band_coordinates(opj_tcd_tilecomp_t *tilec, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 tcx0, OPJ_UINT32 tcy0, OPJ_UINT32 tcx1, OPJ_UINT32 tcy1, OPJ_UINT32 *tbx0, OPJ_UINT32 *tby0, OPJ_UINT32 *tbx1, OPJ_UINT32 *tby1)
    Definition: dwt.c:1816
    -
    static void opj_dwt_decode_v_func(void *user_data, opj_tls_t *tls)
    Definition: dwt.c:1357
    -
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    -
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    -
    #define OPJ_S__off(i, off)
    Definition: dwt.c:1674
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    -
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    -
    OPJ_UINT32 max_j
    Definition: dwt.c:1354
    -
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    -
    OPJ_INT32 sn
    Definition: dwt.c:97
    -
    Definition: dwt.c:94
    -
    static const OPJ_FLOAT64 opj_dwt_norms[4][10]
    Definition: dwt.c:221
    -
    #define OPJ_SS_(i)
    Definition: dwt.c:213
    -
    OPJ_INT32 dn
    Definition: dwt.c:85
    -
    #define J2K_CCP_QNTSTY_NOQNT
    Definition: j2k.h:64
    -
    static void opj_dwt_deinterleave_h(OPJ_INT32 *a, OPJ_INT32 *b, OPJ_INT32 dn, OPJ_INT32 sn, OPJ_INT32 cas)
    Forward lazy transform (horizontal)
    Definition: dwt.c:249
    -
    OPJ_UINT32 ch
    Definition: tcd.h:145
    -
    Definition: thread.c:605
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    #define OPJ_D_(i)
    Definition: dwt.c:211
    -
    static void opj_dwt_decode_h_func(void *user_data, opj_tls_t *tls)
    Definition: dwt.c:1333
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    -
    static void opj_idwt53_h(const opj_dwt_t *dwt, OPJ_INT32 *tiledp)
    Definition: dwt.c:559
    -
    OPJ_INT32 dn
    Definition: dwt.c:96
    - - - - diff --git a/build/doc/html/dynsections.js b/build/doc/html/dynsections.js deleted file mode 100644 index ea0a7b39a..000000000 --- a/build/doc/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -OpenJPEG: event.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    event.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - -

    -Macros

    #define OPJ_MSG_SIZE   512 /* 512 bytes should be more than enough for a short message */
     
    - - - - - - - - - - -

    -Functions

    static void opj_default_callback (const char *msg, void *client_data)
     Default callback function. More...
     
    OPJ_BOOL opj_event_msg (opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
     Write formatted data to a string and send the string to a user callback. More...
     
    void opj_set_default_event_handler (opj_event_mgr_t *p_manager)
     Set the event manager with the default callback function for the 3 levels. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_MSG_SIZE

    - -
    -
    - - - - -
    #define OPJ_MSG_SIZE   512 /* 512 bytes should be more than enough for a short message */
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_default_callback()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_default_callback (const char * msg,
    void * client_data 
    )
    -
    -static
    -
    - -

    Default callback function.

    -

    Do nothing.

    - -

    References OPJ_ARG_NOT_USED.

    - -

    Referenced by opj_set_default_event_handler().

    - -
    -
    - -

    ◆ opj_event_msg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_event_msg (opj_event_mgr_tevent_mgr,
    OPJ_INT32 event_type,
    const char * fmt,
     ... 
    )
    -
    - -

    Write formatted data to a string and send the string to a user callback.

    -
    Parameters
    - - - - -
    event_mgrEvent handler
    event_typeEvent type or callback to use to send the message
    fmtFormat-control string (plus optional arguments)
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_event_mgr::error_handler, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_event_mgr::info_handler, opj_event_mgr::m_error_data, opj_event_mgr::m_info_data, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_MSG_SIZE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    - -

    Referenced by opj_j2k_are_all_used_components_decoded(), opj_j2k_check_poc_val(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encode(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_get_sot_values(), opj_j2k_get_tile(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_pre_write_tile(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_plm(), opj_j2k_read_plt(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_qcd(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_tlm(), opj_j2k_read_unk(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_start_compress(), opj_j2k_update_image_dimensions(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_plt_in_memory(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_j2k_write_tile(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_decode(), opj_jp2_get_tile(), opj_jp2_read_boxhdr(), opj_jp2_read_boxhdr_char(), opj_jp2_read_bpcc(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_read_jp(), opj_jp2_read_jp2h(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_ftyp(), opj_jp2_write_jp2c(), opj_jp2_write_jp2h(), opj_procedure_list_add_procedure(), opj_read_header(), opj_set_decoded_components(), opj_setup_decoder(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_skip(), opj_stream_write_skip(), opj_t1_clbl_decode_processor(), opj_t1_decode_cblk(), opj_t2_encode_packet(), opj_t2_read_packet_data(), opj_t2_read_packet_header(), opj_t2_skip_packet_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_set_default_event_handler()

    - -
    -
    - - - - - - - - -
    void opj_set_default_event_handler (opj_event_mgr_tp_manager)
    -
    -
    -
    - - - - diff --git a/build/doc/html/event_8h.html b/build/doc/html/event_8h.html deleted file mode 100644 index 5f8ac9a75..000000000 --- a/build/doc/html/event_8h.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - -OpenJPEG: event.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    event.h File Reference
    -
    -
    - -

    Implementation of a event callback system. -More...

    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_event_mgr
     Message handler object used for. More...
     
    - - - - - - - - - - -

    -Macros

    #define EVT_ERROR   1
     Error event type. More...
     
    #define EVT_WARNING   2
     Warning event type. More...
     
    #define EVT_INFO   4
     Debug event type. More...
     
    - - - - -

    -Typedefs

    typedef struct opj_event_mgr opj_event_mgr_t
     Message handler object used for. More...
     
    - - - - - - - - -

    -Functions

    Exported functions (see also openjpeg.h)
    OPJ_BOOL opj_event_msg (opj_event_mgr_t *event_mgr, OPJ_INT32 event_type, const char *fmt,...)
     Write formatted data to a string and send the string to a user callback. More...
     
    void opj_set_default_event_handler (opj_event_mgr_t *p_manager)
     Set the event manager with the default callback function for the 3 levels. More...
     
    -

    Detailed Description

    -

    Implementation of a event callback system.

    -

    The functions in EVENT.C have for goal to send output messages (errors, warnings, debug) to the user.

    -

    Macro Definition Documentation

    - -

    ◆ EVT_ERROR

    - -
    -
    - - - - -
    #define EVT_ERROR   1
    -
    - -

    Error event type.

    - -
    -
    - -

    ◆ EVT_INFO

    - -
    -
    - - - - -
    #define EVT_INFO   4
    -
    - -

    Debug event type.

    - -
    -
    - -

    ◆ EVT_WARNING

    - -
    -
    - - - - -
    #define EVT_WARNING   2
    -
    - -

    Warning event type.

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ opj_event_mgr_t

    - -
    -
    - - - - -
    typedef struct opj_event_mgr opj_event_mgr_t
    -
    - -

    Message handler object used for.

    -
      -
    • -Error messages
    • -
    • -Warning messages
    • -
    • -Debugging messages
    • -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_event_msg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_event_msg (opj_event_mgr_tevent_mgr,
    OPJ_INT32 event_type,
    const char * fmt,
     ... 
    )
    -
    - -

    Write formatted data to a string and send the string to a user callback.

    -
    Parameters
    - - - - -
    event_mgrEvent handler
    event_typeEvent type or callback to use to send the message
    fmtFormat-control string (plus optional arguments)
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_event_mgr::error_handler, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_event_mgr::info_handler, opj_event_mgr::m_error_data, opj_event_mgr::m_info_data, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_MSG_SIZE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    - -

    Referenced by opj_j2k_are_all_used_components_decoded(), opj_j2k_check_poc_val(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encode(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_get_sot_values(), opj_j2k_get_tile(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_pre_write_tile(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_plm(), opj_j2k_read_plt(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_qcd(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_tlm(), opj_j2k_read_unk(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_start_compress(), opj_j2k_update_image_dimensions(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_plt_in_memory(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_j2k_write_tile(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_decode(), opj_jp2_get_tile(), opj_jp2_read_boxhdr(), opj_jp2_read_boxhdr_char(), opj_jp2_read_bpcc(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_read_jp(), opj_jp2_read_jp2h(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_ftyp(), opj_jp2_write_jp2c(), opj_jp2_write_jp2h(), opj_procedure_list_add_procedure(), opj_read_header(), opj_set_decoded_components(), opj_setup_decoder(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_skip(), opj_stream_write_skip(), opj_t1_clbl_decode_processor(), opj_t1_decode_cblk(), opj_t2_encode_packet(), opj_t2_read_packet_data(), opj_t2_read_packet_header(), opj_t2_skip_packet_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_set_default_event_handler()

    - -
    -
    - - - - - - - - -
    void opj_set_default_event_handler (opj_event_mgr_tp_manager)
    -
    -
    -
    - - - - diff --git a/build/doc/html/event_8h_source.html b/build/doc/html/event_8h_source.html deleted file mode 100644 index cd299ed2e..000000000 --- a/build/doc/html/event_8h_source.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -OpenJPEG: event.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    event.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    8  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    9  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    10  * All rights reserved.
    -
    11  *
    -
    12  * Redistribution and use in source and binary forms, with or without
    -
    13  * modification, are permitted provided that the following conditions
    -
    14  * are met:
    -
    15  * 1. Redistributions of source code must retain the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer.
    -
    17  * 2. Redistributions in binary form must reproduce the above copyright
    -
    18  * notice, this list of conditions and the following disclaimer in the
    -
    19  * documentation and/or other materials provided with the distribution.
    -
    20  *
    -
    21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    31  * POSSIBILITY OF SUCH DAMAGE.
    -
    32  */
    -
    33 #ifndef OPJ_EVENT_H
    -
    34 #define OPJ_EVENT_H
    -
    35 
    -
    50 typedef struct opj_event_mgr {
    -
    52  void * m_error_data;
    - -
    56  void * m_info_data;
    - - - - -
    64 
    -
    65 
    -
    66 #define EVT_ERROR 1
    -
    67 #define EVT_WARNING 2
    -
    68 #define EVT_INFO 4
    -
    72 
    -
    73 
    -
    75 /* ----------------------------------------------------------------------- */
    -
    76 
    -
    77 
    -
    78 /* ----------------------------------------------------------------------- */
    -
    79 
    -
    89 OPJ_BOOL opj_event_msg(opj_event_mgr_t* event_mgr, OPJ_INT32 event_type,
    -
    90  const char *fmt, ...);
    -
    91 /* ----------------------------------------------------------------------- */
    -
    92 
    - -
    97 
    -
    98 /*
    -
    99 #ifdef __GNUC__
    -
    100 #pragma GCC poison printf fprintf
    -
    101 #endif
    -
    102 */
    -
    103 
    -
    107 
    -
    108 #endif /* OPJ_EVENT_H */
    -
    -
    opj_msg_callback warning_handler
    Warning message callback if available, NULL otherwise.
    Definition: event.h:60
    -
    static void opj_default_callback(const char *msg, void *client_data)
    Default callback function.
    Definition: event.c:81
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    Message handler object used for.
    Definition: event.h:50
    -
    void(* opj_msg_callback)(const char *msg, void *client_data)
    Callback function prototype for events.
    Definition: openjpeg.h:343
    -
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    -
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    - -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    #define OPJ_MSG_SIZE
    -
    opj_msg_callback info_handler
    Debug message callback if available, NULL otherwise.
    Definition: event.h:62
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    void * m_info_data
    Data to call the event manager upon.
    Definition: event.h:56
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * m_error_data
    Data to call the event manager upon.
    Definition: event.h:52
    -
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    void * m_warning_data
    Data to call the event manager upon.
    Definition: event.h:54
    -
    struct opj_event_mgr opj_event_mgr_t
    Message handler object used for.
    -
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    -
    opj_msg_callback error_handler
    Error message callback if available, NULL otherwise.
    Definition: event.h:58
    - - - - diff --git a/build/doc/html/faixbox__manager_8c.html b/build/doc/html/faixbox__manager_8c.html deleted file mode 100644 index 70a3cf2a4..000000000 --- a/build/doc/html/faixbox__manager_8c.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - - - - -OpenJPEG: faixbox_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    faixbox_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include "faixbox_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    faixbox_param_tgene_faixbox (box_param_t *box)
     generate faix box More...
     
    void print_faixbox (faixbox_param_t *faix)
     print faix box parameters More...
     
    void delete_faixbox (faixbox_param_t **faix)
     delete faix box More...
     
    Byte8_t get_nmax (faixbox_param_t *faix)
     get nmax parameter value from faix box More...
     
    Byte8_t get_m (faixbox_param_t *faix)
     get m parameter value from faix box More...
     
    Byte8_t get_elemOff (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get offset of a element from faix box More...
     
    Byte8_t get_elemLen (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get length of a element from faix box More...
     
    Byte4_t get_elemAux (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get aux of a element from faix box More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_faixbox()

    - -
    -
    - - - - - - - - -
    void delete_faixbox (faixbox_param_t ** faix)
    -
    - -

    delete faix box

    -
    Parameters
    - - -
    [in,out]faixaddressof the faixbox pointer
    -
    -
    - -

    Referenced by delete_index().

    - -
    -
    - -

    ◆ gene_faixbox()

    - - - -

    ◆ get_elemAux()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_elemAux (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get aux of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox4_param::aux, subfaixbox8_param::aux, subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, get_nmax(), faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by print_faixbox().

    - -
    -
    - -

    ◆ get_elemLen()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t get_elemLen (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get length of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::len, faixelem8_param::len, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_precinct(), enqueue_tile(), and print_faixbox().

    - -
    -
    - -

    ◆ get_elemOff()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t get_elemOff (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get offset of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::off, faixelem8_param::off, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), and print_faixbox().

    - -
    -
    - -

    ◆ get_m()

    - -
    -
    - - - - - - - - -
    Byte8_t get_m (faixbox_param_tfaix)
    -
    - -

    get m parameter value from faix box

    -
    Parameters
    - - -
    [in]faixfaix box pointer
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::m, subfaixbox8_param::m, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_tile(), gene_cachemodel(), and print_faixbox().

    - -
    -
    - -

    ◆ get_nmax()

    - - - -

    ◆ print_faixbox()

    - -
    -
    - - - - - - - - -
    void print_faixbox (faixbox_param_tfaix)
    -
    - -

    print faix box parameters

    -
    Parameters
    - - -
    [in]faixfaix box pointer
    -
    -
    - -

    References get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), logstream, and faixbox_param::version.

    - -

    Referenced by print_index().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/faixbox__manager_8h.html b/build/doc/html/faixbox__manager_8h.html deleted file mode 100644 index 9e5bd2e2a..000000000 --- a/build/doc/html/faixbox__manager_8h.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - -OpenJPEG: faixbox_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    faixbox_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "box_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - -

    -Data Structures

    struct  faixelem4_param
     4byte parameters of a faix element More...
     
    struct  faixelem8_param
     8byte parameters of a faix element More...
     
    struct  subfaixbox4_param
     4byte parameters of fragment array index box More...
     
    struct  subfaixbox8_param
     8byte parameters of fragment array index box More...
     
    union  subfaixbox_param
     variable sized parameters in fragment array index box More...
     
    struct  faixbox_param
     fragment array index box parameters More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    typedef struct faixelem4_param faixelem4_param_t
     4byte parameters of a faix element More...
     
    typedef struct faixelem8_param faixelem8_param_t
     8byte parameters of a faix element More...
     
    typedef struct subfaixbox4_param subfaixbox4_param_t
     4byte parameters of fragment array index box More...
     
    typedef struct subfaixbox8_param subfaixbox8_param_t
     8byte parameters of fragment array index box More...
     
    typedef union subfaixbox_param subfaixbox_param_t
     variable sized parameters in fragment array index box More...
     
    typedef struct faixbox_param faixbox_param_t
     fragment array index box parameters More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    faixbox_param_tgene_faixbox (box_param_t *box)
     generate faix box More...
     
    void print_faixbox (faixbox_param_t *faix)
     print faix box parameters More...
     
    void delete_faixbox (faixbox_param_t **faix)
     delete faix box More...
     
    Byte8_t get_nmax (faixbox_param_t *faix)
     get nmax parameter value from faix box More...
     
    Byte8_t get_m (faixbox_param_t *faix)
     get m parameter value from faix box More...
     
    Byte8_t get_elemOff (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get offset of a element from faix box More...
     
    Byte8_t get_elemLen (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get length of a element from faix box More...
     
    Byte4_t get_elemAux (faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
     get aux of a element from faix box More...
     
    -

    Typedef Documentation

    - -

    ◆ faixbox_param_t

    - -
    -
    - - - - -
    typedef struct faixbox_param faixbox_param_t
    -
    - -

    fragment array index box parameters

    -

    I.3.2.4.2 Fragment Array Index box

    - -
    -
    - -

    ◆ faixelem4_param_t

    - -
    -
    - - - - -
    typedef struct faixelem4_param faixelem4_param_t
    -
    - -

    4byte parameters of a faix element

    - -
    -
    - -

    ◆ faixelem8_param_t

    - -
    -
    - - - - -
    typedef struct faixelem8_param faixelem8_param_t
    -
    - -

    8byte parameters of a faix element

    - -
    -
    - -

    ◆ subfaixbox4_param_t

    - -
    -
    - - - - -
    typedef struct subfaixbox4_param subfaixbox4_param_t
    -
    - -

    4byte parameters of fragment array index box

    - -
    -
    - -

    ◆ subfaixbox8_param_t

    - -
    -
    - - - - -
    typedef struct subfaixbox8_param subfaixbox8_param_t
    -
    - -

    8byte parameters of fragment array index box

    - -
    -
    - -

    ◆ subfaixbox_param_t

    - -
    -
    - - - - -
    typedef union subfaixbox_param subfaixbox_param_t
    -
    - -

    variable sized parameters in fragment array index box

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_faixbox()

    - -
    -
    - - - - - - - - -
    void delete_faixbox (faixbox_param_t ** faix)
    -
    - -

    delete faix box

    -
    Parameters
    - - -
    [in,out]faixaddressof the faixbox pointer
    -
    -
    - -

    Referenced by delete_index().

    - -
    -
    - -

    ◆ gene_faixbox()

    - - - -

    ◆ get_elemAux()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_elemAux (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get aux of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox4_param::aux, subfaixbox8_param::aux, subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, get_nmax(), faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by print_faixbox().

    - -
    -
    - -

    ◆ get_elemLen()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t get_elemLen (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get length of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::len, faixelem8_param::len, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_precinct(), enqueue_tile(), and print_faixbox().

    - -
    -
    - -

    ◆ get_elemOff()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t get_elemOff (faixbox_param_tfaix,
    Byte8_t elem_id,
    Byte8_t row_id 
    )
    -
    - -

    get offset of a element from faix box

    -
    Parameters
    - - - - -
    [in]faixfaix box pointer
    [in]elem_idelement id in a row (0<= <nmax)
    [in]row_idrow id (0<= <m)
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::elem, subfaixbox8_param::elem, get_nmax(), faixelem4_param::off, faixelem8_param::off, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), and print_faixbox().

    - -
    -
    - -

    ◆ get_m()

    - -
    -
    - - - - - - - - -
    Byte8_t get_m (faixbox_param_tfaix)
    -
    - -

    get m parameter value from faix box

    -
    Parameters
    - - -
    [in]faixfaix box pointer
    -
    -
    - -

    References subfaixbox_param::byte4_params, subfaixbox_param::byte8_params, subfaixbox4_param::m, subfaixbox8_param::m, faixbox_param::subfaixbox, and faixbox_param::version.

    - -

    Referenced by enqueue_tile(), gene_cachemodel(), and print_faixbox().

    - -
    -
    - -

    ◆ get_nmax()

    - - - -

    ◆ print_faixbox()

    - -
    -
    - - - - - - - - -
    void print_faixbox (faixbox_param_tfaix)
    -
    - -

    print faix box parameters

    -
    Parameters
    - - -
    [in]faixfaix box pointer
    -
    -
    - -

    References get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), logstream, and faixbox_param::version.

    - -

    Referenced by print_index().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/faixbox__manager_8h_source.html b/build/doc/html/faixbox__manager_8h_source.html deleted file mode 100644 index 225412f0f..000000000 --- a/build/doc/html/faixbox__manager_8h_source.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -OpenJPEG: faixbox_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    faixbox_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef FAIXBOX_MANAGER_H_
    -
    32 # define FAIXBOX_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "box_manager.h"
    -
    36 
    -
    38 typedef struct faixelem4_param {
    - - - -
    42 
    -
    44 typedef struct faixelem8_param {
    - - - -
    48 
    -
    50 typedef struct subfaixbox4_param {
    - - - - - -
    57 
    -
    59 typedef struct subfaixbox8_param {
    - - - - - -
    66 
    -
    68 typedef union subfaixbox_param {
    - - - - - -
    74 
    -
    77 typedef struct faixbox_param {
    - - - -
    81 
    -
    82 
    - -
    90 
    -
    91 
    -
    97 void print_faixbox(faixbox_param_t *faix);
    -
    98 
    -
    99 
    -
    105 void delete_faixbox(faixbox_param_t **faix);
    -
    106 
    - -
    113 
    - -
    120 
    -
    128 Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    -
    129 
    -
    137 Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    -
    138 
    -
    146 Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id);
    -
    147 
    -
    148 #endif /* !FAIXBOX_MANAGER_H_ */
    -
    -
    union subfaixbox_param subfaixbox_param_t
    variable sized parameters in fragment array index box
    -
    4byte parameters of fragment array index box
    Definition: faixbox_manager.h:50
    -
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    -
    Byte4_t * aux
    dynamic array pointer of auxiliary
    Definition: faixbox_manager.h:63
    -
    Byte4_t len
    length
    Definition: faixbox_manager.h:40
    -
    Byte4_t off
    offset
    Definition: faixbox_manager.h:39
    -
    #define logstream
    Definition: faixbox_manager.c:42
    -
    Byte4_t nmax
    maximum number of valid elements in any row of the array
    Definition: faixbox_manager.h:51
    -
    Byte8_t nmax
    maximum number of valid elements in any row of the array
    Definition: faixbox_manager.h:60
    -
    Byte8_t m
    number of raws of the array
    Definition: faixbox_manager.h:61
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    struct subfaixbox4_param subfaixbox4_param_t
    4byte parameters of fragment array index box
    -
    8byte parameters of fragment array index box
    Definition: faixbox_manager.h:59
    -
    Byte4_t * aux
    dynamic array pointer of auxiliary
    Definition: faixbox_manager.h:54
    -
    box parameters
    Definition: box_manager.h:37
    -
    Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get aux of a element from faix box
    Definition: faixbox_manager.c:203
    -
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    faixelem8_param_t * elem
    dynamic array pointer of faix elements
    Definition: faixbox_manager.h:62
    -
    Byte4_t get_elemAux(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get aux of a element from faix box
    Definition: faixbox_manager.c:203
    -
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    -
    Byte_t version
    Refer to the Table I.3 - Version values.
    Definition: faixbox_manager.h:78
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    struct faixbox_param faixbox_param_t
    fragment array index box parameters
    -
    Byte8_t off
    offset
    Definition: faixbox_manager.h:45
    -
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    -
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    -
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    -
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    -
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    -
    8byte parameters of a faix element
    Definition: faixbox_manager.h:44
    -
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    -
    subfaixbox8_param_t * byte8_params
    parameters with 8byte codes for version 1 or 3
    Definition: faixbox_manager.h:72
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    -
    faixelem4_param_t * elem
    dynamic array pointer of faix elements
    Definition: faixbox_manager.h:53
    -
    Byte4_t m
    number of raws of the array
    Definition: faixbox_manager.h:52
    -
    #define FCGI_stderr
    Definition: faixbox_manager.c:41
    -
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    -
    4byte parameters of a faix element
    Definition: faixbox_manager.h:38
    -
    variable sized parameters in fragment array index box
    Definition: faixbox_manager.h:68
    -
    subfaixbox4_param_t * byte4_params
    parameters with 4byte codes for version 0 or 2
    Definition: faixbox_manager.h:70
    - -
    Byte8_t len
    length
    Definition: faixbox_manager.h:46
    -
    struct faixelem8_param faixelem8_param_t
    8byte parameters of a faix element
    -
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    -
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    -
    struct subfaixbox8_param subfaixbox8_param_t
    8byte parameters of fragment array index box
    -
    struct faixelem4_param faixelem4_param_t
    4byte parameters of a faix element
    - -
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    - -
    subfaixbox_param_t subfaixbox
    rest information in faixbox
    Definition: faixbox_manager.h:79
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte4_t fetch_DBox4bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 4-byte big endian Byte codes in file stream
    Definition: box_manager.c:336
    - -
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    - - - - diff --git a/build/doc/html/files.html b/build/doc/html/files.html deleted file mode 100644 index c2b526c23..000000000 --- a/build/doc/html/files.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -OpenJPEG: File List - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    File List
    -
    -
    -
    Here is a list of all files with brief descriptions:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     auxtrans_manager.c
     auxtrans_manager.h
     bench_dwt.c
     bio.c
     bio.hImplementation of an individual bit input-output (BIO)
     box_manager.c
     box_manager.h
     boxheader_manager.c
     boxheader_manager.h
     byte_manager.c
     byte_manager.h
     cache_manager.c
     cache_manager.h
     cachemodel_manager.c
     cachemodel_manager.h
     channel_manager.c
     channel_manager.h
     cidx_manager.c
     cidx_manager.hModification of jpip.h from 2KAN indexer
     cio.c
     cio.hImplementation of a byte input-output process (CIO)
     codestream_manager.c
     codestream_manager.h
     dec_clientmsg_handler.c
     dec_clientmsg_handler.h
     dwt.c
     dwt.hImplementation of a discrete wavelet transform (DWT)
     event.c
     event.hImplementation of a event callback system
     faixbox_manager.c
     faixbox_manager.h
     function_list.c
     function_list.hImplementation of a list of procedures
     ihdrbox_manager.c
     ihdrbox_manager.h
     image.c
     image.hImplementation of operations on images (IMAGE)
     imgreg_manager.c
     imgreg_manager.h
     imgsock_manager.c
     imgsock_manager.h
     index_manager.c
     index_manager.h
     indexbox_manager.hModification of jpip.c from 2KAN indexer
     invert.c
     invert.hImplementation of the matrix inversion
     j2k.c
     j2k.hThe JPEG-2000 Codestream Reader/Writer (J2K)
     j2kheader_manager.c
     j2kheader_manager.h
     jp2.c
     jp2.hThe JPEG-2000 file format Reader/Writer (JP2)
     jp2k_decoder.c
     jp2k_decoder.h
     jp2k_encoder.c
     jp2k_encoder.h
     jpip_parser.c
     jpip_parser.h
     jpipstream_manager.c
     jpipstream_manager.h
     manfbox_manager.c
     manfbox_manager.h
     marker_manager.c
     marker_manager.h
     mct.c
     mct.hImplementation of a multi-component transforms (MCT)
     metadata_manager.c
     metadata_manager.h
     mhixbox_manager.c
     mhixbox_manager.h
     mqc.c
     mqc.hImplementation of an MQ-Coder (MQC)
     mqc_inl.h
     msgqueue_manager.c
     msgqueue_manager.h
     openjpeg.c
     openjpeg.h
     openjpip.c
     openjpip.h
     opj_clock.c
     opj_clock.hInternal function for timing
     opj_codec.h
     opj_common.h
     opj_includes.h
     opj_intmath.hImplementation of operations on integers (INT)
     opj_inttypes.h
     opj_malloc.c
     opj_malloc.hInternal functions
     opj_stdint.h
     phix_manager.cModification of jpip.c from 2KAN indexer
     pi.c
     pi.hImplementation of a packet iterator (PI)
     placeholder_manager.c
     placeholder_manager.h
     ppix_manager.cModification of jpip.c from 2KAN indexer
     query_parser.c
     query_parser.h
     session_manager.c
     session_manager.h
     sock_manager.c
     sock_manager.h
     sparse_array.c
     sparse_array.hSparse array management
     t1.c
     t1.hImplementation of the tier-1 coding (coding of code-block coefficients) (T1)
     t1_generate_luts.c
     t1_luts.h
     t2.c
     t2.hImplementation of a tier-2 coding (packetization of code-block data) (T2)
     target_manager.c
     target_manager.h
     tcd.c
     tcd.hImplementation of a tile coder/decoder (TCD)
     test_sparse_array.c
     tgt.c
     tgt.hImplementation of a tag-tree coder (TGT)
     thix_manager.cModification of jpip.c from 2KAN indexer
     thread.c
     thread.hThread API
     tls_keys.h
     tpix_manager.cModification of jpip.c from 2KAN indexer
    -
    -
    - - - - diff --git a/build/doc/html/folderclosed.png b/build/doc/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/build/doc/html/function__list_8c.html b/build/doc/html/function__list_8c.html deleted file mode 100644 index 740efe596..000000000 --- a/build/doc/html/function__list_8c.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - -OpenJPEG: function_list.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    function_list.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - -

    -Macros

    #define OPJ_VALIDATION_SIZE   10
     Default size of the validation list, if not sufficient, data will be reallocated with a double size. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    opj_procedure_list_topj_procedure_list_create ()
     Creates a validation list. More...
     
    void opj_procedure_list_destroy (opj_procedure_list_t *p_list)
     Destroys a validation list. More...
     
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
     Adds a new validation procedure. More...
     
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_t *p_validation_list)
     Gets the number of validation procedures. More...
     
    opj_procedureopj_procedure_list_get_first_procedure (opj_procedure_list_t *p_validation_list)
     Gets the pointer on the first validation procedure. More...
     
    void opj_procedure_list_clear (opj_procedure_list_t *p_validation_list)
     Clears the list of validation procedures. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_VALIDATION_SIZE

    - -
    -
    - - - - -
    #define OPJ_VALIDATION_SIZE   10
    -
    - -

    Default size of the validation list, if not sufficient, data will be reallocated with a double size.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_procedure_list_add_procedure()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_tp_validation_list,
    opj_procedure p_procedure,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_procedure_list_clear()

    - -
    -
    - - - - - - - - -
    void opj_procedure_list_clear (opj_procedure_list_tp_validation_list)
    -
    - -

    Clears the list of validation procedures.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to clear.
    -
    -
    - -

    References opj_procedure_list::m_nb_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    - -

    ◆ opj_procedure_list_create()

    - -
    -
    - - - - - - - - -
    opj_procedure_list_t* opj_procedure_list_create (void )
    -
    - -

    Creates a validation list.

    -
    Returns
    the newly created validation list.
    - -

    References opj_procedure_list::m_nb_max_procedures, opj_procedure_list::m_procedures, opj_calloc(), opj_free(), and OPJ_VALIDATION_SIZE.

    - -

    Referenced by opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_jp2_create().

    - -
    -
    - -

    ◆ opj_procedure_list_destroy()

    - -
    -
    - - - - - - - - -
    void opj_procedure_list_destroy (opj_procedure_list_tp_list)
    -
    - -

    Destroys a validation list.

    -
    Parameters
    - - -
    p_listthe list to destroy.
    -
    -
    - -

    References opj_procedure_list::m_procedures, and opj_free().

    - -

    Referenced by opj_j2k_destroy(), and opj_jp2_destroy().

    - -
    -
    - -

    ◆ opj_procedure_list_get_first_procedure()

    - -
    -
    - - - - - - - - -
    opj_procedure* opj_procedure_list_get_first_procedure (opj_procedure_list_tp_validation_list)
    -
    - -

    Gets the pointer on the first validation procedure.

    -

    This function is similar to the C++ iterator class to iterate through all the procedures inside the validation list. the caller does not take ownership of the pointer.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to get the first procedure from.
    -
    -
    -
    Returns
    a pointer to the first procedure.
    - -

    References opj_procedure_list::m_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    - -

    ◆ opj_procedure_list_get_nb_procedures()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_tp_validation_list)
    -
    - -

    Gets the number of validation procedures.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to modify.
    -
    -
    -
    Returns
    the number of validation procedures.
    - -

    References opj_procedure_list::m_nb_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/function__list_8h.html b/build/doc/html/function__list_8h.html deleted file mode 100644 index 35679ef54..000000000 --- a/build/doc/html/function__list_8h.html +++ /dev/null @@ -1,338 +0,0 @@ - - - - - - - -OpenJPEG: function_list.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    function_list.h File Reference
    -
    -
    - -

    Implementation of a list of procedures. -More...

    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_procedure_list
     A list of procedures. More...
     
    - - - - - - - -

    -Typedefs

    typedef void(* opj_procedure) (void)
     declare a function pointer More...
     
    typedef struct opj_procedure_list opj_procedure_list_t
     A list of procedures. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    opj_procedure_list_topj_procedure_list_create (void)
     Creates a validation list. More...
     
    void opj_procedure_list_destroy (opj_procedure_list_t *p_list)
     Destroys a validation list. More...
     
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
     Adds a new validation procedure. More...
     
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_t *p_validation_list)
     Gets the number of validation procedures. More...
     
    opj_procedureopj_procedure_list_get_first_procedure (opj_procedure_list_t *p_validation_list)
     Gets the pointer on the first validation procedure. More...
     
    void opj_procedure_list_clear (opj_procedure_list_t *p_validation_list)
     Clears the list of validation procedures. More...
     
    -

    Detailed Description

    -

    Implementation of a list of procedures.

    -

    The functions in validation.c aims to have access to a list of procedures.

    -

    Typedef Documentation

    - -

    ◆ opj_procedure

    - -
    -
    - - - - -
    typedef void(* opj_procedure) (void)
    -
    - -

    declare a function pointer

    - -
    -
    - -

    ◆ opj_procedure_list_t

    - -
    -
    - - - - -
    typedef struct opj_procedure_list opj_procedure_list_t
    -
    - -

    A list of procedures.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_procedure_list_add_procedure()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_procedure_list_add_procedure (opj_procedure_list_tp_validation_list,
    opj_procedure p_procedure,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_procedure_list_clear()

    - -
    -
    - - - - - - - - -
    void opj_procedure_list_clear (opj_procedure_list_tp_validation_list)
    -
    - -

    Clears the list of validation procedures.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to clear.
    -
    -
    - -

    References opj_procedure_list::m_nb_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    - -

    ◆ opj_procedure_list_create()

    - -
    -
    - - - - - - - - -
    opj_procedure_list_t* opj_procedure_list_create (void )
    -
    - -

    Creates a validation list.

    -
    Returns
    the newly created validation list.
    - -

    References opj_procedure_list::m_nb_max_procedures, opj_procedure_list::m_procedures, opj_calloc(), opj_free(), and OPJ_VALIDATION_SIZE.

    - -

    Referenced by opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_jp2_create().

    - -
    -
    - -

    ◆ opj_procedure_list_destroy()

    - -
    -
    - - - - - - - - -
    void opj_procedure_list_destroy (opj_procedure_list_tp_list)
    -
    - -

    Destroys a validation list.

    -
    Parameters
    - - -
    p_listthe list to destroy.
    -
    -
    - -

    References opj_procedure_list::m_procedures, and opj_free().

    - -

    Referenced by opj_j2k_destroy(), and opj_jp2_destroy().

    - -
    -
    - -

    ◆ opj_procedure_list_get_first_procedure()

    - -
    -
    - - - - - - - - -
    opj_procedure* opj_procedure_list_get_first_procedure (opj_procedure_list_tp_validation_list)
    -
    - -

    Gets the pointer on the first validation procedure.

    -

    This function is similar to the C++ iterator class to iterate through all the procedures inside the validation list. the caller does not take ownership of the pointer.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to get the first procedure from.
    -
    -
    -
    Returns
    a pointer to the first procedure.
    - -

    References opj_procedure_list::m_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    - -

    ◆ opj_procedure_list_get_nb_procedures()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures (opj_procedure_list_tp_validation_list)
    -
    - -

    Gets the number of validation procedures.

    -
    Parameters
    - - -
    p_validation_listthe list of procedure to modify.
    -
    -
    -
    Returns
    the number of validation procedures.
    - -

    References opj_procedure_list::m_nb_procedures.

    - -

    Referenced by opj_j2k_exec(), and opj_jp2_exec().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/function__list_8h_source.html b/build/doc/html/function__list_8h_source.html deleted file mode 100644 index e21e22648..000000000 --- a/build/doc/html/function__list_8h_source.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: function_list.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    function_list.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef OPJ_FUNCTION_LIST_H
    -
    33 #define OPJ_FUNCTION_LIST_H
    -
    34 
    -
    44 
    -
    45 /**************************************************************************************************
    -
    46  ***************************************** FORWARD DECLARATION ************************************
    -
    47  **************************************************************************************************/
    -
    48 
    -
    52 typedef void (*opj_procedure)(void);
    -
    53 
    -
    57 typedef struct opj_procedure_list {
    - - - -
    70 
    - -
    72 
    -
    73 /* ----------------------------------------------------------------------- */
    -
    74 
    - -
    81 
    - -
    88 
    - -
    99  p_validation_list, opj_procedure p_procedure, opj_event_mgr_t* p_manager);
    -
    100 
    - -
    109  p_validation_list);
    -
    110 
    - -
    121  p_validation_list);
    -
    122 
    -
    123 
    -
    130 void opj_procedure_list_clear(opj_procedure_list_t * p_validation_list);
    -
    133 #endif /* OPJ_FUNCTION_LIST_H */
    -
    134 
    -
    -
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_UINT32 m_nb_max_procedures
    The number of the array of validation procedures.
    Definition: function_list.h:65
    -
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    struct opj_procedure_list opj_procedure_list_t
    A list of procedures.
    -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    -
    Message handler object used for.
    Definition: event.h:50
    -
    opj_procedure * m_procedures
    The array of procedures.
    Definition: function_list.h:69
    -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    -
    opj_procedure_list_t * opj_procedure_list_create(void)
    Creates a validation list.
    Definition: function_list.c:39
    -
    OPJ_UINT32 m_nb_procedures
    The number of validation procedures.
    Definition: function_list.h:61
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    - -
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    -
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    -
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    -
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    -
    #define OPJ_VALIDATION_SIZE
    Default size of the validation list, if not sufficient, data will be reallocated with a double size.
    Definition: function_list.c:37
    -
    A list of procedures.
    Definition: function_list.h:57
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    -
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    - - - - diff --git a/build/doc/html/functions.html b/build/doc/html/functions.html deleted file mode 100644 index 2f7a6a705..000000000 --- a/build/doc/html/functions.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - a -

    -
    - - - - diff --git a/build/doc/html/functions_b.html b/build/doc/html/functions_b.html deleted file mode 100644 index 8cc048151..000000000 --- a/build/doc/html/functions_b.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - b -

    -
    - - - - diff --git a/build/doc/html/functions_c.html b/build/doc/html/functions_c.html deleted file mode 100644 index 996100366..000000000 --- a/build/doc/html/functions_c.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - c -

    -
    - - - - diff --git a/build/doc/html/functions_d.html b/build/doc/html/functions_d.html deleted file mode 100644 index 5fd51f6d3..000000000 --- a/build/doc/html/functions_d.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - d -

    -
    - - - - diff --git a/build/doc/html/functions_e.html b/build/doc/html/functions_e.html deleted file mode 100644 index c59f4bcd7..000000000 --- a/build/doc/html/functions_e.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - e -

    -
    - - - - diff --git a/build/doc/html/functions_f.html b/build/doc/html/functions_f.html deleted file mode 100644 index 3356420ca..000000000 --- a/build/doc/html/functions_f.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - f -

    -
    - - - - diff --git a/build/doc/html/functions_g.html b/build/doc/html/functions_g.html deleted file mode 100644 index 41e7ab8e8..000000000 --- a/build/doc/html/functions_g.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - g -

    -
    - - - - diff --git a/build/doc/html/functions_h.html b/build/doc/html/functions_h.html deleted file mode 100644 index 85b3ec751..000000000 --- a/build/doc/html/functions_h.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - h -

    -
    - - - - diff --git a/build/doc/html/functions_i.html b/build/doc/html/functions_i.html deleted file mode 100644 index 2f57a9c38..000000000 --- a/build/doc/html/functions_i.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - i -

    -
    - - - - diff --git a/build/doc/html/functions_j.html b/build/doc/html/functions_j.html deleted file mode 100644 index c2429a86e..000000000 --- a/build/doc/html/functions_j.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - j -

    -
    - - - - diff --git a/build/doc/html/functions_k.html b/build/doc/html/functions_k.html deleted file mode 100644 index cffa6595c..000000000 --- a/build/doc/html/functions_k.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - k -

    -
    - - - - diff --git a/build/doc/html/functions_l.html b/build/doc/html/functions_l.html deleted file mode 100644 index 46cb668ac..000000000 --- a/build/doc/html/functions_l.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - l -

    -
    - - - - diff --git a/build/doc/html/functions_m.html b/build/doc/html/functions_m.html deleted file mode 100644 index eb6e5b48e..000000000 --- a/build/doc/html/functions_m.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - m -

    -
    - - - - diff --git a/build/doc/html/functions_n.html b/build/doc/html/functions_n.html deleted file mode 100644 index 3d2923a2d..000000000 --- a/build/doc/html/functions_n.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - n -

    -
    - - - - diff --git a/build/doc/html/functions_o.html b/build/doc/html/functions_o.html deleted file mode 100644 index 6d33b0d8f..000000000 --- a/build/doc/html/functions_o.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - o -

    -
    - - - - diff --git a/build/doc/html/functions_p.html b/build/doc/html/functions_p.html deleted file mode 100644 index c757fbc02..000000000 --- a/build/doc/html/functions_p.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - p -

    -
    - - - - diff --git a/build/doc/html/functions_q.html b/build/doc/html/functions_q.html deleted file mode 100644 index dc0f31dbc..000000000 --- a/build/doc/html/functions_q.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - q -

    -
    - - - - diff --git a/build/doc/html/functions_r.html b/build/doc/html/functions_r.html deleted file mode 100644 index b213402f9..000000000 --- a/build/doc/html/functions_r.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - r -

    -
    - - - - diff --git a/build/doc/html/functions_s.html b/build/doc/html/functions_s.html deleted file mode 100644 index 32d18d638..000000000 --- a/build/doc/html/functions_s.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - s -

    -
    - - - - diff --git a/build/doc/html/functions_t.html b/build/doc/html/functions_t.html deleted file mode 100644 index d36b1770b..000000000 --- a/build/doc/html/functions_t.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - t -

    -
    - - - - diff --git a/build/doc/html/functions_u.html b/build/doc/html/functions_u.html deleted file mode 100644 index 8be9c6701..000000000 --- a/build/doc/html/functions_u.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - u -

    -
    - - - - diff --git a/build/doc/html/functions_v.html b/build/doc/html/functions_v.html deleted file mode 100644 index b813bb115..000000000 --- a/build/doc/html/functions_v.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - v -

    -
    - - - - diff --git a/build/doc/html/functions_vars.html b/build/doc/html/functions_vars.html deleted file mode 100644 index 6b7f62436..000000000 --- a/build/doc/html/functions_vars.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - a -

    -
    - - - - diff --git a/build/doc/html/functions_vars_b.html b/build/doc/html/functions_vars_b.html deleted file mode 100644 index 4c935899b..000000000 --- a/build/doc/html/functions_vars_b.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - b -

    -
    - - - - diff --git a/build/doc/html/functions_vars_c.html b/build/doc/html/functions_vars_c.html deleted file mode 100644 index 6a49f43ac..000000000 --- a/build/doc/html/functions_vars_c.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - c -

    -
    - - - - diff --git a/build/doc/html/functions_vars_d.html b/build/doc/html/functions_vars_d.html deleted file mode 100644 index 51f02dfa4..000000000 --- a/build/doc/html/functions_vars_d.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - d -

    -
    - - - - diff --git a/build/doc/html/functions_vars_e.html b/build/doc/html/functions_vars_e.html deleted file mode 100644 index 05ffd5e71..000000000 --- a/build/doc/html/functions_vars_e.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - e -

    -
    - - - - diff --git a/build/doc/html/functions_vars_f.html b/build/doc/html/functions_vars_f.html deleted file mode 100644 index b4b32f833..000000000 --- a/build/doc/html/functions_vars_f.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    - - - - - diff --git a/build/doc/html/functions_vars_g.html b/build/doc/html/functions_vars_g.html deleted file mode 100644 index b0e3a1c6e..000000000 --- a/build/doc/html/functions_vars_g.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - g -

    -
    - - - - diff --git a/build/doc/html/functions_vars_h.html b/build/doc/html/functions_vars_h.html deleted file mode 100644 index ffada8bad..000000000 --- a/build/doc/html/functions_vars_h.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - h -

    -
    - - - - diff --git a/build/doc/html/functions_vars_i.html b/build/doc/html/functions_vars_i.html deleted file mode 100644 index ee4512365..000000000 --- a/build/doc/html/functions_vars_i.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - i -

    -
    - - - - diff --git a/build/doc/html/functions_vars_j.html b/build/doc/html/functions_vars_j.html deleted file mode 100644 index b5e35c924..000000000 --- a/build/doc/html/functions_vars_j.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - j -

    -
    - - - - diff --git a/build/doc/html/functions_vars_k.html b/build/doc/html/functions_vars_k.html deleted file mode 100644 index 3422e8379..000000000 --- a/build/doc/html/functions_vars_k.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - k -

    -
    - - - - diff --git a/build/doc/html/functions_vars_l.html b/build/doc/html/functions_vars_l.html deleted file mode 100644 index 70892d2fe..000000000 --- a/build/doc/html/functions_vars_l.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - l -

    -
    - - - - diff --git a/build/doc/html/functions_vars_m.html b/build/doc/html/functions_vars_m.html deleted file mode 100644 index 27848d169..000000000 --- a/build/doc/html/functions_vars_m.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - m -

    -
    - - - - diff --git a/build/doc/html/functions_vars_n.html b/build/doc/html/functions_vars_n.html deleted file mode 100644 index 28afbce36..000000000 --- a/build/doc/html/functions_vars_n.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - n -

    -
    - - - - diff --git a/build/doc/html/functions_vars_o.html b/build/doc/html/functions_vars_o.html deleted file mode 100644 index 7e19ba25e..000000000 --- a/build/doc/html/functions_vars_o.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - o -

    -
    - - - - diff --git a/build/doc/html/functions_vars_p.html b/build/doc/html/functions_vars_p.html deleted file mode 100644 index ebab245fd..000000000 --- a/build/doc/html/functions_vars_p.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - p -

    -
    - - - - diff --git a/build/doc/html/functions_vars_q.html b/build/doc/html/functions_vars_q.html deleted file mode 100644 index edaf61c90..000000000 --- a/build/doc/html/functions_vars_q.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - q -

    -
    - - - - diff --git a/build/doc/html/functions_vars_r.html b/build/doc/html/functions_vars_r.html deleted file mode 100644 index 680558ba4..000000000 --- a/build/doc/html/functions_vars_r.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - r -

    -
    - - - - diff --git a/build/doc/html/functions_vars_s.html b/build/doc/html/functions_vars_s.html deleted file mode 100644 index 8d640a634..000000000 --- a/build/doc/html/functions_vars_s.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - s -

    -
    - - - - diff --git a/build/doc/html/functions_vars_t.html b/build/doc/html/functions_vars_t.html deleted file mode 100644 index 2a1a252eb..000000000 --- a/build/doc/html/functions_vars_t.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - t -

    -
    - - - - diff --git a/build/doc/html/functions_vars_u.html b/build/doc/html/functions_vars_u.html deleted file mode 100644 index 489a92b38..000000000 --- a/build/doc/html/functions_vars_u.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - u -

    -
    - - - - diff --git a/build/doc/html/functions_vars_v.html b/build/doc/html/functions_vars_v.html deleted file mode 100644 index f834e6921..000000000 --- a/build/doc/html/functions_vars_v.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - v -

    -
    - - - - diff --git a/build/doc/html/functions_vars_w.html b/build/doc/html/functions_vars_w.html deleted file mode 100644 index e12a5a5d0..000000000 --- a/build/doc/html/functions_vars_w.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - w -

    -
    - - - - diff --git a/build/doc/html/functions_vars_x.html b/build/doc/html/functions_vars_x.html deleted file mode 100644 index 762c99335..000000000 --- a/build/doc/html/functions_vars_x.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    - - - - - diff --git a/build/doc/html/functions_vars_y.html b/build/doc/html/functions_vars_y.html deleted file mode 100644 index a09633589..000000000 --- a/build/doc/html/functions_vars_y.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - Variables - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    - - - - - diff --git a/build/doc/html/functions_w.html b/build/doc/html/functions_w.html deleted file mode 100644 index 4e879f11e..000000000 --- a/build/doc/html/functions_w.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - w -

    -
    - - - - diff --git a/build/doc/html/functions_x.html b/build/doc/html/functions_x.html deleted file mode 100644 index 636c7c5e6..000000000 --- a/build/doc/html/functions_x.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - x -

    -
    - - - - diff --git a/build/doc/html/functions_y.html b/build/doc/html/functions_y.html deleted file mode 100644 index 8d4091ff4..000000000 --- a/build/doc/html/functions_y.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: Data Fields - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - y -

    -
    - - - - diff --git a/build/doc/html/globals.html b/build/doc/html/globals.html deleted file mode 100644 index 411e1d2bf..000000000 --- a/build/doc/html/globals.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - a -

    -
    - - - - diff --git a/build/doc/html/globals_b.html b/build/doc/html/globals_b.html deleted file mode 100644 index 6fe978b44..000000000 --- a/build/doc/html/globals_b.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - b -

    -
    - - - - diff --git a/build/doc/html/globals_c.html b/build/doc/html/globals_c.html deleted file mode 100644 index 2ef943d1d..000000000 --- a/build/doc/html/globals_c.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - c -

    -
    - - - - diff --git a/build/doc/html/globals_d.html b/build/doc/html/globals_d.html deleted file mode 100644 index 1d01f463d..000000000 --- a/build/doc/html/globals_d.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - d -

    -
    - - - - diff --git a/build/doc/html/globals_defs.html b/build/doc/html/globals_defs.html deleted file mode 100644 index e741de527..000000000 --- a/build/doc/html/globals_defs.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - b -

    -
    - - - - diff --git a/build/doc/html/globals_defs_d.html b/build/doc/html/globals_defs_d.html deleted file mode 100644 index 71dcdfc11..000000000 --- a/build/doc/html/globals_defs_d.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - d -

    -
    - - - - diff --git a/build/doc/html/globals_defs_e.html b/build/doc/html/globals_defs_e.html deleted file mode 100644 index ccffb9eae..000000000 --- a/build/doc/html/globals_defs_e.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - e -

    -
    - - - - diff --git a/build/doc/html/globals_defs_f.html b/build/doc/html/globals_defs_f.html deleted file mode 100644 index 6dc19530f..000000000 --- a/build/doc/html/globals_defs_f.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    - - - - - diff --git a/build/doc/html/globals_defs_i.html b/build/doc/html/globals_defs_i.html deleted file mode 100644 index 8e2a13b37..000000000 --- a/build/doc/html/globals_defs_i.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - i -

    -
    - - - - diff --git a/build/doc/html/globals_defs_j.html b/build/doc/html/globals_defs_j.html deleted file mode 100644 index 770f01817..000000000 --- a/build/doc/html/globals_defs_j.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - j -

    -
    - - - - diff --git a/build/doc/html/globals_defs_l.html b/build/doc/html/globals_defs_l.html deleted file mode 100644 index d0ed705d2..000000000 --- a/build/doc/html/globals_defs_l.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    - - - - - diff --git a/build/doc/html/globals_defs_m.html b/build/doc/html/globals_defs_m.html deleted file mode 100644 index d32e66e80..000000000 --- a/build/doc/html/globals_defs_m.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - m -

    -
    - - - - diff --git a/build/doc/html/globals_defs_n.html b/build/doc/html/globals_defs_n.html deleted file mode 100644 index b50bef178..000000000 --- a/build/doc/html/globals_defs_n.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - n -

    -
    - - - - diff --git a/build/doc/html/globals_defs_o.html b/build/doc/html/globals_defs_o.html deleted file mode 100644 index 7bbc47401..000000000 --- a/build/doc/html/globals_defs_o.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - o -

    -
    - - - - diff --git a/build/doc/html/globals_defs_p.html b/build/doc/html/globals_defs_p.html deleted file mode 100644 index 46cc330d7..000000000 --- a/build/doc/html/globals_defs_p.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - p -

    -
    - - - - diff --git a/build/doc/html/globals_defs_s.html b/build/doc/html/globals_defs_s.html deleted file mode 100644 index a27235ba8..000000000 --- a/build/doc/html/globals_defs_s.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - s -

    -
    - - - - diff --git a/build/doc/html/globals_defs_t.html b/build/doc/html/globals_defs_t.html deleted file mode 100644 index 4885a51d6..000000000 --- a/build/doc/html/globals_defs_t.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - t -

      -
    • T1_CHI_0 -: t1.h -
    • -
    • T1_CHI_0_I -: t1.h -
    • -
    • T1_CHI_1 -: t1.h -
    • -
    • T1_CHI_1_I -: t1.h -
    • -
    • T1_CHI_2 -: t1.h -
    • -
    • T1_CHI_2_I -: t1.h -
    • -
    • T1_CHI_3 -: t1.h -
    • -
    • T1_CHI_4 -: t1.h -
    • -
    • T1_CHI_5 -: t1.h -
    • -
    • T1_CHI_5_I -: t1.h -
    • -
    • T1_CHI_S -: t1.h -
    • -
    • T1_CHI_THIS -: t1.h -
    • -
    • T1_CHI_THIS_I -: t1.h -
    • -
    • T1_CTXNO_AGG -: t1.h -
    • -
    • T1_CTXNO_MAG -: t1.h -
    • -
    • T1_CTXNO_SC -: t1.h -
    • -
    • T1_CTXNO_UNI -: t1.h -
    • -
    • T1_CTXNO_ZC -: t1.h -
    • -
    • T1_FLAGS -: t1.c -
    • -
    • T1_LUT_SGN_E -: t1.h -
    • -
    • T1_LUT_SGN_N -: t1.h -
    • -
    • T1_LUT_SGN_S -: t1.h -
    • -
    • T1_LUT_SGN_W -: t1.h -
    • -
    • T1_LUT_SIG_E -: t1.h -
    • -
    • T1_LUT_SIG_N -: t1.h -
    • -
    • T1_LUT_SIG_S -: t1.h -
    • -
    • T1_LUT_SIG_W -: t1.h -
    • -
    • T1_MU_0 -: t1.h -
    • -
    • T1_MU_1 -: t1.h -
    • -
    • T1_MU_2 -: t1.h -
    • -
    • T1_MU_3 -: t1.h -
    • -
    • T1_MU_THIS -: t1.h -
    • -
    • T1_NMSEDEC_BITS -: t1.h -
    • -
    • T1_NMSEDEC_FRACBITS -: t1.h -
    • -
    • T1_NUMCTXS -: t1.h -
    • -
    • T1_NUMCTXS_AGG -: t1.h -
    • -
    • T1_NUMCTXS_MAG -: t1.h -
    • -
    • T1_NUMCTXS_SC -: t1.h -
    • -
    • T1_NUMCTXS_UNI -: t1.h -
    • -
    • T1_NUMCTXS_ZC -: t1.h -
    • -
    • T1_PI_0 -: t1.h -
    • -
    • T1_PI_1 -: t1.h -
    • -
    • T1_PI_2 -: t1.h -
    • -
    • T1_PI_3 -: t1.h -
    • -
    • T1_PI_THIS -: t1.h -
    • -
    • T1_SIGMA_0 -: t1.h -
    • -
    • T1_SIGMA_1 -: t1.h -
    • -
    • T1_SIGMA_10 -: t1.h -
    • -
    • T1_SIGMA_11 -: t1.h -
    • -
    • T1_SIGMA_12 -: t1.h -
    • -
    • T1_SIGMA_13 -: t1.h -
    • -
    • T1_SIGMA_14 -: t1.h -
    • -
    • T1_SIGMA_15 -: t1.h -
    • -
    • T1_SIGMA_16 -: t1.h -
    • -
    • T1_SIGMA_17 -: t1.h -
    • -
    • T1_SIGMA_2 -: t1.h -
    • -
    • T1_SIGMA_3 -: t1.h -
    • -
    • T1_SIGMA_4 -: t1.h -
    • -
    • T1_SIGMA_5 -: t1.h -
    • -
    • T1_SIGMA_6 -: t1.h -
    • -
    • T1_SIGMA_7 -: t1.h -
    • -
    • T1_SIGMA_8 -: t1.h -
    • -
    • T1_SIGMA_9 -: t1.h -
    • -
    • T1_SIGMA_E -: t1.h -
    • -
    • T1_SIGMA_N -: t1.h -
    • -
    • T1_SIGMA_NE -: t1.h -
    • -
    • T1_SIGMA_NEIGHBOURS -: t1.h -
    • -
    • T1_SIGMA_NW -: t1.h -
    • -
    • T1_SIGMA_S -: t1.h -
    • -
    • T1_SIGMA_SE -: t1.h -
    • -
    • T1_SIGMA_SW -: t1.h -
    • -
    • T1_SIGMA_THIS -: t1.h -
    • -
    • T1_SIGMA_W -: t1.h -
    • -
    • T1_TYPE_MQ -: t1.h -
    • -
    • T1_TYPE_RAW -: t1.h -
    • -
    • TILE_HEADER_MSG -: msgqueue_manager.h -
    • -
    • TILE_MSG -: msgqueue_manager.h -
    • -
    -
    - - - - diff --git a/build/doc/html/globals_defs_u.html b/build/doc/html/globals_defs_u.html deleted file mode 100644 index d50d2d2fc..000000000 --- a/build/doc/html/globals_defs_u.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - u -

    -
    - - - - diff --git a/build/doc/html/globals_defs_v.html b/build/doc/html/globals_defs_v.html deleted file mode 100644 index 6e07e897b..000000000 --- a/build/doc/html/globals_defs_v.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - v -

      -
    • VREG_INT_COUNT -: dwt.c -
    • -
    -
    - - - - diff --git a/build/doc/html/globals_e.html b/build/doc/html/globals_e.html deleted file mode 100644 index 05cb54ac5..000000000 --- a/build/doc/html/globals_e.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - e -

    -
    - - - - diff --git a/build/doc/html/globals_enum.html b/build/doc/html/globals_enum.html deleted file mode 100644 index 1921c6378..000000000 --- a/build/doc/html/globals_enum.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    - - - - diff --git a/build/doc/html/globals_eval.html b/build/doc/html/globals_eval.html deleted file mode 100644 index f577621a1..000000000 --- a/build/doc/html/globals_eval.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - c -

    - - -

    - f -

      -
    • FINAL_PASS -: j2k.h -
    • -
    - - -

    - h -

    - - -

    - j -

    - - -

    - m -

    - - -

    - n -

    - - -

    - o -

    - - -

    - p -

    - - -

    - q -

    - - -

    - s -

    - - -

    - t -

    - - -

    - u -

    - - -

    - x -

    -
    - - - - diff --git a/build/doc/html/globals_f.html b/build/doc/html/globals_f.html deleted file mode 100644 index 77a5ced6d..000000000 --- a/build/doc/html/globals_f.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - f -

    -
    - - - - diff --git a/build/doc/html/globals_func.html b/build/doc/html/globals_func.html deleted file mode 100644 index 50cf030d5..000000000 --- a/build/doc/html/globals_func.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - a -

    -
    - - - - diff --git a/build/doc/html/globals_func_b.html b/build/doc/html/globals_func_b.html deleted file mode 100644 index ec121fbb1..000000000 --- a/build/doc/html/globals_func_b.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - b -

    -
    - - - - diff --git a/build/doc/html/globals_func_c.html b/build/doc/html/globals_func_c.html deleted file mode 100644 index 1ab64f41f..000000000 --- a/build/doc/html/globals_func_c.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - c -

    -
    - - - - diff --git a/build/doc/html/globals_func_d.html b/build/doc/html/globals_func_d.html deleted file mode 100644 index b18a71ec4..000000000 --- a/build/doc/html/globals_func_d.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - d -

    -
    - - - - diff --git a/build/doc/html/globals_func_e.html b/build/doc/html/globals_func_e.html deleted file mode 100644 index e3d402274..000000000 --- a/build/doc/html/globals_func_e.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - e -

    -
    - - - - diff --git a/build/doc/html/globals_func_f.html b/build/doc/html/globals_func_f.html deleted file mode 100644 index 84f512520..000000000 --- a/build/doc/html/globals_func_f.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - f -

    -
    - - - - diff --git a/build/doc/html/globals_func_g.html b/build/doc/html/globals_func_g.html deleted file mode 100644 index 03066b962..000000000 --- a/build/doc/html/globals_func_g.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - g -

    -
    - - - - diff --git a/build/doc/html/globals_func_h.html b/build/doc/html/globals_func_h.html deleted file mode 100644 index 652d0e22d..000000000 --- a/build/doc/html/globals_func_h.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - h -

    -
    - - - - diff --git a/build/doc/html/globals_func_i.html b/build/doc/html/globals_func_i.html deleted file mode 100644 index d43f5fa9c..000000000 --- a/build/doc/html/globals_func_i.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - i -

    -
    - - - - diff --git a/build/doc/html/globals_func_j.html b/build/doc/html/globals_func_j.html deleted file mode 100644 index fb2e973e1..000000000 --- a/build/doc/html/globals_func_j.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - j -

    -
    - - - - diff --git a/build/doc/html/globals_func_m.html b/build/doc/html/globals_func_m.html deleted file mode 100644 index ead1301e2..000000000 --- a/build/doc/html/globals_func_m.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - m -

    -
    - - - - diff --git a/build/doc/html/globals_func_o.html b/build/doc/html/globals_func_o.html deleted file mode 100644 index 4d8a4d23a..000000000 --- a/build/doc/html/globals_func_o.html +++ /dev/null @@ -1,2180 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - o -

    -
    - - - - diff --git a/build/doc/html/globals_func_p.html b/build/doc/html/globals_func_p.html deleted file mode 100644 index e8a0dccdd..000000000 --- a/build/doc/html/globals_func_p.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - p -

    -
    - - - - diff --git a/build/doc/html/globals_func_r.html b/build/doc/html/globals_func_r.html deleted file mode 100644 index fde0d34e8..000000000 --- a/build/doc/html/globals_func_r.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - r -

    -
    - - - - diff --git a/build/doc/html/globals_func_s.html b/build/doc/html/globals_func_s.html deleted file mode 100644 index e25c04a94..000000000 --- a/build/doc/html/globals_func_s.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - s -

    -
    - - - - diff --git a/build/doc/html/globals_func_t.html b/build/doc/html/globals_func_t.html deleted file mode 100644 index b25664e10..000000000 --- a/build/doc/html/globals_func_t.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - t -

    -
    - - - - diff --git a/build/doc/html/globals_func_u.html b/build/doc/html/globals_func_u.html deleted file mode 100644 index 447d21a81..000000000 --- a/build/doc/html/globals_func_u.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - u -

    -
    - - - - diff --git a/build/doc/html/globals_func_w.html b/build/doc/html/globals_func_w.html deleted file mode 100644 index a7dbca2e3..000000000 --- a/build/doc/html/globals_func_w.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - w -

    -
    - - - - diff --git a/build/doc/html/globals_g.html b/build/doc/html/globals_g.html deleted file mode 100644 index 43d017166..000000000 --- a/build/doc/html/globals_g.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - g -

    -
    - - - - diff --git a/build/doc/html/globals_h.html b/build/doc/html/globals_h.html deleted file mode 100644 index d71b9a68c..000000000 --- a/build/doc/html/globals_h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - h -

    -
    - - - - diff --git a/build/doc/html/globals_i.html b/build/doc/html/globals_i.html deleted file mode 100644 index 465d6c568..000000000 --- a/build/doc/html/globals_i.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - i -

    -
    - - - - diff --git a/build/doc/html/globals_j.html b/build/doc/html/globals_j.html deleted file mode 100644 index 0118dc830..000000000 --- a/build/doc/html/globals_j.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - j -

    -
    - - - - diff --git a/build/doc/html/globals_l.html b/build/doc/html/globals_l.html deleted file mode 100644 index 2fa69b8f9..000000000 --- a/build/doc/html/globals_l.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - l -

    -
    - - - - diff --git a/build/doc/html/globals_m.html b/build/doc/html/globals_m.html deleted file mode 100644 index f480443fb..000000000 --- a/build/doc/html/globals_m.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - m -

    -
    - - - - diff --git a/build/doc/html/globals_n.html b/build/doc/html/globals_n.html deleted file mode 100644 index 3f7cce15d..000000000 --- a/build/doc/html/globals_n.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - n -

    -
    - - - - diff --git a/build/doc/html/globals_o.html b/build/doc/html/globals_o.html deleted file mode 100644 index 615d5822d..000000000 --- a/build/doc/html/globals_o.html +++ /dev/null @@ -1,3069 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - o -

    -
    - - - - diff --git a/build/doc/html/globals_p.html b/build/doc/html/globals_p.html deleted file mode 100644 index cf7386774..000000000 --- a/build/doc/html/globals_p.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - p -

    -
    - - - - diff --git a/build/doc/html/globals_q.html b/build/doc/html/globals_q.html deleted file mode 100644 index ab330cfb4..000000000 --- a/build/doc/html/globals_q.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - q -

    -
    - - - - diff --git a/build/doc/html/globals_r.html b/build/doc/html/globals_r.html deleted file mode 100644 index 589a54d7b..000000000 --- a/build/doc/html/globals_r.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - r -

    -
    - - - - diff --git a/build/doc/html/globals_s.html b/build/doc/html/globals_s.html deleted file mode 100644 index 8f51d2f9f..000000000 --- a/build/doc/html/globals_s.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - s -

    -
    - - - - diff --git a/build/doc/html/globals_t.html b/build/doc/html/globals_t.html deleted file mode 100644 index 56a055b9f..000000000 --- a/build/doc/html/globals_t.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - t -

    -
    - - - - diff --git a/build/doc/html/globals_type.html b/build/doc/html/globals_type.html deleted file mode 100644 index 278474cbe..000000000 --- a/build/doc/html/globals_type.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -  - -

    - a -

    - - -

    - b -

    - - -

    - c -

    - - -

    - d -

    - - -

    - f -

    - - -

    - i -

    - - -

    - j -

      -
    • J2K_MCT_ARRAY_TYPE -: j2k.h -
    • -
    • J2K_MCT_ELEMENT_TYPE -: j2k.h -
    • -
    • j2k_prog_order_t -: j2k.c -
    • -
    • J2K_STATUS -: j2k.h -
    • -
    • J2K_T2_MODE -: j2k.h -
    • -
    • jpip_dec_param_t -: openjpip.h -
    • -
    - - -

    - m -

    - - -

    - o -

    - - -

    - p -

    - - -

    - q -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    -
    - - - - diff --git a/build/doc/html/globals_u.html b/build/doc/html/globals_u.html deleted file mode 100644 index 1242bd99b..000000000 --- a/build/doc/html/globals_u.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - u -

    -
    - - - - diff --git a/build/doc/html/globals_v.html b/build/doc/html/globals_v.html deleted file mode 100644 index aff25ac49..000000000 --- a/build/doc/html/globals_v.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - v -

      -
    • VREG_INT_COUNT -: dwt.c -
    • -
    -
    - - - - diff --git a/build/doc/html/globals_vars.html b/build/doc/html/globals_vars.html deleted file mode 100644 index 5bf0079b5..000000000 --- a/build/doc/html/globals_vars.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
      -
    • j2k_mct_read_functions_to_float -: j2k.c -
    • -
    • j2k_mct_read_functions_to_int32 -: j2k.c -
    • -
    • j2k_mct_write_functions_from_float -: j2k.c -
    • -
    • j2k_memory_marker_handler_tab -: j2k.c -
    • -
    • j2k_prog_order_list -: j2k.c -
    • -
    • jp2_header -: jp2.c -
    • -
    • jp2_img_header -: jp2.c -
    • -
    • lut_ctxno_sc -: t1_luts.h -
    • -
    • lut_ctxno_zc -: t1_luts.h -
    • -
    • lut_nmsedec_ref -: t1_luts.h -
    • -
    • lut_nmsedec_ref0 -: t1_luts.h -
    • -
    • lut_nmsedec_sig -: t1_luts.h -
    • -
    • lut_nmsedec_sig0 -: t1_luts.h -
    • -
    • lut_spb -: t1_luts.h -
    • -
    • MCT_ELEMENT_SIZE -: j2k.c -
    • -
    • mqc_states -: mqc.c -
    • -
    • opj_c13318 -: dwt.c -
    • -
    • opj_dwt_alpha -: dwt.c -
    • -
    • opj_dwt_beta -: dwt.c -
    • -
    • opj_dwt_delta -: dwt.c -
    • -
    • opj_dwt_gamma -: dwt.c -
    • -
    • opj_dwt_norms -: dwt.c -
    • -
    • opj_dwt_norms_real -: dwt.c -
    • -
    • opj_K -: dwt.c -
    • -
    • opj_mct_norms -: mct.c -
    • -
    • opj_mct_norms_real -: mct.c -
    • -
    • tabMaxSubLevelFromMainLevel -: j2k.c -
    • -
    -
    - - - - diff --git a/build/doc/html/globals_w.html b/build/doc/html/globals_w.html deleted file mode 100644 index 62275316b..000000000 --- a/build/doc/html/globals_w.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - w -

    -
    - - - - diff --git a/build/doc/html/globals_x.html b/build/doc/html/globals_x.html deleted file mode 100644 index 0b8c1c016..000000000 --- a/build/doc/html/globals_x.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -OpenJPEG: Globals - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - x -

    -
    - - - - diff --git a/build/doc/html/group___b_i_o.html b/build/doc/html/group___b_i_o.html deleted file mode 100644 index 44d2020ba..000000000 --- a/build/doc/html/group___b_i_o.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: BIO - Individual bit input-output stream - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    BIO - Individual bit input-output stream
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___c_i_o.html b/build/doc/html/group___c_i_o.html deleted file mode 100644 index d84988e18..000000000 --- a/build/doc/html/group___c_i_o.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: CIO - byte input-output stream - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    CIO - byte input-output stream
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___d_w_t.html b/build/doc/html/group___d_w_t.html deleted file mode 100644 index 233abef00..000000000 --- a/build/doc/html/group___d_w_t.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: DWT - Implementation of a discrete wavelet transform - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    DWT - Implementation of a discrete wavelet transform
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___e_v_e_n_t.html b/build/doc/html/group___e_v_e_n_t.html deleted file mode 100644 index 28741022a..000000000 --- a/build/doc/html/group___e_v_e_n_t.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: EVENT - Implementation of a event callback system - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    EVENT - Implementation of a event callback system
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___i_m_a_g_e.html b/build/doc/html/group___i_m_a_g_e.html deleted file mode 100644 index 6cf846501..000000000 --- a/build/doc/html/group___i_m_a_g_e.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: IMAGE - Implementation of operations on images - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    IMAGE - Implementation of operations on images
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___i_n_v_e_r_t.html b/build/doc/html/group___i_n_v_e_r_t.html deleted file mode 100644 index 75ca0957c..000000000 --- a/build/doc/html/group___i_n_v_e_r_t.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: INVERT - Implementation of a matrix inversion - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    INVERT - Implementation of a matrix inversion
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___j2_k.html b/build/doc/html/group___j2_k.html deleted file mode 100644 index f83ce4128..000000000 --- a/build/doc/html/group___j2_k.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: J2K - JPEG-2000 codestream reader/writer - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    J2K - JPEG-2000 codestream reader/writer
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___j_p2.html b/build/doc/html/group___j_p2.html deleted file mode 100644 index b9a72c1f3..000000000 --- a/build/doc/html/group___j_p2.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: JP2 - JPEG-2000 file format reader/writer - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    JP2 - JPEG-2000 file format reader/writer
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___m_c_t.html b/build/doc/html/group___m_c_t.html deleted file mode 100644 index e5bc50400..000000000 --- a/build/doc/html/group___m_c_t.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: MCT - Implementation of a multi-component transform - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    MCT - Implementation of a multi-component transform
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___m_i_s_c.html b/build/doc/html/group___m_i_s_c.html deleted file mode 100644 index 6905bd79b..000000000 --- a/build/doc/html/group___m_i_s_c.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: MISC - Miscellaneous internal functions - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    MISC - Miscellaneous internal functions
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___m_q_c.html b/build/doc/html/group___m_q_c.html deleted file mode 100644 index b4b85a3b9..000000000 --- a/build/doc/html/group___m_q_c.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: MQC - Implementation of an MQ-Coder - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    MQC - Implementation of an MQ-Coder
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html b/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html deleted file mode 100644 index 270ef6da0..000000000 --- a/build/doc/html/group___o_p_j___i_n_t_m_a_t_h.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: OPJ_INTMATH - Implementation of operations on integers - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    OPJ_INTMATH - Implementation of operations on integers
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___p_i.html b/build/doc/html/group___p_i.html deleted file mode 100644 index 87d97577d..000000000 --- a/build/doc/html/group___p_i.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: PI - Implementation of a packet iterator - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    PI - Implementation of a packet iterator
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html b/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html deleted file mode 100644 index 6067169c8..000000000 --- a/build/doc/html/group___s_p_a_r_s_e___a_r_r_a_y.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: SPARSE ARRAYS - Sparse arrays - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    SPARSE ARRAYS - Sparse arrays
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___t1.html b/build/doc/html/group___t1.html deleted file mode 100644 index e48ed0946..000000000 --- a/build/doc/html/group___t1.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: T1 - Implementation of the tier-1 coding - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    T1 - Implementation of the tier-1 coding
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___t2.html b/build/doc/html/group___t2.html deleted file mode 100644 index 8af759db7..000000000 --- a/build/doc/html/group___t2.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: T2 - Implementation of a tier-2 coding - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    T2 - Implementation of a tier-2 coding
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___t_c_d.html b/build/doc/html/group___t_c_d.html deleted file mode 100644 index e68b7fcaf..000000000 --- a/build/doc/html/group___t_c_d.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: TCD - Implementation of a tile coder/decoder - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    TCD - Implementation of a tile coder/decoder
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___t_g_t.html b/build/doc/html/group___t_g_t.html deleted file mode 100644 index 821c15ace..000000000 --- a/build/doc/html/group___t_g_t.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: TGT - Implementation of a tag-tree coder - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    TGT - Implementation of a tag-tree coder
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___t_h_r_e_a_d.html b/build/doc/html/group___t_h_r_e_a_d.html deleted file mode 100644 index e40ebc15e..000000000 --- a/build/doc/html/group___t_h_r_e_a_d.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: THREAD - Mutex, conditions, threads and thread pools - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    THREAD - Mutex, conditions, threads and thread pools
    -
    -
    -
    - - - - diff --git a/build/doc/html/group___v_a_l.html b/build/doc/html/group___v_a_l.html deleted file mode 100644 index e82211109..000000000 --- a/build/doc/html/group___v_a_l.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: VAL - validation procedure - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    VAL - validation procedure
    -
    -
    -
    - - - - diff --git a/build/doc/html/ihdrbox__manager_8c.html b/build/doc/html/ihdrbox__manager_8c.html deleted file mode 100644 index e25083d51..000000000 --- a/build/doc/html/ihdrbox__manager_8c.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -OpenJPEG: ihdrbox_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    ihdrbox_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <assert.h>
    -#include "ihdrbox_manager.h"
    -
    - - - - -

    -Functions

    ihdrbox_param_tgene_ihdrbox (metadatalist_param_t *metadatalist, Byte_t *jpipstream)
     generate ihdr box More...
     
    -

    Function Documentation

    - -

    ◆ gene_ihdrbox()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    ihdrbox_param_t* gene_ihdrbox (metadatalist_param_tmetadatalist,
    Byte_tjpipstream 
    )
    -
    - -

    generate ihdr box

    -
    Parameters
    - - - -
    [in]metadatalistmetadata list pointer
    [in]jpipstreamJPT/JPP stream
    -
    -
    -
    Returns
    pointer to generated ihdr box
    - -

    References big2(), big4(), metadata_param::boxlist, ihdrbox_param::bpc, metadatalist_param::first, gene_boxbyTypeinStream(), get_DBoxlen(), get_DBoxoff(), ihdrbox_param::height, ihdrbox_param::nc, metadata_param::next, search_box(), and ihdrbox_param::width.

    - -

    Referenced by decode_jpip().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/ihdrbox__manager_8h.html b/build/doc/html/ihdrbox__manager_8h.html deleted file mode 100644 index 5fa99091f..000000000 --- a/build/doc/html/ihdrbox__manager_8h.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -OpenJPEG: ihdrbox_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    ihdrbox_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "box_manager.h"
    -#include "metadata_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  ihdrbox_param
     I.5.3.1 Image Header box. More...
     
    - - - - -

    -Typedefs

    typedef struct ihdrbox_param ihdrbox_param_t
     I.5.3.1 Image Header box. More...
     
    - - - - -

    -Functions

    ihdrbox_param_tgene_ihdrbox (metadatalist_param_t *metadatalist, Byte_t *jpipstream)
     generate ihdr box More...
     
    -

    Typedef Documentation

    - -

    ◆ ihdrbox_param_t

    - -
    -
    - - - - -
    typedef struct ihdrbox_param ihdrbox_param_t
    -
    - -

    I.5.3.1 Image Header box.

    - -
    -
    -

    Function Documentation

    - -

    ◆ gene_ihdrbox()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    ihdrbox_param_t* gene_ihdrbox (metadatalist_param_tmetadatalist,
    Byte_tjpipstream 
    )
    -
    - -

    generate ihdr box

    -
    Parameters
    - - - -
    [in]metadatalistmetadata list pointer
    [in]jpipstreamJPT/JPP stream
    -
    -
    -
    Returns
    pointer to generated ihdr box
    - -

    References big2(), big4(), metadata_param::boxlist, ihdrbox_param::bpc, metadatalist_param::first, gene_boxbyTypeinStream(), get_DBoxlen(), get_DBoxoff(), ihdrbox_param::height, ihdrbox_param::nc, metadata_param::next, search_box(), and ihdrbox_param::width.

    - -

    Referenced by decode_jpip().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/ihdrbox__manager_8h_source.html b/build/doc/html/ihdrbox__manager_8h_source.html deleted file mode 100644 index 0f705dd3f..000000000 --- a/build/doc/html/ihdrbox__manager_8h_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: ihdrbox_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    ihdrbox_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef IHDRBOX_MANAGER_H_
    -
    32 # define IHDRBOX_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "box_manager.h"
    -
    36 #include "metadata_manager.h"
    -
    37 
    -
    39 typedef struct ihdrbox_param {
    - - - - - -
    45 
    - -
    54  Byte_t *jpipstream);
    -
    55 
    -
    56 
    -
    57 #endif /* !IHDRBOX_MANAGER_H_ */
    -
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    - -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    box parameters
    Definition: box_manager.h:37
    -
    metadata_param_t * first
    first metadata-bin pointer of the list
    Definition: metadata_manager.h:55
    -
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    -
    box_param_t * gene_boxbyTypeinStream(Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from code stream
    Definition: box_manager.c:243
    -
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    -
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    -
    struct metadata_param * next
    pointer to the next metadata-bin
    Definition: metadata_manager.h:49
    -
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    -
    metadata-bin parameters
    Definition: metadata_manager.h:43
    -
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    - -
    struct ihdrbox_param ihdrbox_param_t
    I.5.3.1 Image Header box.
    - -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    -
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    - -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    - - - - diff --git a/build/doc/html/image_8c.html b/build/doc/html/image_8c.html deleted file mode 100644 index 4fd14daff..000000000 --- a/build/doc/html/image_8c.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -OpenJPEG: image.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    image.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    opj_image_topj_image_create0 (void)
     Create an empty image. More...
     
    opj_image_t *OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Create an image. More...
     
    void OPJ_CALLCONV opj_image_destroy (opj_image_t *image)
     Deallocate any resources associated with an image. More...
     
    void opj_image_comp_header_update (opj_image_t *p_image_header, const struct opj_cp *p_cp)
     Updates the components characteristics of the image from the coding parameters. More...
     
    void opj_copy_image_header (const opj_image_t *p_image_src, opj_image_t *p_image_dest)
     Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed. More...
     
    opj_image_t *OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Creates an image without allocating memory for the image (used in the new version of the library). More...
     
    -

    Function Documentation

    - -

    ◆ opj_copy_image_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_copy_image_header (const opj_image_tp_image_src,
    opj_image_tp_image_dest 
    )
    -
    - -

    Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.

    -
    Parameters
    - - - -
    p_image_srcthe src image
    p_image_destthe dest image
    -
    -
    - -

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image::icc_profile_buf, opj_image::icc_profile_len, opj_image::numcomps, opj_free(), opj_image_data_free(), opj_malloc(), opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    - -
    -
    - -

    ◆ opj_image_comp_header_update()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_image_comp_header_update (opj_image_tp_image_header,
    const struct opj_cpp_cp 
    )
    -
    - -

    Updates the components characteristics of the image from the coding parameters.

    -
    Parameters
    - - - -
    p_image_headerthe image header to update.
    p_cpthe coding parameters from which to update the image.
    -
    -
    - -

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::factor, opj_image_comp::h, opj_image::numcomps, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image_comp::x0, opj_image::x0, opj_image::x1, opj_image_comp::y0, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_j2k_read_siz().

    - -
    -
    - -

    ◆ opj_image_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_image_t* OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    -
    -
    - -

    ◆ opj_image_create0()

    - -
    -
    - - - - - - - - -
    opj_image_t* opj_image_create0 (void )
    -
    - -

    Create an empty image.

    -
    Returns
    returns an empty image if successful, returns NULL otherwise
    - -

    References opj_calloc().

    - -

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    - -
    -
    - -

    ◆ opj_image_destroy()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_image_destroy (opj_image_timage)
    -
    -
    - -

    ◆ opj_image_tile_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_image_t* OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    -
    - -

    Creates an image without allocating memory for the image (used in the new version of the library).

    -
    Parameters
    - - - - -
    numcmptsthe number of components
    cmptparmsthe components parameters
    clrspcthe image color space
    -
    -
    -
    Returns
    a new image structure if successful, NULL otherwise.
    - -

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image_comp::dx, opj_image_comptparm::dx, opj_image_comp::dy, opj_image_comptparm::dy, opj_image_comp::h, opj_image_comptparm::h, opj_image::numcomps, opj_calloc(), opj_image_destroy(), opj_image_comp::prec, opj_image_comptparm::prec, opj_image_comp::sgnd, opj_image_comptparm::sgnd, opj_image_comp::w, opj_image_comptparm::w, opj_image_comp::x0, opj_image_comptparm::x0, opj_image_comp::y0, and opj_image_comptparm::y0.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/image_8h.html b/build/doc/html/image_8h.html deleted file mode 100644 index 148d1cc24..000000000 --- a/build/doc/html/image_8h.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - -OpenJPEG: image.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    image.h File Reference
    -
    -
    - -

    Implementation of operations on images (IMAGE) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    opj_image_topj_image_create0 (void)
     Create an empty image. More...
     
    void opj_image_comp_header_update (opj_image_t *p_image, const struct opj_cp *p_cp)
     Updates the components characteristics of the image from the coding parameters. More...
     
    void opj_copy_image_header (const opj_image_t *p_image_src, opj_image_t *p_image_dest)
     Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed. More...
     
    -

    Detailed Description

    -

    Implementation of operations on images (IMAGE)

    -

    The functions in IMAGE.C have for goal to realize operations on images.

    -

    Function Documentation

    - -

    ◆ opj_copy_image_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_copy_image_header (const opj_image_tp_image_src,
    opj_image_tp_image_dest 
    )
    -
    - -

    Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.

    -
    Parameters
    - - - -
    p_image_srcthe src image
    p_image_destthe dest image
    -
    -
    - -

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image::icc_profile_buf, opj_image::icc_profile_len, opj_image::numcomps, opj_free(), opj_image_data_free(), opj_malloc(), opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    - -
    -
    - -

    ◆ opj_image_comp_header_update()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_image_comp_header_update (opj_image_tp_image_header,
    const struct opj_cpp_cp 
    )
    -
    - -

    Updates the components characteristics of the image from the coding parameters.

    -
    Parameters
    - - - -
    p_image_headerthe image header to update.
    p_cpthe coding parameters from which to update the image.
    -
    -
    - -

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::factor, opj_image_comp::h, opj_image::numcomps, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image_comp::x0, opj_image::x0, opj_image::x1, opj_image_comp::y0, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_j2k_read_siz().

    - -
    -
    - -

    ◆ opj_image_create0()

    - -
    -
    - - - - - - - - -
    opj_image_t* opj_image_create0 (void )
    -
    - -

    Create an empty image.

    -
    Returns
    returns an empty image if successful, returns NULL otherwise
    - -

    References opj_calloc().

    - -

    Referenced by opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/image_8h_source.html b/build/doc/html/image_8h_source.html deleted file mode 100644 index 3fc763dd8..000000000 --- a/build/doc/html/image_8h_source.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -OpenJPEG: image.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    image.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 #ifndef OPJ_IMAGE_H
    -
    32 #define OPJ_IMAGE_H
    -
    33 
    -
    40 struct opj_image;
    -
    41 struct opj_cp;
    -
    42 
    -
    45 
    - -
    52 
    -
    53 
    -
    54 
    - -
    62  const struct opj_cp* p_cp);
    -
    63 
    -
    64 void opj_copy_image_header(const opj_image_t* p_image_src,
    -
    65  opj_image_t* p_image_dest);
    -
    66 
    -
    69 #endif /* OPJ_IMAGE_H */
    -
    70 
    -
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    -
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    -
    void opj_image_comp_header_update(opj_image_t *p_image, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    -
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    Component parameters structure used by the opj_image_create function.
    Definition: openjpeg.h:728
    -
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:744
    -
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    -
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:740
    -
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    Coding parameters.
    Definition: j2k.h:347
    -
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    -
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    -
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    -
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    -
    opj_image_t *OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Create an image.
    Definition: image.c:40
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    -
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    -
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:738
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    -
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:746
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:734
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    -
    enum COLOR_SPACE OPJ_COLOR_SPACE
    Supported image color spaces.
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    -
    opj_image_t *OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Creates an image without allocating memory for the image (used in the new version of the library).
    Definition: image.c:228
    -
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    -
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:730
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:736
    -
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    -
    void opj_image_comp_header_update(opj_image_t *p_image_header, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:742
    -
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    -
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:732
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    - - - - diff --git a/build/doc/html/imgreg__manager_8c.html b/build/doc/html/imgreg__manager_8c.html deleted file mode 100644 index 506cc7332..000000000 --- a/build/doc/html/imgreg__manager_8c.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -OpenJPEG: imgreg_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    imgreg_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <math.h>
    -#include <stdlib.h>
    -#include <assert.h>
    -#include "imgreg_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - -

    -Functions

    imgreg_param_t map_viewin2imgreg (const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
     map view-window requests to codestream image resolutions and regions More...
     
    void find_level (int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
     find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented More...
     
    int comp_decomplev (int fw, int fh, int Xsiz, int Ysiz)
     compute decomposition level (only to get the level use find_level for all parameters More...
     
    void print_imgreg (imgreg_param_t imgreg)
     print image region parameters More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ comp_decomplev()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int comp_decomplev (int fw,
    int fh,
    int Xsiz,
    int Ysiz 
    )
    -
    - -

    compute decomposition level (only to get the level use find_level for all parameters

    -
    Parameters
    - - - - - -
    [in]fwhorizontal frame size
    [in]fhvertical frame size
    [in]Xsizimage width
    [in]Ysizimage height
    -
    -
    -
    Returns
    decomposition level
    - -

    References find_level().

    - -

    Referenced by recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    - -
    -
    - -

    ◆ find_level()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void find_level (int maxlev,
    int * lev,
    int * fx,
    int * fy,
    int * xmin,
    int * ymin,
    int * xmax,
    int * ymax 
    )
    -
    - -

    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented

    -
    Parameters
    - - - - - - - - - -
    [in]maxlevmaximum decomposition level
    [in,out]levdecomposition level pointer
    [in,out]fxhorizontal frame size pointer
    [in,out]fyvertical frame size pointer
    [in,out]xminhorizontal image offset pointer
    [in,out]yminvertical image offset pointer
    [in,out]xmaxhorizontal image size pointer
    [in,out]ymaxvertical image size pointer
    -
    -
    - -

    References FCGI_stderr, and find_level().

    - -

    Referenced by comp_decomplev(), find_level(), and map_viewin2imgreg().

    - -
    -
    - -

    ◆ map_viewin2imgreg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    imgreg_param_t map_viewin2imgreg (const int fx,
    const int fy,
    const int rx,
    const int ry,
    const int rw,
    const int rh,
    const int XOsiz,
    const int YOsiz,
    const int Xsiz,
    const int Ysiz,
    const int numOfreslev 
    )
    -
    - -

    map view-window requests to codestream image resolutions and regions

    -
    Parameters
    - - - - - - - -
    [in]fx,fyframe size
    [in]rx,ryoffset of region
    [in]rw,rhsize of region
    [in]XOsiz,YOsizoffset from the origin of the reference grid to the left side of the image area
    [in]Xsiz,Ysizsize of the reference grid
    [in]numOfreslevnumber of resolution levels
    -
    -
    -
    Returns
    structure of image region parameters
    - -

    References FCGI_stdout, find_level(), imgreg_param::fx, imgreg_param::fy, imgreg_param::level, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, imgreg_param::sy, imgreg_param::xosiz, and imgreg_param::yosiz.

    - -

    Referenced by enqueue_imagedata().

    - -
    -
    - -

    ◆ print_imgreg()

    - -
    -
    - - - - - - - - -
    void print_imgreg (imgreg_param_t imgreg)
    -
    - -

    print image region parameters

    -
    Parameters
    - - -
    [in]imgregimage region structure of parameters
    -
    -
    - -

    References imgreg_param::fx, imgreg_param::fy, imgreg_param::level, logstream, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, and imgreg_param::sy.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/imgreg__manager_8h.html b/build/doc/html/imgreg__manager_8h.html deleted file mode 100644 index 2693fb639..000000000 --- a/build/doc/html/imgreg__manager_8h.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -OpenJPEG: imgreg_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    imgreg_manager.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  imgreg_param
     image region parameters More...
     
    - - - - -

    -Typedefs

    typedef struct imgreg_param imgreg_param_t
     image region parameters More...
     
    - - - - - - - - - - - - - -

    -Functions

    imgreg_param_t map_viewin2imgreg (const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
     map view-window requests to codestream image resolutions and regions More...
     
    void find_level (int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
     find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented More...
     
    int comp_decomplev (int fw, int fh, int Xsiz, int Ysiz)
     compute decomposition level (only to get the level use find_level for all parameters More...
     
    void print_imgreg (imgreg_param_t imgreg)
     print image region parameters More...
     
    -

    Typedef Documentation

    - -

    ◆ imgreg_param_t

    - -
    -
    - - - - -
    typedef struct imgreg_param imgreg_param_t
    -
    - -

    image region parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ comp_decomplev()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int comp_decomplev (int fw,
    int fh,
    int Xsiz,
    int Ysiz 
    )
    -
    - -

    compute decomposition level (only to get the level use find_level for all parameters

    -
    Parameters
    - - - - - -
    [in]fwhorizontal frame size
    [in]fhvertical frame size
    [in]Xsizimage width
    [in]Ysizimage height
    -
    -
    -
    Returns
    decomposition level
    - -

    References find_level().

    - -

    Referenced by recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    - -
    -
    - -

    ◆ find_level()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void find_level (int maxlev,
    int * lev,
    int * fx,
    int * fy,
    int * xmin,
    int * ymin,
    int * xmax,
    int * ymax 
    )
    -
    - -

    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream image resolution and regions Note: only round-down implemented

    -
    Parameters
    - - - - - - - - - -
    [in]maxlevmaximum decomposition level
    [in,out]levdecomposition level pointer
    [in,out]fxhorizontal frame size pointer
    [in,out]fyvertical frame size pointer
    [in,out]xminhorizontal image offset pointer
    [in,out]yminvertical image offset pointer
    [in,out]xmaxhorizontal image size pointer
    [in,out]ymaxvertical image size pointer
    -
    -
    - -

    References FCGI_stderr, and find_level().

    - -

    Referenced by comp_decomplev(), find_level(), and map_viewin2imgreg().

    - -
    -
    - -

    ◆ map_viewin2imgreg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    imgreg_param_t map_viewin2imgreg (const int fx,
    const int fy,
    const int rx,
    const int ry,
    const int rw,
    const int rh,
    const int XOsiz,
    const int YOsiz,
    const int Xsiz,
    const int Ysiz,
    const int numOfreslev 
    )
    -
    - -

    map view-window requests to codestream image resolutions and regions

    -
    Parameters
    - - - - - - - -
    [in]fx,fyframe size
    [in]rx,ryoffset of region
    [in]rw,rhsize of region
    [in]XOsiz,YOsizoffset from the origin of the reference grid to the left side of the image area
    [in]Xsiz,Ysizsize of the reference grid
    [in]numOfreslevnumber of resolution levels
    -
    -
    -
    Returns
    structure of image region parameters
    - -

    References FCGI_stdout, find_level(), imgreg_param::fx, imgreg_param::fy, imgreg_param::level, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, imgreg_param::sy, imgreg_param::xosiz, and imgreg_param::yosiz.

    - -

    Referenced by enqueue_imagedata().

    - -
    -
    - -

    ◆ print_imgreg()

    - -
    -
    - - - - - - - - -
    void print_imgreg (imgreg_param_t imgreg)
    -
    - -

    print image region parameters

    -
    Parameters
    - - -
    [in]imgregimage region structure of parameters
    -
    -
    - -

    References imgreg_param::fx, imgreg_param::fy, imgreg_param::level, logstream, imgreg_param::ox, imgreg_param::oy, imgreg_param::sx, and imgreg_param::sy.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/imgreg__manager_8h_source.html b/build/doc/html/imgreg__manager_8h_source.html deleted file mode 100644 index aee5263d8..000000000 --- a/build/doc/html/imgreg__manager_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -OpenJPEG: imgreg_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    imgreg_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef IMGREG_MANAGER_H_
    -
    32 # define IMGREG_MANAGER_H_
    -
    33 
    -
    35 typedef struct imgreg_param {
    -
    36  int xosiz, yosiz;
    -
    38  int fx, fy;
    -
    39  int ox, oy;
    -
    40  int sx, sy;
    -
    41  int level;
    - -
    43 
    -
    44 
    -
    56 imgreg_param_t map_viewin2imgreg(const int fx, const int fy,
    -
    57  const int rx, const int ry,
    -
    58  const int rw, const int rh,
    -
    59  const int XOsiz, const int YOsiz,
    -
    60  const int Xsiz, const int Ysiz,
    -
    61  const int numOfreslev);
    -
    62 
    -
    63 
    -
    79 void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin,
    -
    80  int *xmax, int *ymax);
    -
    81 
    -
    92 int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz);
    -
    93 
    -
    99 void print_imgreg(imgreg_param_t imgreg);
    -
    100 
    -
    101 
    -
    102 #endif /* !IMGREG_MANAGER_H_ */
    -
    -
    #define FCGI_stderr
    Definition: imgreg_manager.c:42
    -
    int ox
    frame size (fsiz)
    Definition: imgreg_manager.h:39
    -
    #define logstream
    Definition: imgreg_manager.c:43
    -
    void print_imgreg(imgreg_param_t imgreg)
    print image region parameters
    Definition: imgreg_manager.c:150
    -
    struct imgreg_param imgreg_param_t
    image region parameters
    - -
    void print_imgreg(imgreg_param_t imgreg)
    print image region parameters
    Definition: imgreg_manager.c:150
    -
    int oy
    Definition: imgreg_manager.h:39
    -
    image region parameters
    Definition: imgreg_manager.h:35
    -
    int sx
    offset (roff)
    Definition: imgreg_manager.h:40
    -
    void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream ima...
    Definition: imgreg_manager.c:109
    -
    int sy
    Definition: imgreg_manager.h:40
    -
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    -
    int fx
    offset from the origin of the reference grid at the decomposition level
    Definition: imgreg_manager.h:38
    -
    void find_level(int maxlev, int *lev, int *fx, int *fy, int *xmin, int *ymin, int *xmax, int *ymax)
    find deconposition level and its resolution size C.4.1 Mapping view-window requests to codestream ima...
    Definition: imgreg_manager.c:109
    -
    int level
    region size (rsiz)
    Definition: imgreg_manager.h:41
    -
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    -
    #define FCGI_stdout
    Definition: imgreg_manager.c:41
    -
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    -
    int xosiz
    Definition: imgreg_manager.h:36
    -
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    -
    int yosiz
    Definition: imgreg_manager.h:36
    -
    int fy
    Definition: imgreg_manager.h:38
    - - - - diff --git a/build/doc/html/imgsock__manager_8c.html b/build/doc/html/imgsock__manager_8c.html deleted file mode 100644 index 65c2afaa7..000000000 --- a/build/doc/html/imgsock__manager_8c.html +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - - -OpenJPEG: imgsock_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    imgsock_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include "imgsock_manager.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    msgtype_t identify_clientmsg (SOCKET connected_socket)
     indeitify client message type More...
     
    Byte_treceive_JPIPstream (SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
     receive a JPT- JPP- stream from client More...
     
    void send_XMLstream (SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
     send XML data stream to the client More...
     
    void send_IDstream (SOCKET connected_socket, const char *id, OPJ_SIZE_T idlen, const char *label)
     
    void send_CIDstream (SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
     send CID data stream to the client More...
     
    void send_TIDstream (SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
     send TID data stream to the client More...
     
    void send_PNMstream (SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
     send PGM/PPM image stream to the client More...
     
    void send_SIZstream (SOCKET connected_socket, unsigned int width, unsigned int height)
     send SIZ data stream to the client More...
     
    void response_signal (SOCKET connected_socket, OPJ_BOOL succeed)
     send response signal to the client More...
     
    -

    Function Documentation

    - -

    ◆ identify_clientmsg()

    - -
    -
    - - - - - - - - -
    msgtype_t identify_clientmsg (SOCKET connected_socket)
    -
    - -

    indeitify client message type

    -
    Parameters
    - - -
    [in]connected_socketfile descriptor of the connected socket
    -
    -
    -
    Returns
    message type
    - -

    References BUF_LEN, MSGERROR, NUM_OF_MSGTYPES, and receive_line().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ receive_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* receive_JPIPstream (SOCKET connected_socket,
    char ** target,
    char ** tid,
    char ** cid,
    OPJ_SIZE_Tstreamlen 
    )
    -
    - -

    receive a JPT- JPP- stream from client

    -
    Parameters
    - - - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [out]targetaddress of received target file name string pointer ( malloced, if not received, NULL)
    [out]tidaddress of received target identifier string pointer ( malloced, if not received, null string)
    [out]cidaddress of received channel identifier string pointer ( malloced, if not received, null string)
    [out]streamlenlength of the received codestream
    -
    -
    -
    Returns
    JPT- JPP- codestream
    - -

    References BUF_LEN, receive_line(), and receive_stream().

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ response_signal()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void response_signal (SOCKET connected_socket,
    OPJ_BOOL succeed 
    )
    -
    - -

    send response signal to the client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]succeedwhether if the requested process succeeded
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_dstCIDreqMSG(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ send_CIDstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_CIDstream (SOCKET connected_socket,
    const char * cid,
    OPJ_SIZE_T cidlen 
    )
    -
    - -

    send CID data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]cidcid string
    [in]cidlenlegnth of the cid string
    -
    -
    - -

    References send_IDstream().

    - -

    Referenced by handle_CIDreqMSG().

    - -
    -
    - -

    ◆ send_IDstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_IDstream (SOCKET connected_socket,
    const char * id,
    OPJ_SIZE_T idlen,
    const char * label 
    )
    -
    - -

    References send_stream().

    - -

    Referenced by send_CIDstream(), and send_TIDstream().

    - -
    -
    - -

    ◆ send_PNMstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_PNMstream (SOCKET connected_socket,
    Byte_tpnmstream,
    unsigned int width,
    unsigned int height,
    unsigned int numofcomp,
    Byte_t maxval 
    )
    -
    - -

    send PGM/PPM image stream to the client

    -
    Parameters
    - - - - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]pnmstreamPGM/PPM image codestream
    [in]widthwidth of the PGM/PPM image (different from the original image)
    [in]heightheight of the PGM/PPM image
    [in]numofcompnumber of components of the image
    [in]maxvalmaximum value of the image (only 255 supported)
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_PNMreqMSG().

    - -
    -
    - -

    ◆ send_SIZstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_SIZstream (SOCKET connected_socket,
    unsigned int width,
    unsigned int height 
    )
    -
    - -

    send SIZ data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]widthoriginal width of the image
    [in]heightoriginal height of the image
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_SIZreqMSG().

    - -
    -
    - -

    ◆ send_TIDstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_TIDstream (SOCKET connected_socket,
    const char * tid,
    OPJ_SIZE_T tidlen 
    )
    -
    - -

    send TID data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]tidtid string
    [in]tidlenlegnth of the tid string
    -
    -
    - -

    References send_IDstream().

    - -

    Referenced by handle_TIDreqMSG().

    - -
    -
    - -

    ◆ send_XMLstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_XMLstream (SOCKET connected_socket,
    Byte_txmlstream,
    OPJ_SIZE_T length 
    )
    -
    - -

    send XML data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]xmlstreamxml data stream
    [in]lengthlegnth of the xml data stream
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_XMLreqMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/imgsock__manager_8h.html b/build/doc/html/imgsock__manager_8h.html deleted file mode 100644 index 542ecde4f..000000000 --- a/build/doc/html/imgsock__manager_8h.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - - -OpenJPEG: imgsock_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    imgsock_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "sock_manager.h"
    -#include "opj_includes.h"
    -
    -

    Go to the source code of this file.

    - - - - -

    -Macros

    #define NUM_OF_MSGTYPES   9
     
    - - - -

    -Typedefs

    typedef enum eMSGTYPE msgtype_t
     
    - - - -

    -Enumerations

    enum  eMSGTYPE {
    -  JPIPSTREAM, -PNMREQ, -XMLREQ, -TIDREQ, -
    -  CIDREQ, -CIDDST, -SIZREQ, -JP2SAVE, -
    -  QUIT, -MSGERROR -
    - }
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    msgtype_t identify_clientmsg (SOCKET connected_socket)
     indeitify client message type More...
     
    Byte_treceive_JPIPstream (SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
     receive a JPT- JPP- stream from client More...
     
    void send_PNMstream (SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
     send PGM/PPM image stream to the client More...
     
    void send_XMLstream (SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
     send XML data stream to the client More...
     
    void send_TIDstream (SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
     send TID data stream to the client More...
     
    void send_CIDstream (SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
     send CID data stream to the client More...
     
    void send_SIZstream (SOCKET connected_socket, unsigned int width, unsigned int height)
     send SIZ data stream to the client More...
     
    void response_signal (SOCKET connected_socket, OPJ_BOOL succeed)
     send response signal to the client More...
     
    -

    Detailed Description

    -

    PROTOCOL specification to communicate with opj_dec_server

    -

    -JPIP-stream

    -

    Cache JPT- JPP- stream in server

    -

    client -> server: JPIP-stream\n version 1.1\n (optional for cid registration: targetnamestring\n tidstring\n cidstring\n) bytelengthvalue\n data
    - server -> client: 1 or 0 (of 1Byte response signal)

    -

    -PNM request

    -

    Get decoded PGM/PPM image

    -

    client -> server: PNM request\n [cid/tid]string\n fw\n fh\n
    - server -> client: P6 or P5 (2Byte) width (2Byte Big endian) height (2Byte Big endian) maxval (1Byte) data

    -

    -XML request

    -

    Get XML data

    -

    client -> server: XML request\n
    - server -> client: XML (3Byte) length (2Byte Big endian) data

    -

    -TID request

    -

    Get target ID of target image

    -

    client -> server: TID request\n targetname\n
    - server -> client: TID (3Byte) length (1Byte) tiddata

    -

    -CID request

    -

    Get Channel ID of identical target image

    -

    client -> server: CID request\n targetname\n
    - server -> client: CID (3Byte) length (1Byte) ciddata

    -

    -CID destroy

    -

    Close Channel ID

    -

    client -> server: CID destroy\n ciddata
    - server -> client: 1 or 0 (of 1Byte response signal)

    -

    -SIZ request

    -

    Get original size of image

    -

    client -> server: SIZ request\n tidstring\n cidstring\n
    - server -> client: SIZ (3Byte) width (3Byte Big endian) height (3Byte Big endian)

    -

    -JP2 save

    -

    Save in JP2 file format

    -

    client -> server: JP2 save\n ciddata
    - server -> client: 1 or 0 (of 1Byte response signal)

    -

    -QUIT

    -

    Quit the opj_dec_server program

    -

    client -> server: quit or QUIT

    -

    Macro Definition Documentation

    - -

    ◆ NUM_OF_MSGTYPES

    - -
    -
    - - - - -
    #define NUM_OF_MSGTYPES   9
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ msgtype_t

    - -
    -
    - - - - -
    typedef enum eMSGTYPE msgtype_t
    -
    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ eMSGTYPE

    - -
    -
    - - - - -
    enum eMSGTYPE
    -
    - - - - - - - - - - - -
    Enumerator
    JPIPSTREAM 
    PNMREQ 
    XMLREQ 
    TIDREQ 
    CIDREQ 
    CIDDST 
    SIZREQ 
    JP2SAVE 
    QUIT 
    MSGERROR 
    - -
    -
    -

    Function Documentation

    - -

    ◆ identify_clientmsg()

    - -
    -
    - - - - - - - - -
    msgtype_t identify_clientmsg (SOCKET connected_socket)
    -
    - -

    indeitify client message type

    -
    Parameters
    - - -
    [in]connected_socketfile descriptor of the connected socket
    -
    -
    -
    Returns
    message type
    - -

    References BUF_LEN, MSGERROR, NUM_OF_MSGTYPES, and receive_line().

    - -

    Referenced by handle_clientreq().

    - -
    -
    - -

    ◆ receive_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* receive_JPIPstream (SOCKET connected_socket,
    char ** target,
    char ** tid,
    char ** cid,
    OPJ_SIZE_Tstreamlen 
    )
    -
    - -

    receive a JPT- JPP- stream from client

    -
    Parameters
    - - - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [out]targetaddress of received target file name string pointer ( malloced, if not received, NULL)
    [out]tidaddress of received target identifier string pointer ( malloced, if not received, null string)
    [out]cidaddress of received channel identifier string pointer ( malloced, if not received, null string)
    [out]streamlenlength of the received codestream
    -
    -
    -
    Returns
    JPT- JPP- codestream
    - -

    References BUF_LEN, receive_line(), and receive_stream().

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ response_signal()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void response_signal (SOCKET connected_socket,
    OPJ_BOOL succeed 
    )
    -
    - -

    send response signal to the client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]succeedwhether if the requested process succeeded
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_dstCIDreqMSG(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ send_CIDstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_CIDstream (SOCKET connected_socket,
    const char * cid,
    OPJ_SIZE_T cidlen 
    )
    -
    - -

    send CID data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]cidcid string
    [in]cidlenlegnth of the cid string
    -
    -
    - -

    References send_IDstream().

    - -

    Referenced by handle_CIDreqMSG().

    - -
    -
    - -

    ◆ send_PNMstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_PNMstream (SOCKET connected_socket,
    Byte_tpnmstream,
    unsigned int width,
    unsigned int height,
    unsigned int numofcomp,
    Byte_t maxval 
    )
    -
    - -

    send PGM/PPM image stream to the client

    -
    Parameters
    - - - - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]pnmstreamPGM/PPM image codestream
    [in]widthwidth of the PGM/PPM image (different from the original image)
    [in]heightheight of the PGM/PPM image
    [in]numofcompnumber of components of the image
    [in]maxvalmaximum value of the image (only 255 supported)
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_PNMreqMSG().

    - -
    -
    - -

    ◆ send_SIZstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_SIZstream (SOCKET connected_socket,
    unsigned int width,
    unsigned int height 
    )
    -
    - -

    send SIZ data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]widthoriginal width of the image
    [in]heightoriginal height of the image
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_SIZreqMSG().

    - -
    -
    - -

    ◆ send_TIDstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_TIDstream (SOCKET connected_socket,
    const char * tid,
    OPJ_SIZE_T tidlen 
    )
    -
    - -

    send TID data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]tidtid string
    [in]tidlenlegnth of the tid string
    -
    -
    - -

    References send_IDstream().

    - -

    Referenced by handle_TIDreqMSG().

    - -
    -
    - -

    ◆ send_XMLstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_XMLstream (SOCKET connected_socket,
    Byte_txmlstream,
    OPJ_SIZE_T length 
    )
    -
    - -

    send XML data stream to the client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]xmlstreamxml data stream
    [in]lengthlegnth of the xml data stream
    -
    -
    - -

    References send_stream().

    - -

    Referenced by handle_XMLreqMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/imgsock__manager_8h_source.html b/build/doc/html/imgsock__manager_8h_source.html deleted file mode 100644 index 6e31e1478..000000000 --- a/build/doc/html/imgsock__manager_8h_source.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -OpenJPEG: imgsock_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    imgsock_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef IMGSOCK_MANAGER_H_
    -
    32 # define IMGSOCK_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "sock_manager.h"
    -
    36 #include "opj_includes.h"
    -
    37 
    -
    38 #define NUM_OF_MSGTYPES 9
    - -
    40 
    -
    47 msgtype_t identify_clientmsg(SOCKET connected_socket);
    -
    48 
    -
    59 Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid,
    -
    60  char **cid, OPJ_SIZE_T *streamlen);
    -
    61 
    -
    72 void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream,
    -
    73  unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval);
    -
    74 
    -
    82 void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream,
    -
    83  OPJ_SIZE_T length);
    -
    84 
    -
    92 void send_TIDstream(SOCKET connected_socket, const char *tid,
    -
    93  OPJ_SIZE_T tidlen);
    -
    94 
    -
    102 void send_CIDstream(SOCKET connected_socket, const char *cid,
    -
    103  OPJ_SIZE_T cidlen);
    -
    104 
    -
    112 void send_SIZstream(SOCKET connected_socket, unsigned int width,
    -
    113  unsigned int height);
    -
    114 
    -
    121 void response_signal(SOCKET connected_socket, OPJ_BOOL succeed);
    -
    122 
    -
    123 #endif /* !IMGSOCK_MANAGER_H_ */
    -
    124 
    -
    -
    @ CIDDST
    Definition: imgsock_manager.h:39
    -
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    -
    @ CIDREQ
    Definition: imgsock_manager.h:39
    -
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    -
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    -
    @ SIZREQ
    Definition: imgsock_manager.h:39
    - -
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    -
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    -
    eMSGTYPE
    Definition: imgsock_manager.h:39
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    void send_IDstream(SOCKET connected_socket, const char *id, OPJ_SIZE_T idlen, const char *label)
    Definition: imgsock_manager.c:162
    -
    #define NUM_OF_MSGTYPES
    Definition: imgsock_manager.h:38
    -
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    -
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    -
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    -
    @ QUIT
    Definition: imgsock_manager.h:39
    -
    int SOCKET
    Definition: sock_manager.h:40
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    @ JP2SAVE
    Definition: imgsock_manager.h:39
    -
    Byte_t * receive_JPIPstream(SOCKET connected_socket, char **target, char **tid, char **cid, OPJ_SIZE_T *streamlen)
    receive a JPT- JPP- stream from client
    Definition: imgsock_manager.c:67
    -
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    -
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    -
    #define BUF_LEN
    Definition: sock_manager.h:43
    -
    @ TIDREQ
    Definition: imgsock_manager.h:39
    -
    void send_SIZstream(SOCKET connected_socket, unsigned int width, unsigned int height)
    send SIZ data stream to the client
    Definition: imgsock_manager.c:196
    -
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    -
    @ XMLREQ
    Definition: imgsock_manager.h:39
    -
    void send_XMLstream(SOCKET connected_socket, Byte_t *xmlstream, OPJ_SIZE_T length)
    send XML data stream to the client
    Definition: imgsock_manager.c:134
    - -
    @ PNMREQ
    Definition: imgsock_manager.h:39
    -
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    -
    void response_signal(SOCKET connected_socket, OPJ_BOOL succeed)
    send response signal to the client
    Definition: imgsock_manager.c:214
    -
    enum eMSGTYPE msgtype_t
    - -
    @ MSGERROR
    Definition: imgsock_manager.h:39
    -
    void send_PNMstream(SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
    send PGM/PPM image stream to the client
    Definition: imgsock_manager.c:176
    -
    void send_CIDstream(SOCKET connected_socket, const char *cid, OPJ_SIZE_T cidlen)
    send CID data stream to the client
    Definition: imgsock_manager.c:152
    -
    @ JPIPSTREAM
    Definition: imgsock_manager.h:39
    -
    void send_TIDstream(SOCKET connected_socket, const char *tid, OPJ_SIZE_T tidlen)
    send TID data stream to the client
    Definition: imgsock_manager.c:157
    - - - - diff --git a/build/doc/html/index.html b/build/doc/html/index.html deleted file mode 100644 index 3dbcafc48..000000000 --- a/build/doc/html/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -OpenJPEG: OpenJPEG v2.3.1 Documentation - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    OpenJPEG v2.3.1 Documentation
    -
    -
    -

    -Introduction

    -

    This manual documents the low-level OpenJPEG C API.
    -The OpenJPEG library is an open-source JPEG 2000 library developed in order to promote the use of JPEG 2000.
    -This documents is focused on the main part of the library which try to implement Part 1 and Part 2 of the JPEG2000 norm.
    -

    -

    -Home page

    -

    The Home Page of the OpenJPEG project can be found at:

    -

    http://www.openjpeg.org/

    -

    The source code repository is available here:

    -

    http://github.com/uclouvain/openjpeg

    -

    The OpenJPEG mailing list is located here:

    -

    http://groups.google.com/group/openjpeg

    -

    The test files repository is available here:

    -

    http://github.com/uclouvain/openjpeg-data

    -

    -License

    -

    This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.
    -The only restriction is to retain the copyright in the sources or the binaries documentation.
    -Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage.

    -
    Author
    OpenJPEG Team
    -
    -
    - - - - diff --git a/build/doc/html/index__manager_8c.html b/build/doc/html/index__manager_8c.html deleted file mode 100644 index a821da972..000000000 --- a/build/doc/html/index__manager_8c.html +++ /dev/null @@ -1,1103 +0,0 @@ - - - - - - - -OpenJPEG: index_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    index_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <math.h>
    -#include <string.h>
    -#include "opj_inttypes.h"
    -#include "index_manager.h"
    -#include "box_manager.h"
    -#include "manfbox_manager.h"
    -#include "mhixbox_manager.h"
    -#include "codestream_manager.h"
    -#include "marker_manager.h"
    -#include "faixbox_manager.h"
    -#include "boxheader_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_BOOL check_JP2boxidx (boxlist_param_t *toplev_boxlist)
     chekc JP2 box indexing More...
     
    OPJ_BOOL set_cidxdata (box_param_t *cidx_box, index_param_t *codeidx)
     set code index parameters (parse cidx box) Annex I More...
     
    index_param_tparse_jp2file (int fd)
     parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP More...
     
    void print_index (index_param_t index)
     print index parameters More...
     
    void print_SIZ (SIZmarker_param_t SIZ)
     print Image and Tile SIZ parameters More...
     
    void print_COD (CODmarker_param_t COD)
     print Coding style default COD parameters More...
     
    void delete_index (index_param_t **index)
     delete index More...
     
    void delete_COD (CODmarker_param_t COD)
     delete dynamic arrays in COD marker More...
     
    OPJ_BOOL set_cptrdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from cptr box I.3.2.2 Codestream Finder box More...
     
    OPJ_BOOL set_mainmhixdata (box_param_t *cidx_box, codestream_param_t codestream, index_param_t *jp2idx)
     set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box More...
     
    OPJ_BOOL set_tpixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box More...
     
    OPJ_BOOL set_thixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box More...
     
    OPJ_BOOL set_ppixdata (box_param_t *cidx_box, index_param_t *jp2idx)
     set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box More...
     
    OPJ_BOOL set_SIZmkrdata (markeridx_param_t *sizmkidx, codestream_param_t codestream, SIZmarker_param_t *SIZ)
     set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ) More...
     
    OPJ_BOOL set_CODmkrdata (markeridx_param_t *codmkidx, codestream_param_t codestream, CODmarker_param_t *COD)
     set code index parameters from COD marker in codestream A.6 Functional marker segments A.6.1 Coding style default (COD) More...
     
    Byte4_t max (Byte4_t n1, Byte4_t n2)
     
    Byte4_t min (Byte4_t n1, Byte4_t n2)
     
    range_param_t get_tile_range (Byte4_t Osiz, Byte4_t siz, Byte4_t TOsiz, Byte4_t Tsiz, Byte4_t tile_XYid, int level)
     
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get horizontal range of the tile in reference grid More...
     
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get vertical range of the tile in reference grid More...
     
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get tile wdith at the decomposition level More...
     
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     
    OPJ_BOOL isJPTfeasible (index_param_t index)
     answers if the target is feasible to JPT-stream More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ check_JP2boxidx()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL check_JP2boxidx (boxlist_param_ttoplev_boxlist)
    -
    - -

    chekc JP2 box indexing

    -
    Parameters
    - - -
    [in]toplev_boxlisttop level box list
    -
    -
    -
    Returns
    if correct (true) or wrong (false)
    - -

    References FCGI_stderr, fetch_DBox1byte(), fetch_DBox8bytebigendian(), gene_childboxbyType(), gene_childboxheader(), boxheader_param::headlen, boxheader_param::length, box_param::length, box_param::offset, OPJ_FALSE, opj_free(), OPJ_TRUE, search_box(), and boxheader_param::type.

    - -

    Referenced by parse_jp2file().

    - -
    -
    - -

    ◆ delete_COD()

    - -
    -
    - - - - - - - - -
    void delete_COD (CODmarker_param_t COD)
    -
    - -

    delete dynamic arrays in COD marker

    -
    Parameters
    - - -
    [in]CODCOD marker information
    -
    -
    - -

    References opj_free(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by delete_index(), and recons_codestream_from_JPPstream().

    - -
    -
    - -

    ◆ delete_index()

    - -
    -
    - - - - - - - - -
    void delete_index (index_param_t ** index)
    -
    - -

    delete index

    -
    Parameters
    - - -
    [in,out]indexaddressof the index pointer
    -
    -
    - -

    References delete_COD(), delete_faixbox(), delete_metadatalist(), delete_mhixbox(), and opj_free().

    - -

    Referenced by delete_target(), and destroy_index().

    - -
    -
    - -

    ◆ get_tile_range()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    range_param_t get_tile_range (Byte4_t Osiz,
    Byte4_t siz,
    Byte4_t TOsiz,
    Byte4_t Tsiz,
    Byte4_t tile_XYid,
    int level 
    )
    -
    -
    - -

    ◆ get_tile_Xrange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get horizontal range of the tile in reference grid

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    structured range parameter
    - -

    References get_tile_range(), SIZmarker_param::XOsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, and SIZmarker_param::XTsiz.

    - -

    Referenced by enqueue_imagedata(), and get_tile_XSiz().

    - -
    -
    - -

    ◆ get_tile_XSiz()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get tile wdith at the decomposition level

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    tile width
    - -

    References get_tile_Xrange(), range_param::maxvalue, and range_param::minvalue.

    - -

    Referenced by comp_numOfprcts(), enqueue_allprecincts(), and enqueue_precincts().

    - -
    -
    - -

    ◆ get_tile_Yrange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get vertical range of the tile in reference grid

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    structured range parameter
    - -

    References get_tile_range(), SIZmarker_param::XTnum, SIZmarker_param::YOsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    - -

    Referenced by enqueue_imagedata(), and get_tile_YSiz().

    - -
    -
    - -

    ◆ get_tile_YSiz()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    -
    - -

    ◆ isJPTfeasible()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL isJPTfeasible (index_param_t index)
    -
    - -

    answers if the target is feasible to JPT-stream

    -
    Parameters
    - - -
    [in]indexindex parameters
    -
    -
    -
    Returns
    true if JPT-stream is feasible
    - -

    References get_nmax(), OPJ_FALSE, OPJ_TRUE, and index_param::tilepart.

    - -

    Referenced by gene_target().

    - -
    -
    - -

    ◆ max()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t max (Byte4_t n1,
    Byte4_t n2 
    )
    -
    -
    - -

    ◆ min()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t min (Byte4_t n1,
    Byte4_t n2 
    )
    -
    -
    - -

    ◆ parse_jp2file()

    - -
    -
    - - - - - - - - -
    index_param_t* parse_jp2file (int fd)
    -
    - -

    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP

    -
    Parameters
    - - -
    [in]fdfile descriptor of the JP2 file
    -
    -
    -
    Returns
    pointer to the generated structure of index parameters
    - -

    References check_JP2boxidx(), const_metadatalist(), delete_boxlist(), FCGI_stderr, get_boxstructure(), get_filesize(), logstream, index_param::metadatalist, opj_free(), opj_malloc(), search_box(), and set_cidxdata().

    - -

    Referenced by gene_target(), and get_index_from_JP2file().

    - -
    -
    - -

    ◆ print_COD()

    - -
    -
    - - - - - - - - -
    void print_COD (CODmarker_param_t COD)
    -
    - -

    print Coding style default COD parameters

    -
    Parameters
    - - -
    [in]CODCOD marker information
    -
    -
    - -

    References logstream, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, CODmarker_param::prog_order, CODmarker_param::Scod, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by print_index().

    - -
    -
    - -

    ◆ print_index()

    - - - -

    ◆ print_SIZ()

    - - - -

    ◆ set_cidxdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_cidxdata (box_param_tcidx_box,
    index_param_tcodeidx 
    )
    -
    - -

    set code index parameters (parse cidx box) Annex I

    -
    Parameters
    - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [out]codeidxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References delete_manfbox(), FCGI_stderr, box_param::fd, gene_boxbyType(), gene_manfbox(), get_DBoxlen(), get_DBoxoff(), index_param::length, index_param::offset, OPJ_FALSE, opj_free(), OPJ_TRUE, search_boxheader(), set_codestream(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), and set_tpixdata().

    - -

    Referenced by parse_jp2file().

    - -
    -
    - -

    ◆ set_CODmkrdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_CODmkrdata (markeridx_param_tcodmkidx,
    codestream_param_t codestream,
    CODmarker_param_tCOD 
    )
    -
    - -

    set code index parameters from COD marker in codestream A.6 Functional marker segments A.6.1 Coding style default (COD)

    -
    Parameters
    - - - - -
    [in]codmkidxpointer to COD marker index in mhix box
    [in]codestreamcodestream parameters
    [out]CODCOD marker parameters pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References markeridx_param::code, FCGI_stderr, fetch_marker1byte(), fetch_marker2bytebigendian(), CODmarker_param::Lcod, markeridx_param::length, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, markeridx_param::offset, OPJ_FALSE, opj_malloc(), OPJ_TRUE, CODmarker_param::prog_order, CODmarker_param::Scod, set_marker(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by set_mainmhixdata().

    - -
    -
    - -

    ◆ set_cptrdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_cptrdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    -
    - -

    set code index parameters from cptr box I.3.2.2 Codestream Finder box

    -
    Parameters
    - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    -

    < cptr box

    - -

    References FCGI_stderr, box_param::fd, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), gene_boxbyType(), get_DBoxlen(), get_DBoxoff(), index_param::length, index_param::offset, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    - -

    Referenced by set_cidxdata().

    - -
    -
    - -

    ◆ set_mainmhixdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_mainmhixdata (box_param_tcidx_box,
    codestream_param_t codestream,
    index_param_tjp2idx 
    )
    -
    - -

    set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box

    -
    Parameters
    - - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [in]codestreamcodestream parameters
    [out]jp2idxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References index_param::COD, delete_mhixbox(), box_param::fd, fetch_DBox8bytebigendian(), gene_boxbyType(), gene_mhixbox(), get_DBoxlen(), get_DBoxoff(), index_param::mhead_length, OPJ_FALSE, opj_free(), OPJ_TRUE, search_markeridx(), set_CODmkrdata(), set_SIZmkrdata(), and index_param::SIZ.

    - -

    Referenced by set_cidxdata().

    - -
    -
    - -

    ◆ set_ppixdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_ppixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    -
    - -

    set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box

    -
    Parameters
    - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    -

    < manf

    -

    < box headers

    -

    < faix

    - -

    References SIZmarker_param::Csiz, delete_manfbox(), FCGI_stderr, box_param::fd, gene_boxbyOffset(), gene_boxbyType(), gene_faixbox(), gene_manfbox(), get_DBoxlen(), get_DBoxoff(), box_param::length, boxheader_param::next, box_param::offset, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, index_param::precpacket, search_boxheader(), and index_param::SIZ.

    - -

    Referenced by set_cidxdata().

    - -
    -
    - -

    ◆ set_SIZmkrdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_SIZmkrdata (markeridx_param_tsizmkidx,
    codestream_param_t codestream,
    SIZmarker_param_tSIZ 
    )
    -
    - -

    set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ)

    -
    Parameters
    - - - - -
    [in]sizmkidxpointer to SIZ marker index in mhix box
    [in]codestreamcodestream parameters
    [out]SIZSIZ marker parameters pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References markeridx_param::code, SIZmarker_param::Csiz, FCGI_stderr, fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), markeridx_param::length, SIZmarker_param::Lsiz, markeridx_param::offset, OPJ_FALSE, OPJ_TRUE, SIZmarker_param::Rsiz, set_marker(), SIZmarker_param::Ssiz, SIZmarker_param::XOsiz, SIZmarker_param::XRsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, SIZmarker_param::XTsiz, SIZmarker_param::YOsiz, SIZmarker_param::YRsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTnum, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    - -

    Referenced by set_mainmhixdata().

    - -
    -
    - -

    ◆ set_thixdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_thixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    -
    - -

    set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box

    -
    Parameters
    - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References delete_manfbox(), FCGI_stderr, box_param::fd, manfbox_param::first, gene_boxbyType(), gene_manfbox(), gene_mhixbox(), get_DBoxlen(), get_DBoxoff(), box_param::length, boxheader_param::next, box_param::offset, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, index_param::SIZ, index_param::tileheader, SIZmarker_param::XTnum, and SIZmarker_param::YTnum.

    - -

    Referenced by set_cidxdata().

    - -
    -
    - -

    ◆ set_tpixdata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL set_tpixdata (box_param_tcidx_box,
    index_param_tjp2idx 
    )
    -
    - -

    set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box

    -
    Parameters
    - - - -
    [in]cidx_boxpointer to the reference cidx_box
    [out]jp2idxpointer to index parameters
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    -

    < tpix box

    -

    < faix box

    - -

    References FCGI_stderr, box_param::fd, gene_boxbyType(), gene_faixbox(), get_DBoxlen(), get_DBoxoff(), OPJ_FALSE, opj_free(), OPJ_TRUE, and index_param::tilepart.

    - -

    Referenced by set_cidxdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/index__manager_8h.html b/build/doc/html/index__manager_8h.html deleted file mode 100644 index f871bc0fd..000000000 --- a/build/doc/html/index__manager_8h.html +++ /dev/null @@ -1,600 +0,0 @@ - - - - - - - -OpenJPEG: index_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    index_manager.h File Reference
    -
    -
    -
    #include "opj_config.h"
    -#include "opj_includes.h"
    -#include "byte_manager.h"
    -#include "faixbox_manager.h"
    -#include "metadata_manager.h"
    -#include "mhixbox_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - -

    -Data Structures

    struct  SIZmarker_param
     progression order More...
     
    struct  CODmarker_param
     A.6.1 Coding style default (COD) More...
     
    struct  index_param
     index parameters More...
     
    struct  range_param
     1-dimensional range parameters More...
     
    - - - - - - - - - - - - - -

    -Typedefs

    typedef struct SIZmarker_param SIZmarker_param_t
     progression order More...
     
    typedef struct CODmarker_param CODmarker_param_t
     A.6.1 Coding style default (COD) More...
     
    typedef struct index_param index_param_t
     index parameters More...
     
    typedef struct range_param range_param_t
     1-dimensional range parameters More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    index_param_tparse_jp2file (int fd)
     parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP More...
     
    void print_index (index_param_t index)
     print index parameters More...
     
    void print_SIZ (SIZmarker_param_t SIZ)
     print Image and Tile SIZ parameters More...
     
    void print_COD (CODmarker_param_t COD)
     print Coding style default COD parameters More...
     
    void delete_index (index_param_t **index)
     delete index More...
     
    void delete_COD (CODmarker_param_t COD)
     delete dynamic arrays in COD marker More...
     
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get horizontal range of the tile in reference grid More...
     
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get vertical range of the tile in reference grid More...
     
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     get tile wdith at the decomposition level More...
     
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
     
    OPJ_BOOL isJPTfeasible (index_param_t index)
     answers if the target is feasible to JPT-stream More...
     
    -

    Typedef Documentation

    - -

    ◆ CODmarker_param_t

    - -
    -
    - - - - -
    typedef struct CODmarker_param CODmarker_param_t
    -
    - -

    A.6.1 Coding style default (COD)

    - -
    -
    - -

    ◆ index_param_t

    - -
    -
    - - - - -
    typedef struct index_param index_param_t
    -
    - -

    index parameters

    - -
    -
    - -

    ◆ range_param_t

    - -
    -
    - - - - -
    typedef struct range_param range_param_t
    -
    - -

    1-dimensional range parameters

    - -
    -
    - -

    ◆ SIZmarker_param_t

    - -
    -
    - - - - -
    typedef struct SIZmarker_param SIZmarker_param_t
    -
    - -

    progression order

    -

    A.5.1 Image and tile size (SIZ)

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_COD()

    - -
    -
    - - - - - - - - -
    void delete_COD (CODmarker_param_t COD)
    -
    - -

    delete dynamic arrays in COD marker

    -
    Parameters
    - - -
    [in]CODCOD marker information
    -
    -
    - -

    References opj_free(), CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by delete_index(), and recons_codestream_from_JPPstream().

    - -
    -
    - -

    ◆ delete_index()

    - -
    -
    - - - - - - - - -
    void delete_index (index_param_t ** index)
    -
    - -

    delete index

    -
    Parameters
    - - -
    [in,out]indexaddressof the index pointer
    -
    -
    - -

    References delete_COD(), delete_faixbox(), delete_metadatalist(), delete_mhixbox(), and opj_free().

    - -

    Referenced by delete_target(), and destroy_index().

    - -
    -
    - -

    ◆ get_tile_Xrange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    range_param_t get_tile_Xrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get horizontal range of the tile in reference grid

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    structured range parameter
    - -

    References get_tile_range(), SIZmarker_param::XOsiz, SIZmarker_param::Xsiz, SIZmarker_param::XTnum, SIZmarker_param::XTOsiz, and SIZmarker_param::XTsiz.

    - -

    Referenced by enqueue_imagedata(), and get_tile_XSiz().

    - -
    -
    - -

    ◆ get_tile_XSiz()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_tile_XSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get tile wdith at the decomposition level

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    tile width
    - -

    References get_tile_Xrange(), range_param::maxvalue, and range_param::minvalue.

    - -

    Referenced by comp_numOfprcts(), enqueue_allprecincts(), and enqueue_precincts().

    - -
    -
    - -

    ◆ get_tile_Yrange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    range_param_t get_tile_Yrange (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    - -

    get vertical range of the tile in reference grid

    -
    Parameters
    - - - - -
    [in]SIZSIZ marker information
    [in]tile_idtile id
    [in]leveldecomposition level
    -
    -
    -
    Returns
    structured range parameter
    - -

    References get_tile_range(), SIZmarker_param::XTnum, SIZmarker_param::YOsiz, SIZmarker_param::Ysiz, SIZmarker_param::YTOsiz, and SIZmarker_param::YTsiz.

    - -

    Referenced by enqueue_imagedata(), and get_tile_YSiz().

    - -
    -
    - -

    ◆ get_tile_YSiz()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte4_t get_tile_YSiz (SIZmarker_param_t SIZ,
    Byte4_t tile_id,
    int level 
    )
    -
    -
    - -

    ◆ isJPTfeasible()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL isJPTfeasible (index_param_t index)
    -
    - -

    answers if the target is feasible to JPT-stream

    -
    Parameters
    - - -
    [in]indexindex parameters
    -
    -
    -
    Returns
    true if JPT-stream is feasible
    - -

    References get_nmax(), OPJ_FALSE, OPJ_TRUE, and index_param::tilepart.

    - -

    Referenced by gene_target().

    - -
    -
    - -

    ◆ parse_jp2file()

    - -
    -
    - - - - - - - - -
    index_param_t* parse_jp2file (int fd)
    -
    - -

    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP

    -
    Parameters
    - - -
    [in]fdfile descriptor of the JP2 file
    -
    -
    -
    Returns
    pointer to the generated structure of index parameters
    - -

    References check_JP2boxidx(), const_metadatalist(), delete_boxlist(), FCGI_stderr, get_boxstructure(), get_filesize(), logstream, index_param::metadatalist, opj_free(), opj_malloc(), search_box(), and set_cidxdata().

    - -

    Referenced by gene_target(), and get_index_from_JP2file().

    - -
    -
    - -

    ◆ print_COD()

    - -
    -
    - - - - - - - - -
    void print_COD (CODmarker_param_t COD)
    -
    - -

    print Coding style default COD parameters

    -
    Parameters
    - - -
    [in]CODCOD marker information
    -
    -
    - -

    References logstream, CODmarker_param::numOfdecomp, CODmarker_param::numOflayers, CODmarker_param::prog_order, CODmarker_param::Scod, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by print_index().

    - -
    -
    - -

    ◆ print_index()

    - - - -

    ◆ print_SIZ()

    - - -
    - - - - diff --git a/build/doc/html/index__manager_8h_source.html b/build/doc/html/index__manager_8h_source.html deleted file mode 100644 index cf6e08df2..000000000 --- a/build/doc/html/index__manager_8h_source.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - -OpenJPEG: index_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    index_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef INDEX_MANAGER_H_
    -
    32 # define INDEX_MANAGER_H_
    -
    33 
    -
    34 #include "opj_config.h"
    -
    35 #include "opj_includes.h"
    -
    36 
    -
    37 #include "byte_manager.h"
    -
    38 #include "faixbox_manager.h"
    -
    39 #include "metadata_manager.h"
    -
    40 #include "mhixbox_manager.h"
    -
    41 
    -
    43 #if 0
    -
    44 typedef enum porder {
    -
    45  PROG_UNKNOWN = -1,
    -
    46  LRCP = 0,
    -
    47  RLCP = 1,
    -
    48  RPCL = 2,
    -
    49  PCRL = 3,
    -
    50  CPRL = 4
    -
    51 } porder_t;
    -
    52 #endif
    -
    53 
    -
    55 typedef struct SIZmarker_param {
    - - - - - - - - - - - - - -
    69  Byte_t Ssiz[3];
    - - - -
    73 
    -
    75 typedef struct CODmarker_param {
    - - - - - - - - -
    84 
    -
    86 typedef struct index_param {
    - - - - - - - - - - - - -
    99 
    -
    100 
    -
    108 index_param_t * parse_jp2file(int fd);
    -
    109 
    -
    115 void print_index(index_param_t index);
    -
    116 
    -
    122 void print_SIZ(SIZmarker_param_t SIZ);
    -
    123 
    -
    129 void print_COD(CODmarker_param_t COD);
    -
    130 
    -
    136 void delete_index(index_param_t **index);
    -
    137 
    -
    143 void delete_COD(CODmarker_param_t COD);
    -
    144 
    -
    145 
    -
    147 typedef struct range_param {
    - - -
    150 } range_param_t;
    -
    151 
    - -
    161  int level);
    -
    162 
    - -
    172  int level);
    -
    173 
    -
    174 
    -
    183 Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level);
    -
    184 Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level);
    -
    185 
    -
    186 
    - -
    194 
    -
    195 #endif /* !INDEX_MANAGER_H_ */
    -
    -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    void print_COD(CODmarker_param_t COD)
    print Coding style default COD parameters
    Definition: index_manager.c:175
    -
    range_param_t get_tile_range(Byte4_t Osiz, Byte4_t siz, Byte4_t TOsiz, Byte4_t Tsiz, Byte4_t tile_XYid, int level)
    Definition: index_manager.c:741
    -
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    -
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    -
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    -
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    -
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    -
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    -
    box_param_t * gene_boxbyType(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:173
    -
    box header parameters
    Definition: boxheader_manager.h:39
    -
    OPJ_BOOL set_tpixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from tpix box I.3.2.4.4 Tile-part Index Table box
    Definition: index_manager.c:491
    -
    Byte2_t Lsiz
    length of marker segment excluding the marker
    Definition: index_manager.h:56
    -
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    -
    Byte4_t minvalue
    minimal value
    Definition: index_manager.h:148
    -
    Byte2_t Lcod
    length of marker segment excluding the marker
    Definition: index_manager.h:76
    -
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    -
    Byte4_t XTsiz
    width of one reference tile with respect to the reference grid
    Definition: index_manager.h:62
    -
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    -
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    -
    OPJ_BOOL set_thixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from thix box I.3.2.4.5 Tile Header Index Table box
    Definition: index_manager.c:517
    -
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    -
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    -
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    - - -
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    OPJ_BOOL set_mainmhixdata(box_param_t *cidx_box, codestream_param_t codestream, index_param_t *jp2idx)
    set code index parameters from mhix box for main header I.3.2.4.3 Header Index Table box
    Definition: index_manager.c:462
    - -
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    -
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    -
    OPJ_OFF_T offset
    codestream offset
    Definition: index_manager.h:88
    -
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    -
    box parameters
    Definition: box_manager.h:37
    -
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    -
    index parameters
    Definition: index_manager.h:86
    -
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    -
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    -
    OPJ_BOOL set_cptrdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from cptr box I.3.2.2 Codestream Finder box
    Definition: index_manager.c:400
    -
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    -
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    -
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    -
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    -
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    -
    Byte_t YRsiz[3]
    vertical separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:71
    -
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    -
    Byte2_t length
    codestream ( including the length
    Definition: mhixbox_manager.h:44
    -
    manifest box parameters
    Definition: manfbox_manager.h:41
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    Byte_t fetch_DBox1byte(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 1-byte Byte codes in file stream
    Definition: box_manager.c:326
    -
    struct range_param range_param_t
    1-dimensional range parameters
    -
    codestream_param_t set_codestream(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    set codestream parameters from inputs
    Definition: codestream_manager.c:44
    -
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    -
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    -
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    -
    Byte_t XRsiz[3]
    horizontal separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:70
    -
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    - -
    codestream parameters
    Definition: codestream_manager.h:37
    -
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    -
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    -
    struct SIZmarker_param SIZmarker_param_t
    progression order
    -
    void print_SIZ(SIZmarker_param_t SIZ)
    print Image and Tile SIZ parameters
    Definition: index_manager.c:151
    -
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    -
    Byte4_t YTsiz
    height of one reference tile with respect to the reference grid
    Definition: index_manager.h:63
    -
    OPJ_BOOL set_ppixdata(box_param_t *cidx_box, index_param_t *jp2idx)
    set code index parameters from ppix box I.3.2.4.6 Precinct Packet Index Table box
    Definition: index_manager.c:573
    - -
    #define logstream
    Definition: index_manager.c:52
    -
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    -
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    -
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    -
    #define FCGI_stderr
    Definition: index_manager.c:51
    -
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    -
    OPJ_BOOL set_cidxdata(box_param_t *cidx_box, index_param_t *codeidx)
    set code index parameters (parse cidx box) Annex I
    Definition: index_manager.c:348
    -
    void delete_faixbox(faixbox_param_t **faix)
    delete faix box
    Definition: faixbox_manager.c:145
    -
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_BOOL set_SIZmkrdata(markeridx_param_t *sizmkidx, codestream_param_t codestream, SIZmarker_param_t *SIZ)
    set SIZ marker information A.5 Fixed information marker segment A.5.1 Image and tile size (SIZ)
    Definition: index_manager.c:633
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    Marker parameters.
    Definition: marker_manager.h:38
    -
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    mhixbox_param_t ** tileheader
    dynamic array of tile header information from thix box
    Definition: index_manager.h:95
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    void print_COD(CODmarker_param_t COD)
    print Coding style default COD parameters
    Definition: index_manager.c:175
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    -
    struct CODmarker_param CODmarker_param_t
    A.6.1 Coding style default (COD)
    - -
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    -
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    -
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    -
    faixbox_param_t * gene_faixbox(box_param_t *box)
    generate faix box
    Definition: faixbox_manager.c:45
    -
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    -
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    -
    OPJ_BOOL set_CODmkrdata(markeridx_param_t *codmkidx, codestream_param_t codestream, CODmarker_param_t *COD)
    set code index parameters from COD marker in codestream A.6 Functional marker segments A....
    Definition: index_manager.c:672
    -
    Byte4_t maxvalue
    maximal value
    Definition: index_manager.h:149
    -
    void print_SIZ(SIZmarker_param_t SIZ)
    print Image and Tile SIZ parameters
    Definition: index_manager.c:151
    -
    OPJ_OFF_T offset
    offset relative to the start of the
    Definition: mhixbox_manager.h:41
    -
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    -
    progression order
    Definition: index_manager.h:55
    -
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    - -
    Byte4_t XTOsiz
    horizontal offset from the origin of the reference grid to the left side of the first tile
    Definition: index_manager.h:64
    -
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    -
    1-dimensional range parameters
    Definition: index_manager.h:147
    -
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    -
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    -
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    -
    Byte2_t code
    marker code
    Definition: mhixbox_manager.h:39
    -
    OPJ_BOOL check_JP2boxidx(boxlist_param_t *toplev_boxlist)
    chekc JP2 box indexing
    Definition: index_manager.c:225
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    Box list parameters.
    Definition: box_manager.h:48
    -
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    -
    header index table box parameters
    Definition: mhixbox_manager.h:52
    -
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    -
    boxheader_param_t * first
    top of the box header list
    Definition: manfbox_manager.h:42
    - -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    box_param_t * search_box(const char type[], boxlist_param_t *boxlist)
    search a box by box type
    Definition: box_manager.c:346
    -
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    -
    struct index_param index_param_t
    index parameters
    -
    Byte8_t length
    codestream length
    Definition: index_manager.h:89
    - -
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    - -
    int fd
    file descriptor
    Definition: box_manager.h:38
    -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    Byte8_t mhead_length
    main header length
    Definition: index_manager.h:90
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    -
    Byte8_t length
    length of the reference Box
    Definition: boxheader_manager.h:41
    - - -
    Marker index parameters.
    Definition: mhixbox_manager.h:38
    -
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    -
    box_param_t * gene_childboxbyType(box_param_t *superbox, OPJ_OFF_T offset, const char TBox[])
    generate(search) box from JP2 file
    Definition: box_manager.c:293
    -
    Byte2_t Rsiz
    capabilities that a decoder needs
    Definition: index_manager.h:57
    -
    Byte4_t YTOsiz
    vertical offset from the origin of the reference grid to the top side of the first tile
    Definition: index_manager.h:65
    -
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    -
    void print_faixbox(faixbox_param_t *faix)
    print faix box parameters
    Definition: faixbox_manager.c:120
    -
    box_param_t * gene_boxbyOffset(int fd, OPJ_OFF_T offset)
    generate box from JP2 file at the given offset
    Definition: box_manager.c:86
    - - - - diff --git a/build/doc/html/indexbox__manager_8h.html b/build/doc/html/indexbox__manager_8h.html deleted file mode 100644 index e839d1a4c..000000000 --- a/build/doc/html/indexbox__manager_8h.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - - - - -OpenJPEG: indexbox_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    indexbox_manager.h File Reference
    -
    -
    - -

    Modification of jpip.c from 2KAN indexer. -More...

    -
    #include "openjpeg.h"
    -#include "j2k.h"
    -#include "jp2.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define JPIP_CIDX   0x63696478 /* Codestream index */
     
    #define JPIP_CPTR   0x63707472 /* Codestream Finder Box */
     
    #define JPIP_MANF   0x6d616e66 /* Manifest Box */
     
    #define JPIP_FAIX   0x66616978 /* Fragment array Index box */
     
    #define JPIP_MHIX   0x6d686978 /* Main Header Index Table */
     
    #define JPIP_TPIX   0x74706978 /* Tile-part Index Table box */
     
    #define JPIP_THIX   0x74686978 /* Tile header Index Table box */
     
    #define JPIP_PPIX   0x70706978 /* Precinct Packet Index Table box */
     
    #define JPIP_PHIX   0x70686978 /* Packet Header index Table */
     
    #define JPIP_FIDX   0x66696478 /* File Index */
     
    #define JPIP_FPTR   0x66707472 /* File Finder */
     
    #define JPIP_PRXY   0x70727879 /* Proxy boxes */
     
    #define JPIP_IPTR   0x69707472 /* Index finder box */
     
    #define JPIP_PHLD   0x70686c64 /* Place holder */
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    int opj_write_tpix (int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_thix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    void opj_write_manf (int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_mainmhix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tilemhix (int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tpixfaix (int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.c from 2KAN indexer.

    -

    Macro Definition Documentation

    - -

    ◆ JPIP_CIDX

    - -
    -
    - - - - -
    #define JPIP_CIDX   0x63696478 /* Codestream index */
    -
    - -
    -
    - -

    ◆ JPIP_CPTR

    - -
    -
    - - - - -
    #define JPIP_CPTR   0x63707472 /* Codestream Finder Box */
    -
    - -
    -
    - -

    ◆ JPIP_FAIX

    - -
    -
    - - - - -
    #define JPIP_FAIX   0x66616978 /* Fragment array Index box */
    -
    - -
    -
    - -

    ◆ JPIP_FIDX

    - -
    -
    - - - - -
    #define JPIP_FIDX   0x66696478 /* File Index */
    -
    - -
    -
    - -

    ◆ JPIP_FPTR

    - -
    -
    - - - - -
    #define JPIP_FPTR   0x66707472 /* File Finder */
    -
    - -
    -
    - -

    ◆ JPIP_IPTR

    - -
    -
    - - - - -
    #define JPIP_IPTR   0x69707472 /* Index finder box */
    -
    - -
    -
    - -

    ◆ JPIP_MANF

    - -
    -
    - - - - -
    #define JPIP_MANF   0x6d616e66 /* Manifest Box */
    -
    - -
    -
    - -

    ◆ JPIP_MHIX

    - -
    -
    - - - - -
    #define JPIP_MHIX   0x6d686978 /* Main Header Index Table */
    -
    - -
    -
    - -

    ◆ JPIP_PHIX

    - -
    -
    - - - - -
    #define JPIP_PHIX   0x70686978 /* Packet Header index Table */
    -
    - -
    -
    - -

    ◆ JPIP_PHLD

    - -
    -
    - - - - -
    #define JPIP_PHLD   0x70686c64 /* Place holder */
    -
    - -
    -
    - -

    ◆ JPIP_PPIX

    - -
    -
    - - - - -
    #define JPIP_PPIX   0x70706978 /* Precinct Packet Index Table box */
    -
    - -
    -
    - -

    ◆ JPIP_PRXY

    - -
    -
    - - - - -
    #define JPIP_PRXY   0x70727879 /* Proxy boxes */
    -
    - -
    -
    - -

    ◆ JPIP_THIX

    - -
    -
    - - - - -
    #define JPIP_THIX   0x74686978 /* Tile header Index Table box */
    -
    - -
    -
    - -

    ◆ JPIP_TPIX

    - -
    -
    - - - - -
    #define JPIP_TPIX   0x74706978 /* Tile-part Index Table box */
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_write_mainmhix()

    - - - -

    ◆ opj_write_manf()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_write_manf (int second,
    int v,
    opj_jp2_box_tbox,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_phix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_phix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_phixfaix()

    - - - -

    ◆ opj_write_ppix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_ppix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_ppixfaix()

    - - - -

    ◆ opj_write_thix()

    - - - -

    ◆ opj_write_tilemhix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tilemhix (int coff,
    opj_codestream_info_t cstr_info,
    int tileno,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_tpix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tpix (int coff,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_tpixfaix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tpixfaix (int coff,
    int compno,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/indexbox__manager_8h_source.html b/build/doc/html/indexbox__manager_8h_source.html deleted file mode 100644 index 5ecb93d0f..000000000 --- a/build/doc/html/indexbox__manager_8h_source.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -OpenJPEG: indexbox_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    indexbox_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id: indexbox_manager.h 897 2011-08-28 21:43:57Z Kaori.Hagihara@gmail.com $
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2003-2004, Yannick Verschueren
    -
    7  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    36 #ifndef INDEXBOX_MANAGER_H_
    -
    37 # define INDEXBOX_MANAGER_H_
    -
    38 
    -
    39 #include "openjpeg.h"
    -
    40 #include "j2k.h" /* needed to use jp2.h */
    -
    41 #include "jp2.h"
    -
    42 
    -
    43 #define JPIP_CIDX 0x63696478 /* Codestream index */
    -
    44 #define JPIP_CPTR 0x63707472 /* Codestream Finder Box */
    -
    45 #define JPIP_MANF 0x6d616e66 /* Manifest Box */
    -
    46 #define JPIP_FAIX 0x66616978 /* Fragment array Index box */
    -
    47 #define JPIP_MHIX 0x6d686978 /* Main Header Index Table */
    -
    48 #define JPIP_TPIX 0x74706978 /* Tile-part Index Table box */
    -
    49 #define JPIP_THIX 0x74686978 /* Tile header Index Table box */
    -
    50 #define JPIP_PPIX 0x70706978 /* Precinct Packet Index Table box */
    -
    51 #define JPIP_PHIX 0x70686978 /* Packet Header index Table */
    -
    52 #define JPIP_FIDX 0x66696478 /* File Index */
    -
    53 #define JPIP_FPTR 0x66707472 /* File Finder */
    -
    54 #define JPIP_PRXY 0x70727879 /* Proxy boxes */
    -
    55 #define JPIP_IPTR 0x69707472 /* Index finder box */
    -
    56 #define JPIP_PHLD 0x70686c64 /* Place holder */
    -
    57 
    -
    58 
    -
    59 /*
    -
    60  * Write tile-part Index table box (superbox)
    -
    61  *
    -
    62  * @param[in] coff offset of j2k codestream
    -
    63  * @param[in] cstr_info codestream information
    -
    64  * @param[in] j2klen length of j2k codestream
    -
    65  * @param[in] cio file output handle
    -
    66  * @return length of tpix box
    -
    67  */
    -
    68 int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen,
    - -
    70  opj_event_mgr_t * p_manager);
    -
    71 
    -
    72 
    -
    73 /*
    -
    74  * Write tile header index table box (superbox)
    -
    75  *
    -
    76  * @param[in] coff offset of j2k codestream
    -
    77  * @param[in] cstr_info codestream information pointer
    -
    78  * @param[in] cio file output handle
    -
    79  * @return length of thix box
    -
    80  */
    -
    81 int opj_write_thix(int coff, opj_codestream_info_t cstr_info,
    -
    82  opj_stream_private_t *cio, opj_event_mgr_t * p_manager);
    -
    83 
    -
    84 
    -
    85 /*
    -
    86  * Write precinct packet index table box (superbox)
    -
    87  *
    -
    88  * @param[in] coff offset of j2k codestream
    -
    89  * @param[in] cstr_info codestream information
    -
    90  * @param[in] EPHused true if EPH option used
    -
    91  * @param[in] j2klen length of j2k codestream
    -
    92  * @param[in] cio file output handle
    -
    93  * @return length of ppix box
    -
    94  */
    -
    95 int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused,
    -
    96  int j2klen, opj_stream_private_t *cio,
    -
    97  opj_event_mgr_t * p_manager);
    -
    98 
    -
    99 
    -
    100 /*
    -
    101  * Write packet header index table box (superbox)
    -
    102  *
    -
    103  * @param[in] coff offset of j2k codestream
    -
    104  * @param[in] cstr_info codestream information
    -
    105  * @param[in] EPHused true if EPH option used
    -
    106  * @param[in] j2klen length of j2k codestream
    -
    107  * @param[in] cio file output handle
    -
    108  * @return length of ppix box
    -
    109  */
    -
    110 int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused,
    -
    111  int j2klen, opj_stream_private_t *cio,
    -
    112  opj_event_mgr_t * p_manager);
    -
    113 
    -
    114 /*
    -
    115  * Write manifest box (box)
    -
    116  *
    -
    117  * @param[in] second number to be visited
    -
    118  * @param[in] v number of boxes
    -
    119  * @param[in] box box to be manifested
    -
    120  * @param[in] cio file output handle
    -
    121  */
    -
    122 
    -
    123 void opj_write_manf(int second,
    -
    124  int v,
    -
    125  opj_jp2_box_t *box,
    - -
    127  opj_event_mgr_t * p_manager);
    -
    128 
    -
    129 /*
    -
    130  * Write main header index table (box)
    -
    131  *
    -
    132  * @param[in] coff offset of j2k codestream
    -
    133  * @param[in] cstr_info codestream information
    -
    134  * @param[in] cio file output handle
    -
    135  * @return length of mainmhix box
    -
    136  */
    -
    137 int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info,
    - -
    139  opj_event_mgr_t * p_manager);
    -
    140 
    -
    141 int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    -
    142  OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio,
    -
    143  opj_event_mgr_t * p_manager);
    -
    144 
    -
    145 int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    -
    146  OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio,
    -
    147  opj_event_mgr_t * p_manager);
    -
    148 
    -
    149 int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno,
    - -
    151  opj_event_mgr_t * p_manager);
    -
    152 
    -
    153 int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info,
    -
    154  int j2klen, opj_stream_private_t *cio,
    -
    155  opj_event_mgr_t * p_manager);
    -
    156 
    -
    157 #endif /* !INDEXBOX_MANAGER_H_ */
    -
    -
    int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:97
    -
    The JPEG-2000 Codestream Reader/Writer (J2K)
    -
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    -
    Message handler object used for.
    Definition: event.h:50
    -
    The JPEG-2000 file format Reader/Writer (JP2)
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    int opj_write_tpixfaix(int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:86
    -
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:96
    -
    int opj_write_mainmhix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:192
    -
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    -
    int opj_write_tpix(int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: tpix_manager.c:60
    - -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    -
    int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:104
    - - - - diff --git a/build/doc/html/invert_8c.html b/build/doc/html/invert_8c.html deleted file mode 100644 index 3719e9108..000000000 --- a/build/doc/html/invert_8c.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - -OpenJPEG: invert.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    invert.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - -

    -Functions

    static OPJ_BOOL opj_lupDecompose (OPJ_FLOAT32 *matrix, OPJ_UINT32 *permutations, OPJ_FLOAT32 *p_swap_area, OPJ_UINT32 nb_compo)
     LUP decomposition. More...
     
    static void opj_lupSolve (OPJ_FLOAT32 *pResult, OPJ_FLOAT32 *pMatrix, OPJ_FLOAT32 *pVector, OPJ_UINT32 *pPermutations, OPJ_UINT32 nb_compo, OPJ_FLOAT32 *p_intermediate_data)
     LUP solving. More...
     
    static void opj_lupInvert (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo, OPJ_UINT32 *pPermutations, OPJ_FLOAT32 *p_src_temp, OPJ_FLOAT32 *p_dest_temp, OPJ_FLOAT32 *p_swap_area)
     LUP inversion (call with the result of lupDecompose) More...
     
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
     Matrix inversion. More...
     
    -

    Function Documentation

    - -

    ◆ opj_lupDecompose()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_lupDecompose (OPJ_FLOAT32matrix,
    OPJ_UINT32permutations,
    OPJ_FLOAT32p_swap_area,
    OPJ_UINT32 nb_compo 
    )
    -
    -static
    -
    - -

    LUP decomposition.

    - -

    References OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_matrix_inversion_f().

    - -
    -
    - -

    ◆ opj_lupInvert()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_lupInvert (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo,
    OPJ_UINT32pPermutations,
    OPJ_FLOAT32p_src_temp,
    OPJ_FLOAT32p_dest_temp,
    OPJ_FLOAT32p_swap_area 
    )
    -
    -static
    -
    - -

    LUP inversion (call with the result of lupDecompose)

    - -

    References opj_lupSolve().

    - -

    Referenced by opj_matrix_inversion_f().

    - -
    -
    - -

    ◆ opj_lupSolve()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_lupSolve (OPJ_FLOAT32pResult,
    OPJ_FLOAT32pMatrix,
    OPJ_FLOAT32pVector,
    OPJ_UINT32pPermutations,
    OPJ_UINT32 nb_compo,
    OPJ_FLOAT32p_intermediate_data 
    )
    -
    -static
    -
    - -

    LUP solving.

    - -

    Referenced by opj_lupInvert().

    - -
    -
    - -

    ◆ opj_matrix_inversion_f()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo 
    )
    -
    - -

    Matrix inversion.

    -

    Calculates a n x n double matrix inversion with a LUP method.

    - -

    References OPJ_FALSE, opj_free(), opj_lupDecompose(), opj_lupInvert(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/invert_8h.html b/build/doc/html/invert_8h.html deleted file mode 100644 index d857939ed..000000000 --- a/build/doc/html/invert_8h.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -OpenJPEG: invert.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    invert.h File Reference
    -
    -
    - -

    Implementation of the matrix inversion. -More...

    - -

    Go to the source code of this file.

    - - - - - - -

    -Functions

    Exported functions
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
     Calculates a n x n double matrix inversion with a LUP method. More...
     
    -

    Detailed Description

    -

    Implementation of the matrix inversion.

    -

    The function in INVERT.H compute a matrix inversion with a LUP method

    -

    Function Documentation

    - -

    ◆ opj_matrix_inversion_f()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_matrix_inversion_f (OPJ_FLOAT32pSrcMatrix,
    OPJ_FLOAT32pDestMatrix,
    OPJ_UINT32 nb_compo 
    )
    -
    - -

    Calculates a n x n double matrix inversion with a LUP method.

    -

    Data is aligned, rows after rows (or columns after columns). The function does not take ownership of any memory block, data must be fred by the user.

    -
    Parameters
    - - - - -
    pSrcMatrixthe matrix to invert.
    pDestMatrixdata to store the inverted matrix.
    nb_composize of the matrix
    -
    -
    -
    Returns
    OPJ_TRUE if the inversion is successful, OPJ_FALSE if the matrix is singular.
    -

    Calculates a n x n double matrix inversion with a LUP method.

    - -

    References OPJ_FALSE, opj_free(), opj_lupDecompose(), opj_lupInvert(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/invert_8h_source.html b/build/doc/html/invert_8h_source.html deleted file mode 100644 index 70b441025..000000000 --- a/build/doc/html/invert_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -OpenJPEG: invert.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    invert.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef OPJ_INVERT_H
    -
    33 #define OPJ_INVERT_H
    -
    34 
    -
    45 /* ----------------------------------------------------------------------- */
    -
    46 
    - -
    57  OPJ_FLOAT32 * pDestMatrix,
    -
    58  OPJ_UINT32 nb_compo);
    -
    59 /* ----------------------------------------------------------------------- */
    -
    63 
    -
    64 #endif /* OPJ_INVERT_H */
    -
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    static void opj_lupInvert(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo, OPJ_UINT32 *pPermutations, OPJ_FLOAT32 *p_src_temp, OPJ_FLOAT32 *p_dest_temp, OPJ_FLOAT32 *p_swap_area)
    LUP inversion (call with the result of lupDecompose)
    Definition: invert.c:269
    -
    static OPJ_BOOL opj_lupDecompose(OPJ_FLOAT32 *matrix, OPJ_UINT32 *permutations, OPJ_FLOAT32 *p_swap_area, OPJ_UINT32 nb_compo)
    LUP decomposition.
    Definition: invert.c:107
    -
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Matrix inversion.
    Definition: invert.c:70
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    - -
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Calculates a n x n double matrix inversion with a LUP method.
    Definition: invert.c:70
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    static void opj_lupSolve(OPJ_FLOAT32 *pResult, OPJ_FLOAT32 *pMatrix, OPJ_FLOAT32 *pVector, OPJ_UINT32 *pPermutations, OPJ_UINT32 nb_compo, OPJ_FLOAT32 *p_intermediate_data)
    LUP solving.
    Definition: invert.c:208
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    - - - - diff --git a/build/doc/html/j2k_8c.html b/build/doc/html/j2k_8c.html deleted file mode 100644 index 0d99979e7..000000000 --- a/build/doc/html/j2k_8c.html +++ /dev/null @@ -1,9596 +0,0 @@ - - - - - - - -OpenJPEG: j2k.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    j2k.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Data Structures

    struct  j2k_prog_order
     
    struct  opj_dec_memory_marker_handler
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    typedef struct j2k_prog_order j2k_prog_order_t
     
    typedef void(* opj_j2k_mct_function) (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    typedef struct opj_dec_memory_marker_handler opj_dec_memory_marker_handler_t
     
    static const j2k_prog_order_t j2k_prog_order_list []
     
    static const OPJ_UINT32 MCT_ELEMENT_SIZE []
     FIXME DOC. More...
     
    static const opj_j2k_mct_function j2k_mct_read_functions_to_float []
     
    static const opj_j2k_mct_function j2k_mct_read_functions_to_int32 []
     
    static const opj_j2k_mct_function j2k_mct_write_functions_from_float []
     
    static const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab []
     
    static const OPJ_UINT16 tabMaxSubLevelFromMainLevel []
     
    static OPJ_BOOL opj_j2k_setup_header_reading (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header. More...
     
    static OPJ_BOOL opj_j2k_read_header_procedure (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The read header procedure. More...
     
    static OPJ_BOOL opj_j2k_encoding_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The default encoding validation procedure without any extension. More...
     
    static OPJ_BOOL opj_j2k_decoding_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The default decoding validation procedure without any extension. More...
     
    static OPJ_BOOL opj_j2k_setup_encoding_validation (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_setup_decoding_validation (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_setup_end_compress (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_j2k_mct_validation (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     The mct encoding validation procedure. More...
     
    static OPJ_BOOL opj_j2k_build_decoder (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Builds the tcd decoder to use to decode tile. More...
     
    static OPJ_BOOL opj_j2k_build_encoder (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Builds the tcd encoder to use to encode tile. More...
     
    static OPJ_BOOL opj_j2k_create_tcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Creates a tile-coder encoder. More...
     
    static OPJ_BOOL opj_j2k_exec (opj_j2k_t *p_j2k, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Excutes the given procedures on the given codec. More...
     
    static OPJ_BOOL opj_j2k_update_rates (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Updates the rates of the tcp. More...
     
    static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Copies the decoding tile parameters onto all the tile parameters. More...
     
    static OPJ_BOOL opj_j2k_destroy_header_memory (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Destroys the memory associated with the decoding of headers. More...
     
    static const struct opj_dec_memory_marker_handleropj_j2k_get_marker_handler (OPJ_UINT32 p_id)
     Reads the lookup table containing all the marker, status and action, and returns the handler associated with the marker value. More...
     
    static void opj_j2k_tcp_destroy (opj_tcp_t *p_tcp)
     Destroys a tile coding parameter structure. More...
     
    static void opj_j2k_tcp_data_destroy (opj_tcp_t *p_tcp)
     Destroys the data inside a tile coding parameter structure. More...
     
    static void opj_j2k_cp_destroy (opj_cp_t *p_cp)
     Destroys a coding parameter structure. More...
     
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compare 2 a SPCod/ SPCoc elements, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Writes a SPCod or SPCoc element, i.e. More...
     
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
     Gets the size taken by writing a SPCod or SPCoc for the given tile and component. More...
     
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc (opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Reads a SPCod or SPCoc element, i.e. More...
     
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
     Gets the size taken by writing SQcd or SQcc element, i.e. More...
     
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compares 2 SQcd or SQcc element, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Writes a SQcd or SQcc element, i.e. More...
     
    static void opj_j2k_update_tlm (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_part_size)
     Updates the Tile Length Marker. More...
     
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc (opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
     Reads a SQcd or SQcc element, i.e. More...
     
    static void opj_j2k_copy_tile_component_parameters (opj_j2k_t *p_j2k)
     Copies the tile component parameters of all the component from the first tile component. More...
     
    static void opj_j2k_copy_tile_quantization_parameters (opj_j2k_t *p_j2k)
     Copies the tile quantization parameters of all the component from the first tile component. More...
     
    static OPJ_BOOL opj_j2k_decode_tiles (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads the tiles. More...
     
    static OPJ_BOOL opj_j2k_pre_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_update_image_data (opj_tcd_t *p_tcd, opj_image_t *p_output_image)
     
    static void opj_get_tile_dimensions (opj_image_t *l_image, opj_tcd_tilecomp_t *l_tilec, opj_image_comp_t *l_img_comp, OPJ_UINT32 *l_size_comp, OPJ_UINT32 *l_width, OPJ_UINT32 *l_height, OPJ_UINT32 *l_offset_x, OPJ_UINT32 *l_offset_y, OPJ_UINT32 *l_image_width, OPJ_UINT32 *l_stride, OPJ_UINT32 *l_tile_offset)
     
    static void opj_j2k_get_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_data)
     
    static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_header_writing (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header. More...
     
    static OPJ_BOOL opj_j2k_write_first_tile_part (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
     
    static OPJ_BOOL opj_j2k_write_all_tile_parts (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
     
    static OPJ_BOOL opj_j2k_get_end_header (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Gets the offset of the header. More...
     
    static OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index (opj_j2k_t *p_j2k)
     
    static OPJ_BOOL opj_j2k_write_soc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOC marker (Start Of Codestream) More...
     
    static OPJ_BOOL opj_j2k_read_soc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a SOC marker (Start of Codestream) More...
     
    static OPJ_BOOL opj_j2k_write_siz (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SIZ marker (image and tile size) More...
     
    static OPJ_BOOL opj_j2k_read_siz (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a SIZ marker (image and tile size) More...
     
    static OPJ_BOOL opj_j2k_write_com (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COM marker (comment) More...
     
    static OPJ_BOOL opj_j2k_read_com (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COM marker (comments) More...
     
    static OPJ_BOOL opj_j2k_write_cod (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COD marker (Coding style default) More...
     
    static OPJ_BOOL opj_j2k_read_cod (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COD marker (Coding style defaults) More...
     
    static OPJ_BOOL opj_j2k_compare_coc (opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compares 2 COC markers (Coding style component) More...
     
    static OPJ_BOOL opj_j2k_write_coc (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the COC marker (Coding style component) More...
     
    static void opj_j2k_write_coc_in_memory (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the COC marker (Coding style component) More...
     
    static OPJ_UINT32 opj_j2k_get_max_coc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by a coc. More...
     
    static OPJ_BOOL opj_j2k_read_coc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a COC marker (Coding Style Component) More...
     
    static OPJ_BOOL opj_j2k_write_qcd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the QCD marker (quantization default) More...
     
    static OPJ_BOOL opj_j2k_read_qcd (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a QCD marker (Quantization defaults) More...
     
    static OPJ_BOOL opj_j2k_compare_qcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
     Compare QCC markers (quantization component) More...
     
    static OPJ_BOOL opj_j2k_write_qcc (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the QCC marker (quantization component) More...
     
    static void opj_j2k_write_qcc_in_memory (opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the QCC marker (quantization component) More...
     
    static OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by a qcc. More...
     
    static OPJ_BOOL opj_j2k_read_qcc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a QCC marker (Quantization component) More...
     
    static OPJ_BOOL opj_j2k_write_poc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the POC marker (Progression Order Change) More...
     
    static void opj_j2k_write_poc_in_memory (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Writes the POC marker (Progression Order Change) More...
     
    static OPJ_UINT32 opj_j2k_get_max_poc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the writing of a POC. More...
     
    static OPJ_BOOL opj_j2k_read_poc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a POC marker (Progression Order Change) More...
     
    static OPJ_UINT32 opj_j2k_get_max_toc_size (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the toc headers of all the tile parts of any given tile. More...
     
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes (opj_j2k_t *p_j2k)
     Gets the maximum size taken by the headers of the SOT. More...
     
    static OPJ_BOOL opj_j2k_read_crg (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a CRG marker (Component registration) More...
     
    static OPJ_BOOL opj_j2k_read_tlm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a TLM marker (Tile Length Marker) More...
     
    static OPJ_BOOL opj_j2k_write_updated_tlm (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the updated tlm. More...
     
    static OPJ_BOOL opj_j2k_read_plm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PLM marker (Packet length, main header marker) More...
     
    static OPJ_BOOL opj_j2k_read_plt (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PLT marker (Packet length, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_read_ppm (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PPM marker (Packed headers, main header) More...
     
    static OPJ_BOOL opj_j2k_merge_ppm (opj_cp_t *p_cp, opj_event_mgr_t *p_manager)
     Merges all PPM markers read (Packed headers, main header) More...
     
    static OPJ_BOOL opj_j2k_read_ppt (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a PPT marker (Packed packet headers, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_merge_ppt (opj_tcp_t *p_tcp, opj_event_mgr_t *p_manager)
     Merges all PPT markers read (Packed headers, tile-part header) More...
     
    static OPJ_BOOL opj_j2k_write_tlm (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the TLM marker (Tile Length Marker) More...
     
    static OPJ_BOOL opj_j2k_write_sot (opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 total_data_size, OPJ_UINT32 *p_data_written, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_get_sot_values (OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, OPJ_UINT32 *p_tile_no, OPJ_UINT32 *p_tot_len, OPJ_UINT32 *p_current_part, OPJ_UINT32 *p_num_parts, opj_event_mgr_t *p_manager)
     Reads values from a SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_read_sot (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a SOT marker (Start of tile-part) More...
     
    static OPJ_BOOL opj_j2k_write_sod (opj_j2k_t *p_j2k, opj_tcd_t *p_tile_coder, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the SOD marker (Start of data) More...
     
    static OPJ_BOOL opj_j2k_read_sod (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a SOD marker (Start Of Data) More...
     
    static OPJ_BOOL opj_j2k_write_rgn (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_UINT32 nb_comps, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the RGN marker (Region Of Interest) More...
     
    static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a RGN marker (Region Of Interest) More...
     
    static OPJ_BOOL opj_j2k_write_eoc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the EOC marker (End of Codestream) More...
     
    static OPJ_BOOL opj_j2k_write_mct_data_group (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the CBD-MCT-MCC-MCO markers (Multi components transform) More...
     
    static OPJ_BOOL opj_j2k_init_info (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Inits the Info. More...
     
    static OPJ_BOOL opj_j2k_add_mhmarker (opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
     Add main header marker information. More...
     
    static OPJ_BOOL opj_j2k_add_tlmarker (OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
     Add tile header marker information. More...
     
    static OPJ_BOOL opj_j2k_read_unk (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, OPJ_UINT32 *output_marker, opj_event_mgr_t *p_manager)
     Reads an unknown marker. More...
     
    static OPJ_BOOL opj_j2k_write_mct_record (opj_j2k_t *p_j2k, opj_mct_data_t *p_mct_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCT marker (Multiple Component Transform) More...
     
    static OPJ_BOOL opj_j2k_read_mct (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCT marker (Multiple Component Transform) More...
     
    static OPJ_BOOL opj_j2k_write_mcc_record (opj_j2k_t *p_j2k, opj_simple_mcc_decorrelation_data_t *p_mcc_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCC marker (Multiple Component Collection) More...
     
    static OPJ_BOOL opj_j2k_read_mcc (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCC marker (Multiple Component Collection) More...
     
    static OPJ_BOOL opj_j2k_write_mco (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the MCO marker (Multiple component transformation ordering) More...
     
    static OPJ_BOOL opj_j2k_read_mco (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a MCO marker (Multiple Component Transform Ordering) More...
     
    static OPJ_BOOL opj_j2k_add_mct (opj_tcp_t *p_tcp, opj_image_t *p_image, OPJ_UINT32 p_index)
     
    static void opj_j2k_read_int16_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int32_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float32_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float64_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int16_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_int32_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float32_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_read_float64_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_int16 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_int32 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_float (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static void opj_j2k_write_float_to_float64 (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
     
    static OPJ_BOOL opj_j2k_end_encoding (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the encoding, i.e. More...
     
    static OPJ_BOOL opj_j2k_write_cbd (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes the CBD marker (Component bit depth definition) More...
     
    static OPJ_BOOL opj_j2k_read_cbd (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a CBD marker (Component bit depth definition) More...
     
    static OPJ_BOOL opj_j2k_write_all_coc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes COC marker for each component. More...
     
    static OPJ_BOOL opj_j2k_write_all_qcc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes QCC marker for each component. More...
     
    static OPJ_BOOL opj_j2k_write_regions (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes regions of interests. More...
     
    static OPJ_BOOL opj_j2k_write_epc (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes EPC ???? More...
     
    static OPJ_BOOL opj_j2k_check_poc_val (const opj_poc_t *p_pocs, OPJ_UINT32 tileno, OPJ_UINT32 p_nb_pocs, OPJ_UINT32 p_nb_resolutions, OPJ_UINT32 numcomps, OPJ_UINT32 numlayers, opj_event_mgr_t *p_manager)
     Checks the progression order changes values. More...
     
    static OPJ_UINT32 opj_j2k_get_num_tp (opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32 tileno)
     Gets the number of tile parts used for the given change of progression (if any) and the given tile. More...
     
    static OPJ_BOOL opj_j2k_calculate_tp (opj_j2k_t *p_j2k, opj_cp_t *cp, OPJ_UINT32 *p_nb_tiles, opj_image_t *image, opj_event_mgr_t *p_manager)
     Calculates the total number of tile parts needed by the encoder to encode such an image. More...
     
    static void opj_j2k_dump_MH_info (opj_j2k_t *p_j2k, FILE *out_stream)
     
    static void opj_j2k_dump_MH_index (opj_j2k_t *p_j2k, FILE *out_stream)
     
    static opj_codestream_index_topj_j2k_create_cstr_index (void)
     
    static OPJ_FLOAT32 opj_j2k_get_tp_stride (opj_tcp_t *p_tcp)
     
    static OPJ_FLOAT32 opj_j2k_get_default_stride (opj_tcp_t *p_tcp)
     
    static int opj_j2k_initialise_4K_poc (opj_poc_t *POC, int numres)
     
    static void opj_j2k_set_cinema_parameters (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_is_cinema_compliant (opj_image_t *image, OPJ_UINT16 rsiz, opj_event_mgr_t *p_manager)
     
    static void opj_j2k_set_imf_parameters (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_is_imf_compliant (opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction (opj_stream_private_t *p_stream, OPJ_UINT32 tile_no, OPJ_BOOL *p_correction_needed, opj_event_mgr_t *p_manager)
     Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot). More...
     
    const char * opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
     Converts an enum type progression order to string type. More...
     
    static OPJ_BOOL opj_j2k_write_plt_in_memory (opj_j2k_t *p_j2k, opj_tcd_marker_info_t *marker_info, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
     Write one or more PLT markers in the provided buffer. More...
     
    void opj_j2k_setup_decoder (opj_j2k_t *j2k, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_t *j2k, OPJ_UINT32 num_threads)
     
    static int opj_j2k_get_default_thread_count ()
     
    opj_j2k_topj_j2k_create_compress (void)
     Creates a J2K compression structure. More...
     
    static int opj_j2k_get_imf_max_NL (opj_cparameters_t *parameters, opj_image_t *image)
     
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 codestream header structure. More...
     
    OPJ_BOOL opj_j2k_setup_mct_encoding (opj_tcp_t *p_tcp, opj_image_t *p_image)
     
    void opj_j2k_destroy (opj_j2k_t *p_j2k)
     Destroys a jpeg2000 codec. More...
     
    void j2k_destroy_cstr_index (opj_codestream_index_t *p_cstr_ind)
     Destroys a codestream index structure. More...
     
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_j2k_decode_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    static OPJ_BOOL opj_j2k_update_image_dimensions (opj_image_t *p_image, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    opj_j2k_topj_j2k_create_decompress (void)
     Creates a J2K decompression structure. More...
     
    static void opj_j2k_dump_tile_info (opj_tcp_t *l_default_tile, OPJ_INT32 numcomps, FILE *out_stream)
     
    void j2k_dump (opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the J2K decompression structure . More...
     
    void j2k_dump_image_header (opj_image_t *img_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump an image header structure. More...
     
    void j2k_dump_image_comp_header (opj_image_comp_t *comp_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump a component image header structure. More...
     
    opj_codestream_info_v2_tj2k_get_cstr_info (opj_j2k_t *p_j2k)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tj2k_get_cstr_index (opj_j2k_t *p_j2k)
     Get the codestream index from a JPEG2000 codec. More...
     
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_decoding (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on decoding data. More...
     
    static OPJ_BOOL opj_j2k_decode_one_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_j2k_setup_decoding_tile (opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on decoding one tile. More...
     
    static OPJ_BOOL opj_j2k_move_data_from_codec_to_output_image (opj_j2k_t *p_j2k, opj_image_t *p_image)
     
    OPJ_BOOL opj_j2k_decode (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_get_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor (opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL opj_j2k_encode (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Encodes an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    -

    Typedef Documentation

    - -

    ◆ j2k_prog_order_t

    - -
    -
    - - - - -
    typedef struct j2k_prog_order j2k_prog_order_t
    -
    - -
    -
    - -

    ◆ opj_dec_memory_marker_handler_t

    - - - -

    ◆ opj_j2k_mct_function

    - -
    -
    - - - - -
    typedef void(* opj_j2k_mct_function) (const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ j2k_destroy_cstr_index()

    - -
    -
    - - - - - - - - -
    void j2k_destroy_cstr_index (opj_codestream_index_tp_cstr_ind)
    -
    - -

    Destroys a codestream index structure.

    -
    Parameters
    - - -
    p_cstr_indthe codestream index parameter to destroy.
    -
    -
    - -

    References opj_tile_index::marker, opj_codestream_index::marker, opj_codestream_index::nb_of_tiles, opj_free(), opj_tile_index::packet_index, opj_codestream_index::tile_index, and opj_tile_index::tp_index.

    - -

    Referenced by opj_destroy_cstr_index(), and opj_j2k_destroy().

    - -
    -
    - -

    ◆ j2k_dump()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump (opj_j2k_tp_j2k,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    -
    - -

    Dump some elements from the J2K decompression structure .

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References j2k_dump_image_header(), opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_IMG_INFO, opj_j2k_dump_MH_index(), opj_j2k_dump_MH_info(), opj_j2k_dump_tile_info(), OPJ_J2K_MH_IND, OPJ_J2K_MH_INFO, OPJ_J2K_TCH_INFO, OPJ_J2K_TH_IND, OPJ_J2K_TH_INFO, OPJ_JP2_IND, OPJ_JP2_INFO, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by jp2_dump(), and opj_create_decompress().

    - -
    -
    - -

    ◆ j2k_dump_image_comp_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump_image_comp_header (opj_image_comp_tcomp,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    -
    - -

    Dump a component image header structure.

    -
    Parameters
    - - - - -
    compthe component image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::prec, and opj_image_comp::sgnd.

    - -

    Referenced by j2k_dump_image_header().

    - -
    -
    - -

    ◆ j2k_dump_image_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump_image_header (opj_image_timage,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    -
    - -

    Dump an image header structure.

    -
    Parameters
    - - - - -
    imagethe image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_image::comps, j2k_dump_image_comp_header(), opj_image::numcomps, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by j2k_dump().

    - -
    -
    - -

    ◆ j2k_get_cstr_index()

    - - - -

    ◆ j2k_get_cstr_info()

    - -
    -
    - - - - - - - - -
    opj_codestream_info_v2_t* j2k_get_cstr_info (opj_j2k_tp_j2k)
    -
    - -

    Get the codestream info from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_j2kthe component image header to dump.
    -
    -
    -
    Returns
    the codestream information extract from the jpg2000 codec
    - -

    References opj_tccp::cblkh, opj_tccp_info::cblkh, opj_tccp::cblksty, opj_tccp_info::cblksty, opj_tccp::cblkw, opj_tccp_info::cblkw, opj_tccp::csty, opj_tcp::csty, opj_tccp_info::csty, opj_tile_v2_info::csty, opj_stepsize::expn, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_codestream_info_v2::m_default_tile_info, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_stepsize::mant, opj_tcp::mct, opj_tile_v2_info::mct, opj_codestream_info_v2::nbcomps, opj_image::numcomps, opj_tccp::numgbits, opj_tccp_info::numgbits, opj_tcp::numlayers, opj_tile_v2_info::numlayers, opj_tccp::numresolutions, opj_tccp_info::numresolutions, opj_calloc(), opj_destroy_cstr_info(), OPJ_J2K_MAXBANDS, OPJ_J2K_MAXRLVLS, opj_tccp::prch, opj_tccp_info::prch, opj_tccp::prcw, opj_tccp_info::prcw, opj_tcp::prg, opj_tile_v2_info::prg, opj_tccp::qmfbid, opj_tccp_info::qmfbid, opj_tccp::qntsty, opj_tccp_info::qntsty, opj_tccp::roishift, opj_tccp_info::roishift, opj_tccp::stepsizes, opj_tccp_info::stepsizes_expn, opj_tccp_info::stepsizes_mant, opj_tile_v2_info::tccp_info, opj_tcp::tccps, opj_cp::tdx, opj_codestream_info_v2::tdx, opj_cp::tdy, opj_codestream_info_v2::tdy, opj_cp::th, opj_codestream_info_v2::th, opj_codestream_info_v2::tile_info, opj_cp::tw, opj_codestream_info_v2::tw, opj_cp::tx0, opj_codestream_info_v2::tx0, opj_cp::ty0, and opj_codestream_info_v2::ty0.

    - -

    Referenced by jp2_get_cstr_info(), and opj_create_decompress().

    - -
    -
    - -

    ◆ opj_get_tile_dimensions()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_get_tile_dimensions (opj_image_tl_image,
    opj_tcd_tilecomp_tl_tilec,
    opj_image_comp_tl_img_comp,
    OPJ_UINT32l_size_comp,
    OPJ_UINT32l_width,
    OPJ_UINT32l_height,
    OPJ_UINT32l_offset_x,
    OPJ_UINT32l_offset_y,
    OPJ_UINT32l_image_width,
    OPJ_UINT32l_stride,
    OPJ_UINT32l_tile_offset 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_add_mct()

    - - - -

    ◆ opj_j2k_add_mhmarker()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_add_mhmarker (opj_codestream_index_tcstr_index,
    OPJ_UINT32 type,
    OPJ_OFF_T pos,
    OPJ_UINT32 len 
    )
    -
    -static
    -
    - -

    Add main header marker information.

    -
    Parameters
    - - - - - -
    cstr_indexCodestream information structure
    typemarker type
    posbyte offset of marker segment
    lenlength of marker segment
    -
    -
    - -

    References opj_marker_info::len, opj_codestream_index::marker, opj_codestream_index::marknum, opj_codestream_index::maxmarknum, OPJ_FALSE, opj_free(), opj_realloc(), OPJ_TRUE, opj_marker_info::pos, and opj_marker_info::type.

    - -

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_soc(), and opj_j2k_read_unk().

    - -
    -
    - -

    ◆ opj_j2k_add_tlmarker()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_add_tlmarker (OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_index,
    OPJ_UINT32 type,
    OPJ_OFF_T pos,
    OPJ_UINT32 len 
    )
    -
    -static
    -
    - -

    Add tile header marker information.

    -
    Parameters
    - - - - - - -
    tilenotile index number
    cstr_indexCodestream information structure
    typemarker type
    posbyte offset of marker segment
    lenlength of marker segment
    -
    -
    - -

    References opj_tile_index::current_tpsno, J2K_MS_SOT, opj_marker_info::len, opj_tile_index::marker, opj_tile_index::marknum, opj_tile_index::maxmarknum, OPJ_FALSE, opj_free(), opj_realloc(), OPJ_TRUE, opj_marker_info::pos, opj_tp_index::start_pos, opj_codestream_index::tile_index, opj_tile_index::tp_index, and opj_marker_info::type.

    - -

    Referenced by opj_j2k_read_sod(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ opj_j2k_allocate_tile_element_cstr_index()

    - - - -

    ◆ opj_j2k_are_all_used_components_decoded()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_build_decoder()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_build_decoder (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Builds the tcd decoder to use to decode tile.

    - -

    References OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_decoding_validation().

    - -
    -
    - -

    ◆ opj_j2k_build_encoder()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_build_encoder (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Builds the tcd encoder to use to encode tile.

    - -

    References OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_encoding_validation().

    - -
    -
    - -

    ◆ opj_j2k_calculate_tp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_calculate_tp (opj_j2k_tp_j2k,
    opj_cp_tcp,
    OPJ_UINT32p_nb_tiles,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Calculates the total number of tile parts needed by the encoder to encode such an image.

    -

    If not enough memory is available, then the function return false.

    -
    Parameters
    - - - - - - -
    p_nb_tilespointer that will hold the number of tile parts.
    cpthe coding parameters for the image.
    imagethe image to encode.
    p_j2kthe p_j2k encoder.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the function was successful, false else.
    - -

    References opj_j2k_get_num_tp(), opj_pi_update_encoding_parameters(), OPJ_TRUE, OPJ_UNUSED, tcp, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_init_info().

    - -
    -
    - -

    ◆ opj_j2k_check_poc_val()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_check_poc_val (const opj_poc_tp_pocs,
    OPJ_UINT32 tileno,
    OPJ_UINT32 p_nb_pocs,
    OPJ_UINT32 p_nb_resolutions,
    OPJ_UINT32 numcomps,
    OPJ_UINT32 numlayers,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Checks the progression order changes values.

    -

    Tells of the poc given as input are valid. A nice message is outputted at errors.

    -
    Parameters
    - - - - - - - - -
    p_pocsthe progression order changes.
    tilenothe tile number of interest
    p_nb_pocsthe number of progression order changes.
    p_nb_resolutionsthe number of resolutions.
    numcompsthe number of components
    numlayersthe number of layers.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the pocs are valid.
    - -

    References opj_poc::compno0, opj_poc::compno1, EVT_ERROR, opj_poc::layno1, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_uint_min(), opj_poc::resno0, opj_poc::resno1, and opj_poc::tile.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_j2k_compare_coc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_compare_coc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    -
    -static
    -
    - -

    Compares 2 COC markers (Coding style component)

    -
    Parameters
    - - - - -
    p_j2kJ2K codec.
    p_first_comp_nothe index of the first component to compare.
    p_second_comp_nothe index of the second component to compare.
    -
    -
    -
    Returns
    OPJ_TRUE if equals
    - -

    References opj_tccp::csty, opj_j2k::m_cp, opj_j2k::m_current_tile_number, OPJ_FALSE, opj_j2k_compare_SPCod_SPCoc(), opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_write_all_coc().

    - -
    -
    - -

    ◆ opj_j2k_compare_qcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_compare_qcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    -
    -static
    -
    - -

    Compare QCC markers (quantization component)

    -
    Parameters
    - - - - -
    p_j2kJ2K codec.
    p_first_comp_nothe index of the first component to compare.
    p_second_comp_nothe index of the second component to compare.
    -
    -
    -
    Returns
    OPJ_TRUE if equals.
    - -

    References opj_j2k::m_current_tile_number, and opj_j2k_compare_SQcd_SQcc().

    - -

    Referenced by opj_j2k_write_all_qcc().

    - -
    -
    - -

    ◆ opj_j2k_compare_SPCod_SPCoc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    -
    -static
    -
    - -

    Compare 2 a SPCod/ SPCoc elements, i.e.

    -

    the coding style of a given component of a tile.

    -
    Parameters
    - - - - - -
    p_j2kJ2K codec.
    p_tile_noTile number
    p_first_comp_noThe 1st component number to compare.
    p_second_comp_noThe 1st component number to compare.
    -
    -
    -
    Returns
    OPJ_TRUE if SPCdod are equals.
    - -

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_tccp::numresolutions, OPJ_FALSE, OPJ_TRUE, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_compare_coc().

    - -
    -
    - -

    ◆ opj_j2k_compare_SQcd_SQcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_first_comp_no,
    OPJ_UINT32 p_second_comp_no 
    )
    -
    -static
    -
    - -

    Compares 2 SQcd or SQcc element, i.e.

    -

    the quantization values of a band in the QCD or QCC.

    -
    Parameters
    - - - - - -
    p_j2kJ2K codec.
    p_tile_nothe tile to output.
    p_first_comp_nothe first component number to compare.
    p_second_comp_nothe second component number to compare.
    -
    -
    -
    Returns
    OPJ_TRUE if equals.
    - -

    References opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_stepsize::mant, opj_tccp::numgbits, opj_tccp::numresolutions, OPJ_FALSE, OPJ_TRUE, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_compare_qcc().

    - -
    -
    - -

    ◆ opj_j2k_convert_progression_order()

    - -
    -
    - - - - - - - - -
    const char* opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
    -
    - -

    Converts an enum type progression order to string type.

    - -

    References j2k_prog_order::enum_prog, j2k_prog_order_list, and j2k_prog_order::str_prog.

    - -

    Referenced by opj_j2k_get_num_tp(), and opj_pi_create_encode().

    - -
    -
    - -

    ◆ opj_j2k_copy_default_tcp_and_create_tcd()

    - - - -

    ◆ opj_j2k_copy_tile_component_parameters()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_j2k_copy_tile_component_parameters (opj_j2k_tp_j2k)
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_copy_tile_quantization_parameters()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_j2k_copy_tile_quantization_parameters (opj_j2k_tp_j2k)
    -
    -static
    -
    - -

    Copies the tile quantization parameters of all the component from the first tile component.

    -
    Parameters
    - - -
    p_j2kthe J2k codec.
    -
    -
    - -

    References J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_tccp::numgbits, OPJ_J2K_MAXBANDS, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_read_qcd().

    - -
    -
    - -

    ◆ opj_j2k_cp_destroy()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_j2k_cp_destroy (opj_cp_tp_cp)
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_create_compress()

    - - - -

    ◆ opj_j2k_create_cstr_index()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static opj_codestream_index_t * opj_j2k_create_cstr_index (void )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_create_decompress()

    - - - -

    ◆ opj_j2k_create_tcd()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_create_tcd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Creates a tile-coder encoder.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_cp, opj_j2k::m_private_image, opj_j2k::m_tcd, opj_j2k::m_tp, opj_event_msg(), OPJ_FALSE, opj_tcd_create(), opj_tcd_destroy(), opj_tcd_init(), OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_decode (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_j2k_decode_one_tile()

    - - - -

    ◆ opj_j2k_decode_tile()

    - - - -

    ◆ opj_j2k_decode_tiles()

    - - - -

    ◆ opj_j2k_decoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_decoding_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    The default decoding validation procedure without any extension.

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the parameters are correct.
    - -

    References opj_j2k::m_decoder, opj_j2k::m_procedure_list, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_validation_list, OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_decoding_validation().

    - -
    -
    - -

    ◆ opj_j2k_destroy()

    - - - -

    ◆ opj_j2k_destroy_header_memory()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_destroy_header_memory (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Destroys the memory associated with the decoding of headers.

    - -

    References opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_free(), OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_dump_MH_index()

    - - - -

    ◆ opj_j2k_dump_MH_info()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_dump_MH_info (opj_j2k_tp_j2k,
    FILE * out_stream 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_dump_tile_info()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_dump_tile_info (opj_tcp_tl_default_tile,
    OPJ_INT32 numcomps,
    FILE * out_stream 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_encode()

    - - - -

    ◆ opj_j2k_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_tp_j2k,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Specify extra options for the encoder.

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    -
    -
    -
    See also
    opj_encoder_set_extra_options() for more details.
    - -

    References EVT_ERROR, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_encoder_set_extra_options().

    - -
    -
    - -

    ◆ opj_j2k_encoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_encoding_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    The default encoding validation procedure without any extension.

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the parameters are correct.
    - -

    References EVT_ERROR, J2K_STATE_NONE, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k::m_procedure_list, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_validation_list, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, and opj_cp::tdy.

    - -

    Referenced by opj_j2k_setup_encoding_validation().

    - -
    -
    - -

    ◆ opj_j2k_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_exec(), opj_j2k_setup_end_compress(), and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    - -

    References OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_end_decompress().

    - -
    -
    - -

    ◆ opj_j2k_end_encoding()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_end_encoding (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Ends the encoding, i.e.

    -

    frees memory.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k_enc::m_encoded_tile_data, opj_j2k_enc::m_encoded_tile_size, opj_j2k::m_encoder, opj_j2k::m_specific_param, opj_j2k::m_tcd, opj_j2k_enc::m_tlm_sot_offsets_buffer, opj_j2k_enc::m_tlm_sot_offsets_current, opj_free(), opj_tcd_destroy(), OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_exec()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_exec (opj_j2k_tp_j2k,
    opj_procedure_list_tp_procedure_list,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Excutes the given procedures on the given codec.

    -
    Parameters
    - - - - - -
    p_procedure_listthe list of procedures to execute
    p_j2kthe jpeg2000 codec to execute the procedures on.
    p_streamthe stream to execute the procedures on.
    p_managerthe user manager.
    -
    -
    -
    Returns
    true if all the procedures were successfully executed.
    - -

    References opj_procedure_list_clear(), opj_procedure_list_get_first_procedure(), opj_procedure_list_get_nb_procedures(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_decode(), opj_j2k_end_compress(), opj_j2k_get_tile(), opj_j2k_read_header(), and opj_j2k_start_compress().

    - -
    -
    - -

    ◆ opj_j2k_get_default_stride()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_FLOAT32 opj_j2k_get_default_stride (opj_tcp_tp_tcp)
    -
    -static
    -
    - -

    Referenced by opj_j2k_update_rates().

    - -
    -
    - -

    ◆ opj_j2k_get_default_thread_count()

    - -
    -
    - - - - - -
    - - - - - - - -
    static int opj_j2k_get_default_thread_count ()
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_get_end_header()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_get_end_header (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Gets the offset of the header.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::cstr_index, opj_codestream_index::main_head_end, opj_stream_tell(), OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_get_imf_max_NL()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static int opj_j2k_get_imf_max_NL (opj_cparameters_tparameters,
    opj_image_timage 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_get_marker_handler()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static const opj_dec_memory_marker_handler_t * opj_j2k_get_marker_handler (OPJ_UINT32 p_id)
    -
    -static
    -
    - -

    Reads the lookup table containing all the marker, status and action, and returns the handler associated with the marker value.

    -
    Parameters
    - - -
    p_idMarker value to look up
    -
    -
    -
    Returns
    the handler associated with the id.
    - -

    References opj_dec_memory_marker_handler::id, and j2k_memory_marker_handler_tab.

    - -

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_tile_header(), and opj_j2k_read_unk().

    - -
    -
    - -

    ◆ opj_j2k_get_max_coc_size()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_max_coc_size (opj_j2k_tp_j2k)
    -
    -static
    -
    - -

    Gets the maximum size taken by a coc.

    -
    Parameters
    - - -
    p_j2kthe jpeg2000 codec to use.
    -
    -
    - -

    References opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SPCod_SPCoc_size(), opj_uint_max(), opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_get_max_qcc_size(), and opj_j2k_get_specific_header_sizes().

    - -
    -
    - -

    ◆ opj_j2k_get_max_poc_size()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_max_poc_size (opj_j2k_tp_j2k)
    -
    -static
    -
    - -

    Gets the maximum size taken by the writing of a POC.

    - -

    References opj_j2k::m_cp, opj_tcp::numpocs, opj_uint_max(), opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_get_specific_header_sizes().

    - -
    -
    - -

    ◆ opj_j2k_get_max_qcc_size()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_max_qcc_size (opj_j2k_tp_j2k)
    -
    -static
    -
    - -

    Gets the maximum size taken by a qcc.

    - -

    References opj_j2k_get_max_coc_size().

    - -

    Referenced by opj_j2k_get_specific_header_sizes().

    - -
    -
    - -

    ◆ opj_j2k_get_max_toc_size()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_max_toc_size (opj_j2k_tp_j2k)
    -
    -static
    -
    - -

    Gets the maximum size taken by the toc headers of all the tile parts of any given tile.

    - -

    References opj_j2k::m_cp, opj_tcp::m_nb_tile_parts, opj_uint_max(), opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_get_specific_header_sizes().

    - -
    -
    - -

    ◆ opj_j2k_get_num_tp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_num_tp (opj_cp_tcp,
    OPJ_UINT32 pino,
    OPJ_UINT32 tileno 
    )
    -
    -static
    -
    - -

    Gets the number of tile parts used for the given change of progression (if any) and the given tile.

    -
    Parameters
    - - - - -
    cpthe coding parameters.
    pinothe offset of the given poc (i.e. its position in the coding parameter).
    tilenothe given tile.
    -
    -
    -
    Returns
    the number of tile parts.
    - -

    References opj_poc::compE, opj_poc::layE, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_encoding_param::m_tp_pos, opj_tcp::numpocs, opj_j2k_convert_progression_order(), opj_poc::prcE, opj_poc::resE, tcp, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_calculate_tp(), and opj_j2k_write_all_tile_parts().

    - -
    -
    - -

    ◆ opj_j2k_get_sot_values()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_get_sot_values (OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    OPJ_UINT32p_tile_no,
    OPJ_UINT32p_tot_len,
    OPJ_UINT32p_current_part,
    OPJ_UINT32p_num_parts,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads values from a SOT marker (Start of tile-part)

    -

    the j2k decoder state is not affected. No side effects, no checks except for p_header_size.

    -
    Parameters
    - - - - - - - - -
    p_header_datathe data contained in the SOT marker.
    p_header_sizethe size of the data contained in the SOT marker.
    p_tile_noIsot.
    p_tot_lenPsot.
    p_current_partTPsot.
    p_num_partsTNsot.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    - -

    Referenced by opj_j2k_need_nb_tile_parts_correction(), and opj_j2k_read_sot().

    - -
    -
    - -

    ◆ opj_j2k_get_SPCod_SPCoc_size()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no 
    )
    -
    -static
    -
    - -

    Gets the size taken by writing a SPCod or SPCoc for the given tile and component.

    -
    Parameters
    - - - - -
    p_j2kthe J2K codec.
    p_tile_nothe tile index.
    p_comp_nothe component being outputted.
    -
    -
    -
    Returns
    the number of bytes taken by the SPCod element.
    - -

    References opj_tccp::csty, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_tccp::numresolutions, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_get_max_coc_size(), opj_j2k_write_coc(), opj_j2k_write_coc_in_memory(), and opj_j2k_write_cod().

    - -
    -
    - -

    ◆ opj_j2k_get_specific_header_sizes()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes (opj_j2k_tp_j2k)
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_get_SQcd_SQcc_size()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no 
    )
    -
    -static
    -
    - -

    Gets the size taken by writing SQcd or SQcc element, i.e.

    -

    the quantization values of a band in the QCD or QCC.

    -
    Parameters
    - - - - -
    p_tile_nothe tile index.
    p_comp_nothe component being outputted.
    p_j2kthe J2K codec.
    -
    -
    -
    Returns
    the number of bytes taken by the SPCod element.
    - -

    References J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_tccp::numresolutions, opj_tccp::qntsty, opj_tcp::tccps, opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_write_qcc(), opj_j2k_write_qcc_in_memory(), and opj_j2k_write_qcd().

    - -
    -
    - -

    ◆ opj_j2k_get_tile()

    - - - -

    ◆ opj_j2k_get_tile_data()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_get_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_data 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_get_tp_stride()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_FLOAT32 opj_j2k_get_tp_stride (opj_tcp_tp_tcp)
    -
    -static
    -
    - -

    References opj_tcp::m_nb_tile_parts.

    - -

    Referenced by opj_j2k_update_rates().

    - -
    -
    - -

    ◆ opj_j2k_init_info()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_init_info (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Inits the Info.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_enc::m_total_tile_parts, opj_j2k_calculate_tp(), and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_initialise_4K_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static int opj_j2k_initialise_4K_poc (opj_poc_tPOC,
    int numres 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_is_cinema_compliant()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_is_cinema_compliant (opj_image_timage,
    OPJ_UINT16 rsiz,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_is_imf_compliant()

    - - - -

    ◆ opj_j2k_mct_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_mct_validation (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    The mct encoding validation procedure.

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec to validate.
    p_streamthe input stream to validate.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the parameters are correct.
    - -

    References opj_j2k::m_cp, opj_tcp::m_mct_coding_matrix, opj_j2k::m_private_image, opj_tcp::mct, opj_image::numcomps, OPJ_TRUE, OPJ_UNUSED, opj_tccp::qmfbid, opj_cp::rsiz, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_setup_encoding_validation().

    - -
    -
    - -

    ◆ opj_j2k_merge_ppm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_merge_ppm (opj_cp_tp_cp,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Merges all PPM markers read (Packed headers, main header)

    -
    Parameters
    - - - -
    p_cpmain coding parameters.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), opj_read_bytes, OPJ_TRUE, opj_cp::ppm, opj_cp::ppm_buffer, opj_cp::ppm_data, opj_cp::ppm_data_size, opj_cp::ppm_len, opj_cp::ppm_markers, and opj_cp::ppm_markers_count.

    - -

    Referenced by opj_j2k_read_header_procedure().

    - -
    -
    - -

    ◆ opj_j2k_merge_ppt()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_merge_ppt (opj_tcp_tp_tcp,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Merges all PPT markers read (Packed headers, tile-part header)

    -

    Merges all PPT markers read (Packed packet headers, tile-part header)

    -
    Parameters
    - - - -
    p_tcpthe tile.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, opj_tcp::ppt, opj_tcp::ppt_buffer, opj_tcp::ppt_data, opj_tcp::ppt_data_size, opj_tcp::ppt_len, opj_tcp::ppt_markers, and opj_tcp::ppt_markers_count.

    - -

    Referenced by opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ opj_j2k_move_data_from_codec_to_output_image()

    - - - -

    ◆ opj_j2k_need_nb_tile_parts_correction()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction (opj_stream_private_tp_stream,
    OPJ_UINT32 tile_no,
    OPJ_BOOLp_correction_needed,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot).

    -

    See issue 254.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    tile_notile number we're looking for.
    p_correction_neededoutput value. if true, non conformant codestream needs TNsot correction.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the function was successful, false else.
    - -

    References EVT_ERROR, J2K_MS_SOT, opj_event_msg(), OPJ_FALSE, opj_j2k_get_sot_values(), opj_read_bytes, opj_stream_has_seek(), opj_stream_read_data(), opj_stream_seek(), opj_stream_skip(), opj_stream_tell(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ opj_j2k_post_write_tile()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_post_write_tile (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_pre_write_tile()

    - - - -

    ◆ opj_j2k_read_cbd()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_cbd (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a CBD marker (Component bit depth definition)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the CBD box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the CBD marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_image::comps, EVT_ERROR, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_image_comp::prec, and opj_image_comp::sgnd.

    - -
    -
    - -

    ◆ opj_j2k_read_coc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_coc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a COC marker (Coding Style Component)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the COC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the COC marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tccp::csty, EVT_ERROR, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_j2k_read_SPCod_SPCoc(), opj_read_bytes, OPJ_TRUE, opj_tcp::tccps, and opj_cp::tcps.

    - -
    -
    - -

    ◆ opj_j2k_read_cod()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_cod (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_read_com()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_com (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a COM marker (comments)

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 file codec.
    p_header_datathe data contained in the COM box.
    p_header_sizethe size of the data contained in the COM marker.
    p_managerthe user event manager.
    -
    -
    - -

    References OPJ_TRUE, and OPJ_UNUSED.

    - -
    -
    - -

    ◆ opj_j2k_read_crg()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_crg (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a CRG marker (Component registration)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, and OPJ_UNUSED.

    - -
    -
    - -

    ◆ opj_j2k_read_float32_to_float()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_float32_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_float.

    - -
    -
    - -

    ◆ opj_j2k_read_float32_to_int32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_float32_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_float.

    - -
    -
    - -

    ◆ opj_j2k_read_float64_to_float()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_float64_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_double.

    - -
    -
    - -

    ◆ opj_j2k_read_float64_to_int32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_float64_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_double.

    - -
    -
    - -

    ◆ opj_j2k_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_tp_stream,
    opj_j2k_tp_j2k,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a jpeg2000 codestream header structure.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the box is valid.
    - -

    References opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_copy_image_header(), OPJ_FALSE, opj_image_create0(), opj_image_destroy(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_exec(), opj_j2k_setup_decoding_validation(), opj_j2k_setup_header_reading(), and OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_read_header().

    - -
    -
    - -

    ◆ opj_j2k_read_header_procedure()

    - - - -

    ◆ opj_j2k_read_int16_to_float()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_int16_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_bytes.

    - -
    -
    - -

    ◆ opj_j2k_read_int16_to_int32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_int16_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_bytes.

    - -
    -
    - -

    ◆ opj_j2k_read_int32_to_float()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_int32_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_bytes.

    - -
    -
    - -

    ◆ opj_j2k_read_int32_to_int32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_read_int32_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_read_bytes.

    - -
    -
    - -

    ◆ opj_j2k_read_mcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_mcc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_read_mco()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_mco (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a MCO marker (Multiple Component Transform Ordering)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the MCO box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the MCO marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, EVT_WARNING, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tccp::m_dc_level_shift, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_tcp::m_mct_decoding_matrix, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_mct(), opj_read_bytes, OPJ_TRUE, opj_tcp::tccps, and opj_cp::tcps.

    - -
    -
    - -

    ◆ opj_j2k_read_mct()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_mct (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_read_plm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_plm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a PLM marker (Packet length, main header marker)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, and OPJ_UNUSED.

    - -
    -
    - -

    ◆ opj_j2k_read_plt()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_plt (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a PLT marker (Packet length, tile-part header)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the PLT box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the PLT marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and OPJ_UNUSED.

    - -
    -
    - -

    ◆ opj_j2k_read_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_poc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a POC marker (Progression Order Change)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_poc::compno0, opj_poc::compno1, EVT_ERROR, J2K_MAX_POCS, J2K_STATE_TPH, opj_poc::layno1, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_tcp::numlayers, opj_tcp::numpocs, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_uint_min(), opj_tcp::POC, opj_tcp::pocs, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, and opj_cp::tcps.

    - -
    -
    - -

    ◆ opj_j2k_read_ppm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_ppm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a PPM marker (Packed headers, main header)

    -

    Reads a PPM marker (Packed packet headers, main header)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_cp, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, opj_realloc(), OPJ_TRUE, opj_cp::ppm, opj_cp::ppm_markers, and opj_cp::ppm_markers_count.

    - -
    -
    - -

    ◆ opj_j2k_read_ppt()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_ppt (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a PPT marker (Packed packet headers, tile-part header)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the PPT box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the PPT marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_ppx_struct::m_data, opj_ppx_struct::m_data_size, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, opj_realloc(), OPJ_TRUE, opj_cp::ppm, opj_tcp::ppt, opj_tcp::ppt_markers, opj_tcp::ppt_markers_count, and opj_cp::tcps.

    - -
    -
    - -

    ◆ opj_j2k_read_qcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_qcc (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a QCC marker (Quantization component)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the QCC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the QCC marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_cp::correct, EVT_ERROR, EVT_WARNING, opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_j2k_read_SQcd_SQcc(), opj_read_bytes, and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_j2k_read_qcd()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_qcd (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a QCD marker (Quantization defaults)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the QCD box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the QCD marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_j2k_copy_tile_quantization_parameters(), opj_j2k_read_SQcd_SQcc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_j2k_read_rgn()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_rgn (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a RGN marker (Region Of Interest)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the POC box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the POC marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_cp::correct, EVT_ERROR, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    - -
    -
    - -

    ◆ opj_j2k_read_siz()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_siz (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a SIZ marker (image and tile size)

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 file codec.
    p_header_datathe data contained in the SIZ box.
    p_header_sizethe size of the data contained in the SIZ marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_cp::allow_different_bit_depth_sign, opj_image::comps, opj_cp::correct, opj_j2k::dump_state, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, EVT_WARNING, opj_cp::exp_comps, opj_image_comp::factor, opj_j2k::ihdr_h, opj_j2k::ihdr_w, J2K_STATE_MH, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_tcp::m_mcc_records, opj_tcp::m_mct_records, opj_tcp::m_nb_max_mcc_records, opj_tcp::m_nb_max_mct_records, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_cp::max_tiles, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_image_comp_header_update(), opj_int_ceildiv(), OPJ_J2K_MCC_DEFAULT_NB_RECORDS, OPJ_J2K_MCT_DEFAULT_NB_RECORDS, opj_read_bytes, OPJ_TRUE, opj_uint_adds(), opj_image_comp::prec, opj_image_comp::resno_decoded, opj_cp::rsiz, opj_image_comp::sgnd, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -
    -
    - -

    ◆ opj_j2k_read_soc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_soc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a SOC marker (Start of Codestream)

    -
    Parameters
    - - - - - - - -
    p_j2kthe jpeg2000 file codec.
    p_streamXXX needs data
    p_managerthe user event manager.
    p_j2kthe jpeg2000 file codec.
    p_streamFIXME DOC
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, J2K_MS_SOC, J2K_STATE_MHSIZ, opj_j2k::m_decoder, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_codestream_index::main_head_start, opj_event_msg(), OPJ_FALSE, opj_j2k_add_mhmarker(), opj_read_bytes, opj_stream_read_data(), opj_stream_tell(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_read_header_procedure().

    - -
    -
    - -

    ◆ opj_j2k_read_sod()

    - - - -

    ◆ opj_j2k_read_sot()

    - - - -

    ◆ opj_j2k_read_SPCod_SPCoc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 compno,
    OPJ_BYTEp_header_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a SPCod or SPCoc element, i.e.

    -

    the coding style of a given component of a tile.

    Parameters
    - - - - - - -
    p_j2kthe jpeg2000 codec.
    compnoFIXME DOC
    p_header_datathe data contained in the COM box.
    p_header_sizethe size of the data contained in the COM marker.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, EVT_ERROR, J2K_CCP_CSTY_PRT, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_J2K_MAXRLVLS, opj_read_bytes, OPJ_TRUE, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_read_coc(), and opj_j2k_read_cod().

    - -
    -
    - -

    ◆ opj_j2k_read_SQcd_SQcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 compno,
    OPJ_BYTEp_header_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a SQcd or SQcc element, i.e.

    -

    the quantization values of a band in the QCD or QCC.

    -
    Parameters
    - - - - - - -
    p_j2kJ2K codec.
    compnothe component number to output.
    p_header_datathe data buffer.
    p_header_sizepointer to the size of the data buffer, it is changed by the function.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_cp::correct, EVT_ERROR, EVT_WARNING, opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, J2K_STATE_TPH, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_stepsize::mant, opj_tccp::numgbits, opj_event_msg(), OPJ_FALSE, OPJ_J2K_MAXBANDS, opj_read_bytes, OPJ_TRUE, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_read_qcc(), and opj_j2k_read_qcd().

    - -
    -
    - -

    ◆ opj_j2k_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_tp_j2k,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a tile header.

    -
    Parameters
    - - - - - - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_dec_memory_marker_handler::handler, opj_dec_memory_marker_handler::id, J2K_MS_EOC, J2K_MS_SOD, J2K_MS_SOT, J2K_STATE_DATA, J2K_STATE_EOC, J2K_STATE_NEOC, J2K_STATE_TPH, J2K_STATE_TPHSOT, opj_j2k_dec::m_can_decode, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_data, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k_dec::m_header_data_size, opj_j2k_dec::m_last_sot_read_pos, opj_tcp::m_nb_tile_parts, opj_j2k_dec::m_nb_tile_parts_correction, opj_j2k_dec::m_nb_tile_parts_correction_checked, opj_j2k_dec::m_skip_data, opj_j2k_dec::m_sot_length, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_tcd, opj_tcd_tile::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_tlmarker(), opj_j2k_get_marker_handler(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_sod(), opj_read_bytes, opj_realloc(), opj_stream_get_number_byte_left(), opj_stream_read_data(), opj_stream_skip(), opj_stream_tell(), opj_tcd_get_decoded_tile_size(), opj_tcd_init_decode_tile(), OPJ_TRUE, opj_dec_memory_marker_handler::states, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::th, opj_tcd_image::tiles, opj_cp::tw, opj_tcd_tile::x0, opj_tcd_tile::x1, opj_tcd_tile::y0, and opj_tcd_tile::y1.

    - -

    Referenced by opj_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tiles(), and opj_jp2_read_tile_header().

    - -
    -
    - -

    ◆ opj_j2k_read_tlm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_tlm (opj_j2k_tp_j2k,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a TLM marker (Tile Length Marker)

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the TLM box.
    p_j2kthe jpeg2000 codec.
    p_header_sizethe size of the data contained in the TLM marker.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and OPJ_UNUSED.

    - -
    -
    - -

    ◆ opj_j2k_read_unk()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_read_unk (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    OPJ_UINT32output_marker,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads an unknown marker.

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object to read from.
    output_markerFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the marker could be deduced.
    - -

    References opj_j2k::cstr_index, EVT_ERROR, EVT_WARNING, opj_dec_memory_marker_handler::id, J2K_MS_SOT, J2K_MS_UNK, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_event_msg(), OPJ_FALSE, opj_j2k_add_mhmarker(), opj_j2k_get_marker_handler(), opj_read_bytes, opj_stream_read_data(), opj_stream_tell(), OPJ_TRUE, and opj_dec_memory_marker_handler::states.

    - -

    Referenced by opj_j2k_read_header_procedure().

    - -
    -
    - -

    ◆ opj_j2k_set_cinema_parameters()

    - - - -

    ◆ opj_j2k_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_tp_j2k,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -
    Parameters
    - - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_image::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_image_comp::factor, J2K_STATE_TPHSOT, opj_j2k::m_cp, opj_tcp::m_data, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_int_ceildiv(), opj_j2k_update_image_dimensions(), opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_set_decode_area().

    - -
    -
    - -

    ◆ opj_j2k_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_tp_j2k,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the indices of the components to decode.

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 codec.
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References EVT_ERROR, opj_j2k_dec::m_comps_indices_to_decode, opj_j2k::m_decoder, opj_j2k_dec::m_numcomps_to_decode, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_set_decoded_components().

    - -
    -
    - -

    ◆ opj_j2k_set_decoded_resolution_factor()

    - - - -

    ◆ opj_j2k_set_imf_parameters()

    - - - -

    ◆ opj_j2k_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_tj2k,
    OPJ_UINT32 num_threads 
    )
    -
    -
    - -

    ◆ opj_j2k_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_j2k_setup_decoder (opj_j2k_tj2k,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder decoding parameters using user parameters.

    -

    Decoding parameters are returned in j2k->cp.

    Parameters
    - - - -
    j2kJ2K decompressor handle
    parametersdecompression parameters
    -
    -
    - -

    References opj_cp::correct, opj_dparameters::cp_layer, opj_dparameters::cp_reduce, opj_j2k::dump_state, opj_cp::exp_comps, opj_dparameters::flags, opj_dparameters::jpwl_correct, opj_dparameters::jpwl_exp_comps, opj_dparameters::jpwl_max_tiles, opj_j2k::m_cp, opj_cp::m_dec, opj_decoding_param::m_layer, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_cp::max_tiles, and OPJ_DPARAMETERS_DUMP_FLAG.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_setup_decoder().

    - -
    -
    - -

    ◆ opj_j2k_setup_decoding()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_decoding (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on decoding data.

    -

    Developpers wanting to extend the library can add their own reading procedures.

    - -

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_decode_tiles(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_decode().

    - -
    -
    - -

    ◆ opj_j2k_setup_decoding_tile()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_decoding_tile (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on decoding one tile.

    -

    Developpers wanting to extend the library can add their own reading procedures.

    - -

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_decode_one_tile(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_get_tile().

    - -
    -
    - -

    ◆ opj_j2k_setup_decoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_decoding_validation (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the validation ,i.e.

    -

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    - -

    References opj_j2k::m_validation_list, OPJ_FALSE, opj_j2k_build_decoder(), opj_j2k_decoding_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_read_header().

    - -
    -
    - -

    ◆ opj_j2k_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_tp_j2k,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cp::comment, opj_poc::compno0, opj_poc::compno1, opj_image::comps, opj_cparameters::cp_cinema, opj_cparameters::cp_comment, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_matrice, opj_cparameters::cp_rsiz, opj_cparameters::cp_tdx, opj_cparameters::cp_tdy, opj_cparameters::cp_tx0, opj_cparameters::cp_ty0, opj_tccp::csty, opj_cparameters::csty, opj_image_comp::dx, opj_image_comp::dy, opj_cp::epb_on, opj_cp::epc_on, opj_cp::esd_on, EVT_ERROR, EVT_WARNING, opj_image_comp::h, opj_cp::hprot_MH, opj_cp::hprot_TPH, opj_cp::hprot_TPH_tileno, opj_cp::info_on, opj_cparameters::irreversible, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_poc::layno1, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_encoding_param::m_disto_alloc, opj_cp::m_enc, opj_encoding_param::m_fixed_alloc, opj_encoding_param::m_fixed_quality, opj_encoding_param::m_matrice, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_cparameters::max_comp_size, opj_cparameters::max_cs_size, opj_cparameters::mct_data, opj_cparameters::mode, opj_image::numcomps, opj_tccp::numgbits, opj_cparameters::numpocs, opj_cparameters::numresolution, opj_tccp::numresolutions, opj_calculate_norms(), opj_calloc(), OPJ_CINEMA2K, OPJ_CINEMA2K_24, OPJ_CINEMA2K_48, OPJ_CINEMA4K, OPJ_CINEMA4K_24, OPJ_CINEMA_24_COMP, OPJ_CINEMA_24_CS, OPJ_CINEMA_48_COMP, OPJ_CINEMA_48_CS, opj_dwt_calc_explicit_stepsizes(), opj_event_msg(), OPJ_EXTENSION_MCT, OPJ_EXTENSION_NONE, OPJ_FALSE, opj_free(), opj_int_ceildiv(), opj_int_floorlog2(), OPJ_IS_BROADCAST, OPJ_IS_CINEMA, OPJ_IS_IMF, OPJ_IS_PART2, OPJ_IS_STORAGE, opj_j2k_check_poc_val(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), OPJ_J2K_MAXRLVLS, opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_mct_encoding(), opj_malloc(), opj_matrix_inversion_f(), OPJ_MCT, OPJ_OFF, OPJ_PROFILE_CINEMA_2K, OPJ_PROFILE_CINEMA_4K, OPJ_PROFILE_CINEMA_S2K, OPJ_PROFILE_CINEMA_S4K, OPJ_PROFILE_NONE, OPJ_PROFILE_PART2, OPJ_STD_RSIZ, OPJ_TRUE, opj_version(), opj_cparameters::POC, opj_cp::pprot, opj_cp::pprot_packno, opj_cp::pprot_tileno, opj_tccp::prch, opj_cparameters::prch_init, opj_tccp::prcw, opj_cparameters::prcw_init, opj_image_comp::prec, opj_poc::prg1, opj_cparameters::prog_order, opj_tccp::qmfbid, opj_tccp::qntsty, opj_cp::red_on, opj_cparameters::res_spec, opj_poc::resno0, opj_poc::resno1, opj_cparameters::roi_compno, opj_cparameters::roi_shift, opj_tccp::roishift, opj_cp::rsiz, opj_cparameters::rsiz, opj_cp::sens_addr, opj_cp::sens_MH, opj_cp::sens_range, opj_cp::sens_size, opj_cp::sens_TPH, opj_cp::sens_TPH_tileno, opj_image_comp::sgnd, tcp, opj_cparameters::tcp_distoratio, opj_cparameters::tcp_mct, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_poc::tile, opj_cparameters::tile_size_on, opj_cparameters::tp_flag, opj_cparameters::tp_on, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image::x1, and opj_image::y1.

    - -

    Referenced by opj_create_compress(), and opj_jp2_setup_encoder().

    - -
    -
    - -

    ◆ opj_j2k_setup_encoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_encoding_validation (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the validation ,i.e.

    -

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    - -

    References opj_j2k::m_validation_list, OPJ_FALSE, opj_j2k_build_encoder(), opj_j2k_encoding_validation(), opj_j2k_mct_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_start_compress().

    - -
    -
    - -

    ◆ opj_j2k_setup_end_compress()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_end_compress (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the validation ,i.e.

    -

    adds the procedures to lauch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    - -

    References opj_j2k::m_cp, opj_j2k::m_procedure_list, OPJ_FALSE, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_destroy_header_memory(), opj_j2k_end_encoding(), opj_j2k_write_eoc(), opj_j2k_write_epc(), opj_j2k_write_updated_tlm(), opj_procedure_list_add_procedure(), OPJ_TRUE, and opj_cp::rsiz.

    - -

    Referenced by opj_j2k_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_setup_header_reading()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_setup_header_reading (opj_j2k_tp_j2k,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on reading header.

    -

    Developpers wanting to extend the library can add their own reading procedures.

    - -

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_read_header().

    - -
    -
    - -

    ◆ opj_j2k_setup_header_writing()

    - - - -

    ◆ opj_j2k_setup_mct_encoding()

    - - - -

    ◆ opj_j2k_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Starts a compression scheme, i.e.

    -

    validates the codec parameters, writes the header.

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the codec is valid.
    - -

    References opj_image::comps, opj_image_comp::data, EVT_ERROR, opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_image::numcomps, opj_copy_image_header(), opj_event_msg(), OPJ_FALSE, opj_image_create0(), opj_j2k_exec(), opj_j2k_setup_encoding_validation(), opj_j2k_setup_header_writing(), and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_start_compress().

    - -
    -
    - -

    ◆ opj_j2k_tcp_data_destroy()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_j2k_tcp_data_destroy (opj_tcp_tp_tcp)
    -
    -static
    -
    - -

    Destroys the data inside a tile coding parameter structure.

    -
    Parameters
    - - -
    p_tcpthe tile coding parameter which contain data to destroy.
    -
    -
    - -

    References opj_tcp::m_data, opj_tcp::m_data_size, and opj_free().

    - -

    Referenced by opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), and opj_j2k_tcp_destroy().

    - -
    -
    - -

    ◆ opj_j2k_tcp_destroy()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_j2k_tcp_destroy (opj_tcp_tp_tcp)
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_update_image_data()

    - - - -

    ◆ opj_j2k_update_image_dimensions()

    - - - -

    ◆ opj_j2k_update_rates()

    - - - -

    ◆ opj_j2k_update_tlm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_update_tlm (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_part_size 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_all_coc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_all_coc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes COC marker for each component.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_compare_coc(), opj_j2k_write_coc(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_all_qcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_all_qcc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes QCC marker for each component.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_compare_qcc(), opj_j2k_write_qcc(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_all_tile_parts()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_all_tile_parts (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 total_data_size,
    opj_stream_private_tp_stream,
    struct opj_event_mgrp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_cbd()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_cbd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the CBD marker (Component bit depth definition)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_image::comps, EVT_ERROR, J2K_MS_CBD, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, opj_write_bytes, opj_image_comp::prec, and opj_image_comp::sgnd.

    - -

    Referenced by opj_j2k_write_mct_data_group().

    - -
    -
    - -

    ◆ opj_j2k_write_coc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_coc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the COC marker (Coding style component)

    -
    Parameters
    - - - - - -
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_write_coc_in_memory(), opj_realloc(), opj_stream_write_data(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_write_all_coc().

    - -
    -
    - -

    ◆ opj_j2k_write_coc_in_memory()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_coc_in_memory (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the COC marker (Coding style component)

    -
    Parameters
    - - - - - - -
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_dataFIXME DOC
    p_data_writtenFIXME DOC
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tccp::csty, J2K_MS_COC, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_write_SPCod_SPCoc(), opj_write_bytes, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_write_coc(), and opj_j2k_write_first_tile_part().

    - -
    -
    - -

    ◆ opj_j2k_write_cod()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_cod (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_com()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_com (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the COM marker (comment)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_cp::comment, EVT_ERROR, J2K_MS_COM, opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_eoc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_eoc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the EOC marker (End of Codestream)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References J2K_MS_EOC, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_flush(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_setup_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_write_epc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_epc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes EPC ????

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_codestream_index::codestream_size, opj_j2k::cstr_index, opj_codestream_index::main_head_start, opj_stream_tell(), OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_j2k_setup_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_write_first_tile_part()

    - - - -

    ◆ opj_j2k_write_float_to_float()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_float_to_float (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_write_float.

    - -
    -
    - -

    ◆ opj_j2k_write_float_to_float64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_float_to_float64 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_write_double.

    - -
    -
    - -

    ◆ opj_j2k_write_float_to_int16()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_float_to_int16 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_write_bytes.

    - -
    -
    - -

    ◆ opj_j2k_write_float_to_int32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_float_to_int32 (const void * p_src_data,
    void * p_dest_data,
    OPJ_UINT32 p_nb_elem 
    )
    -
    -static
    -
    - -

    References opj_write_bytes.

    - -
    -
    - -

    ◆ opj_j2k_write_mcc_record()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_mcc_record (opj_j2k_tp_j2k,
    opj_simple_mcc_decorrelation_data_tp_mcc_record,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_mco()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_mco (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_mct_data_group()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_mct_data_group (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the CBD-MCT-MCC-MCO markers (Multi components transform)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_mcc_records, opj_tcp::m_mct_records, opj_tcp::m_nb_mcc_records, opj_tcp::m_nb_mct_records, OPJ_FALSE, opj_j2k_write_cbd(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), OPJ_TRUE, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_mct_record()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_mct_record (opj_j2k_tp_j2k,
    opj_mct_data_tp_mct_record,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the MCT marker (Multiple Component Transform)

    -
    Parameters
    - - - - - -
    p_j2kJ2K codec.
    p_mct_recordFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, J2K_MS_MCT, opj_mct_data::m_array_type, opj_mct_data::m_data, opj_mct_data::m_data_size, opj_mct_data::m_element_type, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_mct_data::m_index, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_write_mct_data_group().

    - -
    -
    - -

    ◆ opj_j2k_write_plt_in_memory()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_plt_in_memory (opj_j2k_tp_j2k,
    opj_tcd_marker_info_tmarker_info,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Write one or more PLT markers in the provided buffer.

    - -

    References EVT_ERROR, J2K_MS_PLT, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, opj_tcd_marker_info::p_packet_size, and opj_tcd_marker_info::packet_count.

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_j2k_write_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_poc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_poc_in_memory()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_poc_in_memory (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the POC marker (Progression Order Change)

    -
    Parameters
    - - - - - -
    p_j2kJ2K codec.
    p_dataFIXME DOC
    p_data_writtenthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_poc::compno0, opj_poc::compno1, J2K_MS_POC, opj_poc::layno1, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_tcp::numlayers, opj_tcp::numpocs, opj_tccp::numresolutions, opj_int_min(), OPJ_UNUSED, opj_write_bytes, opj_tcp::pocs, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_write_first_tile_part(), and opj_j2k_write_poc().

    - -
    -
    - -

    ◆ opj_j2k_write_qcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_qcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the QCC marker (quantization component)

    -
    Parameters
    - - - - - -
    p_comp_nothe index of the component to output.
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_qcc_in_memory(), opj_realloc(), opj_stream_write_data(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_write_all_qcc().

    - -
    -
    - -

    ◆ opj_j2k_write_qcc_in_memory()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_j2k_write_qcc_in_memory (opj_j2k_tp_j2k,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the QCC marker (quantization component)

    -
    Parameters
    - - - - - - -
    p_j2kJ2K codec.
    p_comp_nothe index of the component to output.
    p_dataFIXME DOC
    p_data_writtenthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References J2K_MS_QCC, opj_j2k::m_current_tile_number, opj_j2k::m_private_image, opj_image::numcomps, opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_SQcd_SQcc(), and opj_write_bytes.

    - -

    Referenced by opj_j2k_write_first_tile_part(), and opj_j2k_write_qcc().

    - -
    -
    - -

    ◆ opj_j2k_write_qcd()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_qcd (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the QCD marker (quantization default)

    -
    Parameters
    - - - - -
    p_j2kJ2K codec.
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, J2K_MS_QCD, opj_j2k::m_current_tile_number, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_write_SQcd_SQcc(), opj_realloc(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_regions()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_regions (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes regions of interests.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_FALSE, opj_j2k_write_rgn(), OPJ_TRUE, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_rgn()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_rgn (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_UINT32 nb_comps,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the RGN marker (Region Of Interest)

    -
    Parameters
    - - - - - - - -
    p_tile_nothe tile to output
    p_comp_nothe component to output
    nb_compsthe number of components
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References J2K_MS_RGN, opj_j2k::m_cp, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, opj_write_bytes, opj_tccp::roishift, opj_tcp::tccps, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_write_regions().

    - -
    -
    - -

    ◆ opj_j2k_write_siz()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_siz (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_j2k_write_soc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_soc (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the SOC marker (Start Of Codestream)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References J2K_MS_SOC, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k::m_specific_param, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_sod()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_sod (opj_j2k_tp_j2k,
    opj_tcd_tp_tile_coder,
    OPJ_BYTEp_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 total_data_size,
    const opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the SOD marker (Start of data)

    -

    This also writes optional PLT markers (before SOD)

    -
    Parameters
    - - - - - - - - -
    p_j2kJ2K codec.
    p_tile_coderFIXME DOC
    p_dataFIXME DOC
    p_data_writtenFIXME DOC
    total_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tcd::cur_tp_num, EVT_ERROR, J2K_MS_SOD, opj_j2k_enc::m_current_poc_tile_part_number, opj_j2k::m_current_tile_number, opj_j2k_enc::m_current_tile_part_number, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k_enc::m_reserved_bytes_for_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_write_plt_in_memory(), opj_malloc(), opj_tcd_encode_tile(), opj_tcd_marker_info_create(), opj_tcd_marker_info_destroy(), OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, opj_tcd_tile::packno, opj_codestream_info::packno, opj_tcd::tcd_image, opj_tcd_image::tiles, and opj_tcd::tp_num.

    - -

    Referenced by opj_j2k_write_all_tile_parts(), and opj_j2k_write_first_tile_part().

    - -
    -
    - -

    ◆ opj_j2k_write_sot()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_sot (opj_j2k_tp_j2k,
    OPJ_BYTEp_data,
    OPJ_UINT32 total_data_size,
    OPJ_UINT32p_data_written,
    const opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the SOT marker (Start of tile-part)

    -
    Parameters
    - - - - - - - -
    p_j2kJ2K codec.
    p_dataOutput buffer
    total_data_sizeOutput buffer size
    p_data_writtenNumber of bytes written into stream
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, J2K_MS_SOT, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_j2k_enc::m_current_tile_part_number, opj_j2k::m_encoder, opj_tcp::m_nb_tile_parts, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, OPJ_UNUSED, opj_write_bytes, and opj_cp::tcps.

    - -

    Referenced by opj_j2k_write_all_tile_parts(), and opj_j2k_write_first_tile_part().

    - -
    -
    - -

    ◆ opj_j2k_write_SPCod_SPCoc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes a SPCod or SPCoc element, i.e.

    -

    the coding style of a given component of a tile.

    -
    Parameters
    - - - - - - - -
    p_j2kJ2K codec.
    p_tile_noFIXME DOC
    p_comp_nothe component number to output.
    p_dataFIXME DOC
    p_header_sizeFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    FIXME DOC
    - -

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_tccp::csty, EVT_ERROR, J2K_CCP_CSTY_PRT, opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, opj_write_bytes, opj_tccp::prch, opj_tccp::prcw, opj_tccp::qmfbid, opj_tcp::tccps, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by opj_j2k_write_coc_in_memory(), and opj_j2k_write_cod().

    - -
    -
    - -

    ◆ opj_j2k_write_SQcd_SQcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_no,
    OPJ_UINT32 p_comp_no,
    OPJ_BYTEp_data,
    OPJ_UINT32p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes a SQcd or SQcc element, i.e.

    -

    the quantization values of a band in the QCD or QCC.

    -
    Parameters
    - - - - - - - -
    p_tile_nothe tile to output.
    p_comp_nothe component number to output.
    p_datathe data buffer.
    p_header_sizepointer to the size of the data buffer, it is changed by the function.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, opj_stepsize::expn, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_stepsize::mant, opj_tccp::numgbits, opj_tccp::numresolutions, opj_event_msg(), OPJ_FALSE, OPJ_TRUE, opj_write_bytes, opj_tccp::qntsty, opj_tccp::stepsizes, opj_tcp::tccps, opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_write_qcc_in_memory(), and opj_j2k_write_qcd().

    - -
    -
    - -

    ◆ opj_j2k_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Writes a tile.

    -
    Parameters
    - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tcd_tile::comps, EVT_ERROR, opj_tcd::image, opj_j2k::m_tcd, opj_image::numcomps, opj_alloc_tile_component_data(), opj_event_msg(), OPJ_FALSE, opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_tcd_copy_tile_data(), OPJ_TRUE, opj_tcd::tcd_image, and opj_tcd_image::tiles.

    - -

    Referenced by opj_create_compress(), and opj_jp2_write_tile().

    - -
    -
    - -

    ◆ opj_j2k_write_tlm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_tlm (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the TLM marker (Tile Length Marker)

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References EVT_ERROR, J2K_MS_TLM, opj_j2k::m_encoder, opj_j2k_enc::m_header_tile_data, opj_j2k_enc::m_header_tile_data_size, opj_j2k::m_specific_param, opj_j2k_enc::m_tlm_start, opj_j2k_enc::m_total_tile_parts, opj_event_msg(), OPJ_FALSE, opj_free(), opj_realloc(), opj_stream_tell(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_j2k_setup_header_writing().

    - -
    -
    - -

    ◆ opj_j2k_write_updated_tlm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_j2k_write_updated_tlm (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the updated tlm.

    -
    Parameters
    - - - - -
    p_streamthe stream to write data to.
    p_j2kJ2K codec.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::m_encoder, opj_j2k::m_specific_param, opj_j2k_enc::m_tlm_sot_offsets_buffer, opj_j2k_enc::m_tlm_start, opj_j2k_enc::m_total_tile_parts, OPJ_FALSE, opj_stream_seek(), opj_stream_tell(), opj_stream_write_data(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_setup_end_compress().

    - -
    -
    -

    Variable Documentation

    - -

    ◆ j2k_mct_read_functions_to_float

    - -
    -
    - - - - - -
    - - - - -
    const opj_j2k_mct_function j2k_mct_read_functions_to_float[]
    -
    -static
    -
    -
    - -

    ◆ j2k_mct_read_functions_to_int32

    - -
    -
    - - - - - -
    - - - - -
    const opj_j2k_mct_function j2k_mct_read_functions_to_int32[]
    -
    -static
    -
    -
    - -

    ◆ j2k_mct_write_functions_from_float

    - -
    -
    - - - - - -
    - - - - -
    const opj_j2k_mct_function j2k_mct_write_functions_from_float[]
    -
    -static
    -
    -
    - -

    ◆ j2k_memory_marker_handler_tab

    - -
    -
    - - - - - -
    - - - - -
    const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab[]
    -
    -static
    -
    - -

    Referenced by opj_j2k_get_marker_handler().

    - -
    -
    - -

    ◆ j2k_prog_order_list

    - -
    -
    - - - - - -
    - - - - -
    const j2k_prog_order_t j2k_prog_order_list[]
    -
    -static
    -
    -Initial value:
    = {
    -
    {OPJ_CPRL, "CPRL"},
    -
    {OPJ_LRCP, "LRCP"},
    -
    {OPJ_PCRL, "PCRL"},
    -
    {OPJ_RLCP, "RLCP"},
    -
    {OPJ_RPCL, "RPCL"},
    -
    {(OPJ_PROG_ORDER) - 1, ""}
    -
    }
    -
    -

    Referenced by opj_j2k_convert_progression_order().

    - -
    -
    - -

    ◆ MCT_ELEMENT_SIZE

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_UINT32 MCT_ELEMENT_SIZE[]
    -
    -static
    -
    -Initial value:
    = {
    -
    2,
    -
    4,
    -
    4,
    -
    8
    -
    }
    -
    -

    FIXME DOC.

    - -

    Referenced by opj_j2k_add_mct(), and opj_j2k_setup_mct_encoding().

    - -
    -
    - -

    ◆ tabMaxSubLevelFromMainLevel

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_UINT16 tabMaxSubLevelFromMainLevel[]
    -
    -static
    -
    -Initial value:
    = {
    -
    15,
    -
    1,
    -
    1,
    -
    1,
    -
    2,
    -
    3,
    -
    4,
    -
    5,
    -
    6,
    -
    7,
    -
    8,
    -
    9
    -
    }
    -
    -

    Referenced by opj_j2k_is_imf_compliant().

    - -
    -
    -
    -
    static void opj_j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1600
    -
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    -
    static void opj_j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1413
    -
    static void opj_j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1515
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    static void opj_j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1447
    -
    static void opj_j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1532
    -
    static void opj_j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1566
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    static void opj_j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1498
    -
    static void opj_j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1464
    -
    static void opj_j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1583
    -
    static void opj_j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1430
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    static void opj_j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1549
    -
    static void opj_j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1481
    - - - - diff --git a/build/doc/html/j2k_8h.html b/build/doc/html/j2k_8h.html deleted file mode 100644 index cd1fb733a..000000000 --- a/build/doc/html/j2k_8h.html +++ /dev/null @@ -1,2761 +0,0 @@ - - - - - - - -OpenJPEG: j2k.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    j2k.h File Reference
    -
    -
    - -

    The JPEG-2000 Codestream Reader/Writer (J2K) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Structures

    struct  opj_stepsize
     Quantization stepsize. More...
     
    struct  opj_tccp
     Tile-component coding parameters. More...
     
    struct  opj_mct_data
     FIXME DOC. More...
     
    struct  opj_simple_mcc_decorrelation_data
     FIXME DOC. More...
     
    struct  opj_ppx_struct
     
    struct  opj_tcp
     Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    struct  opj_encoding_param
     
    struct  opj_decoding_param
     
    struct  opj_cp
     Coding parameters. More...
     
    struct  opj_j2k_dec
     
    struct  opj_j2k_enc
     
    struct  opj_j2k
     JPEG-2000 codestream reader/writer. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define J2K_CP_CSTY_PRT   0x01
     
    #define J2K_CP_CSTY_SOP   0x02
     
    #define J2K_CP_CSTY_EPH   0x04
     
    #define J2K_CCP_CSTY_PRT   0x01
     
    #define J2K_CCP_CBLKSTY_LAZY   0x01
     Selective arithmetic coding bypass. More...
     
    #define J2K_CCP_CBLKSTY_RESET   0x02
     Reset context probabilities on coding pass boundaries. More...
     
    #define J2K_CCP_CBLKSTY_TERMALL   0x04
     Termination on each coding pass. More...
     
    #define J2K_CCP_CBLKSTY_VSC   0x08
     Vertically stripe causal context. More...
     
    #define J2K_CCP_CBLKSTY_PTERM   0x10
     Predictable termination. More...
     
    #define J2K_CCP_CBLKSTY_SEGSYM   0x20
     Segmentation symbols are used. More...
     
    #define J2K_CCP_QNTSTY_NOQNT   0
     
    #define J2K_CCP_QNTSTY_SIQNT   1
     
    #define J2K_CCP_QNTSTY_SEQNT   2
     
    #define J2K_MS_SOC   0xff4f
     SOC marker value. More...
     
    #define J2K_MS_SOT   0xff90
     SOT marker value. More...
     
    #define J2K_MS_SOD   0xff93
     SOD marker value. More...
     
    #define J2K_MS_EOC   0xffd9
     EOC marker value. More...
     
    #define J2K_MS_SIZ   0xff51
     SIZ marker value. More...
     
    #define J2K_MS_COD   0xff52
     COD marker value. More...
     
    #define J2K_MS_COC   0xff53
     COC marker value. More...
     
    #define J2K_MS_RGN   0xff5e
     RGN marker value. More...
     
    #define J2K_MS_QCD   0xff5c
     QCD marker value. More...
     
    #define J2K_MS_QCC   0xff5d
     QCC marker value. More...
     
    #define J2K_MS_POC   0xff5f
     POC marker value. More...
     
    #define J2K_MS_TLM   0xff55
     TLM marker value. More...
     
    #define J2K_MS_PLM   0xff57
     PLM marker value. More...
     
    #define J2K_MS_PLT   0xff58
     PLT marker value. More...
     
    #define J2K_MS_PPM   0xff60
     PPM marker value. More...
     
    #define J2K_MS_PPT   0xff61
     PPT marker value. More...
     
    #define J2K_MS_SOP   0xff91
     SOP marker value. More...
     
    #define J2K_MS_EPH   0xff92
     EPH marker value. More...
     
    #define J2K_MS_CRG   0xff63
     CRG marker value. More...
     
    #define J2K_MS_COM   0xff64
     COM marker value. More...
     
    #define J2K_MS_CBD   0xff78
     CBD marker value. More...
     
    #define J2K_MS_MCC   0xff75
     MCC marker value. More...
     
    #define J2K_MS_MCT   0xff74
     MCT marker value. More...
     
    #define J2K_MS_MCO   0xff77
     MCO marker value. More...
     
    #define J2K_MS_UNK   0
     UNKNOWN marker value. More...
     
    #define J2K_MS_EPC   0xff68
     EPC marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_EPB   0xff66
     EPB marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_ESD   0xff67
     ESD marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_RED   0xff69
     RED marker value (Part 11: JPEG 2000 for Wireless) More...
     
    #define J2K_MS_SEC   0xff65
     SEC marker value (Part 8: Secure JPEG 2000) More...
     
    #define J2K_MS_INSEC   0xff94
     INSEC marker value (Part 8: Secure JPEG 2000) More...
     
    #define J2K_MAX_POCS   32
     Maximum number of POCs. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    typedef enum J2K_STATUS J2K_STATUS
     Values that specify the status of the decoding process when decoding the main header. More...
     
    typedef enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
     Type of elements storing in the MCT data. More...
     
    typedef enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
     Type of MCT array. More...
     
    typedef enum T2_MODE J2K_T2_MODE
     T2 encoding mode. More...
     
    typedef struct opj_stepsize opj_stepsize_t
     Quantization stepsize. More...
     
    typedef struct opj_tccp opj_tccp_t
     Tile-component coding parameters. More...
     
    typedef struct opj_mct_data opj_mct_data_t
     FIXME DOC. More...
     
    typedef struct opj_simple_mcc_decorrelation_data opj_simple_mcc_decorrelation_data_t
     FIXME DOC. More...
     
    typedef struct opj_ppx_struct opj_ppx
     
    typedef struct opj_tcp opj_tcp_t
     Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    typedef struct opj_encoding_param opj_encoding_param_t
     
    typedef struct opj_decoding_param opj_decoding_param_t
     
    typedef struct opj_cp opj_cp_t
     Coding parameters. More...
     
    typedef struct opj_j2k_dec opj_j2k_dec_t
     
    typedef struct opj_j2k_enc opj_j2k_enc_t
     
    typedef struct opj_j2k opj_j2k_t
     JPEG-2000 codestream reader/writer. More...
     
    - - - - - - - - - - - - - -

    -Enumerations

    enum  J2K_STATUS {
    -  J2K_STATE_NONE = 0x0000, -J2K_STATE_MHSOC = 0x0001, -J2K_STATE_MHSIZ = 0x0002, -J2K_STATE_MH = 0x0004, -
    -  J2K_STATE_TPHSOT = 0x0008, -J2K_STATE_TPH = 0x0010, -J2K_STATE_MT = 0x0020, -J2K_STATE_NEOC = 0x0040, -
    -  J2K_STATE_DATA = 0x0080, -J2K_STATE_EOC = 0x0100, -J2K_STATE_ERR = 0x8000 -
    - }
     Values that specify the status of the decoding process when decoding the main header. More...
     
    enum  MCT_ELEMENT_TYPE { MCT_TYPE_INT16 = 0, -MCT_TYPE_INT32 = 1, -MCT_TYPE_FLOAT = 2, -MCT_TYPE_DOUBLE = 3 - }
     Type of elements storing in the MCT data. More...
     
    enum  MCT_ARRAY_TYPE { MCT_TYPE_DEPENDENCY = 0, -MCT_TYPE_DECORRELATION = 1, -MCT_TYPE_OFFSET = 2 - }
     Type of MCT array. More...
     
    enum  T2_MODE { THRESH_CALC = 0, -FINAL_PASS = 1 - }
     T2 encoding mode. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    void opj_j2k_setup_decoder (opj_j2k_t *j2k, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_t *j2k, OPJ_UINT32 num_threads)
     
    opj_j2k_topj_j2k_create_compress (void)
     Creates a J2K compression structure. More...
     
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     
    const char * opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
     Converts an enum type progression order to string type. More...
     
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 codestream header structure. More...
     
    void opj_j2k_destroy (opj_j2k_t *p_j2k)
     Destroys a jpeg2000 codec. More...
     
    void j2k_destroy_cstr_index (opj_codestream_index_t *p_cstr_ind)
     Destroys a codestream index structure. More...
     
    OPJ_BOOL opj_j2k_decode_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    opj_j2k_topj_j2k_create_decompress (void)
     Creates a J2K decompression structure. More...
     
    void j2k_dump (opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the J2K decompression structure . More...
     
    void j2k_dump_image_header (opj_image_t *image, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump an image header structure. More...
     
    void j2k_dump_image_comp_header (opj_image_comp_t *comp, OPJ_BOOL dev_dump_flag, FILE *out_stream)
     Dump a component image header structure. More...
     
    opj_codestream_info_v2_tj2k_get_cstr_info (opj_j2k_t *p_j2k)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tj2k_get_cstr_index (opj_j2k_t *p_j2k)
     Get the codestream index from a JPEG2000 codec. More...
     
    OPJ_BOOL opj_j2k_decode (opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_get_tile (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor (opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_j2k_encode (opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Encodes an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_j2k_setup_mct_encoding (opj_tcp_t *p_tcp, opj_image_t *p_image)
     
    -

    Detailed Description

    -

    The JPEG-2000 Codestream Reader/Writer (J2K)

    -

    The functions in J2K.C have for goal to read/write the several parts of the codestream: markers and data.

    -

    Macro Definition Documentation

    - -

    ◆ J2K_CCP_CBLKSTY_LAZY

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_LAZY   0x01
    -
    - -

    Selective arithmetic coding bypass.

    - -
    -
    - -

    ◆ J2K_CCP_CBLKSTY_PTERM

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_PTERM   0x10
    -
    - -

    Predictable termination.

    - -
    -
    - -

    ◆ J2K_CCP_CBLKSTY_RESET

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_RESET   0x02
    -
    - -

    Reset context probabilities on coding pass boundaries.

    - -
    -
    - -

    ◆ J2K_CCP_CBLKSTY_SEGSYM

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_SEGSYM   0x20
    -
    - -

    Segmentation symbols are used.

    - -
    -
    - -

    ◆ J2K_CCP_CBLKSTY_TERMALL

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_TERMALL   0x04
    -
    - -

    Termination on each coding pass.

    - -
    -
    - -

    ◆ J2K_CCP_CBLKSTY_VSC

    - -
    -
    - - - - -
    #define J2K_CCP_CBLKSTY_VSC   0x08
    -
    - -

    Vertically stripe causal context.

    - -
    -
    - -

    ◆ J2K_CCP_CSTY_PRT

    - -
    -
    - - - - -
    #define J2K_CCP_CSTY_PRT   0x01
    -
    - -
    -
    - -

    ◆ J2K_CCP_QNTSTY_NOQNT

    - -
    -
    - - - - -
    #define J2K_CCP_QNTSTY_NOQNT   0
    -
    - -
    -
    - -

    ◆ J2K_CCP_QNTSTY_SEQNT

    - -
    -
    - - - - -
    #define J2K_CCP_QNTSTY_SEQNT   2
    -
    - -
    -
    - -

    ◆ J2K_CCP_QNTSTY_SIQNT

    - -
    -
    - - - - -
    #define J2K_CCP_QNTSTY_SIQNT   1
    -
    - -
    -
    - -

    ◆ J2K_CP_CSTY_EPH

    - -
    -
    - - - - -
    #define J2K_CP_CSTY_EPH   0x04
    -
    - -
    -
    - -

    ◆ J2K_CP_CSTY_PRT

    - -
    -
    - - - - -
    #define J2K_CP_CSTY_PRT   0x01
    -
    - -
    -
    - -

    ◆ J2K_CP_CSTY_SOP

    - -
    -
    - - - - -
    #define J2K_CP_CSTY_SOP   0x02
    -
    - -
    -
    - -

    ◆ J2K_MAX_POCS

    - -
    -
    - - - - -
    #define J2K_MAX_POCS   32
    -
    - -

    Maximum number of POCs.

    - -
    -
    - -

    ◆ J2K_MS_CBD

    - -
    -
    - - - - -
    #define J2K_MS_CBD   0xff78
    -
    - -

    CBD marker value.

    - -
    -
    - -

    ◆ J2K_MS_COC

    - -
    -
    - - - - -
    #define J2K_MS_COC   0xff53
    -
    - -

    COC marker value.

    - -
    -
    - -

    ◆ J2K_MS_COD

    - -
    -
    - - - - -
    #define J2K_MS_COD   0xff52
    -
    - -

    COD marker value.

    - -
    -
    - -

    ◆ J2K_MS_COM

    - -
    -
    - - - - -
    #define J2K_MS_COM   0xff64
    -
    - -

    COM marker value.

    - -
    -
    - -

    ◆ J2K_MS_CRG

    - -
    -
    - - - - -
    #define J2K_MS_CRG   0xff63
    -
    - -

    CRG marker value.

    - -
    -
    - -

    ◆ J2K_MS_EOC

    - -
    -
    - - - - -
    #define J2K_MS_EOC   0xffd9
    -
    - -

    EOC marker value.

    - -
    -
    - -

    ◆ J2K_MS_EPB

    - -
    -
    - - - - -
    #define J2K_MS_EPB   0xff66
    -
    - -

    EPB marker value (Part 11: JPEG 2000 for Wireless)

    - -
    -
    - -

    ◆ J2K_MS_EPC

    - -
    -
    - - - - -
    #define J2K_MS_EPC   0xff68
    -
    - -

    EPC marker value (Part 11: JPEG 2000 for Wireless)

    - -
    -
    - -

    ◆ J2K_MS_EPH

    - -
    -
    - - - - -
    #define J2K_MS_EPH   0xff92
    -
    - -

    EPH marker value.

    - -
    -
    - -

    ◆ J2K_MS_ESD

    - -
    -
    - - - - -
    #define J2K_MS_ESD   0xff67
    -
    - -

    ESD marker value (Part 11: JPEG 2000 for Wireless)

    - -
    -
    - -

    ◆ J2K_MS_INSEC

    - -
    -
    - - - - -
    #define J2K_MS_INSEC   0xff94
    -
    - -

    INSEC marker value (Part 8: Secure JPEG 2000)

    - -
    -
    - -

    ◆ J2K_MS_MCC

    - -
    -
    - - - - -
    #define J2K_MS_MCC   0xff75
    -
    - -

    MCC marker value.

    - -
    -
    - -

    ◆ J2K_MS_MCO

    - -
    -
    - - - - -
    #define J2K_MS_MCO   0xff77
    -
    - -

    MCO marker value.

    - -
    -
    - -

    ◆ J2K_MS_MCT

    - -
    -
    - - - - -
    #define J2K_MS_MCT   0xff74
    -
    - -

    MCT marker value.

    - -
    -
    - -

    ◆ J2K_MS_PLM

    - -
    -
    - - - - -
    #define J2K_MS_PLM   0xff57
    -
    - -

    PLM marker value.

    - -
    -
    - -

    ◆ J2K_MS_PLT

    - -
    -
    - - - - -
    #define J2K_MS_PLT   0xff58
    -
    - -

    PLT marker value.

    - -
    -
    - -

    ◆ J2K_MS_POC

    - -
    -
    - - - - -
    #define J2K_MS_POC   0xff5f
    -
    - -

    POC marker value.

    - -
    -
    - -

    ◆ J2K_MS_PPM

    - -
    -
    - - - - -
    #define J2K_MS_PPM   0xff60
    -
    - -

    PPM marker value.

    - -
    -
    - -

    ◆ J2K_MS_PPT

    - -
    -
    - - - - -
    #define J2K_MS_PPT   0xff61
    -
    - -

    PPT marker value.

    - -
    -
    - -

    ◆ J2K_MS_QCC

    - -
    -
    - - - - -
    #define J2K_MS_QCC   0xff5d
    -
    - -

    QCC marker value.

    - -
    -
    - -

    ◆ J2K_MS_QCD

    - -
    -
    - - - - -
    #define J2K_MS_QCD   0xff5c
    -
    - -

    QCD marker value.

    - -
    -
    - -

    ◆ J2K_MS_RED

    - -
    -
    - - - - -
    #define J2K_MS_RED   0xff69
    -
    - -

    RED marker value (Part 11: JPEG 2000 for Wireless)

    - -
    -
    - -

    ◆ J2K_MS_RGN

    - -
    -
    - - - - -
    #define J2K_MS_RGN   0xff5e
    -
    - -

    RGN marker value.

    - -
    -
    - -

    ◆ J2K_MS_SEC

    - -
    -
    - - - - -
    #define J2K_MS_SEC   0xff65
    -
    - -

    SEC marker value (Part 8: Secure JPEG 2000)

    - -
    -
    - -

    ◆ J2K_MS_SIZ

    - -
    -
    - - - - -
    #define J2K_MS_SIZ   0xff51
    -
    - -

    SIZ marker value.

    - -
    -
    - -

    ◆ J2K_MS_SOC

    - -
    -
    - - - - -
    #define J2K_MS_SOC   0xff4f
    -
    - -

    SOC marker value.

    - -
    -
    - -

    ◆ J2K_MS_SOD

    - -
    -
    - - - - -
    #define J2K_MS_SOD   0xff93
    -
    - -

    SOD marker value.

    - -
    -
    - -

    ◆ J2K_MS_SOP

    - -
    -
    - - - - -
    #define J2K_MS_SOP   0xff91
    -
    - -

    SOP marker value.

    - -
    -
    - -

    ◆ J2K_MS_SOT

    - -
    -
    - - - - -
    #define J2K_MS_SOT   0xff90
    -
    - -

    SOT marker value.

    - -
    -
    - -

    ◆ J2K_MS_TLM

    - -
    -
    - - - - -
    #define J2K_MS_TLM   0xff55
    -
    - -

    TLM marker value.

    - -
    -
    - -

    ◆ J2K_MS_UNK

    - -
    -
    - - - - -
    #define J2K_MS_UNK   0
    -
    - -

    UNKNOWN marker value.

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ J2K_MCT_ARRAY_TYPE

    - -
    -
    - - - - -
    typedef enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
    -
    - -

    Type of MCT array.

    - -
    -
    - -

    ◆ J2K_MCT_ELEMENT_TYPE

    - -
    -
    - - - - -
    typedef enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
    -
    - -

    Type of elements storing in the MCT data.

    - -
    -
    - -

    ◆ J2K_STATUS

    - -
    -
    - - - - -
    typedef enum J2K_STATUS J2K_STATUS
    -
    - -

    Values that specify the status of the decoding process when decoding the main header.

    -

    These values may be combined with a | operator.

    - -
    -
    - -

    ◆ J2K_T2_MODE

    - -
    -
    - - - - -
    typedef enum T2_MODE J2K_T2_MODE
    -
    - -

    T2 encoding mode.

    - -
    -
    - -

    ◆ opj_cp_t

    - -
    -
    - - - - -
    typedef struct opj_cp opj_cp_t
    -
    - -

    Coding parameters.

    - -
    -
    - -

    ◆ opj_decoding_param_t

    - -
    -
    - - - - -
    typedef struct opj_decoding_param opj_decoding_param_t
    -
    - -
    -
    - -

    ◆ opj_encoding_param_t

    - -
    -
    - - - - -
    typedef struct opj_encoding_param opj_encoding_param_t
    -
    - -
    -
    - -

    ◆ opj_j2k_dec_t

    - -
    -
    - - - - -
    typedef struct opj_j2k_dec opj_j2k_dec_t
    -
    - -
    -
    - -

    ◆ opj_j2k_enc_t

    - -
    -
    - - - - -
    typedef struct opj_j2k_enc opj_j2k_enc_t
    -
    - -
    -
    - -

    ◆ opj_j2k_t

    - -
    -
    - - - - -
    typedef struct opj_j2k opj_j2k_t
    -
    - -

    JPEG-2000 codestream reader/writer.

    - -
    -
    - -

    ◆ opj_mct_data_t

    - -
    -
    - - - - -
    typedef struct opj_mct_data opj_mct_data_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_ppx

    - -
    -
    - - - - -
    typedef struct opj_ppx_struct opj_ppx
    -
    - -
    -
    - -

    ◆ opj_simple_mcc_decorrelation_data_t

    - -
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_stepsize_t

    - -
    -
    - - - - -
    typedef struct opj_stepsize opj_stepsize_t
    -
    - -

    Quantization stepsize.

    - -
    -
    - -

    ◆ opj_tccp_t

    - -
    -
    - - - - -
    typedef struct opj_tccp opj_tccp_t
    -
    - -

    Tile-component coding parameters.

    - -
    -
    - -

    ◆ opj_tcp_t

    - -
    -
    - - - - -
    typedef struct opj_tcp opj_tcp_t
    -
    - -

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)

    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ J2K_STATUS

    - -
    -
    - - - - -
    enum J2K_STATUS
    -
    - -

    Values that specify the status of the decoding process when decoding the main header.

    -

    These values may be combined with a | operator.

    - - - - - - - - - - - - -
    Enumerator
    J2K_STATE_NONE 

    a SOC marker is expected

    -
    J2K_STATE_MHSOC 

    a SOC marker is expected

    -
    J2K_STATE_MHSIZ 

    a SIZ marker is expected

    -
    J2K_STATE_MH 

    the decoding process is in the main header

    -
    J2K_STATE_TPHSOT 

    the decoding process is in a tile part header and expects a SOT marker

    -
    J2K_STATE_TPH 

    the decoding process is in a tile part header

    -
    J2K_STATE_MT 

    the EOC marker has just been read

    -
    J2K_STATE_NEOC 

    the decoding process must not expect a EOC marker because the codestream is truncated

    -
    J2K_STATE_DATA 

    a tile header has been successfully read and codestream is expected

    -
    J2K_STATE_EOC 

    the decoding process has encountered the EOC marker

    -
    J2K_STATE_ERR 

    the decoding process has encountered an error (FIXME warning V1 = 0x0080)

    -
    - -
    -
    - -

    ◆ MCT_ARRAY_TYPE

    - -
    -
    - - - - -
    enum MCT_ARRAY_TYPE
    -
    - -

    Type of MCT array.

    - - - - -
    Enumerator
    MCT_TYPE_DEPENDENCY 
    MCT_TYPE_DECORRELATION 
    MCT_TYPE_OFFSET 
    - -
    -
    - -

    ◆ MCT_ELEMENT_TYPE

    - -
    -
    - - - - -
    enum MCT_ELEMENT_TYPE
    -
    - -

    Type of elements storing in the MCT data.

    - - - - - -
    Enumerator
    MCT_TYPE_INT16 
    MCT_TYPE_INT32 

    MCT data is stored as signed shorts.

    -
    MCT_TYPE_FLOAT 

    MCT data is stored as signed integers.

    -
    MCT_TYPE_DOUBLE 

    MCT data is stored as floats.

    -
    - -
    -
    - -

    ◆ T2_MODE

    - -
    -
    - - - - -
    enum T2_MODE
    -
    - -

    T2 encoding mode.

    - - - -
    Enumerator
    THRESH_CALC 
    FINAL_PASS 

    Function called in Rate allocation process.

    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ j2k_destroy_cstr_index()

    - -
    -
    - - - - - - - - -
    void j2k_destroy_cstr_index (opj_codestream_index_tp_cstr_ind)
    -
    - -

    Destroys a codestream index structure.

    -
    Parameters
    - - -
    p_cstr_indthe codestream index parameter to destroy.
    -
    -
    - -

    References opj_tile_index::marker, opj_codestream_index::marker, opj_codestream_index::nb_of_tiles, opj_free(), opj_tile_index::packet_index, opj_codestream_index::tile_index, and opj_tile_index::tp_index.

    - -

    Referenced by opj_destroy_cstr_index(), and opj_j2k_destroy().

    - -
    -
    - -

    ◆ j2k_dump()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump (opj_j2k_tp_j2k,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    -
    - -

    Dump some elements from the J2K decompression structure .

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References j2k_dump_image_header(), opj_j2k::m_cp, opj_j2k::m_private_image, opj_image::numcomps, OPJ_IMG_INFO, opj_j2k_dump_MH_index(), opj_j2k_dump_MH_info(), opj_j2k_dump_tile_info(), OPJ_J2K_MH_IND, OPJ_J2K_MH_INFO, OPJ_J2K_TCH_INFO, OPJ_J2K_TH_IND, OPJ_J2K_TH_INFO, OPJ_JP2_IND, OPJ_JP2_INFO, opj_cp::tcps, opj_cp::th, and opj_cp::tw.

    - -

    Referenced by jp2_dump(), and opj_create_decompress().

    - -
    -
    - -

    ◆ j2k_dump_image_comp_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump_image_comp_header (opj_image_comp_tcomp,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    -
    - -

    Dump a component image header structure.

    -
    Parameters
    - - - - -
    compthe component image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_image_comp::dx, opj_image_comp::dy, opj_image_comp::prec, and opj_image_comp::sgnd.

    - -

    Referenced by j2k_dump_image_header().

    - -
    -
    - -

    ◆ j2k_dump_image_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void j2k_dump_image_header (opj_image_timage,
    OPJ_BOOL dev_dump_flag,
    FILE * out_stream 
    )
    -
    - -

    Dump an image header structure.

    -
    Parameters
    - - - - -
    imagethe image header to dump.
    dev_dump_flagflag to describe if we are in the case of this function is use outside j2k_dump function
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_image::comps, j2k_dump_image_comp_header(), opj_image::numcomps, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by j2k_dump().

    - -
    -
    - -

    ◆ j2k_get_cstr_index()

    - - - -

    ◆ j2k_get_cstr_info()

    - -
    -
    - - - - - - - - -
    opj_codestream_info_v2_t* j2k_get_cstr_info (opj_j2k_tp_j2k)
    -
    - -

    Get the codestream info from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_j2kthe component image header to dump.
    -
    -
    -
    Returns
    the codestream information extract from the jpg2000 codec
    - -

    References opj_tccp::cblkh, opj_tccp_info::cblkh, opj_tccp::cblksty, opj_tccp_info::cblksty, opj_tccp::cblkw, opj_tccp_info::cblkw, opj_tccp::csty, opj_tcp::csty, opj_tccp_info::csty, opj_tile_v2_info::csty, opj_stepsize::expn, J2K_CCP_QNTSTY_SIQNT, opj_j2k::m_cp, opj_j2k::m_decoder, opj_j2k_dec::m_default_tcp, opj_codestream_info_v2::m_default_tile_info, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_stepsize::mant, opj_tcp::mct, opj_tile_v2_info::mct, opj_codestream_info_v2::nbcomps, opj_image::numcomps, opj_tccp::numgbits, opj_tccp_info::numgbits, opj_tcp::numlayers, opj_tile_v2_info::numlayers, opj_tccp::numresolutions, opj_tccp_info::numresolutions, opj_calloc(), opj_destroy_cstr_info(), OPJ_J2K_MAXBANDS, OPJ_J2K_MAXRLVLS, opj_tccp::prch, opj_tccp_info::prch, opj_tccp::prcw, opj_tccp_info::prcw, opj_tcp::prg, opj_tile_v2_info::prg, opj_tccp::qmfbid, opj_tccp_info::qmfbid, opj_tccp::qntsty, opj_tccp_info::qntsty, opj_tccp::roishift, opj_tccp_info::roishift, opj_tccp::stepsizes, opj_tccp_info::stepsizes_expn, opj_tccp_info::stepsizes_mant, opj_tile_v2_info::tccp_info, opj_tcp::tccps, opj_cp::tdx, opj_codestream_info_v2::tdx, opj_cp::tdy, opj_codestream_info_v2::tdy, opj_cp::th, opj_codestream_info_v2::th, opj_codestream_info_v2::tile_info, opj_cp::tw, opj_codestream_info_v2::tw, opj_cp::tx0, opj_codestream_info_v2::tx0, opj_cp::ty0, and opj_codestream_info_v2::ty0.

    - -

    Referenced by jp2_get_cstr_info(), and opj_create_decompress().

    - -
    -
    - -

    ◆ opj_j2k_convert_progression_order()

    - -
    -
    - - - - - - - - -
    const char* opj_j2k_convert_progression_order (OPJ_PROG_ORDER prg_order)
    -
    - -

    Converts an enum type progression order to string type.

    - -

    References j2k_prog_order::enum_prog, j2k_prog_order_list, and j2k_prog_order::str_prog.

    - -

    Referenced by opj_j2k_get_num_tp(), and opj_pi_create_encode().

    - -
    -
    - -

    ◆ opj_j2k_create_compress()

    - - - -

    ◆ opj_j2k_create_decompress()

    - - - -

    ◆ opj_j2k_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_decode (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_j2k_decode_tile()

    - - - -

    ◆ opj_j2k_destroy()

    - - - -

    ◆ opj_j2k_encode()

    - - - -

    ◆ opj_j2k_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_encoder_set_extra_options (opj_j2k_tp_j2k,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Specify extra options for the encoder.

    -
    Parameters
    - - - - -
    p_j2kthe jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    -
    -
    -
    See also
    opj_encoder_set_extra_options() for more details.
    - -

    References EVT_ERROR, opj_j2k::m_encoder, opj_j2k_enc::m_PLT, opj_j2k::m_specific_param, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_encoder_set_extra_options().

    - -
    -
    - -

    ◆ opj_j2k_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_end_compress (opj_j2k_tp_j2k,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_j2k::m_procedure_list, OPJ_FALSE, opj_j2k_exec(), opj_j2k_setup_end_compress(), and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_end_compress().

    - -
    -
    - -

    ◆ opj_j2k_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_end_decompress (opj_j2k_tj2k,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    - -

    References OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_end_decompress().

    - -
    -
    - -

    ◆ opj_j2k_get_tile()

    - - - -

    ◆ opj_j2k_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_read_header (opj_stream_private_tp_stream,
    opj_j2k_tp_j2k,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a jpeg2000 codestream header structure.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the box is valid.
    - -

    References opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_copy_image_header(), OPJ_FALSE, opj_image_create0(), opj_image_destroy(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_exec(), opj_j2k_setup_decoding_validation(), opj_j2k_setup_header_reading(), and OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_read_header().

    - -
    -
    - -

    ◆ opj_j2k_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_read_tile_header (opj_j2k_tp_j2k,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a tile header.

    -
    Parameters
    - - - - - - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_j2k::cstr_index, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_dec_memory_marker_handler::handler, opj_dec_memory_marker_handler::id, J2K_MS_EOC, J2K_MS_SOD, J2K_MS_SOT, J2K_STATE_DATA, J2K_STATE_EOC, J2K_STATE_NEOC, J2K_STATE_TPH, J2K_STATE_TPHSOT, opj_j2k_dec::m_can_decode, opj_j2k::m_cp, opj_j2k::m_current_tile_number, opj_tcp::m_data, opj_j2k::m_decoder, opj_j2k_dec::m_header_data, opj_j2k_dec::m_header_data_size, opj_j2k_dec::m_last_sot_read_pos, opj_tcp::m_nb_tile_parts, opj_j2k_dec::m_nb_tile_parts_correction, opj_j2k_dec::m_nb_tile_parts_correction_checked, opj_j2k_dec::m_skip_data, opj_j2k_dec::m_sot_length, opj_j2k::m_specific_param, opj_j2k_dec::m_state, opj_j2k::m_tcd, opj_tcd_tile::numcomps, opj_event_msg(), OPJ_FALSE, opj_free(), opj_j2k_add_tlmarker(), opj_j2k_get_marker_handler(), opj_j2k_merge_ppt(), opj_j2k_need_nb_tile_parts_correction(), opj_j2k_read_sod(), opj_read_bytes, opj_realloc(), opj_stream_get_number_byte_left(), opj_stream_read_data(), opj_stream_skip(), opj_stream_tell(), opj_tcd_get_decoded_tile_size(), opj_tcd_init_decode_tile(), OPJ_TRUE, opj_dec_memory_marker_handler::states, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::th, opj_tcd_image::tiles, opj_cp::tw, opj_tcd_tile::x0, opj_tcd_tile::x1, opj_tcd_tile::y0, and opj_tcd_tile::y1.

    - -

    Referenced by opj_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tiles(), and opj_jp2_read_tile_header().

    - -
    -
    - -

    ◆ opj_j2k_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_decode_area (opj_j2k_tp_j2k,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -
    Parameters
    - - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_image::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_image_comp::factor, J2K_STATE_TPHSOT, opj_j2k::m_cp, opj_tcp::m_data, opj_cp::m_dec, opj_j2k::m_decoder, opj_j2k_dec::m_discard_tiles, opj_j2k_dec::m_end_tile_x, opj_j2k_dec::m_end_tile_y, opj_j2k::m_private_image, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_j2k::m_specific_param, opj_j2k_dec::m_start_tile_x, opj_j2k_dec::m_start_tile_y, opj_j2k_dec::m_state, opj_image::numcomps, opj_event_msg(), OPJ_FALSE, opj_int_ceildiv(), opj_j2k_update_image_dimensions(), opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_set_decode_area().

    - -
    -
    - -

    ◆ opj_j2k_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_decoded_components (opj_j2k_tp_j2k,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the indices of the components to decode.

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 codec.
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References EVT_ERROR, opj_j2k_dec::m_comps_indices_to_decode, opj_j2k::m_decoder, opj_j2k_dec::m_numcomps_to_decode, opj_j2k::m_private_image, opj_j2k::m_specific_param, opj_image::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_set_decoded_components().

    - -
    -
    - -

    ◆ opj_j2k_set_decoded_resolution_factor()

    - - - -

    ◆ opj_j2k_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_set_threads (opj_j2k_tj2k,
    OPJ_UINT32 num_threads 
    )
    -
    -
    - -

    ◆ opj_j2k_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_j2k_setup_decoder (opj_j2k_tj2k,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder decoding parameters using user parameters.

    -

    Decoding parameters are returned in j2k->cp.

    Parameters
    - - - -
    j2kJ2K decompressor handle
    parametersdecompression parameters
    -
    -
    - -

    References opj_cp::correct, opj_dparameters::cp_layer, opj_dparameters::cp_reduce, opj_j2k::dump_state, opj_cp::exp_comps, opj_dparameters::flags, opj_dparameters::jpwl_correct, opj_dparameters::jpwl_exp_comps, opj_dparameters::jpwl_max_tiles, opj_j2k::m_cp, opj_cp::m_dec, opj_decoding_param::m_layer, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_cp::max_tiles, and OPJ_DPARAMETERS_DUMP_FLAG.

    - -

    Referenced by opj_create_decompress(), and opj_jp2_setup_decoder().

    - -
    -
    - -

    ◆ opj_j2k_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_setup_encoder (opj_j2k_tp_j2k,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    References opj_tccp::cblkh, opj_tccp::cblksty, opj_tccp::cblkw, opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cp::comment, opj_poc::compno0, opj_poc::compno1, opj_image::comps, opj_cparameters::cp_cinema, opj_cparameters::cp_comment, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_matrice, opj_cparameters::cp_rsiz, opj_cparameters::cp_tdx, opj_cparameters::cp_tdy, opj_cparameters::cp_tx0, opj_cparameters::cp_ty0, opj_tccp::csty, opj_cparameters::csty, opj_image_comp::dx, opj_image_comp::dy, opj_cp::epb_on, opj_cp::epc_on, opj_cp::esd_on, EVT_ERROR, EVT_WARNING, opj_image_comp::h, opj_cp::hprot_MH, opj_cp::hprot_TPH, opj_cp::hprot_TPH_tileno, opj_cp::info_on, opj_cparameters::irreversible, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_poc::layno1, opj_j2k::m_cp, opj_tccp::m_dc_level_shift, opj_encoding_param::m_disto_alloc, opj_cp::m_enc, opj_encoding_param::m_fixed_alloc, opj_encoding_param::m_fixed_quality, opj_encoding_param::m_matrice, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_flag, opj_encoding_param::m_tp_on, opj_cparameters::max_comp_size, opj_cparameters::max_cs_size, opj_cparameters::mct_data, opj_cparameters::mode, opj_image::numcomps, opj_tccp::numgbits, opj_cparameters::numpocs, opj_cparameters::numresolution, opj_tccp::numresolutions, opj_calculate_norms(), opj_calloc(), OPJ_CINEMA2K, OPJ_CINEMA2K_24, OPJ_CINEMA2K_48, OPJ_CINEMA4K, OPJ_CINEMA4K_24, OPJ_CINEMA_24_COMP, OPJ_CINEMA_24_CS, OPJ_CINEMA_48_COMP, OPJ_CINEMA_48_CS, opj_dwt_calc_explicit_stepsizes(), opj_event_msg(), OPJ_EXTENSION_MCT, OPJ_EXTENSION_NONE, OPJ_FALSE, opj_free(), opj_int_ceildiv(), opj_int_floorlog2(), OPJ_IS_BROADCAST, OPJ_IS_CINEMA, OPJ_IS_IMF, OPJ_IS_PART2, OPJ_IS_STORAGE, opj_j2k_check_poc_val(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), OPJ_J2K_MAXRLVLS, opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_mct_encoding(), opj_malloc(), opj_matrix_inversion_f(), OPJ_MCT, OPJ_OFF, OPJ_PROFILE_CINEMA_2K, OPJ_PROFILE_CINEMA_4K, OPJ_PROFILE_CINEMA_S2K, OPJ_PROFILE_CINEMA_S4K, OPJ_PROFILE_NONE, OPJ_PROFILE_PART2, OPJ_STD_RSIZ, OPJ_TRUE, opj_version(), opj_cparameters::POC, opj_cp::pprot, opj_cp::pprot_packno, opj_cp::pprot_tileno, opj_tccp::prch, opj_cparameters::prch_init, opj_tccp::prcw, opj_cparameters::prcw_init, opj_image_comp::prec, opj_poc::prg1, opj_cparameters::prog_order, opj_tccp::qmfbid, opj_tccp::qntsty, opj_cp::red_on, opj_cparameters::res_spec, opj_poc::resno0, opj_poc::resno1, opj_cparameters::roi_compno, opj_cparameters::roi_shift, opj_tccp::roishift, opj_cp::rsiz, opj_cparameters::rsiz, opj_cp::sens_addr, opj_cp::sens_MH, opj_cp::sens_range, opj_cp::sens_size, opj_cp::sens_TPH, opj_cp::sens_TPH_tileno, opj_image_comp::sgnd, tcp, opj_cparameters::tcp_distoratio, opj_cparameters::tcp_mct, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_poc::tile, opj_cparameters::tile_size_on, opj_cparameters::tp_flag, opj_cparameters::tp_on, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image_comp::w, opj_image::x1, and opj_image::y1.

    - -

    Referenced by opj_create_compress(), and opj_jp2_setup_encoder().

    - -
    -
    - -

    ◆ opj_j2k_setup_mct_encoding()

    - - - -

    ◆ opj_j2k_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_start_compress (opj_j2k_tp_j2k,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Starts a compression scheme, i.e.

    -

    validates the codec parameters, writes the header.

    -
    Parameters
    - - - - - -
    p_j2kthe jpeg2000 codec.
    p_streamthe stream object.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the codec is valid.
    - -

    References opj_image::comps, opj_image_comp::data, EVT_ERROR, opj_j2k::m_private_image, opj_j2k::m_procedure_list, opj_j2k::m_validation_list, opj_image::numcomps, opj_copy_image_header(), opj_event_msg(), OPJ_FALSE, opj_image_create0(), opj_j2k_exec(), opj_j2k_setup_encoding_validation(), opj_j2k_setup_header_writing(), and OPJ_TRUE.

    - -

    Referenced by opj_create_compress(), and opj_jp2_start_compress().

    - -
    -
    - -

    ◆ opj_j2k_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_j2k_write_tile (opj_j2k_tp_j2k,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Writes a tile.

    -
    Parameters
    - - - - - - - -
    p_j2kthe jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_tcd_tile::comps, EVT_ERROR, opj_tcd::image, opj_j2k::m_tcd, opj_image::numcomps, opj_alloc_tile_component_data(), opj_event_msg(), OPJ_FALSE, opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_tcd_copy_tile_data(), OPJ_TRUE, opj_tcd::tcd_image, and opj_tcd_image::tiles.

    - -

    Referenced by opj_create_compress(), and opj_jp2_write_tile().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/j2k_8h_source.html b/build/doc/html/j2k_8h_source.html deleted file mode 100644 index 23db35b55..000000000 --- a/build/doc/html/j2k_8h_source.html +++ /dev/null @@ -1,1413 +0,0 @@ - - - - - - - -OpenJPEG: j2k.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    j2k.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2006-2007, Parvatha Elangovan
    -
    15  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    16  * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    -
    17  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    18  *
    -
    19  * All rights reserved.
    -
    20  *
    -
    21  * Redistribution and use in source and binary forms, with or without
    -
    22  * modification, are permitted provided that the following conditions
    -
    23  * are met:
    -
    24  * 1. Redistributions of source code must retain the above copyright
    -
    25  * notice, this list of conditions and the following disclaimer.
    -
    26  * 2. Redistributions in binary form must reproduce the above copyright
    -
    27  * notice, this list of conditions and the following disclaimer in the
    -
    28  * documentation and/or other materials provided with the distribution.
    -
    29  *
    -
    30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    31  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    32  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    33  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    34  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    35  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    36  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    37  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    38  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    39  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    40  * POSSIBILITY OF SUCH DAMAGE.
    -
    41  */
    -
    42 #ifndef OPJ_J2K_H
    -
    43 #define OPJ_J2K_H
    -
    44 
    -
    53 
    -
    54 #define J2K_CP_CSTY_PRT 0x01
    -
    55 #define J2K_CP_CSTY_SOP 0x02
    -
    56 #define J2K_CP_CSTY_EPH 0x04
    -
    57 #define J2K_CCP_CSTY_PRT 0x01
    -
    58 #define J2K_CCP_CBLKSTY_LAZY 0x01
    -
    59 #define J2K_CCP_CBLKSTY_RESET 0x02
    -
    60 #define J2K_CCP_CBLKSTY_TERMALL 0x04
    -
    61 #define J2K_CCP_CBLKSTY_VSC 0x08
    -
    62 #define J2K_CCP_CBLKSTY_PTERM 0x10
    -
    63 #define J2K_CCP_CBLKSTY_SEGSYM 0x20
    -
    64 #define J2K_CCP_QNTSTY_NOQNT 0
    -
    65 #define J2K_CCP_QNTSTY_SIQNT 1
    -
    66 #define J2K_CCP_QNTSTY_SEQNT 2
    -
    67 
    -
    68 /* ----------------------------------------------------------------------- */
    -
    69 
    -
    70 #define J2K_MS_SOC 0xff4f
    -
    71 #define J2K_MS_SOT 0xff90
    -
    72 #define J2K_MS_SOD 0xff93
    -
    73 #define J2K_MS_EOC 0xffd9
    -
    74 #define J2K_MS_SIZ 0xff51
    -
    75 #define J2K_MS_COD 0xff52
    -
    76 #define J2K_MS_COC 0xff53
    -
    77 #define J2K_MS_RGN 0xff5e
    -
    78 #define J2K_MS_QCD 0xff5c
    -
    79 #define J2K_MS_QCC 0xff5d
    -
    80 #define J2K_MS_POC 0xff5f
    -
    81 #define J2K_MS_TLM 0xff55
    -
    82 #define J2K_MS_PLM 0xff57
    -
    83 #define J2K_MS_PLT 0xff58
    -
    84 #define J2K_MS_PPM 0xff60
    -
    85 #define J2K_MS_PPT 0xff61
    -
    86 #define J2K_MS_SOP 0xff91
    -
    87 #define J2K_MS_EPH 0xff92
    -
    88 #define J2K_MS_CRG 0xff63
    -
    89 #define J2K_MS_COM 0xff64
    -
    90 #define J2K_MS_CBD 0xff78
    -
    91 #define J2K_MS_MCC 0xff75
    -
    92 #define J2K_MS_MCT 0xff74
    -
    93 #define J2K_MS_MCO 0xff77
    -
    95 #define J2K_MS_UNK 0
    -
    97 /* UniPG>> */
    -
    98 #ifdef USE_JPWL
    -
    99 #define J2K_MS_EPC 0xff68
    -
    100 #define J2K_MS_EPB 0xff66
    -
    101 #define J2K_MS_ESD 0xff67
    -
    102 #define J2K_MS_RED 0xff69
    -
    103 #endif /* USE_JPWL */
    -
    104 #ifdef USE_JPSEC
    -
    105 #define J2K_MS_SEC 0xff65
    -
    106 #define J2K_MS_INSEC 0xff94
    -
    107 #endif /* USE_JPSEC */
    -
    108 /* <<UniPG */
    -
    109 
    -
    110 #define J2K_MAX_POCS 32
    -
    112 /* ----------------------------------------------------------------------- */
    -
    113 
    -
    118 typedef enum J2K_STATUS {
    -
    119  J2K_STATE_NONE = 0x0000,
    -
    120  J2K_STATE_MHSOC = 0x0001,
    -
    121  J2K_STATE_MHSIZ = 0x0002,
    -
    122  J2K_STATE_MH = 0x0004,
    -
    123  J2K_STATE_TPHSOT = 0x0008,
    -
    124  J2K_STATE_TPH = 0x0010,
    -
    125  J2K_STATE_MT = 0x0020,
    -
    126  J2K_STATE_NEOC = 0x0040,
    -
    127  J2K_STATE_DATA = 0x0080,
    -
    129  J2K_STATE_EOC = 0x0100,
    -
    130  J2K_STATE_ERR = 0x8000
    -
    131 } J2K_STATUS;
    -
    132 
    -
    136 typedef enum MCT_ELEMENT_TYPE {
    - - - - - -
    142 
    -
    146 typedef enum MCT_ARRAY_TYPE {
    - - - - -
    151 
    -
    152 /* ----------------------------------------------------------------------- */
    -
    153 
    -
    157 typedef enum T2_MODE {
    - - -
    160 } J2K_T2_MODE;
    -
    161 
    -
    165 typedef struct opj_stepsize {
    - - - -
    171 
    -
    175 typedef struct opj_tccp {
    - - - - - - - - - - - - - -
    202 }
    -
    203 opj_tccp_t;
    -
    204 
    -
    205 
    -
    206 
    -
    210 typedef struct opj_mct_data {
    - - - - - -
    216 }
    - -
    218 
    - - - - - - -
    228 }
    - -
    230 
    -
    231 typedef struct opj_ppx_struct {
    -
    232  OPJ_BYTE* m_data; /* m_data == NULL => Zppx not read yet */
    - -
    234 } opj_ppx;
    -
    235 
    -
    241 typedef struct opj_tcp {
    - - - - - - - - -
    257 
    - - -
    262 
    - - - - - - - - - - - - - - - - - - - -
    301 
    -
    302 
    -
    303  /***** FLAGS *******/
    - - - -
    310 } opj_tcp_t;
    -
    311 
    -
    312 
    -
    313 
    -
    314 
    -
    315 typedef struct opj_encoding_param {
    - - - - - - - - -
    332 }
    - -
    334 
    -
    335 typedef struct opj_decoding_param {
    - - -
    340 }
    - -
    342 
    -
    343 
    -
    347 typedef struct opj_cp {
    -
    349  /*int img_size;*/
    - -
    353  OPJ_UINT32 tx0; /* MSD see norm */
    -
    355  OPJ_UINT32 ty0; /* MSD see norm */
    - - - - - -
    366 
    - - -
    371 
    - - - -
    378 
    - -
    380 
    - - - - - -
    391 
    - -
    394 
    -
    395  union {
    - - -
    398  }
    - -
    400 
    -
    401 
    -
    402  /* UniPG>> */
    -
    403 #ifdef USE_JPWL
    -
    404 
    - - - - - -
    415  int hprot_MH;
    - - - - - - - - -
    433  int sens_MH;
    - - - - - -
    444 #endif /* USE_JPWL */
    -
    445 
    -
    446  /******** FLAGS *********/
    - - - -
    453  /* <<UniPG */
    -
    454 } opj_cp_t;
    -
    455 
    -
    456 
    -
    457 typedef struct opj_j2k_dec {
    - - - - - - - - - -
    473 
    - - -
    478 
    - -
    485 
    - - -
    488 
    - - - - - -
    496 
    -
    497 } opj_j2k_dec_t;
    -
    498 
    -
    499 typedef struct opj_j2k_enc {
    - -
    502 
    - -
    505 
    - - - -
    519 
    - -
    523 
    -
    524  /* encoded data for a tile */
    - -
    526 
    -
    527  /* size of the encoded_data */
    - -
    529 
    -
    530  /* encoded data for a tile */
    - -
    532 
    -
    533  /* size of the encoded_data */
    -
    534 
    - -
    536 
    -
    537  /* whether to generate PLT markers */
    - -
    539 
    -
    540  /* reserved bytes in m_encoded_tile_size for PLT markers */
    - -
    542 
    -
    543 } opj_j2k_enc_t;
    -
    544 
    -
    545 
    -
    546 
    -
    547 struct opj_tcd;
    -
    551 typedef struct opj_j2k {
    -
    552  /* J2K codestream is decoded*/
    - -
    554 
    -
    555  /* FIXME DOC*/
    -
    556  union {
    - - -
    559  }
    - -
    561 
    - -
    564 
    -
    565  /* pointer to the output image (decoded)*/
    - -
    567 
    - -
    570 
    - -
    573 
    - -
    576 
    - -
    579 
    - -
    582 
    -
    584  struct opj_tcd * m_tcd;
    -
    585 
    - -
    588 
    - -
    591 
    - -
    594 
    -
    596  unsigned int dump_state;
    -
    597 }
    -
    598 opj_j2k_t;
    -
    599 
    -
    600 
    -
    601 
    -
    602 
    -
    605 /* ----------------------------------------------------------------------- */
    -
    606 
    -
    613 void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters);
    -
    614 
    - -
    616 
    - -
    623 
    -
    624 
    - -
    626  opj_cparameters_t *parameters,
    - -
    628  opj_event_mgr_t * p_manager);
    -
    629 
    - -
    634 
    -
    635 /* ----------------------------------------------------------------------- */
    -
    639 
    - -
    645  opj_stream_private_t *p_stream,
    -
    646  opj_event_mgr_t * p_manager);
    -
    647 
    - -
    659  opj_j2k_t* p_j2k,
    -
    660  opj_image_t** p_image,
    -
    661  opj_event_mgr_t* p_manager);
    -
    662 
    -
    663 
    -
    669 void opj_j2k_destroy(opj_j2k_t *p_j2k);
    -
    670 
    - -
    677 
    - -
    688  OPJ_UINT32 p_tile_index,
    -
    689  OPJ_BYTE * p_data,
    -
    690  OPJ_UINT32 p_data_size,
    -
    691  opj_stream_private_t *p_stream,
    -
    692  opj_event_mgr_t * p_manager);
    -
    693 
    - -
    709  OPJ_UINT32 * p_tile_index,
    -
    710  OPJ_UINT32 * p_data_size,
    -
    711  OPJ_INT32 * p_tile_x0,
    -
    712  OPJ_INT32 * p_tile_y0,
    -
    713  OPJ_INT32 * p_tile_x1,
    -
    714  OPJ_INT32 * p_tile_y1,
    -
    715  OPJ_UINT32 * p_nb_comps,
    -
    716  OPJ_BOOL * p_go_on,
    -
    717  opj_stream_private_t *p_stream,
    -
    718  opj_event_mgr_t * p_manager);
    -
    719 
    -
    720 
    - -
    732  OPJ_UINT32 numcomps,
    -
    733  const OPJ_UINT32* comps_indices,
    -
    734  opj_event_mgr_t * p_manager);
    -
    735 
    - -
    750  opj_image_t* p_image,
    -
    751  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    -
    752  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
    -
    753  opj_event_mgr_t * p_manager);
    -
    754 
    - -
    761 
    -
    762 
    -
    771 void j2k_dump(opj_j2k_t* p_j2k, OPJ_INT32 flag, FILE* out_stream);
    -
    772 
    -
    773 
    -
    774 
    -
    782 void j2k_dump_image_header(opj_image_t* image, OPJ_BOOL dev_dump_flag,
    -
    783  FILE* out_stream);
    -
    784 
    -
    792 void j2k_dump_image_comp_header(opj_image_comp_t* comp, OPJ_BOOL dev_dump_flag,
    -
    793  FILE* out_stream);
    -
    794 
    - -
    803 
    - -
    812 
    - -
    822  opj_stream_private_t *p_stream,
    -
    823  opj_image_t *p_image,
    -
    824  opj_event_mgr_t *p_manager);
    -
    825 
    -
    826 
    - -
    828  opj_stream_private_t *p_stream,
    -
    829  opj_image_t* p_image,
    -
    830  opj_event_mgr_t * p_manager,
    -
    831  OPJ_UINT32 tile_index);
    -
    832 
    - -
    834  OPJ_UINT32 res_factor,
    -
    835  opj_event_mgr_t * p_manager);
    -
    836 
    - -
    847  opj_j2k_t *p_j2k,
    -
    848  const char* const* p_options,
    -
    849  opj_event_mgr_t * p_manager);
    -
    850 
    - -
    861  OPJ_UINT32 p_tile_index,
    -
    862  OPJ_BYTE * p_data,
    -
    863  OPJ_UINT32 p_data_size,
    -
    864  opj_stream_private_t *p_stream,
    -
    865  opj_event_mgr_t * p_manager);
    -
    866 
    - - -
    872  opj_event_mgr_t * p_manager);
    -
    873 
    - -
    885  opj_stream_private_t *p_stream,
    -
    886  opj_image_t * p_image,
    -
    887  opj_event_mgr_t * p_manager);
    -
    888 
    - - -
    895  opj_event_mgr_t * p_manager);
    -
    896 
    - -
    898 
    -
    899 
    -
    900 #endif /* OPJ_J2K_H */
    -
    -
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    -
    static void opj_j2k_dump_MH_info(opj_j2k_t *p_j2k, FILE *out_stream)
    Definition: j2k.c:11147
    -
    opj_procedure_list_t * m_procedure_list
    the list of procedures to exec
    Definition: j2k.h:572
    -
    OPJ_UINT32 cblkw
    log2 of code-blocks width
    Definition: openjpeg.h:908
    -
    #define opj_read_double
    Definition: cio.h:67
    -
    static OPJ_BOOL opj_j2k_read_cbd(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a CBD marker (Component bit depth definition)
    Definition: j2k.c:6517
    -
    OPJ_UINT32 * m_comps_indices_to_decode
    Definition: j2k.h:487
    -
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    -
    OPJ_BOOL ownsData
    Definition: tcd.h:206
    -
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    OPJ_BITFIELD m_fixed_quality
    add fixed_quality
    Definition: j2k.h:329
    -
    static void opj_j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1600
    -
    void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    static OPJ_BOOL opj_j2k_update_image_data(opj_tcd_t *p_tcd, opj_image_t *p_output_image)
    Definition: j2k.c:9765
    -
    static OPJ_BOOL opj_j2k_write_mct_record(opj_j2k_t *p_j2k, opj_mct_data_t *p_mct_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCT marker (Multiple Component Transform)
    Definition: j2k.c:5669
    -
    OPJ_BOOL jpwl_correct
    activates the JPWL correction capabilities
    Definition: openjpeg.h:596
    -
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER
    Definition: opj_common.h:44
    -
    OPJ_BYTE * m_header_data
    Definition: j2k.h:464
    -
    opj_j2k_dec_t m_decoder
    Definition: j2k.h:557
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    static OPJ_BOOL opj_j2k_write_qcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the QCD marker (quantization default)
    Definition: j2k.c:2964
    -
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    -
    OPJ_FLOAT32 * m_mct_coding_matrix
    the mct coding matrix
    Definition: j2k.h:288
    -
    static OPJ_UINT32 opj_j2k_get_max_toc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the toc headers of all the tile parts of any given tile.
    Definition: j2k.c:3416
    -
    int hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: j2k.h:415
    -
    OPJ_PROG_ORDER prg
    progression order
    Definition: j2k.h:245
    -
    OPJ_BYTE * m_data
    Definition: j2k.h:232
    -
    OPJ_BITFIELD m_fixed_alloc
    allocation by fixed layer
    Definition: j2k.h:327
    -
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    -
    OPJ_UINT32 cur_pino
    Current Packet iterator number.
    Definition: tcd.h:261
    -
    #define OPJ_EXTENSION_NONE
    JPEG 2000 Part-2 extensions.
    Definition: openjpeg.h:216
    -
    float tcp_rates[100]
    rates of layers - might be subsequently limited by the max_cs_size field.
    Definition: openjpeg.h:421
    -
    OPJ_UINT32 m_index
    Definition: j2k.h:213
    -
    opj_image_t * image
    image header
    Definition: tcd.h:265
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    OPJ_UINT32 m_data_size
    Definition: j2k.h:215
    -
    opj_poc_t pocs[J2K_MAX_POCS]
    progression order changes
    Definition: j2k.h:256
    -
    OPJ_UINT32 nb_of_tiles
    Definition: openjpeg.h:1050
    -
    void opj_dwt_calc_explicit_stepsizes(opj_tccp_t *tccp, OPJ_UINT32 prec)
    Explicit calculation of the Quantization Stepsizes.
    Definition: dwt.c:1280
    -
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    -
    OPJ_BYTE m_tp_flag
    Flag determining tile part generation.
    Definition: j2k.h:323
    -
    static OPJ_BOOL opj_j2k_read_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Reads a SPCod or SPCoc element, i.e.
    Definition: j2k.c:10484
    -
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    -
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    -
    OPJ_CHAR * comment
    comment
    Definition: j2k.h:361
    -
    OPJ_UINT32 states
    value of the state when the marker can appear
    Definition: j2k.c:1367
    -
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: j2k.h:195
    -
    static OPJ_BOOL opj_j2k_check_poc_val(const opj_poc_t *p_pocs, OPJ_UINT32 tileno, OPJ_UINT32 p_nb_pocs, OPJ_UINT32 p_nb_resolutions, OPJ_UINT32 numcomps, OPJ_UINT32 numlayers, opj_event_mgr_t *p_manager)
    Checks the progression order changes values.
    Definition: j2k.c:1628
    -
    static OPJ_BOOL opj_j2k_write_first_tile_part(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
    Definition: j2k.c:12559
    -
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    -
    #define OPJ_PROFILE_IMF_2K
    Definition: openjpeg.h:206
    -
    #define J2K_MAX_POCS
    Maximum number of POCs.
    Definition: j2k.h:110
    -
    static OPJ_BOOL opj_j2k_write_mcc_record(opj_j2k_t *p_j2k, opj_simple_mcc_decorrelation_data_t *p_mcc_record, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCC marker (Multiple Component Collection)
    Definition: j2k.c:5876
    -
    static OPJ_BOOL opj_j2k_write_mco(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the MCO marker (Multiple component transformation ordering)
    Definition: j2k.c:6224
    -
    opj_mct_data_t * m_offset_array
    Definition: j2k.h:226
    -
    #define J2K_MS_ESD
    ESD marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:101
    -
    OPJ_OFF_T main_head_start
    main header start position (SOC position)
    Definition: openjpeg.h:1033
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    -
    OPJ_BYTE * m_encoded_tile_data
    Definition: j2k.h:525
    -
    #define OPJ_PROFILE_IMF_4K
    Definition: openjpeg.h:207
    -
    struct opj_tcd * m_tcd
    the current tile coder/decoder
    Definition: j2k.h:584
    -
    opj_cp_t m_cp
    Coding parameters.
    Definition: j2k.h:569
    -
    static OPJ_BOOL opj_j2k_write_rgn(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_UINT32 nb_comps, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the RGN marker (Region Of Interest)
    Definition: j2k.c:5003
    -
    struct opj_j2k opj_j2k_t
    JPEG-2000 codestream reader/writer.
    -
    #define opj_write_double
    Definition: cio.h:66
    -
    static OPJ_BOOL opj_j2k_write_siz(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SIZ marker (image and tile size)
    Definition: j2k.c:1934
    -
    static void opj_j2k_update_tlm(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_part_size)
    Updates the Tile Length Marker.
    Definition: j2k.c:911
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    -
    OPJ_BITFIELD m_can_decode
    to tell that a tile can be decoded.
    Definition: j2k.h:490
    -
    OPJ_INT32 x0
    Definition: tcd.h:173
    -
    static OPJ_FLOAT32 opj_j2k_get_tp_stride(opj_tcp_t *p_tcp)
    Definition: j2k.c:5181
    -
    static OPJ_BOOL opj_j2k_create_tcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Creates a tile-coder encoder.
    Definition: j2k.c:12921
    -
    #define J2K_MS_PLT
    PLT marker value.
    Definition: j2k.h:83
    -
    static OPJ_BOOL opj_j2k_exec(opj_j2k_t *p_j2k, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Excutes the given procedures on the given codec.
    Definition: j2k.c:8837
    -
    static OPJ_BOOL opj_j2k_write_all_qcc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes QCC marker for each component.
    Definition: j2k.c:5514
    -
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    -
    @ OPJ_CINEMA2K_48
    2K Digital Cinema at 24 fps
    Definition: openjpeg.h:290
    -
    static OPJ_BOOL opj_j2k_setup_decoding_validation(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:8325
    -
    unsigned int dump_state
    Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set.
    Definition: j2k.h:596
    -
    int cp_tx0
    XTOsiz.
    Definition: openjpeg.h:391
    -
    OPJ_INT32 y1
    Definition: tcd.h:173
    -
    JPEG-2000 codestream reader/writer.
    Definition: j2k.h:551
    -
    #define OPJ_DPARAMETERS_DUMP_FLAG
    Definition: openjpeg.h:541
    -
    static OPJ_BOOL opj_j2k_read_qcd(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a QCD marker (Quantization defaults)
    Definition: j2k.c:3032
    -
    static void opj_j2k_copy_tile_quantization_parameters(opj_j2k_t *p_j2k)
    Copies the tile quantization parameters of all the component from the first tile component.
    Definition: j2k.c:10942
    -
    J2K_MCT_ARRAY_TYPE m_array_type
    Definition: j2k.h:212
    -
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    -
    OPJ_INT32 x1
    Definition: tcd.h:173
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    J2K_STATUS
    Values that specify the status of the decoding process when decoding the main header.
    Definition: j2k.h:118
    -
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    -
    int tcp_numlayers
    number of layers
    Definition: openjpeg.h:417
    -
    #define OPJ_PROFILE_NONE
    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing t...
    Definition: openjpeg.h:194
    -
    static OPJ_BOOL opj_j2k_write_cbd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the CBD marker (Component bit depth definition)
    Definition: j2k.c:6448
    -
    static OPJ_BOOL opj_j2k_write_plt_in_memory(opj_j2k_t *p_j2k, opj_tcd_marker_info_t *marker_info, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Write one or more PLT markers in the provided buffer.
    Definition: j2k.c:4638
    -
    OPJ_UINT32 max_tiles
    maximum number of tiles at the decoder
    Definition: j2k.h:443
    -
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    -
    OPJ_INT32 m_tp_pos
    Position of tile part flag in progression order.
    Definition: j2k.h:319
    -
    OPJ_BITFIELD m_is_irreversible
    Definition: j2k.h:227
    -
    OPJ_UINT32 qntsty
    quantisation style
    Definition: openjpeg.h:916
    -
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    -
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    static OPJ_BOOL opj_j2k_read_coc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COC marker (Coding Style Component)
    Definition: j2k.c:2905
    -
    OPJ_UINT32 current_nb_tps
    current nb of tile part (allocated)
    Definition: openjpeg.h:1006
    -
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    -
    OPJ_UINT32 m_sot_length
    to tell the tile part length
    Definition: j2k.h:467
    -
    static OPJ_UINT32 opj_j2k_get_max_coc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by a coc.
    Definition: j2k.c:2877
    -
    OPJ_OFF_T end_pos
    end position
    Definition: openjpeg.h:992
    -
    int subsampling_dy
    subsampling value for dy
    Definition: openjpeg.h:463
    -
    static OPJ_BOOL opj_j2k_read_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 compno, OPJ_BYTE *p_header_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Reads a SQcd or SQcc element, i.e.
    Definition: j2k.c:10823
    -
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    -
    float tcp_distoratio[100]
    different psnr for successive layers.
    Definition: openjpeg.h:424
    -
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    -
    @ J2K_STATE_MT
    the EOC marker has just been read
    Definition: j2k.h:125
    -
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    -
    #define OPJ_CINEMA_48_COMP
    Definition: openjpeg.h:264
    -
    #define OPJ_J2K_TH_INFO
    Tile information based on the current tile header.
    Definition: openjpeg.h:172
    -
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    -
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    -
    int pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: j2k.h:421
    -
    @ THRESH_CALC
    Definition: j2k.h:158
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    #define OPJ_PROFILE_CINEMA_S4K
    Definition: openjpeg.h:201
    -
    OPJ_UINT32 ppm_len
    size of the ppm_data
    Definition: j2k.h:375
    -
    #define OPJ_J2K_TCH_INFO
    Tile/Component information of all tiles.
    Definition: openjpeg.h:173
    -
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    -
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    -
    @ J2K_STATE_MHSOC
    a SOC marker is expected
    Definition: j2k.h:120
    -
    static OPJ_BOOL opj_j2k_compare_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compare 2 a SPCod/ SPCoc elements, i.e.
    Definition: j2k.c:10368
    -
    static const j2k_prog_order_t j2k_prog_order_list[]
    Definition: j2k.c:1320
    -
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    -
    static OPJ_BOOL opj_j2k_move_data_from_codec_to_output_image(opj_j2k_t *p_j2k, opj_image_t *p_image)
    Definition: j2k.c:11736
    -
    union opj_j2k::@1 m_specific_param
    -
    static OPJ_BOOL opj_j2k_setup_header_reading(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header.
    Definition: j2k.c:8304
    -
    int cblockh_init
    initial code block height, default to 64
    Definition: openjpeg.h:430
    -
    static const opj_j2k_mct_function j2k_mct_read_functions_to_float[]
    Definition: j2k.c:1342
    -
    #define OPJ_GET_IMF_SUBLEVEL(v)
    Definition: openjpeg.h:230
    -
    static OPJ_BOOL opj_j2k_write_sod(opj_j2k_t *p_j2k, opj_tcd_t *p_tile_coder, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOD marker (Start of data)
    Definition: j2k.c:4722
    -
    static OPJ_BOOL opj_j2k_write_tlm(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the TLM marker (Tile Length Marker)
    Definition: j2k.c:4166
    -
    OPJ_BITFIELD ppt
    If ppt == 1 --> there was a PPT marker for the present tile.
    Definition: j2k.h:307
    -
    OPJ_BYTE * m_tlm_sot_offsets_buffer
    Stores the sizes of the tlm.
    Definition: j2k.h:514
    -
    static OPJ_UINT32 opj_j2k_get_max_qcc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by a qcc.
    Definition: j2k.c:3162
    -
    static OPJ_BOOL opj_j2k_read_ppt(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PPT marker (Packed packet headers, tile-part header)
    Definition: j2k.c:4028
    -
    #define OPJ_PROFILE_CINEMA_4K
    Definition: openjpeg.h:199
    -
    #define J2K_MS_PPT
    PPT marker value.
    Definition: j2k.h:85
    -
    int sens_MH
    sensitivity method for MH (-1,0-7)
    Definition: j2k.h:433
    -
    @ OPJ_CINEMA4K
    Profile name for a 2K image.
    Definition: openjpeg.h:279
    -
    OPJ_UINT16 rsiz
    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.
    Definition: openjpeg.h:537
    -
    static OPJ_BOOL opj_j2k_read_qcc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a QCC marker (Quantization component)
    Definition: j2k.c:3174
    -
    static OPJ_BOOL opj_j2k_write_SPCod_SPCoc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Writes a SPCod or SPCoc element, i.e.
    Definition: j2k.c:10415
    -
    OPJ_BOOL info_on
    enables writing of informative techniques of ESD, in case of activated JPWL
    Definition: j2k.h:411
    -
    #define OPJ_J2K_DEFAULT_HEADER_SIZE
    Definition: openjpeg.h:151
    -
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1018
    -
    #define J2K_MS_COC
    COC marker value.
    Definition: j2k.h:76
    -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    -
    OPJ_BYTE * ppm_buffer
    packet header storage original buffer
    Definition: j2k.h:382
    -
    OPJ_UINT32 m_nb_mcc_records
    the number of mct records.
    Definition: j2k.h:298
    -
    OPJ_UINT32 ihdr_h
    Image height coming from JP2 IHDR box.
    Definition: j2k.h:593
    -
    OPJ_BYTE * m_data
    Definition: j2k.h:214
    -
    OPJ_UINT32 m_index
    Definition: j2k.h:223
    -
    static OPJ_BOOL opj_j2k_add_mct(opj_tcp_t *p_tcp, opj_image_t *p_image, OPJ_UINT32 p_index)
    Definition: j2k.c:6361
    -
    int res_spec
    Definition: openjpeg.h:440
    -
    OPJ_UINT32 m_end_tile_x
    Definition: j2k.h:471
    -
    @ OPJ_CINEMA2K
    Standard JPEG2000 profile.
    Definition: openjpeg.h:278
    -
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    -
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    -
    int cp_fixed_quality
    add fixed_quality
    Definition: openjpeg.h:403
    -
    #define J2K_MS_SEC
    SEC marker value (Part 8: Secure JPEG 2000)
    Definition: j2k.h:105
    -
    static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a SIZ marker (image and tile size)
    Definition: j2k.c:2040
    -
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    static void opj_j2k_copy_tile_component_parameters(opj_j2k_t *p_j2k)
    Copies the tile component parameters of all the component from the first tile component.
    Definition: j2k.c:10635
    -
    static OPJ_BOOL opj_j2k_read_sot(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a SOT marker (Start of tile-part)
    Definition: j2k.c:4316
    -
    @ tcp
    Definition: query_parser.h:41
    -
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    -
    static OPJ_BOOL opj_j2k_read_plt(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PLT marker (Packet length, tile-part header)
    Definition: j2k.c:3756
    -
    OPJ_BOOL m_last_tile_part
    Indicate that the current tile-part is assume as the last tile part of the codestream.
    Definition: j2k.h:484
    -
    OPJ_BYTE * ppt_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:264
    -
    static OPJ_BOOL opj_j2k_is_imf_compliant(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7053
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    #define J2K_MS_SOP
    SOP marker value.
    Definition: j2k.h:86
    -
    OPJ_BITFIELD ppm
    if ppm == 1 --> there was a PPM marker
    Definition: j2k.h:448
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    OPJ_BOOL red_on
    enables writing of RED, in case of activated JPWL
    Definition: j2k.h:413
    -
    int exp_comps
    expected number of components at the decoder
    Definition: j2k.h:441
    -
    #define J2K_MS_INSEC
    INSEC marker value (Part 8: Secure JPEG 2000)
    Definition: j2k.h:106
    -
    int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: openjpeg.h:496
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    OPJ_FLOAT32 rates[100]
    rates of layers
    Definition: j2k.h:252
    -
    OPJ_INT32 x1
    Definition: tcd.h:191
    -
    @ MCT_TYPE_DEPENDENCY
    Definition: j2k.h:147
    -
    Message handler object used for.
    Definition: event.h:50
    -
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS
    Definition: openjpeg.h:152
    -
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    -
    opj_tccp_info_t * tccp_info
    information concerning tile component parameters
    Definition: openjpeg.h:949
    -
    void j2k_dump_image_comp_header(opj_image_comp_t *comp_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump a component image header structure.
    Definition: j2k.c:11192
    -
    static const opj_j2k_mct_function j2k_mct_write_functions_from_float[]
    Definition: j2k.c:1356
    -
    #define J2K_CCP_QNTSTY_SEQNT
    Definition: j2k.h:66
    -
    @ OPJ_STD_RSIZ
    Definition: openjpeg.h:277
    -
    OPJ_UINT32 cp_layer
    Set the maximum number of quality layers to decode.
    Definition: openjpeg.h:561
    -
    enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
    Type of MCT array.
    -
    OPJ_BITFIELD m_nb_tile_parts_correction
    Definition: j2k.h:495
    -
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    -
    opj_packet_info_t * packet_index
    information concerning packets inside tile
    Definition: openjpeg.h:1024
    -
    #define OPJ_IS_BROADCAST(v)
    Definition: openjpeg.h:224
    -
    int sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1,0-7)
    Definition: j2k.h:437
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_BITFIELD allow_different_bit_depth_sign
    whether different bit depth or sign per component is allowed.
    Definition: j2k.h:452
    -
    OPJ_INT32 m_dc_level_shift
    the dc_level_shift
    Definition: j2k.h:201
    -
    char * cp_comment
    comment for coding
    Definition: openjpeg.h:407
    -
    OPJ_BYTE * ppm_data_first
    pointer remaining on the first byte of the first header if ppm is used
    Definition: j2k.h:384
    -
    char str_prog[5]
    Definition: j2k.c:1317
    -
    OPJ_UINT32 cur_tp_num
    Current tile part number.
    Definition: tcd.h:257
    -
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    -
    int jpwl_sens_size
    enables writing of ESD, (0=no/1/2 bytes)
    Definition: openjpeg.h:488
    -
    static OPJ_BOOL opj_j2k_setup_header_writing(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header.
    Definition: j2k.c:12468
    -
    OPJ_PROG_ORDER prog_order
    progression order (default OPJ_LRCP)
    Definition: openjpeg.h:411
    -
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    -
    OPJ_UINT32 m_max_comp_size
    Maximum rate for each component.
    Definition: j2k.h:317
    -
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    -
    static void opj_j2k_dump_tile_info(opj_tcp_t *l_default_tile, OPJ_INT32 numcomps, FILE *out_stream)
    Definition: j2k.c:10971
    -
    static OPJ_BOOL opj_j2k_setup_end_compress(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:12408
    -
    static void opj_j2k_set_imf_parameters(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6964
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    static OPJ_BOOL opj_j2k_write_eoc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the EOC marker (End of Codestream)
    Definition: j2k.c:5066
    -
    static OPJ_BOOL opj_j2k_read_cod(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COD marker (Coding style defaults)
    Definition: j2k.c:2628
    -
    opj_procedure_list_t * m_validation_list
    the list of validation procedures to follow to make sure the code is valid
    Definition: j2k.h:575
    -
    OPJ_UINT32 m_layer
    if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers ...
    Definition: j2k.h:339
    -
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    -
    OPJ_OFF_T main_head_end
    main header end position (first SOT position)
    Definition: openjpeg.h:1035
    -
    static void opj_j2k_write_poc_in_memory(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the POC marker (Progression Order Change)
    Definition: j2k.c:3309
    -
    #define J2K_MS_EPC
    EPC marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:99
    -
    OPJ_UINT32 ppm_data_read
    size of the ppm_data
    Definition: j2k.h:377
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    OPJ_UINT32 m_nb_max_mct_records
    the max number of mct records.
    Definition: j2k.h:294
    -
    static void opj_j2k_get_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_data)
    Definition: j2k.c:12275
    -
    int pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: j2k.h:423
    -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW
    Definition: opj_common.h:42
    -
    #define OPJ_J2K_MAXBANDS
    Number of maximum sub-band linked to number of resolution level.
    Definition: openjpeg.h:147
    -
    OPJ_OFF_T end_header
    end position of the header
    Definition: openjpeg.h:990
    -
    int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: openjpeg.h:482
    -
    static void opj_j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1413
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible
    Definition: openjpeg.h:914
    -
    @ MCT_TYPE_DOUBLE
    MCT data is stored as floats.
    Definition: j2k.h:140
    -
    OPJ_UINT32 m_nb_max_mcc_records
    the max number of mct records.
    Definition: j2k.h:300
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    Coding parameters.
    Definition: j2k.h:347
    -
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    -
    OPJ_UINT32 nb_packet
    packet number
    Definition: openjpeg.h:1022
    -
    OPJ_INT32 x0
    Definition: tcd.h:191
    -
    #define OPJ_CINEMA_24_COMP
    Definition: openjpeg.h:263
    -
    Index structure about a tile.
    Definition: openjpeg.h:999
    -
    @ J2K_STATE_MH
    the decoding process is in the main header
    Definition: j2k.h:122
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: openjpeg.h:912
    -
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    -
    OPJ_BITFIELD m_discard_tiles
    Definition: j2k.h:491
    -
    int numresolution
    number of resolutions
    Definition: openjpeg.h:426
    -
    static OPJ_BOOL opj_j2k_setup_decoding(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on decoding data.
    Definition: j2k.c:11588
    -
    OPJ_UINT32 m_nb_comps
    Definition: j2k.h:224
    -
    OPJ_OFF_T m_tlm_start
    locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is...
    Definition: j2k.h:510
    -
    int jpwl_exp_comps
    expected number of components
    Definition: openjpeg.h:598
    -
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:243
    -
    Compression parameters.
    Definition: openjpeg.h:387
    -
    OPJ_UINT32 m_current_tile_number
    number of the tile currently concern by coding/decoding
    Definition: j2k.h:581
    -
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    -
    #define OPJ_PROFILE_IMF_2K_R
    Definition: openjpeg.h:209
    -
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    -
    OPJ_UINT32 m_start_tile_y
    Definition: j2k.h:470
    -
    static OPJ_BOOL opj_j2k_write_coc(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COC marker (Coding style component)
    Definition: j2k.c:2755
    -
    OPJ_PROG_ORDER prg
    progression order
    Definition: openjpeg.h:942
    -
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    -
    void j2k_dump_image_comp_header(opj_image_comp_t *comp, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump a component image header structure.
    Definition: j2k.c:11192
    -
    #define J2K_MS_PPM
    PPM marker value.
    Definition: j2k.h:84
    -
    static const opj_j2k_mct_function j2k_mct_read_functions_to_int32[]
    Definition: j2k.c:1349
    -
    static OPJ_BOOL opj_j2k_read_poc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a POC marker (Progression Order Change)
    Definition: j2k.c:3489
    -
    struct opj_simple_mcc_decorrelation_data opj_simple_mcc_decorrelation_data_t
    FIXME DOC.
    -
    @ OPJ_CINEMA2K_24
    Not Digital Cinema.
    Definition: openjpeg.h:289
    -
    opj_image_t * m_output_image
    Definition: j2k.h:566
    -
    OPJ_BOOL esd_on
    enables writing of ESD, in case of activated JPWL
    Definition: j2k.h:409
    -
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    -
    int cp_tdx
    XTsiz.
    Definition: openjpeg.h:395
    -
    static OPJ_BOOL opj_j2k_write_poc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the POC marker (Progression Order Change)
    Definition: j2k.c:3254
    -
    OPJ_INT32 x1
    Definition: tcd.h:230
    -
    Quantization stepsize.
    Definition: j2k.h:165
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1016
    -
    OPJ_UINT32 m_total_tile_parts
    Total num of tile parts in whole image = num tiles* num tileparts in each tile.
    Definition: j2k.h:522
    -
    int hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: j2k.h:417
    -
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    -
    OPJ_INT32 ppm_store
    use in case of multiple marker PPM (number of info already store)
    Definition: j2k.h:388
    -
    int irreversible
    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
    Definition: openjpeg.h:434
    -
    #define OPJ_IS_STORAGE(v)
    Definition: openjpeg.h:223
    -
    OPJ_UINT32 ihdr_w
    Image width coming from JP2 IHDR box.
    Definition: j2k.h:590
    -
    static void opj_j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1515
    -
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    -
    static OPJ_BOOL opj_j2k_merge_ppm(opj_cp_t *p_cp, opj_event_mgr_t *p_manager)
    Merges all PPM markers read (Packed headers, main header)
    Definition: j2k.c:3888
    -
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    -
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    -
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    -
    static OPJ_UINT32 opj_j2k_get_specific_header_sizes(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the headers of the SOT.
    Definition: j2k.c:3435
    -
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    -
    OPJ_BOOL m_is_decoder
    Definition: j2k.h:553
    -
    Definition: j2k.h:231
    -
    #define J2K_MS_TLM
    TLM marker value.
    Definition: j2k.h:81
    -
    OPJ_UINT32 ppm_markers_count
    number of ppm markers (reserved size)
    Definition: j2k.h:368
    -
    struct opj_j2k_dec opj_j2k_dec_t
    -
    OPJ_FLOAT32 * m_mct_decoding_matrix
    the mct decoding matrix
    Definition: j2k.h:286
    -
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    -
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    -
    static OPJ_BOOL opj_j2k_are_all_used_components_decoded(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11431
    -
    #define J2K_MS_RED
    RED marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:102
    -
    OPJ_BOOL opj_matrix_inversion_f(OPJ_FLOAT32 *pSrcMatrix, OPJ_FLOAT32 *pDestMatrix, OPJ_UINT32 nb_compo)
    Matrix inversion.
    Definition: invert.c:70
    -
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    -
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    -
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    -
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: openjpeg.h:926
    -
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    -
    static OPJ_BOOL opj_j2k_decoding_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The default decoding validation procedure without any extension.
    Definition: j2k.c:8619
    -
    #define OPJ_IMG_INFO
    EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump.
    Definition: openjpeg.h:170
    -
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    -
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    -
    int cp_ty0
    YTOsiz.
    Definition: openjpeg.h:393
    -
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    -
    OPJ_CINEMA_MODE cp_cinema
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not complia...
    Definition: openjpeg.h:506
    -
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    -
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1046
    -
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: openjpeg.h:922
    -
    static OPJ_BOOL opj_j2k_encoding_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The default encoding validation procedure without any extension.
    Definition: j2k.c:8568
    -
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    -
    static OPJ_BOOL opj_j2k_read_unk(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, OPJ_UINT32 *output_marker, opj_event_mgr_t *p_manager)
    Reads an unknown marker.
    Definition: j2k.c:5606
    -
    T2_MODE
    T2 encoding mode.
    Definition: j2k.h:157
    -
    static OPJ_BOOL opj_j2k_get_end_header(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Gets the offset of the header.
    Definition: j2k.c:5426
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    @ MCT_TYPE_OFFSET
    Definition: j2k.h:149
    -
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1042
    -
    int sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: j2k.h:435
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    OPJ_UINT32 cp_reduce
    Set the number of highest resolution levels to be discarded.
    Definition: openjpeg.h:554
    -
    #define J2K_MS_QCC
    QCC marker value.
    Definition: j2k.h:79
    -
    OPJ_UINT32 ppm_data_size
    Number of bytes actually stored inside the ppm_data.
    Definition: j2k.h:386
    -
    OPJ_UINT32 ty0
    tile origin in y = YTOsiz
    Definition: openjpeg.h:961
    -
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    -
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    unsigned int flags
    Definition: openjpeg.h:604
    -
    static OPJ_BOOL opj_j2k_decode_one_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11607
    -
    #define OPJ_J2K_MH_INFO
    Codestream information based only on the main header.
    Definition: openjpeg.h:171
    -
    #define J2K_MS_SIZ
    SIZ marker value.
    Definition: j2k.h:74
    -
    static OPJ_BOOL opj_j2k_read_header_procedure(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The read header procedure.
    Definition: j2k.c:8652
    -
    OPJ_BOOL(* handler)(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    action linked to the marker
    Definition: j2k.c:1369
    -
    static OPJ_BOOL opj_j2k_write_mct_data_group(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
    Definition: j2k.c:5442
    -
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    -
    #define OPJ_GET_IMF_MAINLEVEL(v)
    Definition: openjpeg.h:229
    -
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:904
    -
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    -
    static void opj_j2k_tcp_destroy(opj_tcp_t *p_tcp)
    Destroys a tile coding parameter structure.
    Definition: j2k.c:9139
    -
    OPJ_BYTE * m_header_tile_data
    Definition: j2k.h:531
    - -
    #define J2K_MS_SOT
    SOT marker value.
    Definition: j2k.h:71
    -
    struct opj_cp opj_cp_t
    Coding parameters.
    -
    static void opj_j2k_write_coc_in_memory(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the COC marker (Coding style component)
    Definition: j2k.c:2827
    -
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    -
    @ MCT_TYPE_INT16
    Definition: j2k.h:137
    -
    static OPJ_BOOL opj_j2k_setup_encoding_validation(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: j2k.c:12443
    -
    OPJ_BYTE * ppm_data_current
    Definition: j2k.h:379
    -
    static void opj_j2k_write_qcc_in_memory(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, opj_event_mgr_t *p_manager)
    Writes the QCC marker (quantization component)
    Definition: j2k.c:3112
    -
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    -
    #define OPJ_J2K_MH_IND
    Codestream index based only on the main header.
    Definition: openjpeg.h:174
    -
    static OPJ_BOOL opj_j2k_calculate_tp(opj_j2k_t *p_j2k, opj_cp_t *cp, OPJ_UINT32 *p_nb_tiles, opj_image_t *image, opj_event_mgr_t *p_manager)
    Calculates the total number of tile parts needed by the encoder to encode such an image.
    Definition: j2k.c:1772
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    Definition: j2k.h:335
    -
    OPJ_BOOL opj_stream_flush(opj_stream_private_t *p_stream, opj_event_mgr_t *p_event_mgr)
    Writes the content of the stream buffer to the stream.
    Definition: cio.c:433
    -
    OPJ_BITFIELD m_skip_data
    Definition: j2k.h:492
    -
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    -
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    -
    struct opj_dec_memory_marker_handler opj_dec_memory_marker_handler_t
    -
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    -
    static OPJ_BOOL opj_j2k_add_tlmarker(OPJ_UINT32 tileno, opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
    Add tile header marker information.
    Definition: j2k.c:8178
    -
    opj_ppx * ppm_markers
    ppm markers data (table indexed by Zppm)
    Definition: j2k.h:370
    -
    static OPJ_BOOL opj_j2k_read_rgn(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a RGN marker (Region Of Interest)
    Definition: j2k.c:5107
    -
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS
    Definition: openjpeg.h:153
    -
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    -
    #define J2K_MS_SOC
    SOC marker value.
    Definition: j2k.h:70
    -
    static void opj_j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1447
    -
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    -
    #define OPJ_PROFILE_PART2
    Definition: openjpeg.h:197
    -
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    -
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    -
    static OPJ_BOOL opj_j2k_write_all_coc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes COC marker for each component.
    Definition: j2k.c:5490
    -
    OPJ_BYTE * ppt_buffer
    used to keep a track of the allocated memory
    Definition: j2k.h:266
    -
    struct j2k_prog_order j2k_prog_order_t
    -
    static OPJ_BOOL opj_j2k_need_nb_tile_parts_correction(opj_stream_private_t *p_stream, OPJ_UINT32 tile_no, OPJ_BOOL *p_correction_needed, opj_event_mgr_t *p_manager)
    Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot).
    Definition: j2k.c:9262
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    opj_ppx * ppt_markers
    ppt markers data (table indexed by Zppt)
    Definition: j2k.h:261
    -
    static OPJ_BOOL opj_j2k_is_cinema_compliant(opj_image_t *image, OPJ_UINT16 rsiz, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6850
    -
    char OPJ_CHAR
    Definition: openjpeg.h:114
    -
    #define opj_read_float
    Definition: cio.h:69
    -
    OPJ_UINT32 m_numcomps_to_decode
    Definition: j2k.h:486
    -
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    -
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    int len
    length, marker val included
    Definition: openjpeg.h:782
    -
    OPJ_UINT32 tw
    number of tiles in X
    Definition: openjpeg.h:967
    -
    static OPJ_BOOL opj_j2k_write_epc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes EPC ????
    Definition: j2k.c:5566
    -
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    -
    OPJ_PROG_ORDER enum_prog
    Definition: j2k.c:1316
    -
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    static const struct opj_dec_memory_marker_handler * opj_j2k_get_marker_handler(OPJ_UINT32 p_id)
    Reads the lookup table containing all the marker, status and action, and returns the handler associat...
    Definition: j2k.c:9018
    -
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    -
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    -
    opj_thread_pool_t * m_tp
    Thread pool.
    Definition: j2k.h:587
    -
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    -
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    -
    static OPJ_BOOL opj_j2k_read_ppm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PPM marker (Packed headers, main header)
    Definition: j2k.c:3810
    -
    MCT_ARRAY_TYPE
    Type of MCT array.
    Definition: j2k.h:146
    -
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    void(* opj_j2k_mct_function)(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1339
    -
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    -
    OPJ_UINT32 m_current_tile_part_number
    Tile part number currently coding, taking into account POC.
    Definition: j2k.h:504
    -
    opj_decoding_param_t m_dec
    Definition: j2k.h:396
    -
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    -
    #define J2K_MS_UNK
    UNKNOWN marker value.
    Definition: j2k.h:95
    -
    FIXME DOC.
    Definition: j2k.h:210
    -
    static OPJ_BOOL opj_j2k_read_sod(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a SOD marker (Start Of Data)
    Definition: j2k.c:4860
    -
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: openjpeg.h:928
    -
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    -
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: j2k.h:250
    -
    OPJ_UINT32 nb_tps
    number of tile parts
    Definition: openjpeg.h:1004
    -
    @ J2K_STATE_TPH
    the decoding process is in a tile part header
    Definition: j2k.h:124
    -
    OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:918
    -
    Definition: j2k.h:315
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    -
    OPJ_BOOL tile_size_on
    size of tile: tile_size_on = false (not in argument) or = true (in argument)
    Definition: openjpeg.h:389
    -
    OPJ_BYTE * ppm_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:373
    -
    @ J2K_STATE_DATA
    a tile header has been successfully read and codestream is expected
    Definition: j2k.h:127
    -
    opj_tile_info_v2_t * tile_info
    information regarding tiles inside image
    Definition: openjpeg.h:978
    -
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    -
    A list of procedures.
    Definition: function_list.h:57
    -
    #define J2K_MS_RGN
    RGN marker value.
    Definition: j2k.h:77
    -
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    -
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    -
    OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t *p_tcp, opj_image_t *p_image)
    Definition: j2k.c:8381
    -
    char tp_flag
    Flag for Tile part generation.
    Definition: openjpeg.h:520
    -
    OPJ_BOOL epb_on
    enables writing of EPB, in case of activated JPWL
    Definition: j2k.h:407
    -
    OPJ_INT32 y0
    Definition: tcd.h:173
    -
    opj_image_t * opj_image_create0(void)
    Create an empty image.
    Definition: image.c:34
    -
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    -
    static OPJ_BOOL opj_j2k_add_mhmarker(opj_codestream_index_t *cstr_index, OPJ_UINT32 type, OPJ_OFF_T pos, OPJ_UINT32 len)
    Add main header marker information.
    Definition: j2k.c:8147
    -
    #define OPJ_IS_PART2(v)
    Definition: openjpeg.h:226
    -
    const char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    -
    int jpwl_sens_range
    sensitivity range (0-3)
    Definition: openjpeg.h:492
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    #define OPJ_CINEMA_24_CS
    JPEG 2000 codestream and component size limits in cinema profiles.
    Definition: openjpeg.h:261
    -
    int image_offset_y0
    subimage encoding: origin image offset in y direction
    Definition: openjpeg.h:459
    -
    int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1=no,0-7)
    Definition: openjpeg.h:498
    -
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    -
    #define OPJ_JP2_INFO
    <
    Definition: openjpeg.h:177
    -
    static OPJ_BOOL opj_j2k_write_qcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_comp_no, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the QCC marker (quantization component)
    Definition: j2k.c:3060
    -
    OPJ_INT32 x0
    Definition: tcd.h:230
    -
    static OPJ_BOOL opj_j2k_compare_qcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compare QCC markers (quantization component)
    Definition: j2k.c:3105
    -
    static OPJ_BOOL opj_j2k_write_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no, OPJ_BYTE *p_data, OPJ_UINT32 *p_header_size, opj_event_mgr_t *p_manager)
    Writes a SQcd or SQcc element, i.e.
    Definition: j2k.c:10748
    -
    static void opj_j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1532
    -
    int jpwl_sens_MH
    sensitivity method for MH (-1=no,0-7)
    Definition: openjpeg.h:494
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    static OPJ_BOOL opj_j2k_read_tlm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a TLM marker (Tile Length Marker)
    Definition: j2k.c:3622
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    int subsampling_dx
    subsampling value for dx
    Definition: openjpeg.h:461
    -
    #define J2K_CCP_CSTY_PRT
    Definition: j2k.h:57
    -
    OPJ_UINT32 current_tpsno
    current tile-part index
    Definition: openjpeg.h:1008
    -
    OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t *p_tcp, opj_image_t *p_image)
    Definition: j2k.c:8381
    -
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    -
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    -
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    -
    #define J2K_MS_EOC
    EOC marker value.
    Definition: j2k.h:73
    -
    @ MCT_TYPE_DECORRELATION
    Definition: j2k.h:148
    -
    @ J2K_STATE_TPHSOT
    the decoding process is in a tile part header and expects a SOT marker
    Definition: j2k.h:123
    -
    OPJ_UINT32 cblkw
    code-blocks width
    Definition: j2k.h:181
    -
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    -
    #define OPJ_PROFILE_CINEMA_S2K
    Definition: openjpeg.h:200
    -
    int pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: j2k.h:425
    -
    static int opj_j2k_get_default_thread_count()
    Definition: j2k.c:6607
    -
    OPJ_UINT32 m_nb_mct_records
    the number of mct records.
    Definition: j2k.h:292
    -
    static void opj_j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1566
    -
    Tile-component coding parameters information.
    Definition: openjpeg.h:900
    -
    static OPJ_BOOL opj_j2k_merge_ppt(opj_tcp_t *p_tcp, opj_event_mgr_t *p_manager)
    Merges all PPT markers read (Packed headers, tile-part header)
    Definition: j2k.c:4113
    -
    int packno
    packet number
    Definition: openjpeg.h:849
    -
    OPJ_UINT32 tx0
    tile origin in x = XTOsiz
    Definition: openjpeg.h:959
    -
    int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: openjpeg.h:486
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    int jpwl_sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: openjpeg.h:490
    -
    static OPJ_UINT32 opj_j2k_get_SPCod_SPCoc_size(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
    Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
    Definition: j2k.c:10342
    -
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    -
    int roi_compno
    region of interest: affected component in [0..3], -1 means no ROI
    Definition: openjpeg.h:436
    -
    OPJ_BYTE * m_tlm_sot_offsets_current
    The current offset of the tlm buffer.
    Definition: j2k.h:518
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: openjpeg.h:924
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_UINT32 nbcomps
    number of components
    Definition: openjpeg.h:972
    -
    static OPJ_BOOL opj_j2k_destroy_header_memory(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Destroys the memory associated with the decoding of headers.
    Definition: j2k.c:12833
    -
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    static OPJ_BOOL opj_j2k_write_com(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COM marker (comment)
    Definition: j2k.c:2461
    -
    @ J2K_STATE_ERR
    the decoding process has encountered an error (FIXME warning V1 = 0x0080)
    Definition: j2k.h:130
    -
    opj_poc_t POC[32]
    progression order changes
    Definition: openjpeg.h:413
    -
    OPJ_BOOL opj_stream_read_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:600
    -
    OPJ_INT32 y1
    Definition: tcd.h:230
    -
    #define J2K_MS_COM
    COM marker value.
    Definition: j2k.h:89
    -
    #define J2K_MS_MCO
    MCO marker value.
    Definition: j2k.h:93
    -
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    -
    OPJ_INT32 y0
    Definition: tcd.h:191
    -
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    -
    #define J2K_CP_CSTY_SOP
    Definition: j2k.h:55
    -
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    -
    OPJ_BOOL m_PLT
    Definition: j2k.h:538
    -
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    -
    char tcp_mct
    MCT (multiple component transform)
    Definition: openjpeg.h:522
    -
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    -
    struct opj_stepsize opj_stepsize_t
    Quantization stepsize.
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    int cp_fixed_alloc
    allocation by fixed layer
    Definition: openjpeg.h:401
    -
    @ MCT_TYPE_FLOAT
    MCT data is stored as signed integers.
    Definition: j2k.h:139
    -
    static OPJ_BOOL opj_j2k_compare_SQcd_SQcc(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compares 2 SQcd or SQcc element, i.e.
    Definition: j2k.c:10700
    -
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    -
    #define J2K_MS_PLM
    PLM marker value.
    Definition: j2k.h:82
    -
    struct opj_encoding_param opj_encoding_param_t
    -
    int max_cs_size
    Maximum size (in bytes) for the whole codestream.
    Definition: openjpeg.h:534
    -
    #define J2K_CP_CSTY_EPH
    Definition: j2k.h:56
    -
    static void opj_j2k_tcp_data_destroy(opj_tcp_t *p_tcp)
    Destroys the data inside a tile coding parameter structure.
    Definition: j2k.c:9210
    -
    OPJ_OFF_T m_last_sot_read_pos
    Position of the last SOT marker read.
    Definition: j2k.h:477
    -
    void * mct_data
    Naive implementation of MCT restricted to a single reversible array based encoding without offset con...
    Definition: openjpeg.h:527
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    -
    OPJ_UINT32 ppt_data_size
    Number of bytes stored inside ppt_data.
    Definition: j2k.h:268
    -
    static OPJ_BOOL opj_j2k_read_plm(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a PLM marker (Packet length, main header marker)
    Definition: j2k.c:3683
    -
    OPJ_UINT32 m_state
    locate in which part of the codestream the decoder is (main header, tile header, end)
    Definition: j2k.h:459
    -
    static OPJ_BOOL opj_j2k_update_rates(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Updates the rates of the tcp.
    Definition: j2k.c:5192
    -
    @ J2K_STATE_EOC
    the decoding process has encountered the EOC marker
    Definition: j2k.h:129
    -
    static int opj_j2k_initialise_4K_poc(opj_poc_t *POC, int numres)
    Definition: j2k.c:6683
    -
    static OPJ_BOOL opj_j2k_mct_validation(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    The mct encoding validation procedure.
    Definition: j2k.c:8345
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    -
    int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: openjpeg.h:478
    -
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    -
    int prch_init[OPJ_J2K_MAXRLVLS]
    initial precinct height
    Definition: openjpeg.h:444
    -
    static OPJ_BOOL opj_j2k_update_image_dimensions(opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:9982
    -
    static OPJ_BOOL opj_j2k_setup_decoding_tile(opj_j2k_t *p_j2k, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on decoding one tile.
    Definition: j2k.c:11720
    -
    @ J2K_STATE_NONE
    a SOC marker is expected
    Definition: j2k.h:119
    -
    #define J2K_MS_CBD
    CBD marker value.
    Definition: j2k.h:90
    -
    static opj_codestream_index_t * opj_j2k_create_cstr_index(void)
    Definition: j2k.c:10320
    -
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    -
    OPJ_UINT32 qntsty
    quantisation style
    Definition: j2k.h:189
    -
    OPJ_UINT32 m_header_tile_data_size
    Definition: j2k.h:535
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    -
    static OPJ_BOOL opj_j2k_write_updated_tlm(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the updated tlm.
    Definition: j2k.c:12766
    -
    static OPJ_BOOL opj_j2k_decode_tiles(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads the tiles.
    Definition: j2k.c:11467
    -
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    -
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    -
    opj_codestream_index_t * cstr_index
    helper used to write the index file
    Definition: j2k.h:578
    -
    static OPJ_BOOL opj_j2k_allocate_tile_element_cstr_index(opj_j2k_t *p_j2k)
    Definition: j2k.c:11406
    -
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    -
    OPJ_UINT32 ppt_len
    size of ppt_data
    Definition: j2k.h:270
    -
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    -
    static void opj_j2k_set_cinema_parameters(opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:6702
    -
    OPJ_UINT32 m_encoded_tile_size
    Definition: j2k.h:528
    -
    #define J2K_CP_CSTY_PRT
    Definition: j2k.h:54
    -
    OPJ_BITFIELD m_nb_tile_parts_correction_checked
    TNsot correction : see issue 254.
    Definition: j2k.h:494
    -
    OPJ_UINT32 ppt_markers_count
    number of ppt markers (reserved size)
    Definition: j2k.h:259
    -
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    -
    OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:920
    -
    static OPJ_BOOL opj_j2k_read_mct(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCT marker (Multiple Component Transform)
    Definition: j2k.c:5743
    -
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    -
    struct opj_ppx_struct opj_ppx
    -
    enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
    Type of elements storing in the MCT data.
    -
    #define J2K_MS_MCT
    MCT marker value.
    Definition: j2k.h:92
    -
    static void opj_j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1498
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    -
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    -
    OPJ_UINT32 tdy
    tile size in y = YTsiz
    Definition: openjpeg.h:965
    -
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    -
    #define OPJ_IMF_MAINLEVEL_MAX
    Definition: openjpeg.h:232
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    static void opj_get_tile_dimensions(opj_image_t *l_image, opj_tcd_tilecomp_t *l_tilec, opj_image_comp_t *l_img_comp, OPJ_UINT32 *l_size_comp, OPJ_UINT32 *l_width, OPJ_UINT32 *l_height, OPJ_UINT32 *l_offset_x, OPJ_UINT32 *l_offset_y, OPJ_UINT32 *l_image_width, OPJ_UINT32 *l_stride, OPJ_UINT32 *l_tile_offset)
    Definition: j2k.c:12239
    -
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    -
    OPJ_UINT32 m_current_poc_tile_part_number
    Tile part number, regardless of poc, for each new poc, tp is reset to 1.
    Definition: j2k.h:501
    -
    static OPJ_BOOL opj_j2k_read_mco(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCO marker (Multiple Component Transform Ordering)
    Definition: j2k.c:6295
    -
    OPJ_INT32 m_current_tile_part_number
    current tile part number or -1 if first time into this tile
    Definition: j2k.h:276
    -
    @ OPJ_OFF
    Definition: openjpeg.h:288
    -
    OPJ_BOOL correct
    enables JPWL correction at the decoder
    Definition: j2k.h:439
    -
    static void opj_j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1464
    -
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    -
    #define OPJ_PROFILE_IMF_8K
    Definition: openjpeg.h:208
    -
    int cp_disto_alloc
    allocation by rate/distortion
    Definition: openjpeg.h:399
    -
    @ OPJ_CINEMA4K_24
    2K Digital Cinema at 48 fps
    Definition: openjpeg.h:291
    -
    Tile-component coding parameters.
    Definition: j2k.h:175
    -
    OPJ_INT32 * data
    Definition: tcd.h:204
    -
    #define OPJ_J2K_TH_IND
    Tile index based on the current tile.
    Definition: openjpeg.h:175
    -
    #define OPJ_PROFILE_CINEMA_2K
    Definition: openjpeg.h:198
    -
    static OPJ_BOOL opj_j2k_read_com(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a COM marker (comments)
    Definition: j2k.c:2526
    -
    #define OPJ_JP2_IND
    JP2 file index.
    Definition: openjpeg.h:178
    -
    void j2k_dump_image_header(opj_image_t *img_header, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump an image header structure.
    Definition: j2k.c:11160
    -
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    -
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    -
    Definition: j2k.h:499
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    -
    OPJ_UINT32 m_data_size
    Definition: j2k.h:233
    -
    OPJ_FLOAT32 distoratio[100]
    add fixed_quality
    Definition: j2k.h:272
    -
    OPJ_OFF_T start_pos
    start position
    Definition: openjpeg.h:988
    -
    static void opj_j2k_dump_MH_index(opj_j2k_t *p_j2k, FILE *out_stream)
    Definition: j2k.c:11076
    -
    #define OPJ_PROFILE_IMF_8K_R
    Definition: openjpeg.h:211
    -
    Definition: j2k.c:1315
    -
    OPJ_BOOL epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: j2k.h:405
    -
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    -
    static void opj_j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1583
    -
    int roi_shift
    region of interest: upshift value
    Definition: openjpeg.h:438
    -
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    -
    static const OPJ_UINT32 MCT_ELEMENT_SIZE[]
    FIXME DOC.
    Definition: j2k.c:1332
    -
    int sens_size
    enables writing of ESD, (0/2/4 bytes)
    Definition: j2k.h:427
    -
    int cblockw_init
    initial code block width, default to 64
    Definition: openjpeg.h:428
    -
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Create a new TCD handle.
    Definition: tcd.c:203
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    @ OPJ_MCT
    Profile name for a 4K image.
    Definition: openjpeg.h:280
    -
    int hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: j2k.h:419
    -
    static OPJ_BOOL opj_j2k_init_info(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Inits the Info.
    Definition: j2k.c:12856
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    Decompression parameters.
    Definition: openjpeg.h:546
    -
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    -
    static OPJ_UINT32 opj_j2k_get_max_poc_size(opj_j2k_t *p_j2k)
    Gets the maximum size taken by the writing of a POC.
    Definition: j2k.c:3396
    -
    struct opj_j2k_enc opj_j2k_enc_t
    -
    #define opj_write_float
    Definition: cio.h:68
    -
    opj_tile_info_v2_t m_default_tile_info
    Default information regarding tiles inside image.
    Definition: openjpeg.h:975
    -
    OPJ_UINT32 m_nb_tile_parts
    number of tile parts for the tile.
    Definition: j2k.h:278
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1044
    -
    OPJ_UINT32 packno
    Definition: tcd.h:236
    -
    static OPJ_BOOL opj_j2k_pre_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:12212
    -
    void j2k_dump_image_header(opj_image_t *image, OPJ_BOOL dev_dump_flag, FILE *out_stream)
    Dump an image header structure.
    Definition: j2k.c:11160
    -
    #define JPWL_MAX_NO_PACKSPECS
    Maximum number of packet parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:157
    -
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    -
    struct opj_tccp opj_tccp_t
    Tile-component coding parameters.
    -
    #define JPWL_MAX_NO_TILESPECS
    Maximum number of tile parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:156
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    OPJ_INT32 y1
    Definition: tcd.h:191
    -
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    -
    @ MCT_TYPE_INT32
    MCT data is stored as signed shorts.
    Definition: j2k.h:138
    -
    OPJ_UINT32 numlayers
    number of layers
    Definition: openjpeg.h:944
    -
    OPJ_UINT32 m_reserved_bytes_for_PLT
    Definition: j2k.h:541
    -
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    -
    static OPJ_BOOL opj_j2k_write_sot(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 total_data_size, OPJ_UINT32 *p_data_written, const opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOT marker (Start of tile-part)
    Definition: j2k.c:4227
    -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH
    Definition: opj_common.h:43
    -
    OPJ_INT32 ppm_previous
    use in case of multiple marker PPM (case on non-finished previous info)
    Definition: j2k.h:390
    -
    opj_mct_data_t * m_mct_records
    mct records
    Definition: j2k.h:290
    -
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    -
    static void opj_j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1430
    -
    struct opj_tcp opj_tcp_t
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    -
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: j2k.h:193
    -
    OPJ_UINT32 tileno
    tile index
    Definition: openjpeg.h:1001
    -
    OPJ_FLOAT64 * mct_norms
    encoding norms
    Definition: j2k.h:284
    -
    int jpwl_max_tiles
    maximum number of tiles
    Definition: openjpeg.h:600
    -
    #define opj_read_bytes
    Definition: cio.h:65
    -
    OPJ_UINT32 cur_totnum_tp
    Total number of tileparts of the current tile.
    Definition: tcd.h:259
    -
    OPJ_UINT32 m_reduce
    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
    Definition: j2k.h:337
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    -
    J2K_MCT_ELEMENT_TYPE m_element_type
    Definition: j2k.h:211
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    #define OPJ_PROFILE_IMF_4K_R
    Definition: openjpeg.h:210
    -
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    -
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    -
    OPJ_BYTE * m_data
    data for the tile
    Definition: j2k.h:280
    -
    static OPJ_BOOL opj_j2k_compare_coc(opj_j2k_t *p_j2k, OPJ_UINT32 p_first_comp_no, OPJ_UINT32 p_second_comp_no)
    Compares 2 COC markers (Coding style component)
    Definition: j2k.c:2806
    -
    int image_offset_x0
    subimage encoding: origin image offset in x direction
    Definition: openjpeg.h:457
    -
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    static OPJ_UINT32 opj_j2k_get_num_tp(opj_cp_t *cp, OPJ_UINT32 pino, OPJ_UINT32 tileno)
    Gets the number of tile parts used for the given change of progression (if any) and the given tile.
    Definition: j2k.c:1715
    -
    char tp_on
    Tile part generation.
    Definition: openjpeg.h:518
    -
    int mode
    mode switch (cblk_style)
    Definition: openjpeg.h:432
    -
    static OPJ_BOOL opj_j2k_read_crg(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a CRG marker (Component registration)
    Definition: j2k.c:3580
    -
    static OPJ_UINT32 opj_j2k_get_SQcd_SQcc_size(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_no, OPJ_UINT32 p_comp_no)
    Gets the size taken by writing SQcd or SQcc element, i.e.
    Definition: j2k.c:10669
    -
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    -
    opj_mct_data_t * m_decorrelation_array
    Definition: j2k.h:225
    -
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    -
    struct opj_mct_data opj_mct_data_t
    FIXME DOC.
    -
    int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: openjpeg.h:484
    -
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    -
    OPJ_UINT32 m_start_tile_x
    Only tiles index in the correct range will be decoded.
    Definition: j2k.h:469
    -
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION
    Definition: opj_common.h:45
    -
    OPJ_UINT64 codestream_size
    codestream's size
    Definition: openjpeg.h:1038
    -
    opj_j2k_enc_t m_encoder
    Definition: j2k.h:558
    -
    static const OPJ_UINT16 tabMaxSubLevelFromMainLevel[]
    Definition: j2k.c:7038
    -
    static OPJ_FLOAT32 opj_j2k_get_default_stride(opj_tcp_t *p_tcp)
    Definition: j2k.c:5186
    -
    @ J2K_STATE_MHSIZ
    a SIZ marker is expected
    Definition: j2k.h:121
    -
    static void opj_j2k_cp_destroy(opj_cp_t *p_cp)
    Destroys a coding parameter structure.
    Definition: j2k.c:9219
    -
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:940
    -
    int cp_tdy
    YTsiz.
    Definition: openjpeg.h:397
    -
    static OPJ_BOOL opj_j2k_write_all_tile_parts(opj_j2k_t *p_j2k, OPJ_BYTE *p_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 total_data_size, opj_stream_private_t *p_stream, struct opj_event_mgr *p_manager)
    Definition: j2k.c:12644
    -
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    -
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: openjpeg.h:946
    -
    #define OPJ_CINEMA_48_CS
    Definition: openjpeg.h:262
    -
    opj_tp_index_t * tp_index
    information concerning tile parts
    Definition: openjpeg.h:1010
    -
    int csty
    csty : coding style
    Definition: openjpeg.h:409
    -
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    -
    OPJ_INT32 * m_matrice
    fixed layer
    Definition: j2k.h:321
    -
    static OPJ_BOOL opj_j2k_end_encoding(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the encoding, i.e.
    Definition: j2k.c:12799
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_BITFIELD m_is_decoder
    tells if the parameter is a coding or decoding one
    Definition: j2k.h:450
    -
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    -
    OPJ_UINT32 th
    number of tiles in Y
    Definition: openjpeg.h:969
    -
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    -
    OPJ_INT32 y0
    Definition: tcd.h:230
    -
    Index structure about a tile part.
    Definition: openjpeg.h:986
    -
    OPJ_UINT32 m_data_size
    size of data
    Definition: j2k.h:282
    -
    OPJ_BITFIELD m_disto_alloc
    allocation by rate/distortion
    Definition: j2k.h:325
    -
    struct opj_decoding_param opj_decoding_param_t
    -
    static OPJ_BOOL opj_j2k_copy_default_tcp_and_create_tcd(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Copies the decoding tile parameters onto all the tile parameters.
    Definition: j2k.c:8868
    -
    static OPJ_BOOL opj_j2k_read_mcc(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a MCC marker (Multiple Component Collection)
    Definition: j2k.c:5991
    -
    void opj_copy_image_header(const opj_image_t *p_image_src, opj_image_t *p_image_dest)
    Copy only header of image and its component header (no data are copied) if dest image have data,...
    Definition: image.c:165
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    static const opj_dec_memory_marker_handler_t j2k_memory_marker_handler_tab[]
    Definition: j2k.c:1376
    -
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    -
    Definition: j2k.c:1363
    -
    static OPJ_BOOL opj_j2k_get_sot_values(OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, OPJ_UINT32 *p_tile_no, OPJ_UINT32 *p_tot_len, OPJ_UINT32 *p_current_part, OPJ_UINT32 *p_num_parts, opj_event_mgr_t *p_manager)
    Reads values from a SOT marker (Start of tile-part)
    Definition: j2k.c:4287
    -
    static int opj_j2k_get_imf_max_NL(opj_cparameters_t *parameters, opj_image_t *image)
    Definition: j2k.c:6913
    -
    static void opj_j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1549
    -
    OPJ_UINT32 cblkh
    code-blocks height
    Definition: j2k.h:183
    -
    static void opj_j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data, OPJ_UINT32 p_nb_elem)
    Definition: j2k.c:1481
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    -
    OPJ_RSIZ_CAPABILITIES cp_rsiz
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.
    Definition: openjpeg.h:516
    -
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    -
    FIXME DOC.
    Definition: j2k.h:222
    -
    void opj_image_comp_header_update(opj_image_t *p_image_header, const struct opj_cp *p_cp)
    Updates the components characteristics of the image from the coding parameters.
    Definition: image.c:122
    -
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    -
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    -
    OPJ_BITFIELD cod
    If cod == 1 --> there was a COD marker for the present tile.
    Definition: j2k.h:305
    -
    #define OPJ_EXTENSION_MCT
    Definition: openjpeg.h:217
    -
    OPJ_UINT32 tile
    Tile number (starting at 1)
    Definition: openjpeg.h:371
    -
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    -
    opj_tcp_t * m_default_tcp
    store decoding parameters common to all tiles (information like COD, COC in main header)
    Definition: j2k.h:463
    -
    OPJ_UINT32 tp_num
    Tile part number.
    Definition: tcd.h:255
    -
    OPJ_UINT32 cblkh
    log2 of code-blocks height
    Definition: openjpeg.h:910
    -
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    -
    int prcw_init[OPJ_J2K_MAXRLVLS]
    initial precinct width
    Definition: openjpeg.h:442
    -
    opj_image_t * m_private_image
    pointer to the internal/private encoded / decoded image
    Definition: j2k.h:563
    -
    OPJ_UINT32 numpocs
    number of progression order changes (POC), default to 0
    Definition: openjpeg.h:415
    -
    static OPJ_BOOL opj_j2k_write_cod(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the COD marker (Coding style default)
    Definition: j2k.c:2545
    -
    OPJ_UINT32 m_end_tile_y
    Definition: j2k.h:472
    -
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    -
    #define J2K_MS_MCC
    MCC marker value.
    Definition: j2k.h:91
    -
    MCT_ELEMENT_TYPE
    Type of elements storing in the MCT data.
    Definition: j2k.h:136
    -
    #define J2K_CCP_QNTSTY_SIQNT
    Definition: j2k.h:65
    -
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    -
    opj_simple_mcc_decorrelation_data_t * m_mcc_records
    mcc records
    Definition: j2k.h:296
    -
    #define J2K_CCP_QNTSTY_NOQNT
    Definition: j2k.h:64
    -
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1014
    -
    #define J2K_MS_COD
    COD marker value.
    Definition: j2k.h:75
    -
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:177
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: openjpeg.h:480
    -
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    -
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    -
    #define J2K_MS_POC
    POC marker value.
    Definition: j2k.h:80
    -
    OPJ_BOOL jpwl_epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: openjpeg.h:474
    -
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    -
    int jpwl_hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: openjpeg.h:476
    -
    Progression order changes.
    Definition: openjpeg.h:359
    -
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    -
    #define J2K_MS_CRG
    CRG marker value.
    Definition: j2k.h:88
    -
    Marker structure.
    Definition: openjpeg.h:776
    -
    OPJ_UINT32 id
    marker value
    Definition: j2k.c:1365
    -
    OPJ_INT32 m_tile_ind_to_dec
    Index of the tile to decode (used in get_tile)
    Definition: j2k.h:475
    -
    @ J2K_STATE_NEOC
    the decoding process must not expect a EOC marker because the codestream is truncated
    Definition: j2k.h:126
    -
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    -
    int * cp_matrice
    fixed layer
    Definition: openjpeg.h:405
    -
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    -
    OPJ_UINT32 tdx
    tile size in x = XTsiz
    Definition: openjpeg.h:963
    -
    static OPJ_BOOL opj_j2k_read_soc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a SOC marker (Start of Codestream)
    Definition: j2k.c:1893
    -
    int sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: j2k.h:429
    -
    OPJ_UINT32 m_header_data_size
    Definition: j2k.h:465
    -
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: openjpeg.h:906
    -
    Definition: thread.c:605
    -
    static OPJ_BOOL opj_j2k_build_encoder(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Builds the tcd encoder to use to encode tile.
    Definition: j2k.c:8556
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    static OPJ_BOOL opj_j2k_write_regions(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes regions of interests.
    Definition: j2k.c:5537
    -
    union opj_cp::@0 m_specific_param
    -
    #define J2K_MS_QCD
    QCD marker value.
    Definition: j2k.h:78
    -
    #define J2K_MS_EPB
    EPB marker value (Part 11: JPEG 2000 for Wireless)
    Definition: j2k.h:100
    -
    static OPJ_BOOL opj_j2k_post_write_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Definition: j2k.c:12364
    -
    #define OPJ_GET_IMF_PROFILE(v)
    Definition: openjpeg.h:228
    -
    #define J2K_MS_SOD
    SOD marker value.
    Definition: j2k.h:72
    -
    Definition: j2k.h:457
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    -
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    -
    int sens_range
    sensitivity range (0-3)
    Definition: j2k.h:431
    -
    int max_comp_size
    Maximum size (in bytes) for each component.
    Definition: openjpeg.h:511
    -
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    -
    static OPJ_BOOL opj_j2k_write_soc(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes the SOC marker (Start Of Codestream)
    Definition: j2k.c:1853
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    -
    static OPJ_BOOL opj_j2k_build_decoder(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Builds the tcd decoder to use to decode tile.
    Definition: j2k.c:8544
    - - - - diff --git a/build/doc/html/j2kheader__manager_8c.html b/build/doc/html/j2kheader__manager_8c.html deleted file mode 100644 index 3dede9b73..000000000 --- a/build/doc/html/j2kheader__manager_8c.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - -OpenJPEG: j2kheader_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    j2kheader_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <math.h>
    -#include <assert.h>
    -#include "j2kheader_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - -

    -Functions

    SIZmarker_param_t get_SIZmkrdata_from_j2kstream (Byte_t *SIZstream)
     
    CODmarker_param_t get_CODmkrdata_from_j2kstream (Byte_t *CODstream)
     
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
     get main header information from j2k codestream More...
     
    OPJ_BOOL modify_SIZmkrstream (SIZmarker_param_t SIZ, int difOfdecomplev, Byte_t *SIZstream)
     
    Byte2_t modify_CODmkrstream (CODmarker_param_t COD, int numOfdecomp, Byte_t *CODstream)
     
    OPJ_BOOL modify_mainheader (Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
     modify main header in j2k codestream to fit with the new number of decompositions More...
     
    OPJ_BOOL modify_COCmkrstream (int numOfdecomp, Byte_t *COCstream, Byte2_t Csiz, Byte2_t *oldLcoc, Byte2_t *newLcoc)
     
    OPJ_BOOL modify_tileheader (Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
     modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ get_CODmkrdata_from_j2kstream()

    - - - -

    ◆ get_mainheader_from_j2kstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_tj2kstream,
    SIZmarker_param_tSIZ,
    CODmarker_param_tCOD 
    )
    -
    - -

    get main header information from j2k codestream

    -
    Parameters
    - - - - -
    [in]j2kstreamj2k codestream
    [out]SIZSIZ marker pointer
    [out]CODCOD marker pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References big2(), FCGI_stderr, get_CODmkrdata_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), CODmarker_param::Lcod, SIZmarker_param::Lsiz, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by get_SIZ_from_jpipstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    - -
    -
    - -

    ◆ get_SIZmkrdata_from_j2kstream()

    - - - -

    ◆ modify_COCmkrstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_COCmkrstream (int numOfdecomp,
    Byte_tCOCstream,
    Byte2_t Csiz,
    Byte2_toldLcoc,
    Byte2_tnewLcoc 
    )
    -
    - -

    References big2(), FCGI_stderr, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by modify_tileheader().

    - -
    -
    - -

    ◆ modify_CODmkrstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte2_t modify_CODmkrstream (CODmarker_param_t COD,
    int numOfdecomp,
    Byte_tCODstream 
    )
    -
    -
    - -

    ◆ modify_mainheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_mainheader (Byte_tj2kstream,
    int numOfdecomp,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    Byte8_tj2klen 
    )
    -
    - -

    modify main header in j2k codestream to fit with the new number of decompositions

    -
    Parameters
    - - - - - - -
    [in]j2kstreamj2k codestream
    [in]numOfdecompthe New number of decompositions
    [in]SIZoriginal SIZ marker information
    [in]CODoriginal COD marker information
    [out]j2klenpointer to the length of j2k code stream
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References FCGI_stderr, CODmarker_param::Lcod, SIZmarker_param::Lsiz, modify_CODmkrstream(), modify_SIZmkrstream(), CODmarker_param::numOfdecomp, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by recons_codestream_from_JPPstream().

    - -
    -
    - -

    ◆ modify_SIZmkrstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_SIZmkrstream (SIZmarker_param_t SIZ,
    int difOfdecomplev,
    Byte_tSIZstream 
    )
    -
    -
    - -

    ◆ modify_tileheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_tileheader (Byte_tj2kstream,
    Byte8_t SOToffset,
    int numOfdecomp,
    Byte2_t Csiz,
    Byte8_tj2klen 
    )
    -
    - -

    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images

    -
    Parameters
    - - - - - - -
    [in]j2kstreamj2k codestream
    [in]SOToffsetoffset of SOT marker from the beginning of j2kstream
    [in]numOfdecompthe New number of decompositions, -1 if the same as original
    [in]Csiznumber of components
    [out]j2klenpointer to the length of j2k code stream
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References FCGI_stderr, modify_4Bytecode(), modify_COCmkrstream(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by recons_codestream_from_JPPstream().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/j2kheader__manager_8h.html b/build/doc/html/j2kheader__manager_8h.html deleted file mode 100644 index 2d96c1fbf..000000000 --- a/build/doc/html/j2kheader__manager_8h.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - -OpenJPEG: j2kheader_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    j2kheader_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "index_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    OPJ_BOOL get_mainheader_from_j2kstream (Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
     get main header information from j2k codestream More...
     
    OPJ_BOOL modify_mainheader (Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
     modify main header in j2k codestream to fit with the new number of decompositions More...
     
    OPJ_BOOL modify_tileheader (Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
     modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images More...
     
    -

    Function Documentation

    - -

    ◆ get_mainheader_from_j2kstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL get_mainheader_from_j2kstream (Byte_tj2kstream,
    SIZmarker_param_tSIZ,
    CODmarker_param_tCOD 
    )
    -
    - -

    get main header information from j2k codestream

    -
    Parameters
    - - - - -
    [in]j2kstreamj2k codestream
    [out]SIZSIZ marker pointer
    [out]CODCOD marker pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References big2(), FCGI_stderr, get_CODmkrdata_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), CODmarker_param::Lcod, SIZmarker_param::Lsiz, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by get_SIZ_from_jpipstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    - -
    -
    - -

    ◆ modify_mainheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_mainheader (Byte_tj2kstream,
    int numOfdecomp,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    Byte8_tj2klen 
    )
    -
    - -

    modify main header in j2k codestream to fit with the new number of decompositions

    -
    Parameters
    - - - - - - -
    [in]j2kstreamj2k codestream
    [in]numOfdecompthe New number of decompositions
    [in]SIZoriginal SIZ marker information
    [in]CODoriginal COD marker information
    [out]j2klenpointer to the length of j2k code stream
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References FCGI_stderr, CODmarker_param::Lcod, SIZmarker_param::Lsiz, modify_CODmkrstream(), modify_SIZmkrstream(), CODmarker_param::numOfdecomp, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by recons_codestream_from_JPPstream().

    - -
    -
    - -

    ◆ modify_tileheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL modify_tileheader (Byte_tj2kstream,
    Byte8_t SOToffset,
    int numOfdecomp,
    Byte2_t Csiz,
    Byte8_tj2klen 
    )
    -
    - -

    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositions for multi-componet images

    -
    Parameters
    - - - - - - -
    [in]j2kstreamj2k codestream
    [in]SOToffsetoffset of SOT marker from the beginning of j2kstream
    [in]numOfdecompthe New number of decompositions, -1 if the same as original
    [in]Csiznumber of components
    [out]j2klenpointer to the length of j2k code stream
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References FCGI_stderr, modify_4Bytecode(), modify_COCmkrstream(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by recons_codestream_from_JPPstream().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/j2kheader__manager_8h_source.html b/build/doc/html/j2kheader__manager_8h_source.html deleted file mode 100644 index 0337c465d..000000000 --- a/build/doc/html/j2kheader__manager_8h_source.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -OpenJPEG: j2kheader_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    j2kheader_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef J2KHEADER_MANAGER_H_
    -
    33 # define J2KHEADER_MANAGER_H_
    -
    34 
    -
    35 #include "byte_manager.h"
    -
    36 #include "index_manager.h"
    -
    37 
    - - -
    48 
    -
    59 OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp,
    -
    60  SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen);
    -
    61 
    -
    72 OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset,
    -
    73  int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen);
    -
    74 
    -
    75 #endif /* !J2KHEADER_MANAGER_H_ */
    -
    -
    Byte2_t Lsiz
    length of marker segment excluding the marker
    Definition: index_manager.h:56
    -
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    -
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    -
    Byte2_t Lcod
    length of marker segment excluding the marker
    Definition: index_manager.h:76
    -
    Byte4_t XTsiz
    width of one reference tile with respect to the reference grid
    Definition: index_manager.h:62
    -
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    #define FCGI_stderr
    Definition: j2kheader_manager.c:44
    -
    OPJ_BOOL modify_SIZmkrstream(SIZmarker_param_t SIZ, int difOfdecomplev, Byte_t *SIZstream)
    Definition: j2kheader_manager.c:187
    -
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    -
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    -
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    -
    SIZmarker_param_t get_SIZmkrdata_from_j2kstream(Byte_t *SIZstream)
    Definition: j2kheader_manager.c:82
    -
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    -
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    -
    Byte_t YRsiz[3]
    vertical separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:71
    -
    void modify_4Bytecode(Byte4_t code, Byte_t *stream)
    modify 4Byte code in a codestream
    Definition: byte_manager.c:159
    -
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    - -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    -
    Byte_t XRsiz[3]
    horizontal separation of a sample of component with respect to the reference grid
    Definition: index_manager.h:70
    -
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    -
    Byte2_t big2(Byte_t *buf)
    convert 2-byte big endian Byte codes to number
    Definition: byte_manager.c:142
    -
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    -
    OPJ_BOOL modify_COCmkrstream(int numOfdecomp, Byte_t *COCstream, Byte2_t Csiz, Byte2_t *oldLcoc, Byte2_t *newLcoc)
    Definition: j2kheader_manager.c:299
    -
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    -
    Byte4_t YTsiz
    height of one reference tile with respect to the reference grid
    Definition: index_manager.h:63
    -
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    -
    progression order
    Definition: index_manager.h:55
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    CODmarker_param_t get_CODmkrdata_from_j2kstream(Byte_t *CODstream)
    Definition: j2kheader_manager.c:118
    - -
    Byte4_t XTOsiz
    horizontal offset from the origin of the reference grid to the left side of the first tile
    Definition: index_manager.h:64
    -
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    Byte2_t modify_CODmkrstream(CODmarker_param_t COD, int numOfdecomp, Byte_t *CODstream)
    Definition: j2kheader_manager.c:223
    - -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    -
    Byte2_t Rsiz
    capabilities that a decoder needs
    Definition: index_manager.h:57
    -
    Byte4_t YTOsiz
    vertical offset from the origin of the reference grid to the top side of the first tile
    Definition: index_manager.h:65
    - - - - diff --git a/build/doc/html/jp2_8c.html b/build/doc/html/jp2_8c.html deleted file mode 100644 index 70bcc971f..000000000 --- a/build/doc/html/jp2_8c.html +++ /dev/null @@ -1,3366 +0,0 @@ - - - - - - - -OpenJPEG: jp2.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Macros

    #define OPJ_BOX_SIZE   1024
     
    #define OPJ_UNUSED(x)   (void)x
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    static const opj_jp2_header_handler_t jp2_header []
     
    static const opj_jp2_header_handler_t jp2_img_header []
     
    static OPJ_BOOL opj_jp2_read_ihdr (opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
     Reads a IHDR box - Image Header box. More...
     
    static OPJ_BYTEopj_jp2_write_ihdr (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Image Header box - Image Header box. More...
     
    static OPJ_BYTEopj_jp2_write_bpcc (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Bit per Component box. More...
     
    static OPJ_BOOL opj_jp2_read_bpcc (opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
     Reads a Bit per Component box. More...
     
    static OPJ_BOOL opj_jp2_read_cdef (opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
     
    static void opj_jp2_apply_cdef (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *)
     
    static OPJ_BYTEopj_jp2_write_cdef (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Channel Definition box. More...
     
    static OPJ_BYTEopj_jp2_write_colr (opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
     Writes the Colour Specification box. More...
     
    static OPJ_BOOL opj_jp2_write_ftyp (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes a FTYP box - File type box. More...
     
    static OPJ_BOOL opj_jp2_read_ftyp (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a a FTYP box - File type box. More...
     
    static OPJ_BOOL opj_jp2_skip_jp2c (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_jp2_read_jp2h (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box). More...
     
    static OPJ_BOOL opj_jp2_write_jp2h (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box). More...
     
    static OPJ_BOOL opj_jp2_write_jp2c (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes the Jpeg2000 codestream Header box - JP2C Header box. More...
     
    static OPJ_BOOL opj_jp2_read_jp (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file signature box. More...
     
    static OPJ_BOOL opj_jp2_write_jp (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Writes a jpeg2000 file signature box. More...
     
    static OPJ_BOOL opj_jp2_apply_pclr (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
     Apply collected palette data. More...
     
    static void opj_jp2_free_pclr (opj_jp2_color_t *color)
     
    static OPJ_BOOL opj_jp2_read_pclr (opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
     Collect palette data. More...
     
    static OPJ_BOOL opj_jp2_read_cmap (opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
     Collect component mapping data. More...
     
    static OPJ_BOOL opj_jp2_read_colr (opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
     Reads the Color Specification box. More...
     
    static OPJ_BOOL opj_jp2_setup_end_header_writing (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header after the codestream. More...
     
    static OPJ_BOOL opj_jp2_setup_end_header_reading (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header after the codestream. More...
     
    static OPJ_BOOL opj_jp2_read_header_procedure (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    static OPJ_BOOL opj_jp2_exec (opj_jp2_t *jp2, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Executes the given procedures on the given codec. More...
     
    static OPJ_BOOL opj_jp2_read_boxhdr (opj_jp2_box_t *box, OPJ_UINT32 *p_number_bytes_read, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Reads a box header. More...
     
    static OPJ_BOOL opj_jp2_setup_encoding_validation (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_jp2_setup_header_writing (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on writing header. More...
     
    static OPJ_BOOL opj_jp2_default_validation (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    static const opj_jp2_header_handler_topj_jp2_img_find_handler (OPJ_UINT32 p_id)
     Finds the image execution function related to the given box id. More...
     
    static const opj_jp2_header_handler_topj_jp2_find_handler (OPJ_UINT32 p_id)
     Finds the execution function related to the given box id. More...
     
    static OPJ_BOOL opj_jp2_read_boxhdr_char (opj_jp2_box_t *box, OPJ_BYTE *p_data, OPJ_UINT32 *p_number_bytes_read, OPJ_UINT32 p_box_max_size, opj_event_mgr_t *p_manager)
     Reads a box header. More...
     
    static OPJ_BOOL opj_jp2_setup_decoding_validation (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the validation ,i.e. More...
     
    static OPJ_BOOL opj_jp2_setup_header_reading (opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
     Sets up the procedures to do on reading header. More...
     
    static OPJ_BOOL opj_jp2_check_color (opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_decode (opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 file stream. More...
     
    void opj_jp2_setup_decoder (opj_jp2_t *jp2, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_t *jp2, OPJ_UINT32 num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL opj_jp2_encode (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Encode an image into a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    static OPJ_BOOL opj_jpip_skip_iptr (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    void opj_jp2_destroy (opj_jp2_t *jp2)
     Destroy a JP2 decompressor handle. More...
     
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL opj_jp2_get_tile (opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    opj_jp2_topj_jp2_create (OPJ_BOOL p_is_decoder)
     Creates a jpeg2000 file decompressor. More...
     
    void jp2_dump (opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the JP2 decompression structure . More...
     
    opj_codestream_index_tjp2_get_cstr_index (opj_jp2_t *p_jp2)
     Get the codestream index from a JPEG2000 codec. More...
     
    opj_codestream_info_v2_tjp2_get_cstr_info (opj_jp2_t *p_jp2)
     Get the codestream info from a JPEG2000 codec. More...
     
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_BOX_SIZE

    - -
    -
    - - - - -
    #define OPJ_BOX_SIZE   1024
    -
    - -
    -
    - -

    ◆ OPJ_UNUSED

    - -
    -
    - - - - - - - - -
    #define OPJ_UNUSED( x)   (void)x
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ jp2_dump()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void jp2_dump (opj_jp2_tp_jp2,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    -
    - -

    Dump some elements from the JP2 decompression structure .

    -
    Parameters
    - - - - -
    p_jp2the jp2 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_jp2::j2k, and j2k_dump().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ jp2_get_cstr_index()

    - -
    -
    - - - - - - - - -
    opj_codestream_index_t* jp2_get_cstr_index (opj_jp2_tp_jp2)
    -
    - -

    Get the codestream index from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_jp2jp2 codec.
    -
    -
    -
    Returns
    the codestream index extract from the jpg2000 codec
    - -

    References opj_jp2::j2k, and j2k_get_cstr_index().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ jp2_get_cstr_info()

    - -
    -
    - - - - - - - - -
    opj_codestream_info_v2_t* jp2_get_cstr_info (opj_jp2_tp_jp2)
    -
    - -

    Get the codestream info from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_jp2jp2 codec.
    -
    -
    -
    Returns
    the codestream information extract from the jpg2000 codec
    - -

    References opj_jp2::j2k, and j2k_get_cstr_info().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_apply_cdef()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_jp2_apply_cdef (opj_image_timage,
    opj_jp2_color_tcolor,
    opj_event_mgr_tmanager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_apply_pclr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_apply_pclr (opj_image_timage,
    opj_jp2_color_tcolor,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_check_color()

    - - - -

    ◆ opj_jp2_create()

    - - - -

    ◆ opj_jp2_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_decode (opj_jp2_tjp2,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Decode tile data.

    -
    Parameters
    - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    FIXME DOC
    - -

    References opj_jp2::j2k, and opj_j2k_decode_tile().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_default_validation()

    - - - -

    ◆ opj_jp2_destroy()

    - - - -

    ◆ opj_jp2_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_encode (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encode an image into a JPEG-2000 file stream.

    -
    Parameters
    - - - - -
    jp2JP2 compressor handle
    streamOutput buffer stream
    p_managerevent manager
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_jp2::j2k, and opj_j2k_encode().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_tp_jp2,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Specify extra options for the encoder.

    -
    Parameters
    - - - - -
    p_jp2the jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    -
    -
    -
    See also
    opj_encoder_set_extra_options() for more details.
    - -

    References opj_jp2::j2k, and opj_j2k_encoder_set_extra_options().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_compress(), opj_jp2_exec(), and opj_jp2_setup_end_header_writing().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_decompress(), opj_jp2_exec(), and opj_jp2_setup_end_header_reading().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_exec()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_exec (opj_jp2_tjp2,
    opj_procedure_list_tp_procedure_list,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Executes the given procedures on the given codec.

    -
    Parameters
    - - - - - -
    p_procedure_listthe list of procedures to execute
    jp2the jpeg2000 file codec to execute the procedures on.
    streamthe stream to execute the procedures on.
    p_managerthe user manager.
    -
    -
    -
    Returns
    true if all the procedures were successfully executed.
    - -

    References opj_procedure_list_clear(), opj_procedure_list_get_first_procedure(), opj_procedure_list_get_nb_procedures(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_end_compress(), opj_jp2_end_decompress(), opj_jp2_read_header(), and opj_jp2_start_compress().

    - -
    -
    - -

    ◆ opj_jp2_find_handler()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static const opj_jp2_header_handler_t * opj_jp2_find_handler (OPJ_UINT32 p_id)
    -
    -static
    -
    - -

    Finds the execution function related to the given box id.

    -
    Parameters
    - - -
    p_idthe id of the handler to fetch.
    -
    -
    -
    Returns
    the given handler or NULL if it could not be found.
    - -

    References jp2_header.

    - -

    Referenced by opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_jp2_free_pclr()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_jp2_free_pclr (opj_jp2_color_tcolor)
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_get_tile()

    - - - -

    ◆ opj_jp2_img_find_handler()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static const opj_jp2_header_handler_t * opj_jp2_img_find_handler (OPJ_UINT32 p_id)
    -
    -static
    -
    - -

    Finds the image execution function related to the given box id.

    -
    Parameters
    - - -
    p_idthe id of the handler to fetch.
    -
    -
    -
    Returns
    the given handler or NULL if it could not be found.
    -
    Parameters
    - - -
    p_idthe id of the handler to fetch.
    -
    -
    -
    Returns
    the given handler or 00 if it could not be found.
    - -

    References jp2_img_header.

    - -

    Referenced by opj_jp2_read_header_procedure(), and opj_jp2_read_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_read_boxhdr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_boxhdr (opj_jp2_box_tbox,
    OPJ_UINT32p_number_bytes_read,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a box header.

    -

    The box is the way data is packed inside a jpeg2000 file structure.

    -
    Parameters
    - - - - - -
    ciothe input stream to read data from.
    boxthe box structure to fill.
    p_number_bytes_readpointer to an int that will store the number of bytes read from the stream (shoul usually be 2).
    p_manageruser event manager.
    -
    -
    -
    Returns
    true if the box is recognized, false otherwise
    - -

    References EVT_ERROR, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_read_bytes, opj_stream_get_number_byte_left(), opj_stream_read_data(), OPJ_TRUE, and opj_jp2_box::type.

    - -

    Referenced by opj_jp2_read_header_procedure().

    - -
    -
    - -

    ◆ opj_jp2_read_boxhdr_char()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_boxhdr_char (opj_jp2_box_tbox,
    OPJ_BYTEp_data,
    OPJ_UINT32p_number_bytes_read,
    OPJ_UINT32 p_box_max_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a box header.

    -

    The box is the way data is packed inside a jpeg2000 file structure. Data is read from a character string

    -
    Parameters
    - - - - - - -
    boxthe box structure to fill.
    p_datathe character string to read data from.
    p_number_bytes_readpointer to an int that will store the number of bytes read from the stream (shoul usually be 2).
    p_box_max_sizethe maximum number of bytes in the box.
    p_managerFIXME DOC
    -
    -
    -
    Returns
    true if the box is recognized, false otherwise
    - -

    References EVT_ERROR, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, and opj_jp2_box::type.

    - -

    Referenced by opj_jp2_read_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_read_bpcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_bpcc (opj_jp2_tjp2,
    OPJ_BYTEp_bpc_header_data,
    OPJ_UINT32 p_bpc_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a Bit per Component box.

    -
    Parameters
    - - - - - -
    p_bpc_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_bpc_header_sizethe size of the bpc header
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the bpc header is valid, false else.
    - -

    References opj_jp2::bpc, opj_jp2_comps::bpcc, opj_jp2::comps, EVT_ERROR, EVT_WARNING, opj_jp2::numcomps, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_jp2_read_cdef()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_cdef (opj_jp2_tjp2,
    OPJ_BYTEp_cdef_header_data,
    OPJ_UINT32 p_cdef_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_read_cmap()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_cmap (opj_jp2_tjp2,
    OPJ_BYTEp_cmap_header_data,
    OPJ_UINT32 p_cmap_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Collect component mapping data.

    -
    Parameters
    - - - - - -
    jp2JP2 handle
    p_cmap_header_dataFIXME DOC
    p_cmap_header_sizeFIXME DOC
    p_managerFIXME DOC
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_jp2_pclr::cmap, opj_jp2_cmap_comp::cmp, opj_jp2::color, EVT_ERROR, opj_jp2_color::jp2_pclr, opj_jp2_cmap_comp::mtyp, opj_jp2_pclr::nr_channels, opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, OPJ_TRUE, and opj_jp2_cmap_comp::pcol.

    - -
    -
    - -

    ◆ opj_jp2_read_colr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_colr (opj_jp2_tjp2,
    OPJ_BYTEp_colr_header_data,
    OPJ_UINT32 p_colr_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads the Color Specification box.

    -
    Parameters
    - - - - - -
    p_colr_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_colr_header_sizethe size of the color header
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the bpc header is valid, false else.
    - -

    References opj_jp2::approx, opj_jp2::color, opj_jp2::enumcs, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_jp2_color::icc_profile_buf, opj_jp2_color::icc_profile_len, opj_jp2_color::jp2_has_colr, opj_jp2::meth, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_malloc(), opj_read_bytes, OPJ_TRUE, and opj_jp2::precedence.

    - -
    -
    - -

    ◆ opj_jp2_read_ftyp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_ftyp (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a a FTYP box - File type box.

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the FTYP box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the FTYP box.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the FTYP box is valid.
    - -

    References opj_jp2::brand, opj_jp2::cl, EVT_ERROR, opj_jp2::jp2_state, JP2_STATE_FILE_TYPE, JP2_STATE_SIGNATURE, opj_jp2::minversion, opj_jp2::numcl, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_jp2_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_tp_stream,
    opj_jp2_tjp2,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a jpeg2000 file header structure.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    jp2the jpeg2000 file header structure.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the box is valid.
    - -

    References EVT_ERROR, opj_jp2::has_ihdr, opj_jp2::has_jp2h, opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, opj_event_msg(), OPJ_FALSE, opj_j2k_read_header(), opj_jp2_exec(), opj_jp2_setup_decoding_validation(), and opj_jp2_setup_header_reading().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_read_header_procedure()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_header_procedure (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_read_ihdr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_ihdr (opj_jp2_tjp2,
    OPJ_BYTEp_image_header_data,
    OPJ_UINT32 p_image_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a IHDR box - Image Header box.

    -
    Parameters
    - - - - - -
    p_image_header_datapointer to actual data (already read from file)
    jp2the jpeg2000 file codec.
    p_image_header_sizethe size of the image header
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the image header is valid, false else.
    - -

    References opj_cp::allow_different_bit_depth_sign, opj_jp2::bpc, opj_jp2::C, opj_jp2::comps, EVT_ERROR, EVT_INFO, EVT_WARNING, opj_jp2::h, opj_jp2::has_ihdr, opj_j2k::ihdr_h, opj_j2k::ihdr_w, opj_jp2::IPR, opj_jp2::j2k, opj_j2k::m_cp, opj_jp2::numcomps, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_read_bytes, OPJ_TRUE, opj_jp2::UnkC, and opj_jp2::w.

    - -
    -
    - -

    ◆ opj_jp2_read_jp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_jp (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads a jpeg2000 file signature box.

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the signature box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the signature box.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the file signature box is valid.
    - -

    References EVT_ERROR, opj_jp2::jp2_state, JP2_STATE_NONE, JP2_STATE_SIGNATURE, opj_event_msg(), OPJ_FALSE, opj_read_bytes, and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_jp2_read_jp2h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_jp2h (opj_jp2_tjp2,
    OPJ_BYTEp_header_data,
    OPJ_UINT32 p_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).

    -
    Parameters
    - - - - - -
    p_header_datathe data contained in the file header box.
    jp2the jpeg2000 file codec.
    p_header_sizethe size of the data contained in the file header box.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the JP2 Header box was successfully recognized.
    - -

    References EVT_ERROR, opj_jp2_header_handler::handler, opj_jp2::has_jp2h, JP2_IHDR, opj_jp2::jp2_img_state, JP2_IMG_STATE_NONE, JP2_IMG_STATE_UNKNOWN, opj_jp2::jp2_state, JP2_STATE_FILE_TYPE, JP2_STATE_HEADER, opj_jp2_box::length, opj_event_msg(), OPJ_FALSE, opj_jp2_img_find_handler(), opj_jp2_read_boxhdr_char(), OPJ_TRUE, and opj_jp2_box::type.

    - -
    -
    - -

    ◆ opj_jp2_read_pclr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_read_pclr (opj_jp2_tjp2,
    OPJ_BYTEp_pclr_header_data,
    OPJ_UINT32 p_pclr_header_size,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Collect palette data.

    -
    Parameters
    - - - - - -
    jp2JP2 handle
    p_pclr_header_dataFIXME DOC
    p_pclr_header_sizeFIXME DOC
    p_manager
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_jp2_pclr::channel_sign, opj_jp2_pclr::channel_size, opj_jp2_pclr::cmap, opj_jp2::color, opj_jp2_pclr::entries, EVT_ERROR, opj_jp2_color::jp2_pclr, opj_jp2_pclr::nr_channels, opj_jp2_pclr::nr_entries, opj_event_msg(), OPJ_FALSE, opj_free(), opj_malloc(), opj_read_bytes, and OPJ_TRUE.

    - -
    -
    - -

    ◆ opj_jp2_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_tp_jp2,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a tile header.

    -
    Parameters
    - - - - - - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_jp2::j2k, and opj_j2k_read_tile_header().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_tp_jp2,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -
    Parameters
    - - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_jp2::j2k, and opj_j2k_set_decode_area().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_tjp2,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the indices of the components to decode.

    -
    Parameters
    - - - - - -
    jp2JP2 decompressor handle
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager;
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_jp2::j2k, and opj_j2k_set_decoded_components().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decoded_resolution_factor()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_tp_jp2,
    OPJ_UINT32 res_factor,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_tjp2,
    OPJ_UINT32 num_threads 
    )
    -
    - -

    Allocates worker threads for the compressor/decompressor.

    -
    Parameters
    - - - -
    jp2JP2 decompressor handle
    num_threadsNumber of threads.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_jp2::j2k, and opj_j2k_set_threads().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_jp2_setup_decoder (opj_jp2_tjp2,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder decoding parameters using user parameters.

    -

    Decoding parameters are returned in jp2->j2k->cp.

    Parameters
    - - - -
    jp2JP2 decompressor handle
    parametersdecompression parameters
    -
    -
    - -

    References opj_jp2::color, opj_dparameters::flags, opj_jp2::ignore_pclr_cmap_cdef, opj_jp2::j2k, opj_jp2_color::jp2_has_colr, OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG, and opj_j2k_setup_decoder().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_setup_decoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_decoding_validation (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the validation ,i.e.

    -

    adds the procedures to launch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    - -

    References OPJ_TRUE, and OPJ_UNUSED.

    - -

    Referenced by opj_jp2_read_header().

    - -
    -
    - -

    ◆ opj_jp2_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_tjp2,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_setup_encoding_validation()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_encoding_validation (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the validation ,i.e.

    -

    adds the procedures to launch to make sure the codec parameters are valid. Developpers wanting to extend the library can add their own validation procedures.

    - -

    References opj_jp2::m_validation_list, OPJ_FALSE, opj_jp2_default_validation(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_start_compress().

    - -
    -
    - -

    ◆ opj_jp2_setup_end_header_reading()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_end_header_reading (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on reading header after the codestream.

    -

    Developpers wanting to extend the library can add their own writing procedures.

    - -

    References opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_end_decompress().

    - -
    -
    - -

    ◆ opj_jp2_setup_end_header_writing()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_end_header_writing (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on writing header after the codestream.

    -

    Developpers wanting to extend the library can add their own writing procedures.

    - -

    References opj_jp2::jpip_on, opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_write_jp2c(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_end_compress().

    - -
    -
    - -

    ◆ opj_jp2_setup_header_reading()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_header_reading (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on reading header.

    -

    Developpers wanting to extend the library can add their own writing procedures.

    - -

    References opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_read_header_procedure(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_read_header().

    - -
    -
    - -

    ◆ opj_jp2_setup_header_writing()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_setup_header_writing (opj_jp2_tjp2,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Sets up the procedures to do on writing header.

    -

    Developpers wanting to extend the library can add their own writing procedures.

    - -

    References opj_jp2::jpip_on, opj_jp2::m_procedure_list, OPJ_FALSE, opj_jp2_skip_jp2c(), opj_jp2_write_ftyp(), opj_jp2_write_jp(), opj_jp2_write_jp2h(), opj_jpip_skip_iptr(), opj_procedure_list_add_procedure(), and OPJ_TRUE.

    - -

    Referenced by opj_jp2_start_compress().

    - -
    -
    - -

    ◆ opj_jp2_skip_jp2c()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_skip_jp2c (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_jp2_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Starts a compression scheme, i.e.

    -

    validates the codec parameters, writes the header.

    -
    Parameters
    - - - - - -
    jp2the jpeg2000 file codec.
    streamthe stream object.
    p_imageFIXME DOC
    p_managerFIXME DOC
    -
    -
    -
    Returns
    true if the codec is valid.
    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, OPJ_FALSE, opj_j2k_start_compress(), opj_jp2_exec(), opj_jp2_setup_encoding_validation(), and opj_jp2_setup_header_writing().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_write_bpcc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BYTE * opj_jp2_write_bpcc (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    -
    -static
    -
    - -

    Writes the Bit per Component box.

    -
    Parameters
    - - - -
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    -
    -
    -
    Returns
    the data being copied.
    - -

    References opj_jp2_comps::bpcc, opj_jp2::comps, JP2_BPCC, opj_jp2::numcomps, opj_calloc(), and opj_write_bytes.

    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_write_cdef()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BYTE * opj_jp2_write_cdef (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    -
    -static
    -
    - -

    Writes the Channel Definition box.

    -
    Parameters
    - - - -
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    -
    -
    -
    Returns
    the data being copied.
    - -

    References opj_jp2_cdef_info::asoc, opj_jp2_cdef_info::cn, opj_jp2::color, opj_jp2_cdef::info, JP2_CDEF, opj_jp2_color::jp2_cdef, opj_jp2_cdef::n, opj_malloc(), opj_write_bytes, and opj_jp2_cdef_info::typ.

    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_write_colr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BYTE * opj_jp2_write_colr (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    -
    -static
    -
    - -

    Writes the Colour Specification box.

    -
    Parameters
    - - - -
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    -
    -
    -
    Returns
    the data being copied.
    - -

    References opj_jp2::approx, opj_jp2::color, opj_jp2::enumcs, opj_jp2_color::icc_profile_buf, opj_jp2_color::icc_profile_len, JP2_COLR, opj_jp2::meth, opj_calloc(), opj_write_bytes, and opj_jp2::precedence.

    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_write_ftyp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_write_ftyp (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes a FTYP box - File type box.

    -
    Parameters
    - - - - -
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if writing was successful.
    - -

    References opj_jp2::brand, opj_jp2::cl, EVT_ERROR, JP2_FTYP, opj_jp2::minversion, opj_jp2::numcl, opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_stream_write_data(), and opj_write_bytes.

    - -

    Referenced by opj_jp2_setup_header_writing().

    - -
    -
    - -

    ◆ opj_jp2_write_ihdr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BYTE * opj_jp2_write_ihdr (opj_jp2_tjp2,
    OPJ_UINT32p_nb_bytes_written 
    )
    -
    -static
    -
    - -

    Writes the Image Header box - Image Header box.

    -
    Parameters
    - - - -
    jp2jpeg2000 file codec.
    p_nb_bytes_writtenpointer to store the nb of bytes written by the function.
    -
    -
    -
    Returns
    the data being copied.
    - -

    References opj_jp2::bpc, opj_jp2::C, opj_jp2::h, opj_jp2::IPR, JP2_IHDR, opj_jp2::numcomps, opj_calloc(), opj_write_bytes, opj_jp2::UnkC, and opj_jp2::w.

    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ opj_jp2_write_jp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_write_jp (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes a jpeg2000 file signature box.

    -
    Parameters
    - - - - -
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if writing was successful.
    - -

    References JP2_JP, OPJ_FALSE, opj_stream_write_data(), OPJ_TRUE, OPJ_UNUSED, and opj_write_bytes.

    - -

    Referenced by opj_jp2_setup_header_writing().

    - -
    -
    - -

    ◆ opj_jp2_write_jp2c()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_write_jp2c (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the Jpeg2000 codestream Header box - JP2C Header box.

    -

    This function must be called AFTER the coding has been done.

    -
    Parameters
    - - - - -
    ciothe stream to write data to.
    jp2the jpeg2000 file codec.
    p_manageruser event manager.
    -
    -
    -
    Returns
    true if writing was successful.
    - -

    References EVT_ERROR, opj_jp2::j2k_codestream_offset, JP2_JP2C, opj_event_msg(), OPJ_FALSE, opj_stream_has_seek(), opj_stream_seek(), opj_stream_tell(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_jp2_setup_end_header_writing().

    - -
    -
    - -

    ◆ opj_jp2_write_jp2h()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jp2_write_jp2h (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).

    -
    Parameters
    - - - - -
    jp2the jpeg2000 file codec.
    streamthe stream to write data to.
    p_manageruser event manager.
    -
    -
    -
    Returns
    true if writing was successful.
    - -

    References opj_jp2::bpc, opj_jp2::color, EVT_ERROR, opj_jp2_img_header_writer_handler::handler, opj_jp2_color::jp2_cdef, JP2_JP2H, opj_jp2_img_header_writer_handler::m_data, opj_jp2_img_header_writer_handler::m_size, opj_event_msg(), OPJ_FALSE, opj_free(), opj_jp2_write_bpcc(), opj_jp2_write_cdef(), opj_jp2_write_colr(), opj_jp2_write_ihdr(), opj_stream_write_data(), OPJ_TRUE, and opj_write_bytes.

    - -

    Referenced by opj_jp2_setup_header_writing().

    - -
    -
    - -

    ◆ opj_jp2_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Writes a tile.

    -
    Parameters
    - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_jp2::j2k, and opj_j2k_write_tile().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jpip_skip_iptr()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_jpip_skip_iptr (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    -

    Variable Documentation

    - -

    ◆ jp2_header

    - -
    -
    - - - - - -
    - - - - -
    const opj_jp2_header_handler_t jp2_header[]
    -
    -static
    -
    -Initial value: -

    Referenced by opj_jp2_find_handler().

    - -
    -
    - -

    ◆ jp2_img_header

    - -
    -
    - - - - - -
    - - - - -
    const opj_jp2_header_handler_t jp2_img_header[]
    -
    -static
    -
    -
    -
    -
    static OPJ_BOOL opj_jp2_read_bpcc(opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
    Reads a Bit per Component box.
    Definition: jp2.c:727
    -
    static OPJ_BOOL opj_jp2_read_cmap(opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
    Collect component mapping data.
    Definition: jp2.c:1266
    -
    static OPJ_BOOL opj_jp2_read_jp2h(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:2690
    -
    #define JP2_JP2H
    JP2 header box (super-box)
    Definition: jp2.h:51
    -
    #define JP2_IHDR
    Image header box.
    Definition: jp2.h:52
    -
    #define JP2_COLR
    Colour specification box.
    Definition: jp2.h:53
    -
    #define JP2_CMAP
    Component Mapping box.
    Definition: jp2.h:57
    -
    #define JP2_CDEF
    Channel Definition box.
    Definition: jp2.h:58
    -
    static OPJ_BOOL opj_jp2_read_ihdr(opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
    Reads a IHDR box - Image Header box.
    Definition: jp2.c:561
    -
    static OPJ_BOOL opj_jp2_read_pclr(opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
    Collect palette data.
    Definition: jp2.c:1152
    -
    static OPJ_BOOL opj_jp2_read_cdef(opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.c:1392
    -
    #define JP2_JP
    JPEG 2000 signature box.
    Definition: jp2.h:49
    -
    #define JP2_PCLR
    Palette box.
    Definition: jp2.h:56
    -
    static OPJ_BOOL opj_jp2_read_colr(opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
    Reads the Color Specification box.
    Definition: jp2.c:1464
    -
    #define JP2_FTYP
    File type box.
    Definition: jp2.h:50
    -
    static OPJ_BOOL opj_jp2_read_ftyp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a a FTYP box - File type box.
    Definition: jp2.c:2585
    -
    static OPJ_BOOL opj_jp2_read_jp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file signature box.
    Definition: jp2.c:2536
    -
    #define JP2_BPCC
    Bits per component box.
    Definition: jp2.h:60
    - - - - diff --git a/build/doc/html/jp2_8h.html b/build/doc/html/jp2_8h.html deleted file mode 100644 index 3a9548ce3..000000000 --- a/build/doc/html/jp2_8h.html +++ /dev/null @@ -1,1792 +0,0 @@ - - - - - - - -OpenJPEG: jp2.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2.h File Reference
    -
    -
    - -

    The JPEG-2000 file format Reader/Writer (JP2) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Structures

    struct  opj_jp2_cdef_info
     Channel description: channel index, type, association. More...
     
    struct  opj_jp2_cdef
     Channel descriptions and number of descriptions. More...
     
    struct  opj_jp2_cmap_comp
     Component mappings: channel index, mapping type, palette index. More...
     
    struct  opj_jp2_pclr
     Palette data: table entries, palette columns. More...
     
    struct  opj_jp2_color
     Collector for ICC profile, palette, component mapping, channel description. More...
     
    struct  opj_jp2_comps
     JP2 component. More...
     
    struct  opj_jp2
     JPEG-2000 file format reader/writer. More...
     
    struct  opj_jp2_box
     JP2 Box. More...
     
    struct  opj_jp2_header_handler
     
    struct  opj_jp2_img_header_writer_handler
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define JP2_JP   0x6a502020
     JPEG 2000 signature box. More...
     
    #define JP2_FTYP   0x66747970
     File type box. More...
     
    #define JP2_JP2H   0x6a703268
     JP2 header box (super-box) More...
     
    #define JP2_IHDR   0x69686472
     Image header box. More...
     
    #define JP2_COLR   0x636f6c72
     Colour specification box. More...
     
    #define JP2_JP2C   0x6a703263
     Contiguous codestream box. More...
     
    #define JP2_URL   0x75726c20
     Data entry URL box. More...
     
    #define JP2_PCLR   0x70636c72
     Palette box. More...
     
    #define JP2_CMAP   0x636d6170
     Component Mapping box. More...
     
    #define JP2_CDEF   0x63646566
     Channel Definition box. More...
     
    #define JP2_DTBL   0x6474626c
     Data Reference box. More...
     
    #define JP2_BPCC   0x62706363
     Bits per component box. More...
     
    #define JP2_JP2   0x6a703220
     File type fields. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    typedef struct opj_jp2_cdef_info opj_jp2_cdef_info_t
     Channel description: channel index, type, association. More...
     
    typedef struct opj_jp2_cdef opj_jp2_cdef_t
     Channel descriptions and number of descriptions. More...
     
    typedef struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
     Component mappings: channel index, mapping type, palette index. More...
     
    typedef struct opj_jp2_pclr opj_jp2_pclr_t
     Palette data: table entries, palette columns. More...
     
    typedef struct opj_jp2_color opj_jp2_color_t
     Collector for ICC profile, palette, component mapping, channel description. More...
     
    typedef struct opj_jp2_comps opj_jp2_comps_t
     JP2 component. More...
     
    typedef struct opj_jp2 opj_jp2_t
     JPEG-2000 file format reader/writer. More...
     
    typedef struct opj_jp2_box opj_jp2_box_t
     JP2 Box. More...
     
    typedef struct opj_jp2_header_handler opj_jp2_header_handler_t
     
    typedef struct opj_jp2_img_header_writer_handler opj_jp2_img_header_writer_handler_t
     
    - - - - - - -

    -Enumerations

    enum  JP2_STATE {
    -  JP2_STATE_NONE = 0x0, -JP2_STATE_SIGNATURE = 0x1, -JP2_STATE_FILE_TYPE = 0x2, -JP2_STATE_HEADER = 0x4, -
    -  JP2_STATE_CODESTREAM = 0x8, -JP2_STATE_END_CODESTREAM = 0x10, -JP2_STATE_UNKNOWN = 0x7fffffff -
    - }
     < Resolution box (super-box) More...
     
    enum  JP2_IMG_STATE { JP2_IMG_STATE_NONE = 0x0, -JP2_IMG_STATE_UNKNOWN = 0x7fffffff - }
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    void opj_jp2_setup_decoder (opj_jp2_t *jp2, opj_dparameters_t *parameters)
     Setup the decoder decoding parameters using user parameters. More...
     
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_t *jp2, OPJ_UINT32 num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL opj_jp2_decode (opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Decode an image from a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL opj_jp2_encode (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
     Encode an image into a JPEG-2000 file stream. More...
     
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
     Starts a compression scheme, i.e. More...
     
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the compression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     Ends the decompression procedures and possibiliy add data to be read after the codestream. More...
     
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
     Reads a jpeg2000 file header structure. More...
     
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_t *jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
     Sets the indices of the components to decode. More...
     
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Reads a tile header. More...
     
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Writes a tile. More...
     
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
     Decode tile data. More...
     
    opj_jp2_topj_jp2_create (OPJ_BOOL p_is_decoder)
     Creates a jpeg2000 file decompressor. More...
     
    void opj_jp2_destroy (opj_jp2_t *jp2)
     Destroy a JP2 decompressor handle. More...
     
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL opj_jp2_get_tile (opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
     
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
     Specify extra options for the encoder. More...
     
    void jp2_dump (opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
     Dump some elements from the JP2 decompression structure . More...
     
    opj_codestream_info_v2_tjp2_get_cstr_info (opj_jp2_t *p_jp2)
     Get the codestream info from a JPEG2000 codec. More...
     
    opj_codestream_index_tjp2_get_cstr_index (opj_jp2_t *p_jp2)
     Get the codestream index from a JPEG2000 codec. More...
     
    -

    Detailed Description

    -

    The JPEG-2000 file format Reader/Writer (JP2)

    -

    Macro Definition Documentation

    - -

    ◆ JP2_BPCC

    - -
    -
    - - - - -
    #define JP2_BPCC   0x62706363
    -
    - -

    Bits per component box.

    - -
    -
    - -

    ◆ JP2_CDEF

    - -
    -
    - - - - -
    #define JP2_CDEF   0x63646566
    -
    - -

    Channel Definition box.

    - -
    -
    - -

    ◆ JP2_CMAP

    - -
    -
    - - - - -
    #define JP2_CMAP   0x636d6170
    -
    - -

    Component Mapping box.

    - -
    -
    - -

    ◆ JP2_COLR

    - -
    -
    - - - - -
    #define JP2_COLR   0x636f6c72
    -
    - -

    Colour specification box.

    - -
    -
    - -

    ◆ JP2_DTBL

    - -
    -
    - - - - -
    #define JP2_DTBL   0x6474626c
    -
    - -

    Data Reference box.

    - -
    -
    - -

    ◆ JP2_FTYP

    - -
    -
    - - - - -
    #define JP2_FTYP   0x66747970
    -
    - -

    File type box.

    - -
    -
    - -

    ◆ JP2_IHDR

    - -
    -
    - - - - -
    #define JP2_IHDR   0x69686472
    -
    - -

    Image header box.

    - -
    -
    - -

    ◆ JP2_JP

    - -
    -
    - - - - -
    #define JP2_JP   0x6a502020
    -
    - -

    JPEG 2000 signature box.

    - -
    -
    - -

    ◆ JP2_JP2

    - -
    -
    - - - - -
    #define JP2_JP2   0x6a703220
    -
    - -

    File type fields.

    - -
    -
    - -

    ◆ JP2_JP2C

    - -
    -
    - - - - -
    #define JP2_JP2C   0x6a703263
    -
    - -

    Contiguous codestream box.

    - -
    -
    - -

    ◆ JP2_JP2H

    - -
    -
    - - - - -
    #define JP2_JP2H   0x6a703268
    -
    - -

    JP2 header box (super-box)

    - -
    -
    - -

    ◆ JP2_PCLR

    - -
    -
    - - - - -
    #define JP2_PCLR   0x70636c72
    -
    - -

    Palette box.

    - -
    -
    - -

    ◆ JP2_URL

    - -
    -
    - - - - -
    #define JP2_URL   0x75726c20
    -
    - -

    Data entry URL box.

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ opj_jp2_box_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_box opj_jp2_box_t
    -
    - -

    JP2 Box.

    - -
    -
    - -

    ◆ opj_jp2_cdef_info_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_cdef_info opj_jp2_cdef_info_t
    -
    - -

    Channel description: channel index, type, association.

    - -
    -
    - -

    ◆ opj_jp2_cdef_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_cdef opj_jp2_cdef_t
    -
    - -

    Channel descriptions and number of descriptions.

    - -
    -
    - -

    ◆ opj_jp2_cmap_comp_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
    -
    - -

    Component mappings: channel index, mapping type, palette index.

    - -
    -
    - -

    ◆ opj_jp2_color_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_color opj_jp2_color_t
    -
    - -

    Collector for ICC profile, palette, component mapping, channel description.

    - -
    -
    - -

    ◆ opj_jp2_comps_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_comps opj_jp2_comps_t
    -
    - -

    JP2 component.

    - -
    -
    - -

    ◆ opj_jp2_header_handler_t

    - -
    -
    - -
    -
    - -

    ◆ opj_jp2_img_header_writer_handler_t

    - - - -

    ◆ opj_jp2_pclr_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_pclr opj_jp2_pclr_t
    -
    - -

    Palette data: table entries, palette columns.

    - -
    -
    - -

    ◆ opj_jp2_t

    - -
    -
    - - - - -
    typedef struct opj_jp2 opj_jp2_t
    -
    - -

    JPEG-2000 file format reader/writer.

    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ JP2_IMG_STATE

    - -
    -
    - - - - -
    enum JP2_IMG_STATE
    -
    - - - -
    Enumerator
    JP2_IMG_STATE_NONE 
    JP2_IMG_STATE_UNKNOWN 
    - -
    -
    - -

    ◆ JP2_STATE

    - -
    -
    - - - - -
    enum JP2_STATE
    -
    - -

    < Resolution box (super-box)

    -

    < Intellectual property box < XML box < UUID box < UUID info box (super-box) < UUID list box

    - - - - - - - - -
    Enumerator
    JP2_STATE_NONE 
    JP2_STATE_SIGNATURE 
    JP2_STATE_FILE_TYPE 
    JP2_STATE_HEADER 
    JP2_STATE_CODESTREAM 
    JP2_STATE_END_CODESTREAM 
    JP2_STATE_UNKNOWN 
    - -
    -
    -

    Function Documentation

    - -

    ◆ jp2_dump()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void jp2_dump (opj_jp2_tp_jp2,
    OPJ_INT32 flag,
    FILE * out_stream 
    )
    -
    - -

    Dump some elements from the JP2 decompression structure .

    -
    Parameters
    - - - - -
    p_jp2the jp2 codec.
    flagflag to describe what elements are dump.
    out_streamoutput stream where dump the elements.
    -
    -
    - -

    References opj_jp2::j2k, and j2k_dump().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ jp2_get_cstr_index()

    - -
    -
    - - - - - - - - -
    opj_codestream_index_t* jp2_get_cstr_index (opj_jp2_tp_jp2)
    -
    - -

    Get the codestream index from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_jp2jp2 codec.
    -
    -
    -
    Returns
    the codestream index extract from the jpg2000 codec
    - -

    References opj_jp2::j2k, and j2k_get_cstr_index().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ jp2_get_cstr_info()

    - -
    -
    - - - - - - - - -
    opj_codestream_info_v2_t* jp2_get_cstr_info (opj_jp2_tp_jp2)
    -
    - -

    Get the codestream info from a JPEG2000 codec.

    -
    Parameters
    - - -
    p_jp2jp2 codec.
    -
    -
    -
    Returns
    the codestream information extract from the jpg2000 codec
    - -

    References opj_jp2::j2k, and j2k_get_cstr_info().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_create()

    - - - -

    ◆ opj_jp2_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_decode (opj_jp2_tjp2,
    opj_stream_private_tp_stream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_decode_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Decode tile data.

    -
    Parameters
    - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    -
    Returns
    FIXME DOC
    - -

    References opj_jp2::j2k, and opj_j2k_decode_tile().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_destroy()

    - - - -

    ◆ opj_jp2_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_encode (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encode an image into a JPEG-2000 file stream.

    -
    Parameters
    - - - - -
    jp2JP2 compressor handle
    streamOutput buffer stream
    p_managerevent manager
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_jp2::j2k, and opj_j2k_encode().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_encoder_set_extra_options (opj_jp2_tp_jp2,
    const char *const * p_options,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Specify extra options for the encoder.

    -
    Parameters
    - - - - -
    p_jp2the jpeg2000 codec.
    p_optionsoptions
    p_managerthe user event manager
    -
    -
    -
    See also
    opj_encoder_set_extra_options() for more details.
    - -

    References opj_jp2::j2k, and opj_j2k_encoder_set_extra_options().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_end_compress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the compression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_compress(), opj_jp2_exec(), and opj_jp2_setup_end_header_writing().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_end_decompress (opj_jp2_tjp2,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Ends the decompression procedures and possibiliy add data to be read after the codestream.

    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, OPJ_FALSE, opj_j2k_end_decompress(), opj_jp2_exec(), and opj_jp2_setup_end_header_reading().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_get_tile()

    - - - -

    ◆ opj_jp2_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_read_header (opj_stream_private_tp_stream,
    opj_jp2_tjp2,
    opj_image_t ** p_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a jpeg2000 file header structure.

    -
    Parameters
    - - - - - -
    p_streamthe stream to read data from.
    jp2the jpeg2000 file header structure.
    p_imageFIXME DOC
    p_managerthe user event manager.
    -
    -
    -
    Returns
    true if the box is valid.
    - -

    References EVT_ERROR, opj_jp2::has_ihdr, opj_jp2::has_jp2h, opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, opj_event_msg(), OPJ_FALSE, opj_j2k_read_header(), opj_jp2_exec(), opj_jp2_setup_decoding_validation(), and opj_jp2_setup_header_reading().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_read_tile_header (opj_jp2_tp_jp2,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_go_on,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reads a tile header.

    -
    Parameters
    - - - - - - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_data_sizeFIXME DOC
    p_tile_x0FIXME DOC
    p_tile_y0FIXME DOC
    p_tile_x1FIXME DOC
    p_tile_y1FIXME DOC
    p_nb_compsFIXME DOC
    p_go_onFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_jp2::j2k, and opj_j2k_read_tile_header().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decode_area (opj_jp2_tp_jp2,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -
    Parameters
    - - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_imageFIXME DOC
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_jp2::j2k, and opj_j2k_set_decode_area().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decoded_components (opj_jp2_tjp2,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Sets the indices of the components to decode.

    -
    Parameters
    - - - - - -
    jp2JP2 decompressor handle
    numcompsNumber of components to decode.
    comps_indicesArray of num_compts indices (numbering starting at 0) corresponding to the components to decode.
    p_managerEvent manager;
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_jp2::j2k, and opj_j2k_set_decoded_components().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_set_decoded_resolution_factor()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor (opj_jp2_tp_jp2,
    OPJ_UINT32 res_factor,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_set_threads (opj_jp2_tjp2,
    OPJ_UINT32 num_threads 
    )
    -
    - -

    Allocates worker threads for the compressor/decompressor.

    -
    Parameters
    - - - -
    jp2JP2 decompressor handle
    num_threadsNumber of threads.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_jp2::j2k, and opj_j2k_set_threads().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_jp2_setup_decoder (opj_jp2_tjp2,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder decoding parameters using user parameters.

    -

    Decoding parameters are returned in jp2->j2k->cp.

    Parameters
    - - - -
    jp2JP2 decompressor handle
    parametersdecompression parameters
    -
    -
    - -

    References opj_jp2::color, opj_dparameters::flags, opj_jp2::ignore_pclr_cmap_cdef, opj_jp2::j2k, opj_jp2_color::jp2_has_colr, OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG, and opj_j2k_setup_decoder().

    - -

    Referenced by opj_create_decompress().

    - -
    -
    - -

    ◆ opj_jp2_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_setup_encoder (opj_jp2_tjp2,
    opj_cparameters_tparameters,
    opj_image_timage,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_jp2_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_start_compress (opj_jp2_tjp2,
    opj_stream_private_tstream,
    opj_image_tp_image,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Starts a compression scheme, i.e.

    -

    validates the codec parameters, writes the header.

    -
    Parameters
    - - - - - -
    jp2the jpeg2000 file codec.
    streamthe stream object.
    p_imageFIXME DOC
    p_managerFIXME DOC
    -
    -
    -
    Returns
    true if the codec is valid.
    - -

    References opj_jp2::j2k, opj_jp2::m_procedure_list, opj_jp2::m_validation_list, OPJ_FALSE, opj_j2k_start_compress(), opj_jp2_exec(), opj_jp2_setup_encoding_validation(), and opj_jp2_setup_header_writing().

    - -

    Referenced by opj_create_compress().

    - -
    -
    - -

    ◆ opj_jp2_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_jp2_write_tile (opj_jp2_tp_jp2,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_private_tp_stream,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Writes a tile.

    -
    Parameters
    - - - - - - - -
    p_jp2the jpeg2000 codec.
    p_tile_indexFIXME DOC
    p_dataFIXME DOC
    p_data_sizeFIXME DOC
    p_streamthe stream to write data to.
    p_managerthe user event manager.
    -
    -
    - -

    References opj_jp2::j2k, and opj_j2k_write_tile().

    - -

    Referenced by opj_create_compress().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jp2_8h_source.html b/build/doc/html/jp2_8h_source.html deleted file mode 100644 index f3cf69c6c..000000000 --- a/build/doc/html/jp2_8h_source.html +++ /dev/null @@ -1,650 +0,0 @@ - - - - - - - -OpenJPEG: jp2.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    jp2.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    10  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    11  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    12  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    13  * All rights reserved.
    -
    14  *
    -
    15  * Redistribution and use in source and binary forms, with or without
    -
    16  * modification, are permitted provided that the following conditions
    -
    17  * are met:
    -
    18  * 1. Redistributions of source code must retain the above copyright
    -
    19  * notice, this list of conditions and the following disclaimer.
    -
    20  * 2. Redistributions in binary form must reproduce the above copyright
    -
    21  * notice, this list of conditions and the following disclaimer in the
    -
    22  * documentation and/or other materials provided with the distribution.
    -
    23  *
    -
    24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    25  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    27  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    28  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    29  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    30  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    31  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    32  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    33  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    34  * POSSIBILITY OF SUCH DAMAGE.
    -
    35  */
    -
    36 #ifndef OPJ_JP2_H
    -
    37 #define OPJ_JP2_H
    -
    38 
    -
    46 
    -
    47 /*#define JPIP_JPIP 0x6a706970*/
    -
    48 
    -
    49 #define JP2_JP 0x6a502020
    -
    50 #define JP2_FTYP 0x66747970
    -
    51 #define JP2_JP2H 0x6a703268
    -
    52 #define JP2_IHDR 0x69686472
    -
    53 #define JP2_COLR 0x636f6c72
    -
    54 #define JP2_JP2C 0x6a703263
    -
    55 #define JP2_URL 0x75726c20
    -
    56 #define JP2_PCLR 0x70636c72
    -
    57 #define JP2_CMAP 0x636d6170
    -
    58 #define JP2_CDEF 0x63646566
    -
    59 #define JP2_DTBL 0x6474626c
    -
    60 #define JP2_BPCC 0x62706363
    -
    61 #define JP2_JP2 0x6a703220
    -
    63 /* For the future */
    -
    64 /* #define JP2_RES 0x72657320 */
    -
    65 /* #define JP2_JP2I 0x6a703269 */
    -
    66 /* #define JP2_XML 0x786d6c20 */
    -
    67 /* #define JP2_UUID 0x75756994 */
    -
    68 /* #define JP2_UINF 0x75696e66 */
    -
    69 /* #define JP2_ULST 0x756c7374 */
    -
    71 /* ----------------------------------------------------------------------- */
    -
    72 
    -
    73 typedef enum {
    - - - - - - -
    80  JP2_STATE_UNKNOWN = 0x7fffffff /* ISO C restricts enumerator values to range of 'int' */
    -
    81 }
    -
    82 JP2_STATE;
    -
    83 
    -
    84 typedef enum {
    - -
    86  JP2_IMG_STATE_UNKNOWN = 0x7fffffff
    -
    87 }
    - -
    89 
    -
    93 typedef struct opj_jp2_cdef_info {
    - - -
    96 
    -
    100 typedef struct opj_jp2_cdef {
    - - - -
    104 
    -
    108 typedef struct opj_jp2_cmap_comp {
    - - - -
    112 
    -
    116 typedef struct opj_jp2_pclr {
    - - - - - - - -
    124 
    -
    128 typedef struct opj_jp2_color {
    - - -
    131 
    - - - - -
    136 
    -
    140 typedef struct opj_jp2_comps {
    - - - - -
    145 
    -
    149 typedef struct opj_jp2 {
    - - - -
    156 
    -
    157  /* width of image */
    - -
    159  /* height of image */
    - -
    161  /* number of components in the image */
    - - - - - - - - - - - - - - -
    176  /* FIXME: The following two variables are used to save offset
    -
    177  as we write out a JP2 file to disk. This mechanism is not flexible
    -
    178  as codec writers will need to extand those fields as new part
    -
    179  of the standard are implemented.
    -
    180  */
    - - - - - -
    186 
    - -
    188 
    - - - -
    192 }
    -
    193 opj_jp2_t;
    -
    194 
    -
    198 typedef struct opj_jp2_box {
    - - - -
    202 } opj_jp2_box_t;
    -
    203 
    -
    204 typedef struct opj_jp2_header_handler {
    -
    205  /* marker value */
    - -
    207  /* action linked to the marker */
    - -
    209  OPJ_BYTE *p_header_data,
    -
    210  OPJ_UINT32 p_header_size,
    -
    211  opj_event_mgr_t * p_manager);
    -
    212 }
    - -
    214 
    -
    215 
    - -
    217  /* action to perform */
    -
    218  OPJ_BYTE* (*handler)(opj_jp2_t *jp2, OPJ_UINT32 * p_data_size);
    -
    219  /* result of the action : data */
    - -
    221  /* size of data */
    - -
    223 }
    - -
    225 
    -
    228 /* ----------------------------------------------------------------------- */
    -
    229 
    -
    236 void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters);
    -
    237 
    - -
    245 
    - -
    256  opj_stream_private_t *p_stream,
    -
    257  opj_image_t* p_image,
    -
    258  opj_event_mgr_t * p_manager);
    -
    259 
    - -
    271  opj_cparameters_t *parameters,
    -
    272  opj_image_t *image,
    -
    273  opj_event_mgr_t * p_manager);
    -
    274 
    - -
    283  opj_stream_private_t *stream,
    -
    284  opj_event_mgr_t * p_manager);
    -
    285 
    -
    286 
    - -
    298  opj_stream_private_t *stream,
    -
    299  opj_image_t * p_image,
    -
    300  opj_event_mgr_t * p_manager);
    -
    301 
    -
    302 
    - - -
    309  opj_event_mgr_t * p_manager);
    -
    310 
    -
    311 /* ----------------------------------------------------------------------- */
    -
    312 
    - - -
    319  opj_event_mgr_t * p_manager);
    -
    320 
    - -
    332  opj_jp2_t *jp2,
    -
    333  opj_image_t ** p_image,
    -
    334  opj_event_mgr_t * p_manager);
    -
    335 
    - -
    347  OPJ_UINT32 numcomps,
    -
    348  const OPJ_UINT32* comps_indices,
    -
    349  opj_event_mgr_t * p_manager);
    -
    350 
    - -
    366  OPJ_UINT32 * p_tile_index,
    -
    367  OPJ_UINT32 * p_data_size,
    -
    368  OPJ_INT32 * p_tile_x0,
    -
    369  OPJ_INT32 * p_tile_y0,
    -
    370  OPJ_INT32 * p_tile_x1,
    -
    371  OPJ_INT32 * p_tile_y1,
    -
    372  OPJ_UINT32 * p_nb_comps,
    -
    373  OPJ_BOOL * p_go_on,
    -
    374  opj_stream_private_t *p_stream,
    -
    375  opj_event_mgr_t * p_manager);
    -
    376 
    - -
    388  OPJ_UINT32 p_tile_index,
    -
    389  OPJ_BYTE * p_data,
    -
    390  OPJ_UINT32 p_data_size,
    -
    391  opj_stream_private_t *p_stream,
    -
    392  opj_event_mgr_t * p_manager);
    -
    393 
    - -
    406  OPJ_UINT32 p_tile_index,
    -
    407  OPJ_BYTE * p_data,
    -
    408  OPJ_UINT32 p_data_size,
    -
    409  opj_stream_private_t *p_stream,
    -
    410  opj_event_mgr_t * p_manager);
    -
    411 
    -
    417 opj_jp2_t* opj_jp2_create(OPJ_BOOL p_is_decoder);
    -
    418 
    -
    423 void opj_jp2_destroy(opj_jp2_t *jp2);
    -
    424 
    -
    425 
    - -
    440  opj_image_t* p_image,
    -
    441  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    -
    442  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
    -
    443  opj_event_mgr_t * p_manager);
    -
    444 
    - -
    449  opj_stream_private_t *p_stream,
    -
    450  opj_image_t* p_image,
    -
    451  opj_event_mgr_t * p_manager,
    -
    452  OPJ_UINT32 tile_index);
    -
    453 
    -
    454 
    - -
    459  OPJ_UINT32 res_factor,
    -
    460  opj_event_mgr_t * p_manager);
    -
    461 
    - -
    472  opj_jp2_t *p_jp2,
    -
    473  const char* const* p_options,
    -
    474  opj_event_mgr_t * p_manager);
    -
    475 
    -
    476 
    -
    477 /* TODO MSD: clean these 3 functions */
    -
    486 void jp2_dump(opj_jp2_t* p_jp2, OPJ_INT32 flag, FILE* out_stream);
    -
    487 
    - -
    496 
    - -
    505 
    -
    506 
    -
    510 
    -
    511 #endif /* OPJ_JP2_H */
    -
    512 
    -
    -
    OPJ_UINT32 approx
    Definition: jp2.h:168
    -
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    @ JP2_STATE_SIGNATURE
    Definition: jp2.h:75
    -
    struct opj_jp2_header_handler opj_jp2_header_handler_t
    -
    opj_j2k_dec_t m_decoder
    Definition: j2k.h:557
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    static OPJ_BOOL opj_jp2_check_color(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
    Definition: jp2.c:894
    -
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    -
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    -
    JP2_STATE
    < Resolution box (super-box)
    Definition: jp2.h:73
    -
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    -
    @ OPJ_CLRSPC_EYCC
    e-YCC
    Definition: openjpeg.h:315
    -
    Palette data: table entries, palette columns.
    Definition: jp2.h:116
    -
    OPJ_UINT32 w
    Definition: jp2.h:158
    -
    opj_image_t * image
    image header
    Definition: tcd.h:265
    -
    static OPJ_BOOL opj_jp2_read_bpcc(opj_jp2_t *jp2, OPJ_BYTE *p_bpc_header_data, OPJ_UINT32 p_bpc_header_size, opj_event_mgr_t *p_manager)
    Reads a Bit per Component box.
    Definition: jp2.c:727
    -
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    -
    static OPJ_BOOL opj_jp2_read_header_procedure(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2261
    -
    OPJ_UINT32 precedence
    Definition: jp2.h:170
    -
    static const opj_jp2_header_handler_t jp2_header[]
    Definition: jp2.c:425
    -
    static OPJ_BOOL opj_jpip_skip_iptr(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2662
    -
    opj_cp_t m_cp
    Coding parameters.
    Definition: j2k.h:569
    -
    #define opj_write_double
    Definition: cio.h:66
    -
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    -
    opj_jp2_cmap_comp_t * cmap
    Definition: jp2.h:120
    -
    static OPJ_BOOL opj_jp2_read_cmap(opj_jp2_t *jp2, OPJ_BYTE *p_cmap_header_data, OPJ_UINT32 p_cmap_header_size, opj_event_mgr_t *p_manager)
    Collect component mapping data.
    Definition: jp2.c:1266
    -
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    -
    #define JP2_JP2
    File type fields.
    Definition: jp2.h:61
    -
    JPEG-2000 codestream reader/writer.
    Definition: j2k.h:551
    -
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    -
    struct opj_procedure_list * m_validation_list
    list of validation procedures
    Definition: jp2.h:153
    -
    OPJ_UINT32 C
    Definition: jp2.h:164
    -
    OPJ_BOOL opj_stream_has_seek(const opj_stream_private_t *p_stream)
    Tells if the given stream is seekable.
    Definition: cio.c:648
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    -
    OPJ_UINT32 * entries
    Definition: jp2.h:117
    -
    void opj_procedure_list_destroy(opj_procedure_list_t *p_list)
    Destroys a validation list.
    Definition: function_list.c:58
    -
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    @ JP2_IMG_STATE_NONE
    Definition: jp2.h:85
    -
    JPEG-2000 file format reader/writer.
    Definition: jp2.h:149
    -
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    -
    OPJ_BYTE mtyp
    Definition: jp2.h:110
    -
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    -
    OPJ_BOOL ignore_pclr_cmap_cdef
    Definition: jp2.h:189
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    static const opj_jp2_header_handler_t jp2_img_header[]
    Definition: jp2.c:431
    -
    OPJ_OFF_T opj_stream_get_number_byte_left(const opj_stream_private_t *p_stream)
    Get the number of bytes left before the end of the stream (similar to cio_numbytesleft).
    Definition: cio.c:584
    -
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    -
    static void opj_jp2_apply_cdef(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *)
    Definition: jp2.c:1329
    -
    union opj_j2k::@1 m_specific_param
    -
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    -
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    -
    OPJ_UINT16 cn
    Definition: jp2.h:94
    -
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    -
    struct opj_jp2_cdef_info opj_jp2_cdef_info_t
    Channel description: channel index, type, association.
    -
    OPJ_BOOL jpip_on
    Enable JPIP indexing.
    Definition: openjpeg.h:524
    -
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    -
    OPJ_UINT32 opj_procedure_list_get_nb_procedures(opj_procedure_list_t *p_validation_list)
    Gets the number of validation procedures.
    Definition: function_list.c:102
    -
    OPJ_UINT32 ihdr_h
    Image height coming from JP2 IHDR box.
    Definition: j2k.h:593
    -
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    -
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    -
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    -
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    static OPJ_BOOL opj_jp2_skip_jp2c(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2644
    -
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    -
    static OPJ_BOOL opj_jp2_read_boxhdr(opj_jp2_box_t *box, OPJ_UINT32 *p_number_bytes_read, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Reads a box header.
    Definition: jp2.c:473
    -
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    -
    static OPJ_BOOL opj_jp2_apply_pclr(opj_image_t *image, opj_jp2_color_t *color, opj_event_mgr_t *p_manager)
    Apply collected palette data.
    Definition: jp2.c:1036
    -
    OPJ_UINT32 brand
    Definition: jp2.h:171
    -
    Channel description: channel index, type, association.
    Definition: jp2.h:93
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    struct opj_jp2_pclr opj_jp2_pclr_t
    Palette data: table entries, palette columns.
    -
    opj_jp2_pclr_t * jp2_pclr
    Definition: jp2.h:133
    -
    Message handler object used for.
    Definition: event.h:50
    -
    OPJ_UINT16 nr_entries
    Definition: jp2.h:121
    -
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    -
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    -
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    -
    OPJ_BOOL jpip_on
    Definition: jp2.h:183
    -
    OPJ_INT32 init_pos
    Definition: jp2.h:201
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_BITFIELD allow_different_bit_depth_sign
    whether different bit depth or sign per component is allowed.
    Definition: j2k.h:452
    -
    #define JP2_URL
    Data entry URL box.
    Definition: jp2.h:55
    -
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    -
    OPJ_UINT16 n
    Definition: jp2.h:102
    -
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    -
    OPJ_UINT32 type
    Definition: jp2.h:200
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    static OPJ_BOOL opj_jp2_read_jp2h(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:2690
    -
    @ JP2_STATE_END_CODESTREAM
    Definition: jp2.h:79
    -
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    -
    @ OPJ_CLRSPC_GRAY
    grayscale
    Definition: openjpeg.h:313
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    OPJ_UINT32 h
    Definition: jp2.h:160
    -
    @ JP2_IMG_STATE_UNKNOWN
    Definition: jp2.h:86
    -
    @ OPJ_CLRSPC_CMYK
    CMYK.
    Definition: openjpeg.h:316
    -
    OPJ_UINT32 * cl
    Definition: jp2.h:174
    -
    static OPJ_BYTE * opj_jp2_write_ihdr(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Image Header box - Image Header box.
    Definition: jp2.c:636
    -
    @ JP2_STATE_HEADER
    Definition: jp2.h:77
    -
    OPJ_BYTE nr_channels
    Definition: jp2.h:122
    -
    struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
    Component mappings: channel index, mapping type, palette index.
    -
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    -
    Compression parameters.
    Definition: openjpeg.h:387
    -
    OPJ_BYTE jp2_has_colr
    Definition: jp2.h:134
    -
    OPJ_UINT32 minversion
    Definition: jp2.h:172
    -
    struct opj_jp2_comps opj_jp2_comps_t
    JP2 component.
    -
    Collector for ICC profile, palette, component mapping, channel description.
    Definition: jp2.h:128
    -
    static const opj_jp2_header_handler_t * opj_jp2_find_handler(OPJ_UINT32 p_id)
    Finds the execution function related to the given box id.
    Definition: jp2.c:2492
    -
    @ OPJ_CLRSPC_UNKNOWN
    not supported by the library
    Definition: openjpeg.h:310
    -
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    -
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    -
    OPJ_UINT32 ihdr_w
    Image width coming from JP2 IHDR box.
    Definition: j2k.h:590
    -
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    -
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    -
    #define JP2_JP2H
    JP2 header box (super-box)
    Definition: jp2.h:51
    -
    @ OPJ_CLRSPC_SRGB
    sRGB
    Definition: openjpeg.h:312
    -
    OPJ_BYTE pcol
    Definition: jp2.h:110
    -
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    -
    #define JP2_IHDR
    Image header box.
    Definition: jp2.h:52
    -
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    -
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    -
    #define OPJ_UNUSED(x)
    Definition: jp2.c:47
    -
    static OPJ_BOOL opj_jp2_read_boxhdr_char(opj_jp2_box_t *box, OPJ_BYTE *p_data, OPJ_UINT32 *p_number_bytes_read, OPJ_UINT32 p_box_max_size, opj_event_mgr_t *p_manager)
    Reads a box header.
    Definition: jp2.c:2764
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    -
    unsigned int flags
    Definition: openjpeg.h:604
    -
    static OPJ_BOOL opj_jp2_write_jp(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes a jpeg2000 file signature box.
    Definition: jp2.c:1861
    -
    @ JP2_STATE_UNKNOWN
    Definition: jp2.h:80
    - -
    OPJ_UINT32 jp2_state
    Definition: jp2.h:184
    -
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    -
    OPJ_UINT32 sgnd
    Definition: jp2.h:142
    -
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    -
    static OPJ_BOOL opj_jp2_setup_end_header_writing(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header after the codestream.
    Definition: jp2.c:2153
    -
    opj_procedure_list_t * opj_procedure_list_create()
    Creates a validation list.
    Definition: function_list.c:39
    -
    static void opj_jp2_free_pclr(opj_jp2_color_t *color)
    Definition: jp2.c:880
    -
    static OPJ_BOOL opj_jp2_setup_encoding_validation(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: jp2.c:2880
    -
    OPJ_BOOL opj_procedure_list_add_procedure(opj_procedure_list_t *p_validation_list, opj_procedure p_procedure, opj_event_mgr_t *p_manager)
    Adds a new validation procedure.
    Definition: function_list.c:70
    -
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    -
    #define JP2_COLR
    Colour specification box.
    Definition: jp2.h:53
    -
    OPJ_BYTE * channel_sign
    Definition: jp2.h:118
    -
    OPJ_UINT32 m_size
    Definition: jp2.h:222
    -
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    -
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    static OPJ_BOOL opj_jp2_default_validation(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: jp2.c:2204
    -
    OPJ_UINT32 m_numcomps_to_decode
    Definition: j2k.h:486
    -
    #define JP2_CMAP
    Component Mapping box.
    Definition: jp2.h:57
    -
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    -
    OPJ_OFF_T j2k_codestream_offset
    Definition: jp2.h:181
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    void opj_procedure_list_clear(opj_procedure_list_t *p_validation_list)
    Clears the list of validation procedures.
    Definition: function_list.c:114
    -
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    -
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_UINT32 bpc
    Definition: jp2.h:163
    -
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    -
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    -
    struct opj_procedure_list * m_procedure_list
    list of execution procedures
    Definition: jp2.h:155
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    -
    A list of procedures.
    Definition: function_list.h:57
    -
    OPJ_UINT32 id
    Definition: jp2.h:206
    -
    #define JPIP_IPTR
    Definition: indexbox_manager.h:55
    -
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    -
    opj_jp2_color_t color
    Definition: jp2.h:187
    -
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    OPJ_UINT32 bpcc
    Definition: jp2.h:143
    -
    OPJ_UINT32 jp2_img_state
    Definition: jp2.h:185
    -
    static OPJ_BOOL opj_jp2_setup_header_reading(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header.
    Definition: jp2.c:2946
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    OPJ_UINT16 asoc
    Definition: jp2.h:94
    -
    OPJ_UINT32 icc_profile_len
    Definition: jp2.h:130
    -
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    -
    struct opj_jp2_cdef opj_jp2_cdef_t
    Channel descriptions and number of descriptions.
    -
    @ OPJ_CLRSPC_SYCC
    YUV.
    Definition: openjpeg.h:314
    -
    #define OPJ_BOX_SIZE
    Definition: jp2.c:45
    -
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    -
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    -
    OPJ_UINT32 meth
    Definition: jp2.h:167
    -
    @ JP2_STATE_NONE
    Definition: jp2.h:74
    -
    #define JP2_JP2C
    Contiguous codestream box.
    Definition: jp2.h:54
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_OFF_T jpip_iptr_offset
    Definition: jp2.h:182
    -
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    -
    opj_jp2_cdef_info_t * info
    Definition: jp2.h:101
    -
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    -
    #define JPIP_FIDX
    Definition: indexbox_manager.h:52
    -
    OPJ_BYTE * m_data
    Definition: jp2.h:220
    -
    opj_procedure * opj_procedure_list_get_first_procedure(opj_procedure_list_t *p_validation_list)
    Gets the pointer on the first validation procedure.
    Definition: function_list.c:108
    -
    struct opj_jp2 opj_jp2_t
    JPEG-2000 file format reader/writer.
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    #define JPIP_PRXY
    Definition: indexbox_manager.h:54
    -
    @ JP2_STATE_FILE_TYPE
    Definition: jp2.h:76
    -
    static OPJ_BOOL opj_jp2_exec(opj_jp2_t *jp2, opj_procedure_list_t *p_procedure_list, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Executes the given procedures on the given codec.
    Definition: jp2.c:2426
    -
    OPJ_UINT32 depth
    Definition: jp2.h:141
    -
    OPJ_BYTE *(* handler)(opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
    Definition: jp2.h:218
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    -
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    -
    OPJ_UINT16 alpha
    alpha channel
    Definition: openjpeg.h:697
    -
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    -
    #define JP2_CDEF
    Channel Definition box.
    Definition: jp2.h:58
    -
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    -
    static const opj_jp2_header_handler_t * opj_jp2_img_find_handler(OPJ_UINT32 p_id)
    Finds the image execution function related to the given box id.
    Definition: jp2.c:2512
    -
    static OPJ_BOOL opj_jp2_read_ihdr(opj_jp2_t *jp2, OPJ_BYTE *p_image_header_data, OPJ_UINT32 p_image_header_size, opj_event_mgr_t *p_manager)
    Reads a IHDR box - Image Header box.
    Definition: jp2.c:561
    -
    static OPJ_BOOL opj_jp2_read_pclr(opj_jp2_t *jp2, OPJ_BYTE *p_pclr_header_data, OPJ_UINT32 p_pclr_header_size, opj_event_mgr_t *p_manager)
    Collect palette data.
    Definition: jp2.c:1152
    -
    OPJ_UINT32 IPR
    Definition: jp2.h:166
    -
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    -
    static OPJ_BOOL opj_jp2_read_cdef(opj_jp2_t *jp2, OPJ_BYTE *p_cdef_header_data, OPJ_UINT32 p_cdef_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.c:1392
    -
    #define JP2_JP
    JPEG 2000 signature box.
    Definition: jp2.h:49
    -
    OPJ_UINT32 numcl
    Definition: jp2.h:173
    -
    #define EVT_INFO
    Debug event type.
    Definition: event.h:68
    -
    OPJ_UINT32 numcomps
    Definition: jp2.h:162
    -
    static OPJ_BOOL opj_jp2_setup_decoding_validation(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the validation ,i.e.
    Definition: jp2.c:2896
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    -
    OPJ_BYTE * channel_size
    Definition: jp2.h:119
    -
    Channel descriptions and number of descriptions.
    Definition: jp2.h:100
    -
    @ JP2_STATE_CODESTREAM
    Definition: jp2.h:78
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    #define JP2_PCLR
    Palette box.
    Definition: jp2.h:56
    -
    Decompression parameters.
    Definition: openjpeg.h:546
    -
    OPJ_UINT32 UnkC
    Definition: jp2.h:165
    -
    OPJ_UINT32 length
    Definition: jp2.h:199
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    -
    static OPJ_BOOL opj_jp2_read_colr(opj_jp2_t *jp2, OPJ_BYTE *p_colr_header_data, OPJ_UINT32 p_colr_header_size, opj_event_mgr_t *p_manager)
    Reads the Color Specification box.
    Definition: jp2.c:1464
    -
    OPJ_UINT32 enumcs
    Definition: jp2.h:169
    -
    Component mappings: channel index, mapping type, palette index.
    Definition: jp2.h:108
    -
    Definition: jp2.h:204
    -
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    -
    #define JP2_FTYP
    File type box.
    Definition: jp2.h:50
    -
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    -
    static OPJ_BOOL opj_jp2_write_ftyp(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes a FTYP box - File type box.
    Definition: jp2.c:1771
    -
    #define opj_read_bytes
    Definition: cio.h:65
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    static OPJ_BYTE * opj_jp2_write_cdef(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Channel Definition box.
    Definition: jp2.c:762
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    -
    opj_j2k_t * j2k
    handle to the J2K codec
    Definition: jp2.h:151
    -
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    - -
    struct opj_jp2_color opj_jp2_color_t
    Collector for ICC profile, palette, component mapping, channel description.
    -
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    -
    opj_jp2_cdef_t * jp2_cdef
    Definition: jp2.h:132
    -
    #define JPIP_CIDX
    Definition: indexbox_manager.h:43
    -
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    -
    opj_jp2_comps_t * comps
    Definition: jp2.h:175
    -
    static OPJ_BOOL opj_jp2_write_jp2c(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Writes the Jpeg2000 codestream Header box - JP2C Header box.
    Definition: jp2.c:1823
    -
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    -
    static OPJ_BOOL opj_jp2_read_ftyp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a a FTYP box - File type box.
    Definition: jp2.c:2585
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    JP2 component.
    Definition: jp2.h:140
    -
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG
    Definition: openjpeg.h:540
    -
    struct opj_jp2_img_header_writer_handler opj_jp2_img_header_writer_handler_t
    -
    OPJ_BYTE * icc_profile_buf
    Definition: jp2.h:129
    -
    OPJ_BYTE has_jp2h
    Definition: jp2.h:190
    -
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    -
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    -
    static OPJ_BOOL opj_jp2_read_jp(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file signature box.
    Definition: jp2.c:2536
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    -
    OPJ_UINT16 typ
    Definition: jp2.h:94
    -
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    -
    static OPJ_BYTE * opj_jp2_write_colr(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Colour Specification box.
    Definition: jp2.c:813
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    -
    OPJ_UINT16 cmp
    Definition: jp2.h:109
    -
    #define JP2_BPCC
    Bits per component box.
    Definition: jp2.h:60
    -
    OPJ_SIZE_T opj_stream_read_data(opj_stream_private_t *p_stream, OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Reads some bytes from the stream.
    Definition: cio.c:281
    -
    static OPJ_BOOL opj_jp2_write_jp2h(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Writes the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
    Definition: jp2.c:1664
    -
    OPJ_BYTE has_ihdr
    Definition: jp2.h:191
    -
    OPJ_BOOL(* handler)(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    Definition: jp2.h:208
    -
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    -
    static OPJ_BOOL opj_jp2_setup_end_header_reading(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on reading header after the codestream.
    Definition: jp2.c:2188
    -
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    -
    static OPJ_BYTE * opj_jp2_write_bpcc(opj_jp2_t *jp2, OPJ_UINT32 *p_nb_bytes_written)
    Writes the Bit per Component box.
    Definition: jp2.c:688
    -
    JP2_IMG_STATE
    Definition: jp2.h:84
    -
    void(* opj_procedure)(void)
    declare a function pointer
    Definition: function_list.h:52
    -
    static OPJ_BOOL opj_jp2_setup_header_writing(opj_jp2_t *jp2, opj_event_mgr_t *p_manager)
    Sets up the procedures to do on writing header.
    Definition: jp2.c:2911
    - - - - diff --git a/build/doc/html/jp2k__decoder_8c.html b/build/doc/html/jp2k__decoder_8c.html deleted file mode 100644 index 0ddd34f3f..000000000 --- a/build/doc/html/jp2k__decoder_8c.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_decoder.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2k_decoder.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include <assert.h>
    -#include <limits.h>
    -#include "jp2k_decoder.h"
    -#include "openjpeg.h"
    -
    - - - - - - - - - - - - - - -

    -Functions

    static void error_callback (const char *msg, void *client_data)
     sample error callback expecting a FILE* client object More...
     
    static void warning_callback (const char *msg, void *client_data)
     sample warning callback expecting a FILE* client object More...
     
    static void info_callback (const char *msg, void *client_data)
     sample debug callback expecting no client object More...
     
    static Byte_timagetopnm (opj_image_t *image, ihdrbox_param_t **ihdrbox)
     
    Byte_tj2k_to_pnm (const char *fn, ihdrbox_param_t **ihdrbox)
     
    -

    Function Documentation

    - -

    ◆ error_callback()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void error_callback (const char * msg,
    void * client_data 
    )
    -
    -static
    -
    - -

    sample error callback expecting a FILE* client object

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ imagetopnm()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static Byte_t * imagetopnm (opj_image_timage,
    ihdrbox_param_t ** ihdrbox 
    )
    -
    -static
    -
    -
    - -

    ◆ info_callback()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void info_callback (const char * msg,
    void * client_data 
    )
    -
    -static
    -
    - -

    sample debug callback expecting no client object

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ j2k_to_pnm()

    - - - -

    ◆ warning_callback()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void warning_callback (const char * msg,
    void * client_data 
    )
    -
    -static
    -
    - -

    sample warning callback expecting a FILE* client object

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jp2k__decoder_8h.html b/build/doc/html/jp2k__decoder_8h.html deleted file mode 100644 index 9d05a43a8..000000000 --- a/build/doc/html/jp2k__decoder_8h.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_decoder.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2k_decoder.h File Reference
    -
    - - - - - diff --git a/build/doc/html/jp2k__decoder_8h_source.html b/build/doc/html/jp2k__decoder_8h_source.html deleted file mode 100644 index 8c3d48cd5..000000000 --- a/build/doc/html/jp2k__decoder_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_decoder.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    jp2k_decoder.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef JP2K_DECODER_H_
    -
    32 # define JP2K_DECODER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "ihdrbox_manager.h"
    -
    36 
    -
    37 Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox);
    -
    38 
    -
    39 #endif /* !JP2K_DECODER_H_ */
    -
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    -
    static Byte_t * imagetopnm(opj_image_t *image, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:164
    -
    static void warning_callback(const char *msg, void *client_data)
    sample warning callback expecting a FILE* client object
    Definition: jp2k_decoder.c:148
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    -
    OPJ_UINT32 DA_y1
    Decoding area bottom boundary.
    Definition: openjpeg.h:581
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    -
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    -
    void * opj_stream_t
    Definition: openjpeg.h:660
    -
    void * opj_codec_t
    JPEG2000 codec V2.
    Definition: openjpeg.h:612
    -
    static void info_callback(const char *msg, void *client_data)
    sample debug callback expecting no client object
    Definition: jp2k_decoder.c:156
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    OPJ_UINT32 DA_x0
    Decoding area left boundary.
    Definition: openjpeg.h:575
    -
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    static void error_callback(const char *msg, void *client_data)
    sample error callback expecting a FILE* client object
    Definition: jp2k_decoder.c:140
    -
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    - -
    OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    - -
    OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    - -
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    -
    void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    -
    Decompression parameters.
    Definition: openjpeg.h:546
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    - -
    void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    -
    opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    -
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    -
    OPJ_UINT32 DA_y0
    Decoding area up boundary.
    Definition: openjpeg.h:579
    -
    OPJ_UINT32 DA_x1
    Decoding area right boundary.
    Definition: openjpeg.h:577
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    -
    @ OPJ_CODEC_J2K
    JPEG-2000 codestream : read/write.
    Definition: openjpeg.h:324
    - - - - diff --git a/build/doc/html/jp2k__encoder_8c.html b/build/doc/html/jp2k__encoder_8c.html deleted file mode 100644 index 513891250..000000000 --- a/build/doc/html/jp2k__encoder_8c.html +++ /dev/null @@ -1,1784 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_encoder.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2k_encoder.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <math.h>
    -#include <assert.h>
    -#include "jp2k_encoder.h"
    -#include "j2kheader_manager.h"
    -#include "imgreg_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    message_param_tsearch_message (Byte8_t class_id, Byte8_t in_class_id, Byte8_t csn, message_param_t *msg)
     search a message by class_id More...
     
    Byte_trecons_codestream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *codelen)
     reconstruct j2k codestream from JPT- (in future, JPP-) stream More...
     
    Byte_trecons_j2k (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     reconstruct j2k codestream from message queue More...
     
    Byte_tadd_emptyboxstream (placeholder_param_t *phld, Byte_t *jp2stream, Byte8_t *jp2len)
     
    Byte_tadd_msgstream (message_param_t *message, Byte_t *origstream, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_trecons_jp2 (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
     reconstruct jp2 file codestream from message queue More...
     
    OPJ_BOOL isJPPstream (Byte8_t csn, msgqueue_param_t *msgqueue)
     
    Byte_trecons_codestream_from_JPTstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     
    Byte_trecons_codestream_from_JPPstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     
    Byte_tadd_EOC (Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tadd_mainhead_msgstream (msgqueue_param_t *msgqueue, Byte_t *origstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t *j2klen)
     
    Byte8_t get_last_tileID (msgqueue_param_t *msgqueue, Byte8_t csn, OPJ_BOOL isJPPstream)
     
    Byte_tadd_emptytilestream (const Byte8_t tileID, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tadd_SOTmkr (Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_trecons_bitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_LRCPbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_RLCPbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_RPCLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_PCRLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    Byte_trecons_CPRLbitstream (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
     
    int comp_numOfprcts (Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r)
     
    Byte8_t comp_seqID (Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r, int p)
     
    Byte_trecons_packet (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, int prct_idx, int lay_idx, Byte8_t *j2klen)
     
    Byte_trecons_precinct (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, Byte8_t seqID, Byte8_t *j2klen)
     
    Byte_tadd_padding (Byte8_t padding, Byte_t *j2kstream, Byte8_t *j2klen)
     
    Byte_tgene_msgstream (message_param_t *message, Byte_t *stream, Byte8_t *length)
     
    Byte_tgene_emptytilestream (const Byte8_t tileID, Byte8_t *length)
     
    Byte_trecons_j2kmainhead (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
     reconstruct j2k codestream of mainheader from message queue More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ add_emptyboxstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * add_emptyboxstream (placeholder_param_tphld,
    Byte_tjp2stream,
    Byte8_tjp2len 
    )
    -
    -
    - -

    ◆ add_emptytilestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * add_emptytilestream (const Byte8_t tileID,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ add_EOC()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t * add_EOC (Byte_tj2kstream,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ add_mainhead_msgstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * add_mainhead_msgstream (msgqueue_param_tmsgqueue,
    Byte_torigstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ add_msgstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * add_msgstream (message_param_tmessage,
    Byte_torigstream,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ add_padding()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * add_padding (Byte8_t padding,
    Byte_tj2kstream,
    Byte8_tj2klen 
    )
    -
    - -

    References opj_free(), and opj_malloc().

    - -

    Referenced by recons_packet(), and recons_precinct().

    - -
    -
    - -

    ◆ add_SOTmkr()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t * add_SOTmkr (Byte_tj2kstream,
    Byte8_tj2klen 
    )
    -
    - -

    References opj_free(), and opj_malloc().

    - -

    Referenced by recons_codestream_from_JPPstream().

    - -
    -
    - -

    ◆ comp_numOfprcts()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int comp_numOfprcts (Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int r 
    )
    -
    -
    - -

    ◆ comp_seqID()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t comp_seqID (Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int r,
    int p 
    )
    -
    -
    - -

    ◆ gene_emptytilestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t * gene_emptytilestream (const Byte8_t tileID,
    Byte8_tlength 
    )
    -
    - -

    References opj_malloc().

    - -

    Referenced by add_emptytilestream().

    - -
    -
    - -

    ◆ gene_msgstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * gene_msgstream (message_param_tmessage,
    Byte_tstream,
    Byte8_tlength 
    )
    -
    -
    - -

    ◆ get_last_tileID()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t get_last_tileID (msgqueue_param_tmsgqueue,
    Byte8_t csn,
    OPJ_BOOL isJPPstream 
    )
    -
    -
    - -

    ◆ isJPPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL isJPPstream (Byte8_t csn,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ recons_bitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_bitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_codestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_codestream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tcodelen 
    )
    -
    - -

    reconstruct j2k codestream from JPT- (in future, JPP-) stream

    -
    Parameters
    - - - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal JPT- JPP- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]codelencodestream length
    -
    -
    -
    Returns
    generated reconstructed j2k codestream
    - -

    References isJPPstream(), recons_codestream_from_JPPstream(), and recons_codestream_from_JPTstream().

    - -

    Referenced by recons_j2k(), and recons_jp2().

    - -
    -
    - -

    ◆ recons_codestream_from_JPPstream()

    - - - -

    ◆ recons_codestream_from_JPTstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_codestream_from_JPTstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_CPRLbitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_CPRLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_j2k()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_j2k (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    -
    - -

    reconstruct j2k codestream from message queue

    -
    Parameters
    - - - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]j2klenpointer to the j2k codestream length
    -
    -
    -
    Returns
    generated reconstructed j2k codestream
    - -

    References recons_codestream().

    - -

    Referenced by decode_jpip(), and jpipstream_to_pnm().

    - -
    -
    - -

    ◆ recons_j2kmainhead()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_j2kmainhead (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    -
    - -

    reconstruct j2k codestream of mainheader from message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]j2klenpointer to the j2k codestream length
    -
    -
    -
    Returns
    generated reconstructed j2k codestream
    - -

    References add_mainhead_msgstream().

    - -

    Referenced by get_SIZ_from_jpipstream().

    - -
    -
    - -

    ◆ recons_jp2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_jp2 (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tjp2len 
    )
    -
    - -

    reconstruct jp2 file codestream from message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]jp2lenpointer to the jp2 codestream length
    -
    -
    -
    Returns
    generated reconstructed jp2 codestream
    - -

    References add_emptyboxstream(), add_msgstream(), msgqueue_param::first, METADATA_MSG, message_param::next, opj_free(), placeholder_param::OrigBH, placeholder_param::OrigBHlen, message_param::phld, recons_codestream(), and search_message().

    - -

    Referenced by decode_jpip(), and handle_JP2saveMSG().

    - -
    -
    - -

    ◆ recons_LRCPbitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_LRCPbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_packet()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_packet (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int * max_reslev,
    int comp_idx,
    int res_idx,
    int prct_idx,
    int lay_idx,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_PCRLbitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_PCRLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_precinct()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_precinct (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int * max_reslev,
    int comp_idx,
    int res_idx,
    Byte8_t seqID,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_RLCPbitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_RLCPbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ recons_RPCLbitstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * recons_RPCLbitstream (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte_tj2kstream,
    Byte8_t csn,
    Byte8_t tileID,
    SIZmarker_param_t SIZ,
    CODmarker_param_t COD,
    int mindeclev,
    int * max_reslev,
    Byte8_tj2klen 
    )
    -
    -
    - -

    ◆ search_message()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    message_param_t * search_message (Byte8_t class_id,
    Byte8_t in_class_id,
    Byte8_t csn,
    message_param_tmsg 
    )
    -
    - -

    search a message by class_id

    -
    Parameters
    - - - - - -
    [in]class_idclass identifiers
    [in]in_class_idin-class identifiers, -1 means any
    [in]csncodestream number
    [in]msgfirst message pointer of the searching list
    -
    -
    -
    Returns
    found message pointer
    - -

    References message_param::class_id, message_param::csn, message_param::in_class_id, and message_param::next.

    - -

    Referenced by add_mainhead_msgstream(), recons_codestream_from_JPPstream(), recons_codestream_from_JPTstream(), recons_jp2(), recons_packet(), and recons_precinct().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jp2k__encoder_8h.html b/build/doc/html/jp2k__encoder_8h.html deleted file mode 100644 index f3502d5bd..000000000 --- a/build/doc/html/jp2k__encoder_8h.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_encoder.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jp2k_encoder.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "msgqueue_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    Byte_trecons_j2k (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
     reconstruct j2k codestream from message queue More...
     
    Byte_trecons_jp2 (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
     reconstruct jp2 file codestream from message queue More...
     
    Byte_trecons_j2kmainhead (msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
     reconstruct j2k codestream of mainheader from message queue More...
     
    -

    Function Documentation

    - -

    ◆ recons_j2k()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_j2k (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    int fw,
    int fh,
    Byte8_tj2klen 
    )
    -
    - -

    reconstruct j2k codestream from message queue

    -
    Parameters
    - - - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [in]fwreconstructing image frame width
    [in]fhreconstructing image frame height
    [out]j2klenpointer to the j2k codestream length
    -
    -
    -
    Returns
    generated reconstructed j2k codestream
    - -

    References recons_codestream().

    - -

    Referenced by decode_jpip(), and jpipstream_to_pnm().

    - -
    -
    - -

    ◆ recons_j2kmainhead()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_j2kmainhead (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tj2klen 
    )
    -
    - -

    reconstruct j2k codestream of mainheader from message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]j2klenpointer to the j2k codestream length
    -
    -
    -
    Returns
    generated reconstructed j2k codestream
    - -

    References add_mainhead_msgstream().

    - -

    Referenced by get_SIZ_from_jpipstream().

    - -
    -
    - -

    ◆ recons_jp2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* recons_jp2 (msgqueue_param_tmsgqueue,
    Byte_tjpipstream,
    Byte8_t csn,
    Byte8_tjp2len 
    )
    -
    - -

    reconstruct jp2 file codestream from message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuemessage queue pointer
    [in]jpipstreamoriginal jpt- jpp- stream
    [in]csncodestream number
    [out]jp2lenpointer to the jp2 codestream length
    -
    -
    -
    Returns
    generated reconstructed jp2 codestream
    - -

    References add_emptyboxstream(), add_msgstream(), msgqueue_param::first, METADATA_MSG, message_param::next, opj_free(), placeholder_param::OrigBH, placeholder_param::OrigBHlen, message_param::phld, recons_codestream(), and search_message().

    - -

    Referenced by decode_jpip(), and handle_JP2saveMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jp2k__encoder_8h_source.html b/build/doc/html/jp2k__encoder_8h_source.html deleted file mode 100644 index 578a8b4b5..000000000 --- a/build/doc/html/jp2k__encoder_8h_source.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - -OpenJPEG: jp2k_encoder.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    jp2k_encoder.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef JP2K_ENCODER_H_
    -
    33 # define JP2K_ENCODER_H_
    -
    34 
    -
    35 #include "byte_manager.h"
    -
    36 #include "msgqueue_manager.h"
    -
    37 
    -
    49 Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn,
    -
    50  int fw, int fh, Byte8_t *j2klen);
    -
    51 
    -
    52 
    -
    62 Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn,
    -
    63  Byte8_t *jp2len);
    -
    64 
    -
    74 Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream,
    -
    75  Byte8_t csn, Byte8_t *j2klen);
    -
    76 
    -
    77 #endif /* !JP2K_ENCODER_H_ */
    -
    -
    #define METADATA_MSG
    Definition: msgqueue_manager.h:45
    -
    int comp_numOfprcts(Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r)
    Definition: jp2k_encoder.c:576
    -
    #define TILE_MSG
    Definition: msgqueue_manager.h:42
    -
    Byte_t * add_padding(Byte8_t padding, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:826
    -
    Byte_t * gene_emptytilestream(const Byte8_t tileID, Byte8_t *length)
    Definition: jp2k_encoder.c:880
    -
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    -
    Byte_t * recons_codestream_from_JPTstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:189
    -
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    -
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    -
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    void delete_COD(CODmarker_param_t COD)
    delete dynamic arrays in COD marker
    Definition: index_manager.c:215
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    -
    #define EXT_TILE_MSG
    Definition: msgqueue_manager.h:43
    -
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    - -
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    -
    OPJ_BOOL modify_tileheader(Byte_t *j2kstream, Byte8_t SOToffset, int numOfdecomp, Byte2_t Csiz, Byte8_t *j2klen)
    modify tile header in j2k codestream to fit with the tile part length, and new number of decompositio...
    Definition: j2kheader_manager.c:256
    -
    #define PRECINCT_MSG
    Definition: msgqueue_manager.h:39
    -
    Byte_t * recons_CPRLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:542
    -
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    OPJ_PROG_ORDER prog_order
    progression order
    Definition: index_manager.h:78
    -
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    -
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    -
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    -
    Byte_t * add_EOC(Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:844
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    - -
    #define FCGI_stderr
    Definition: jp2k_encoder.c:48
    -
    OPJ_BOOL last_byte
    if message contains the last byte of the data-bin
    Definition: msgqueue_manager.h:50
    -
    Byte8_t length
    message byte length
    Definition: msgqueue_manager.h:55
    -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    Byte8_t bin_offset
    offset of the data in this message from the start of the data-bin
    Definition: msgqueue_manager.h:54
    -
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    -
    A.6.1 Coding style default (COD)
    Definition: index_manager.h:75
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    message parameters
    Definition: msgqueue_manager.h:48
    -
    Byte_t * add_SOTmkr(Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:345
    -
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    - -
    Byte8_t comp_seqID(Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int r, int p)
    Definition: jp2k_encoder.c:675
    -
    int comp_decomplev(int fw, int fh, int Xsiz, int Ysiz)
    compute decomposition level (only to get the level use find_level for all parameters
    Definition: imgreg_manager.c:134
    -
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    -
    struct message_param * next
    pointer to the next message
    Definition: msgqueue_manager.h:59
    -
    Byte_t * recons_precinct(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, Byte8_t seqID, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:636
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    Byte_t * recons_packet(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int *max_reslev, int comp_idx, int res_idx, int prct_idx, int lay_idx, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:593
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    - -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_OFF_T res_offset
    offset in the resource
    Definition: msgqueue_manager.h:57
    -
    Byte_t * recons_codestream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *codelen)
    reconstruct j2k codestream from JPT- (in future, JPP-) stream
    Definition: jp2k_encoder.c:149
    -
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    Byte_t * gene_msgstream(message_param_t *message, Byte_t *stream, Byte8_t *length)
    Definition: jp2k_encoder.c:864
    -
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    -
    Byte8_t in_class_id
    in-class identifier A.2.3
    Definition: msgqueue_manager.h:51
    -
    Byte8_t aux
    Definition: msgqueue_manager.h:56
    -
    Byte_t * recons_LRCPbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:426
    -
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    -
    progression order
    Definition: index_manager.h:55
    -
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    -
    Byte_t * add_msgstream(message_param_t *message, Byte_t *origstream, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:741
    -
    Byte_t * recons_RPCLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:481
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    #define MAINHEADER_MSG
    Definition: msgqueue_manager.h:44
    - -
    OPJ_BOOL modify_mainheader(Byte_t *j2kstream, int numOfdecomp, SIZmarker_param_t SIZ, CODmarker_param_t COD, Byte8_t *j2klen)
    modify main header in j2k codestream to fit with the new number of decompositions
    Definition: j2kheader_manager.c:161
    -
    Byte8_t class_id
    class identifiers
    Definition: msgqueue_manager.h:52
    -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    Byte8_t get_last_tileID(msgqueue_param_t *msgqueue, Byte8_t csn, OPJ_BOOL isJPPstream)
    Definition: jp2k_encoder.c:692
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    - -
    Byte_t * recons_bitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:389
    -
    placeholder_param_t * phld
    placeholder pointer in index
    Definition: msgqueue_manager.h:58
    -
    Byte_t * recons_RLCPbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:451
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    -
    Byte_t * add_mainhead_msgstream(msgqueue_param_t *msgqueue, Byte_t *origstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:325
    -
    Byte_t * recons_codestream_from_JPPstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:257
    -
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    -
    Byte_t * add_emptytilestream(const Byte8_t tileID, Byte_t *j2kstream, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:802
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    OPJ_BOOL isJPPstream(Byte8_t csn, msgqueue_param_t *msgqueue)
    Definition: jp2k_encoder.c:161
    -
    Byte_t * recons_PCRLbitstream(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *j2kstream, Byte8_t csn, Byte8_t tileID, SIZmarker_param_t SIZ, CODmarker_param_t COD, int mindeclev, int *max_reslev, Byte8_t *j2klen)
    Definition: jp2k_encoder.c:507
    -
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    #define TILE_HEADER_MSG
    Definition: msgqueue_manager.h:41
    -
    message_param_t * search_message(Byte8_t class_id, Byte8_t in_class_id, Byte8_t csn, message_param_t *msg)
    search a message by class_id
    Definition: jp2k_encoder.c:717
    -
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    -
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    -
    Byte_t * add_emptyboxstream(placeholder_param_t *phld, Byte_t *jp2stream, Byte8_t *jp2len)
    Definition: jp2k_encoder.c:770
    - - - - diff --git a/build/doc/html/jpip__parser_8c.html b/build/doc/html/jpip__parser_8c.html deleted file mode 100644 index 3f7db732b..000000000 --- a/build/doc/html/jpip__parser_8c.html +++ /dev/null @@ -1,693 +0,0 @@ - - - - - - - -OpenJPEG: jpip_parser.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jpip_parser.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <string.h>
    -#include <math.h>
    -#include "jpip_parser.h"
    -#include "channel_manager.h"
    -#include "imgreg_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_BOOL identify_target (query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
     REQUEST: target identification by target or tid request. More...
     
    OPJ_BOOL associate_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel association this must be processed before any process. More...
     
    OPJ_BOOL open_channel (query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: new channel (cnew) assignment. More...
     
    OPJ_BOOL close_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel close (cclose) More...
     
    void enqueue_imagedata (query_param_t query_param, msgqueue_param_t *msgqueue)
     enqueue tiles or precincts into the message queue More...
     
    OPJ_BOOL enqueue_metabins (query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue)
     enqueue metadata bins into the message queue More...
     
    OPJ_BOOL gene_JPIPstream (query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
     REQUEST: view-window (fsiz) More...
     
    void enqueue_precincts (int xmin, int xmax, int ymin, int ymax, int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bins into the queue More...
     
    void enqueue_allprecincts (int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
     enqueue all precincts inside a tile into the queue More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ associate_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL associate_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: channel association this must be processed before any process.

    -
    Parameters
    - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [out]cursessionaddress of the associated session pointer
    [out]curchanneladdress of the associated channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cid, query_param::cnew, FCGI_stderr, OPJ_FALSE, OPJ_TRUE, search_session_and_channel(), and set_channel_variable_param().

    - -
    -
    - -

    ◆ close_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL close_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: channel close (cclose)

    -
    Parameters
    - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in,out]cursessionaddress of the session pointer of deleting channel
    [in,out]curchanneladdress of the deleting channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cclose, delete_channel(), delete_session(), FCGI_stdout, logstream, query_param::numOfcclose, OPJ_FALSE, OPJ_TRUE, search_channel(), and search_session_and_channel().

    - -
    -
    - -

    ◆ enqueue_allprecincts()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_allprecincts (int tile_id,
    int level,
    int lastcomp,
    OPJ_BOOLcomps,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    enqueue all precincts inside a tile into the queue

    -
    Parameters
    - - - - - - - -
    [in]tile_idtile index
    [in]leveldecomposition level
    [in]lastcomplast component number
    [in]compspointer to the array that stores the requested components
    [in]layersnumber of quality layers
    [in]msgqueuemessage queue
    -
    -
    -
    Returns
    - -

    References msgqueue_param::cachemodel, index_param::COD, target_param::codeidx, SIZmarker_param::Csiz, enqueue_precinct(), get_tile_XSiz(), get_tile_YSiz(), CODmarker_param::numOfdecomp, CODmarker_param::Scod, index_param::SIZ, cachemodel_param::target, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by enqueue_imagedata().

    - -
    -
    - -

    ◆ enqueue_imagedata()

    - - - -

    ◆ enqueue_metabins()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL enqueue_metabins (query_param_t query_param,
    metadatalist_param_tmetadatalist,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    enqueue metadata bins into the message queue

    -
    Parameters
    - - - - -
    [in]query_paramstructured query
    [in]metadatalistpointer to metadata bin list
    [in,out]msgqueuemessage queue pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::box_type, enqueue_metadata(), FCGI_stdout, MAX_NUMOFBOX, OPJ_FALSE, OPJ_TRUE, and search_metadataidx().

    - -

    Referenced by gene_JPIPstream().

    - -
    -
    - -

    ◆ enqueue_precincts()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_precincts (int xmin,
    int xmax,
    int ymin,
    int ymax,
    int tile_id,
    int level,
    int lastcomp,
    OPJ_BOOLcomps,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    enqueue precinct data-bins into the queue

    -
    Parameters
    - - - - - - - - - - - -
    [in]xminmin x coordinate in the tile at the decomposition level
    [in]xmaxmax x coordinate in the tile at the decomposition level
    [in]yminmin y coordinate in the tile at the decomposition level
    [in]ymaxmax y coordinate in the tile at the decomposition level
    [in]tile_idtile index
    [in]leveldecomposition level
    [in]lastcomplast component number
    [in]compspointer to the array that stores the requested components
    [in]layersnumber of quality layers
    [in]msgqueuemessage queue
    -
    -
    -
    Returns
    - -

    References msgqueue_param::cachemodel, index_param::COD, target_param::codeidx, SIZmarker_param::Csiz, enqueue_precinct(), get_tile_XSiz(), get_tile_YSiz(), CODmarker_param::numOfdecomp, CODmarker_param::Scod, index_param::SIZ, cachemodel_param::target, CODmarker_param::XPsiz, and CODmarker_param::YPsiz.

    - -

    Referenced by enqueue_imagedata().

    - -
    -
    - -

    ◆ gene_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL gene_JPIPstream (query_param_t query_param,
    target_param_ttarget,
    session_param_tcursession,
    channel_param_tcurchannel,
    msgqueue_param_t ** msgqueue 
    )
    -
    - -

    REQUEST: view-window (fsiz)

    -
    Parameters
    - - - - - - -
    [in]query_paramstructured query
    [in]targetrequested target pointer
    [in,out]cursessionassociated session pointer
    [in,out]curchannelassociated channel pointer
    [out]msgqueueaddress of the message queue pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::box_type, channel_param::cachemodel, index_param::COD, target_param::codeidx, enqueue_imagedata(), enqueue_mainheader(), enqueue_metabins(), FCGI_stdout, query_param::fx, query_param::fy, gene_cachemodel(), gene_msgqueue(), cachemodel_param::jppstream, JPPstream, query_param::layers, query_param::len, query_param::metadata_only, index_param::metadatalist, cachemodel_param::mhead_model, CODmarker_param::numOflayers, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and cachemodel_param::target.

    - -
    -
    - -

    ◆ identify_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL identify_target (query_param_t query_param,
    targetlist_param_ttargetlist,
    target_param_t ** target 
    )
    -
    - -

    REQUEST: target identification by target or tid request.

    -
    Parameters
    - - - - -
    [in]query_paramstructured query
    [in]targetlisttarget list pointer
    [out]targetaddress of target pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cid, FCGI_stdout, gene_target(), OPJ_FALSE, OPJ_TRUE, search_target(), search_targetBytid(), query_param::target, and query_param::tid.

    - -
    -
    - -

    ◆ open_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL open_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    auxtrans_param_t auxtrans,
    target_param_ttarget,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: new channel (cnew) assignment.

    -
    Parameters
    - - - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in]auxtransauxiliary transport
    [in]targetrequested target pointer
    [in,out]cursessionaddress of the associated/opened session pointer
    [in,out]curchanneladdress of the associated/opened channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References gene_cachemodel(), gene_channel(), gene_session(), JPPstream, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and search_cachemodel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jpip__parser_8h.html b/build/doc/html/jpip__parser_8h.html deleted file mode 100644 index c0701d692..000000000 --- a/build/doc/html/jpip__parser_8h.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - - -OpenJPEG: jpip_parser.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jpip_parser.h File Reference
    -
    -
    -
    #include "query_parser.h"
    -#include "session_manager.h"
    -#include "target_manager.h"
    -#include "msgqueue_manager.h"
    -#include "channel_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_BOOL identify_target (query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
     REQUEST: target identification by target or tid request. More...
     
    OPJ_BOOL associate_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel association this must be processed before any process. More...
     
    OPJ_BOOL open_channel (query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: new channel (cnew) assignment. More...
     
    OPJ_BOOL close_channel (query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
     REQUEST: channel close (cclose) More...
     
    OPJ_BOOL gene_JPIPstream (query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
     REQUEST: view-window (fsiz) More...
     
    -

    Function Documentation

    - -

    ◆ associate_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL associate_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: channel association this must be processed before any process.

    -
    Parameters
    - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [out]cursessionaddress of the associated session pointer
    [out]curchanneladdress of the associated channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cid, query_param::cnew, FCGI_stderr, OPJ_FALSE, OPJ_TRUE, search_session_and_channel(), and set_channel_variable_param().

    - -
    -
    - -

    ◆ close_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL close_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: channel close (cclose)

    -
    Parameters
    - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in,out]cursessionaddress of the session pointer of deleting channel
    [in,out]curchanneladdress of the deleting channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cclose, delete_channel(), delete_session(), FCGI_stdout, logstream, query_param::numOfcclose, OPJ_FALSE, OPJ_TRUE, search_channel(), and search_session_and_channel().

    - -
    -
    - -

    ◆ gene_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL gene_JPIPstream (query_param_t query_param,
    target_param_ttarget,
    session_param_tcursession,
    channel_param_tcurchannel,
    msgqueue_param_t ** msgqueue 
    )
    -
    - -

    REQUEST: view-window (fsiz)

    -
    Parameters
    - - - - - - -
    [in]query_paramstructured query
    [in]targetrequested target pointer
    [in,out]cursessionassociated session pointer
    [in,out]curchannelassociated channel pointer
    [out]msgqueueaddress of the message queue pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::box_type, channel_param::cachemodel, index_param::COD, target_param::codeidx, enqueue_imagedata(), enqueue_mainheader(), enqueue_metabins(), FCGI_stdout, query_param::fx, query_param::fy, gene_cachemodel(), gene_msgqueue(), cachemodel_param::jppstream, JPPstream, query_param::layers, query_param::len, query_param::metadata_only, index_param::metadatalist, cachemodel_param::mhead_model, CODmarker_param::numOflayers, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and cachemodel_param::target.

    - -
    -
    - -

    ◆ identify_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL identify_target (query_param_t query_param,
    targetlist_param_ttargetlist,
    target_param_t ** target 
    )
    -
    - -

    REQUEST: target identification by target or tid request.

    -
    Parameters
    - - - - -
    [in]query_paramstructured query
    [in]targetlisttarget list pointer
    [out]targetaddress of target pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References query_param::cid, FCGI_stdout, gene_target(), OPJ_FALSE, OPJ_TRUE, search_target(), search_targetBytid(), query_param::target, and query_param::tid.

    - -
    -
    - -

    ◆ open_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL open_channel (query_param_t query_param,
    sessionlist_param_tsessionlist,
    auxtrans_param_t auxtrans,
    target_param_ttarget,
    session_param_t ** cursession,
    channel_param_t ** curchannel 
    )
    -
    - -

    REQUEST: new channel (cnew) assignment.

    -
    Parameters
    - - - - - - - -
    [in]query_paramstructured query
    [in]sessionlistsession list pointer
    [in]auxtransauxiliary transport
    [in]targetrequested target pointer
    [in,out]cursessionaddress of the associated/opened session pointer
    [in,out]curchanneladdress of the associated/opened channel pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References gene_cachemodel(), gene_channel(), gene_session(), JPPstream, OPJ_FALSE, OPJ_TRUE, query_param::return_type, and search_cachemodel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jpip__parser_8h_source.html b/build/doc/html/jpip__parser_8h_source.html deleted file mode 100644 index 796d121bb..000000000 --- a/build/doc/html/jpip__parser_8h_source.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -OpenJPEG: jpip_parser.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    jpip_parser.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef JPIP_PARSER_H_
    -
    33 # define JPIP_PARSER_H_
    -
    34 
    -
    35 #include "query_parser.h"
    -
    36 #include "session_manager.h"
    -
    37 #include "target_manager.h"
    -
    38 #include "msgqueue_manager.h"
    -
    39 #include "channel_manager.h"
    -
    40 
    - -
    50  targetlist_param_t *targetlist, target_param_t **target);
    -
    51 
    - -
    63  sessionlist_param_t *sessionlist,
    -
    64  session_param_t **cursession,
    -
    65  channel_param_t **curchannel);
    - -
    78  sessionlist_param_t *sessionlist,
    -
    79  auxtrans_param_t auxtrans,
    -
    80  target_param_t *target,
    -
    81  session_param_t **cursession,
    -
    82  channel_param_t **curchannel);
    -
    83 
    - -
    94  sessionlist_param_t *sessionlist,
    -
    95  session_param_t **cursession,
    -
    96  channel_param_t **curchannel);
    -
    97 
    - -
    109  target_param_t *target,
    -
    110  session_param_t *cursession,
    -
    111  channel_param_t *curchannel,
    -
    112  msgqueue_param_t **msgqueue);
    -
    113 
    -
    114 #endif /* !JPIP_PARSER_H_ */
    -
    -
    int ox
    frame size (fsiz)
    Definition: imgreg_manager.h:39
    -
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    -
    int ry
    Definition: query_parser.h:51
    -
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    -
    Session parameters.
    Definition: session_manager.h:38
    -
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    -
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    -
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    -
    OPJ_BOOL metadata_only
    metadata-only request
    Definition: query_parser.h:69
    -
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    -
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    -
    int len
    maximum response length
    Definition: query_parser.h:71
    -
    Byte4_t minvalue
    minimal value
    Definition: index_manager.h:148
    -
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    -
    Byte_t Scod
    Coding style for all components.
    Definition: index_manager.h:77
    -
    #define logstream
    Definition: jpip_parser.c:45
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    -
    Byte4_t * XPsiz
    dynamic array of precinct width at successive resolution level in order
    Definition: index_manager.h:81
    -
    range_param_t get_tile_Xrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get horizontal range of the tile in reference grid
    Definition: index_manager.c:729
    - -
    int fy
    frame size (fx,fy)
    Definition: query_parser.h:50
    - -
    channel_param_t * gene_channel(query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist)
    generate a channel under the channel list
    Definition: channel_manager.c:60
    -
    Session list parameters.
    Definition: session_manager.h:45
    -
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    -
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    - -
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    -
    image_return_t return_type
    image return type
    Definition: query_parser.h:70
    -
    char * cclose
    list of closing channel identifiers, separated by '\0'
    Definition: query_parser.h:58
    -
    index parameters
    Definition: index_manager.h:86
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    range_param_t get_tile_Yrange(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get vertical range of the tile in reference grid
    Definition: index_manager.c:735
    -
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    -
    int oy
    Definition: imgreg_manager.h:39
    -
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    -
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    -
    Byte4_t XOsiz
    horizontal offset from the origin of the reference grid to the left side of the image area
    Definition: index_manager.h:60
    -
    int lastcomp
    last component number
    Definition: query_parser.h:53
    -
    OPJ_BOOL jppstream
    return type, true: JPP-stream, false: JPT-stream
    Definition: cachemodel_manager.h:39
    -
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    -
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    -
    image region parameters
    Definition: imgreg_manager.h:35
    -
    channel_param_t * search_channel(const char cid[], channellist_param_t *channellist)
    search a channel by channel ID
    Definition: channel_manager.c:173
    -
    int sx
    offset (roff)
    Definition: imgreg_manager.h:40
    -
    int rw
    Definition: query_parser.h:51
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    OPJ_BOOL * comps
    components (dynamic array) for jpp-stream, null means all components
    Definition: query_parser.h:54
    -
    int rh
    roi region
    Definition: query_parser.h:51
    -
    char * target
    target name
    Definition: query_parser.h:48
    -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    -
    Byte4_t YOsiz
    vertical offset from the origin of the reference grid to the top side of the image area
    Definition: index_manager.h:61
    -
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    -
    void set_channel_variable_param(query_param_t query_param, channel_param_t *channel)
    set channel variable parameters
    Definition: channel_manager.c:112
    -
    #define MAX_NUMOFBOX
    maximum number of meta request box
    Definition: query_parser.h:38
    - -
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    -
    char box_type[MAX_NUMOFBOX][4]
    interested box-types
    Definition: query_parser.h:60
    -
    void enqueue_imagedata(query_param_t query_param, msgqueue_param_t *msgqueue)
    enqueue tiles or precincts into the message queue
    Definition: jpip_parser.c:300
    -
    Byte_t numOfdecomp
    number of decompositions levels
    Definition: index_manager.h:80
    -
    int sy
    Definition: imgreg_manager.h:40
    - -
    int layers
    quality layers
    Definition: query_parser.h:52
    -
    char * cid
    channel identifier
    Definition: query_parser.h:55
    -
    Byte4_t * YPsiz
    dynamic array of precinct height at successive resolution level in order
    Definition: index_manager.h:82
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    -
    cachemodel_param_t * cachemodel
    reference cachemodel pointer
    Definition: msgqueue_manager.h:67
    -
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    -
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    int level
    region size (rsiz)
    Definition: imgreg_manager.h:41
    -
    OPJ_BOOL enqueue_metabins(query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue)
    enqueue metadata bins into the message queue
    Definition: jpip_parser.c:488
    -
    imgreg_param_t map_viewin2imgreg(const int fx, const int fy, const int rx, const int ry, const int rw, const int rh, const int XOsiz, const int YOsiz, const int Xsiz, const int Ysiz, const int numOfreslev)
    map view-window requests to codestream image resolutions and regions
    Definition: imgreg_manager.c:46
    -
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    -
    Byte4_t get_tile_XSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    get tile wdith at the decomposition level
    Definition: index_manager.c:757
    -
    Byte4_t maxvalue
    maximal value
    Definition: index_manager.h:149
    -
    #define FCGI_stderr
    Definition: jpip_parser.c:44
    -
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    -
    cachemodel_param_t * cachemodel
    reference pointer to the cache model
    Definition: channel_manager.h:44
    -
    void delete_channel(channel_param_t **channel, channellist_param_t *channellist)
    delete a channel
    Definition: channel_manager.c:121
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    -
    cachemodel_param_t * gene_cachemodel(cachemodellist_param_t *cachemodellist, target_param_t *target, OPJ_BOOL reqJPP)
    generate a cache model under a list
    Definition: cachemodel_manager.c:60
    -
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    -
    Target list parameters.
    Definition: target_manager.h:59
    -
    char * tid
    target identifier
    Definition: query_parser.h:49
    -
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    -
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    -
    1-dimensional range parameters
    Definition: index_manager.h:147
    -
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    -
    int numOfcclose
    number of closing channels
    Definition: query_parser.h:59
    -
    int xosiz
    Definition: imgreg_manager.h:36
    -
    target parameters
    Definition: target_manager.h:40
    -
    Query parameters.
    Definition: query_parser.h:47
    -
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    void enqueue_precincts(int xmin, int xmax, int ymin, int ymax, int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bins into the queue
    Definition: jpip_parser.c:386
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    Byte4_t get_tile_YSiz(SIZmarker_param_t SIZ, Byte4_t tile_id, int level)
    Definition: index_manager.c:765
    -
    #define FCGI_stdout
    Definition: jpip_parser.c:43
    -
    @ JPPstream
    Definition: query_parser.h:44
    -
    void enqueue_allprecincts(int tile_id, int level, int lastcomp, OPJ_BOOL *comps, int layers, msgqueue_param_t *msgqueue)
    enqueue all precincts inside a tile into the queue
    Definition: jpip_parser.c:452
    -
    int yosiz
    Definition: imgreg_manager.h:36
    -
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    -
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    -
    Channel parameters.
    Definition: channel_manager.h:43
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    int rx
    Definition: query_parser.h:51
    -
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    -
    int fx
    Definition: query_parser.h:50
    -
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    - -
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    - -
    cachemodel_param_t * search_cachemodel(target_param_t *target, cachemodellist_param_t *cachemodellist)
    search a cache model of a target
    Definition: cachemodel_manager.c:160
    - - - - diff --git a/build/doc/html/jpip_architect.png b/build/doc/html/jpip_architect.png deleted file mode 100644 index 5375bf91f1305181ddcddcd0ab2fe63b9a2446ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62577 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 diff --git a/build/doc/html/jpip_protocol.png b/build/doc/html/jpip_protocol.png deleted file mode 100644 index bc326d456d6b120e641561faa3ce6e7ec3ae0c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6376 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 - - - - - - -OpenJPEG: jpipstream_manager.c File Reference - - - - - - - -
    - -
    -
    jpipstream_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <time.h>
    -#include "jpipstream_manager.h"
    -#include "jp2k_encoder.h"
    -#include "jp2k_decoder.h"
    -#include "ihdrbox_manager.h"
    -#include "j2kheader_manager.h"
    -
    - - - - - - - - - -

    -Functions

    Byte_tupdate_JPIPstream (Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
     
    void save_codestream (Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
     
    Byte_tjpipstream_to_pnm (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
     
    ihdrbox_param_tget_SIZ_from_jpipstream (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
     
    -

    Function Documentation

    - -

    ◆ get_SIZ_from_jpipstream()

    - - - -

    ◆ jpipstream_to_pnm()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* jpipstream_to_pnm (Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    Byte8_t csn,
    int fw,
    int fh,
    ihdrbox_param_t ** ihdrbox 
    )
    -
    - -

    References j2k_to_pnm(), opj_free(), and recons_j2k().

    - -

    Referenced by handle_PNMreqMSG().

    - -
    -
    - -

    ◆ save_codestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void save_codestream (Byte_tcodestream,
    OPJ_SIZE_T streamlen,
    const char * fmt 
    )
    -
    - -

    Referenced by handle_clientreq(), and handle_JP2saveMSG().

    - -
    -
    - -

    ◆ update_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* update_JPIPstream (Byte_tnewstream,
    OPJ_SIZE_T newstreamlen,
    Byte_tcache_stream,
    OPJ_SIZE_Tstreamlen 
    )
    -
    - -

    References opj_free(), and opj_malloc().

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jpipstream__manager_8h.html b/build/doc/html/jpipstream__manager_8h.html deleted file mode 100644 index 04eb8baa4..000000000 --- a/build/doc/html/jpipstream__manager_8h.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - -OpenJPEG: jpipstream_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    jpipstream_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "msgqueue_manager.h"
    -#include "ihdrbox_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - -

    -Functions

    Byte_tupdate_JPIPstream (Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
     
    void save_codestream (Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
     
    Byte_tjpipstream_to_pnm (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
     
    ihdrbox_param_tget_SIZ_from_jpipstream (Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
     
    -

    Function Documentation

    - -

    ◆ get_SIZ_from_jpipstream()

    - - - -

    ◆ jpipstream_to_pnm()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* jpipstream_to_pnm (Byte_tjpipstream,
    msgqueue_param_tmsgqueue,
    Byte8_t csn,
    int fw,
    int fh,
    ihdrbox_param_t ** ihdrbox 
    )
    -
    - -

    References j2k_to_pnm(), opj_free(), and recons_j2k().

    - -

    Referenced by handle_PNMreqMSG().

    - -
    -
    - -

    ◆ save_codestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void save_codestream (Byte_tcodestream,
    OPJ_SIZE_T streamlen,
    const char * fmt 
    )
    -
    - -

    Referenced by handle_clientreq(), and handle_JP2saveMSG().

    - -
    -
    - -

    ◆ update_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t* update_JPIPstream (Byte_tnewstream,
    OPJ_SIZE_T newstreamlen,
    Byte_tcache_stream,
    OPJ_SIZE_Tstreamlen 
    )
    -
    - -

    References opj_free(), and opj_malloc().

    - -

    Referenced by handle_JPIPstreamMSG().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/jpipstream__manager_8h_source.html b/build/doc/html/jpipstream__manager_8h_source.html deleted file mode 100644 index 14a3240cf..000000000 --- a/build/doc/html/jpipstream__manager_8h_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -OpenJPEG: jpipstream_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    jpipstream_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #include "byte_manager.h"
    -
    32 #include "msgqueue_manager.h"
    -
    33 #include "ihdrbox_manager.h"
    -
    34 
    -
    35 Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen,
    -
    36  Byte_t *cache_stream, OPJ_SIZE_T *streamlen);
    -
    37 
    -
    38 void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt);
    -
    39 
    -
    40 Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue,
    -
    41  Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox);
    -
    42 
    - -
    44  msgqueue_param_t *msgqueue, Byte8_t csn);
    -
    -
    Byte_t * recons_j2kmainhead(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *j2klen)
    reconstruct j2k codestream of mainheader from message queue
    Definition: jp2k_encoder.c:906
    -
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    Byte4_t Xsiz
    width of the reference grid
    Definition: index_manager.h:58
    -
    Byte4_t Ysiz
    height of the reference grid
    Definition: index_manager.h:59
    -
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    -
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    -
    Byte_t Ssiz[3]
    precision (depth) in bits and sign of the component samples
    Definition: index_manager.h:69
    - -
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    -
    Byte_t * update_JPIPstream(Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
    Definition: jpipstream_manager.c:41
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    OPJ_BOOL get_mainheader_from_j2kstream(Byte_t *j2kstream, SIZmarker_param_t *SIZ, CODmarker_param_t *COD)
    get main header information from j2k codestream
    Definition: j2kheader_manager.c:52
    - -
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    - - -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    - - -
    progression order
    Definition: index_manager.h:55
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    - -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    -
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    -
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    -
    Byte_t * j2k_to_pnm(const char *fn, ihdrbox_param_t **ihdrbox)
    Definition: jp2k_decoder.c:46
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte_t * jpipstream_to_pnm(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn, int fw, int fh, ihdrbox_param_t **ihdrbox)
    Definition: jpipstream_manager.c:80
    -
    ihdrbox_param_t * get_SIZ_from_jpipstream(Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte8_t csn)
    Definition: jpipstream_manager.c:116
    -
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    - - - - diff --git a/build/doc/html/jquery.js b/build/doc/html/jquery.js deleted file mode 100644 index 103c32d79..000000000 --- a/build/doc/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/build/doc/html/mainpage_8dox.html b/build/doc/html/mainpage_8dox.html deleted file mode 100644 index 38e848a8c..000000000 --- a/build/doc/html/mainpage_8dox.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: mainpage.dox File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    mainpage.dox File Reference
    -
    -
    -
    - - - - diff --git a/build/doc/html/manfbox__manager_8c.html b/build/doc/html/manfbox__manager_8c.html deleted file mode 100644 index 3dc16d5f0..000000000 --- a/build/doc/html/manfbox__manager_8c.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - -OpenJPEG: manfbox_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    manfbox_manager.c File Reference
    -
    -
    -
    #include <stdlib.h>
    -#include <stdio.h>
    -#include <string.h>
    -#include "manfbox_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - -

    -Functions

    manfbox_param_tgene_manfbox (box_param_t *box)
     generate manifest box More...
     
    void delete_manfbox (manfbox_param_t **manf)
     delete manifest box More...
     
    void print_manfbox (manfbox_param_t *manf)
     print manf box parameters More...
     
    boxheader_param_tsearch_boxheader (const char type[], manfbox_param_t *manf)
     search a boxheader by box type from manifest box More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_manfbox()

    - -
    -
    - - - - - - - - -
    void delete_manfbox (manfbox_param_t ** manf)
    -
    - -

    delete manifest box

    -
    Parameters
    - - -
    [in,out]manfaddressof the manfbox pointer
    -
    -
    - -

    References boxheader_param::next.

    - -

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ gene_manfbox()

    - -
    -
    - - - - - - - - -
    manfbox_param_t* gene_manfbox (box_param_tbox)
    -
    - -

    generate manifest box

    -
    Parameters
    - - -
    [in]boxpointer to the reference manf box
    -
    -
    -
    Returns
    generated manfbox
    - -

    References manfbox_param::first, gene_childboxheader(), get_DBoxlen(), boxheader_param::headlen, and boxheader_param::next.

    - -

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ print_manfbox()

    - -
    -
    - - - - - - - - -
    void print_manfbox (manfbox_param_tmanf)
    -
    - -

    print manf box parameters

    -
    Parameters
    - - -
    [in]manfmanf box pointer
    -
    -
    - -

    References manfbox_param::first, boxheader_param::next, and print_boxheader().

    - -
    -
    - -

    ◆ search_boxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* search_boxheader (const char type[],
    manfbox_param_tmanf 
    )
    -
    - -

    search a boxheader by box type from manifest box

    -
    Parameters
    - - - -
    [in]typebox type
    [in]manfmanf box pointer
    -
    -
    -
    Returns
    found box pointer
    - -

    References FCGI_stderr, manfbox_param::first, boxheader_param::next, and boxheader_param::type.

    - -

    Referenced by set_cidxdata(), and set_ppixdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/manfbox__manager_8h.html b/build/doc/html/manfbox__manager_8h.html deleted file mode 100644 index ee86d7210..000000000 --- a/build/doc/html/manfbox__manager_8h.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -OpenJPEG: manfbox_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    manfbox_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "box_manager.h"
    -#include "boxheader_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  manfbox_param
     manifest box parameters More...
     
    - - - - -

    -Typedefs

    typedef struct manfbox_param manfbox_param_t
     manifest box parameters More...
     
    - - - - - - - - - - - - - -

    -Functions

    manfbox_param_tgene_manfbox (box_param_t *box)
     generate manifest box More...
     
    void delete_manfbox (manfbox_param_t **manf)
     delete manifest box More...
     
    void print_manfbox (manfbox_param_t *manf)
     print manf box parameters More...
     
    boxheader_param_tsearch_boxheader (const char type[], manfbox_param_t *manf)
     search a boxheader by box type from manifest box More...
     
    -

    Typedef Documentation

    - -

    ◆ manfbox_param_t

    - -
    -
    - - - - -
    typedef struct manfbox_param manfbox_param_t
    -
    - -

    manifest box parameters

    -

    I.3.2.3 Manifest box

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_manfbox()

    - -
    -
    - - - - - - - - -
    void delete_manfbox (manfbox_param_t ** manf)
    -
    - -

    delete manifest box

    -
    Parameters
    - - -
    [in,out]manfaddressof the manfbox pointer
    -
    -
    - -

    References boxheader_param::next.

    - -

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ gene_manfbox()

    - -
    -
    - - - - - - - - -
    manfbox_param_t* gene_manfbox (box_param_tbox)
    -
    - -

    generate manifest box

    -
    Parameters
    - - -
    [in]boxpointer to the reference manf box
    -
    -
    -
    Returns
    generated manfbox
    - -

    References manfbox_param::first, gene_childboxheader(), get_DBoxlen(), boxheader_param::headlen, and boxheader_param::next.

    - -

    Referenced by set_cidxdata(), set_ppixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ print_manfbox()

    - -
    -
    - - - - - - - - -
    void print_manfbox (manfbox_param_tmanf)
    -
    - -

    print manf box parameters

    -
    Parameters
    - - -
    [in]manfmanf box pointer
    -
    -
    - -

    References manfbox_param::first, boxheader_param::next, and print_boxheader().

    - -
    -
    - -

    ◆ search_boxheader()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxheader_param_t* search_boxheader (const char type[],
    manfbox_param_tmanf 
    )
    -
    - -

    search a boxheader by box type from manifest box

    -
    Parameters
    - - - -
    [in]typebox type
    [in]manfmanf box pointer
    -
    -
    -
    Returns
    found box pointer
    - -

    References FCGI_stderr, manfbox_param::first, boxheader_param::next, and boxheader_param::type.

    - -

    Referenced by set_cidxdata(), and set_ppixdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/manfbox__manager_8h_source.html b/build/doc/html/manfbox__manager_8h_source.html deleted file mode 100644 index d3049b174..000000000 --- a/build/doc/html/manfbox__manager_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -OpenJPEG: manfbox_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    manfbox_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef MANFBOX_MANAGER_H_
    -
    32 # define MANFBOX_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "box_manager.h"
    -
    36 #include "boxheader_manager.h"
    -
    37 
    -
    38 
    -
    41 typedef struct manfbox_param {
    - - -
    44 
    -
    45 
    - -
    53 
    -
    54 
    -
    60 void delete_manfbox(manfbox_param_t **manf);
    -
    61 
    -
    62 
    -
    68 void print_manfbox(manfbox_param_t *manf);
    -
    69 
    -
    70 
    -
    78 boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf);
    -
    79 
    -
    80 
    -
    81 #endif /* !MANFBOX_MANAGER_H_ */
    -
    -
    Byte_t headlen
    header length 8 or 16
    Definition: boxheader_manager.h:40
    -
    struct boxheader_param * next
    pointer to the next header box
    Definition: boxheader_manager.h:43
    -
    box header parameters
    Definition: boxheader_manager.h:39
    - -
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    box parameters
    Definition: box_manager.h:37
    -
    void print_manfbox(manfbox_param_t *manf)
    print manf box parameters
    Definition: manfbox_manager.c:89
    -
    #define FCGI_stderr
    Definition: manfbox_manager.c:41
    -
    manifest box parameters
    Definition: manfbox_manager.h:41
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    boxheader_param_t * search_boxheader(const char type[], manfbox_param_t *manf)
    search a boxheader by box type from manifest box
    Definition: manfbox_manager.c:100
    -
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    -
    void delete_manfbox(manfbox_param_t **manf)
    delete manifest box
    Definition: manfbox_manager.c:73
    -
    void print_manfbox(manfbox_param_t *manf)
    print manf box parameters
    Definition: manfbox_manager.c:89
    -
    void print_boxheader(boxheader_param_t *boxheader)
    print box header parameters
    Definition: boxheader_manager.c:79
    -
    boxheader_param_t * gene_childboxheader(box_param_t *superbox, OPJ_OFF_T offset)
    generate a child box header at the given offset
    Definition: boxheader_manager.c:74
    - -
    boxheader_param_t * first
    top of the box header list
    Definition: manfbox_manager.h:42
    -
    struct manfbox_param manfbox_param_t
    manifest box parameters
    -
    manfbox_param_t * gene_manfbox(box_param_t *box)
    generate manifest box
    Definition: manfbox_manager.c:45
    - - -
    char type[4]
    type of information in the DBox
    Definition: boxheader_manager.h:42
    - - - - diff --git a/build/doc/html/marker__manager_8c.html b/build/doc/html/marker__manager_8c.html deleted file mode 100644 index 29455e932..000000000 --- a/build/doc/html/marker__manager_8c.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -OpenJPEG: marker_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    marker_manager.c File Reference
    -
    -
    -
    #include "marker_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - -

    -Functions

    marker_param_t set_marker (codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
     set marker parameters from inputs More...
     
    Byte_t fetch_marker1byte (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 1-bytes of data in file stream More...
     
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 4-byte big endian Byte codes in file stream More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ fetch_marker1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_marker1byte (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 1-bytes of data in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream1byte(), and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ fetch_marker2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream2bytebigendian(), and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ fetch_marker4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream4bytebigendian(), and marker_param::offset.

    - -

    Referenced by set_SIZmkrdata().

    - -
    -
    - -

    ◆ set_marker()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    marker_param_t set_marker (codestream_param_t cs,
    Byte2_t code,
    OPJ_OFF_T offset,
    Byte2_t length 
    )
    -
    - -

    set marker parameters from inputs

    -
    Parameters
    - - - - - -
    [in]csmarker code
    [in]codemarker code
    [in]offsetoffset in the codestream
    [in]lengthmarker segment length
    -
    -
    -
    Returns
    structure of generated marker parameters
    - -

    References marker_param::code, marker_param::cs, marker_param::length, and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/marker__manager_8h.html b/build/doc/html/marker__manager_8h.html deleted file mode 100644 index c69a61baf..000000000 --- a/build/doc/html/marker__manager_8h.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - -OpenJPEG: marker_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    marker_manager.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  marker_param
     Marker parameters. More...
     
    - - - - -

    -Typedefs

    typedef struct marker_param marker_param_t
     Marker parameters. More...
     
    - - - - - - - - - - - - - -

    -Functions

    marker_param_t set_marker (codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
     set marker parameters from inputs More...
     
    Byte_t fetch_marker1byte (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 1-bytes of data in file stream More...
     
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 2-byte big endian Byte codes in file stream More...
     
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker, OPJ_OFF_T offset)
     fetch marker content 4-byte big endian Byte codes in file stream More...
     
    -

    Typedef Documentation

    - -

    ◆ marker_param_t

    - -
    -
    - - - - -
    typedef struct marker_param marker_param_t
    -
    - -

    Marker parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ fetch_marker1byte()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t fetch_marker1byte (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 1-bytes of data in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream1byte(), and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ fetch_marker2bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte2_t fetch_marker2bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 2-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream2bytebigendian(), and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ fetch_marker4bytebigendian()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte4_t fetch_marker4bytebigendian (marker_param_t marker,
    OPJ_OFF_T offset 
    )
    -
    - -

    fetch marker content 4-byte big endian Byte codes in file stream

    -
    Parameters
    - - - -
    [in]markermarker structure
    [in]offsetstart Byte position in marker
    -
    -
    -
    Returns
    fetched code
    - -

    References marker_param::cs, fetch_codestream4bytebigendian(), and marker_param::offset.

    - -

    Referenced by set_SIZmkrdata().

    - -
    -
    - -

    ◆ set_marker()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    marker_param_t set_marker (codestream_param_t cs,
    Byte2_t code,
    OPJ_OFF_T offset,
    Byte2_t length 
    )
    -
    - -

    set marker parameters from inputs

    -
    Parameters
    - - - - - -
    [in]csmarker code
    [in]codemarker code
    [in]offsetoffset in the codestream
    [in]lengthmarker segment length
    -
    -
    -
    Returns
    structure of generated marker parameters
    - -

    References marker_param::code, marker_param::cs, marker_param::length, and marker_param::offset.

    - -

    Referenced by set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/marker__manager_8h_source.html b/build/doc/html/marker__manager_8h_source.html deleted file mode 100644 index 9bdab6b68..000000000 --- a/build/doc/html/marker__manager_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -OpenJPEG: marker_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    marker_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef MARKER_MANAGER_H_
    -
    32 # define MARKER_MANAGER_H_
    -
    33 
    -
    34 #include "codestream_manager.h"
    -
    35 
    -
    36 
    -
    38 typedef struct marker_param {
    - - - - - -
    44 
    -
    45 
    - -
    56  Byte2_t length);
    -
    57 
    -
    58 
    - -
    67 
    - -
    76 
    - -
    85 
    -
    86 
    -
    87 #endif /* !MARKER_MANAGER_H_ */
    -
    -
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    -
    Byte2_t fetch_codestream2bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 2-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:66
    -
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    Byte4_t fetch_codestream4bytebigendian(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 4-byte big endian Byte codes in file stream
    Definition: codestream_manager.c:71
    -
    Byte2_t length
    marker segment length
    Definition: marker_manager.h:42
    -
    Byte_t fetch_marker1byte(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 1-bytes of data in file stream
    Definition: marker_manager.c:56
    -
    codestream parameters
    Definition: codestream_manager.h:37
    - -
    Byte_t fetch_codestream1byte(codestream_param_t *cs, OPJ_OFF_T offset)
    fetch Codestream 1-byte Byte code in file stream
    Definition: codestream_manager.c:61
    -
    Byte4_t fetch_marker4bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 4-byte big endian Byte codes in file stream
    Definition: marker_manager.c:66
    -
    Marker parameters.
    Definition: marker_manager.h:38
    -
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    - -
    OPJ_OFF_T offset
    offset relative to the start of the codestream ( including the length parameter but not the marker it...
    Definition: marker_manager.h:41
    -
    marker_param_t set_marker(codestream_param_t cs, Byte2_t code, OPJ_OFF_T offset, Byte2_t length)
    set marker parameters from inputs
    Definition: marker_manager.c:42
    -
    codestream_param_t cs
    corresponding codestream
    Definition: marker_manager.h:39
    -
    Byte2_t fetch_marker2bytebigendian(marker_param_t marker, OPJ_OFF_T offset)
    fetch marker content 2-byte big endian Byte codes in file stream
    Definition: marker_manager.c:61
    -
    Byte2_t code
    marker code
    Definition: marker_manager.h:40
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    struct marker_param marker_param_t
    Marker parameters.
    - - - - diff --git a/build/doc/html/mct_8c.html b/build/doc/html/mct_8c.html deleted file mode 100644 index 1f46467cd..000000000 --- a/build/doc/html/mct_8c.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - -OpenJPEG: mct.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    mct.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    const OPJ_FLOAT64opj_mct_get_mct_norms ()
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms_real ()
     FIXME DOC. More...
     
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component transform to an image. More...
     
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
     Get norm of the basis function used for the reversible multi-component transform. More...
     
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component transform to an image. More...
     
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
     Get norm of the basis function used for the irreversible multi-component transform. More...
     
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    void opj_calculate_norms (OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
     FIXME DOC. More...
     
    - - - - - -

    -Variables

    static const OPJ_FLOAT64 opj_mct_norms [3] = { 1.732, .8292, .8292 }
     
    static const OPJ_FLOAT64 opj_mct_norms_real [3] = { 1.732, 1.805, 1.573 }
     
    -

    Function Documentation

    - -

    ◆ opj_calculate_norms()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_calculate_norms (OPJ_FLOAT64pNorms,
    OPJ_UINT32 p_nb_comps,
    OPJ_FLOAT32pMatrix 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - -
    pNormsMCT data
    p_nb_compssize of components
    pMatrixcomponents
    -
    -
    -
    Returns
    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_mct_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply a reversible multi-component inverse transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_decode_custom()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTEpDecodingData,
    OPJ_SIZE_T n,
    OPJ_BYTE ** pData,
    OPJ_UINT32 pNbComp,
    OPJ_UINT32 isSigned 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - - - -
    pDecodingDataMCT data
    nsize of components
    pDatacomponents
    pNbCompnb of components (i.e. size of p_data)
    isSignedtells if the data is signed
    -
    -
    -
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    - -

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_decode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0,
    OPJ_FLOAT32 *OPJ_RESTRICT c1,
    OPJ_FLOAT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply an irreversible multi-component inverse transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply a reversible multi-component transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_encode_custom()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTEp_coding_data,
    OPJ_SIZE_T n,
    OPJ_BYTE ** p_data,
    OPJ_UINT32 p_nb_comp,
    OPJ_UINT32 is_signed 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - - - -
    p_coding_dataMCT data
    nsize of components
    p_datacomponents
    p_nb_compnb of components (i.e. size of p_data)
    is_signedtells if the data is signed
    -
    -
    -
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    - -

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_int_fix_mul(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_encode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply an irreversible multi-component transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    -
    -
    - -

    References opj_int_fix_mul().

    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_get_mct_norms()

    - -
    -
    - - - - - - - -
    const OPJ_FLOAT64* opj_mct_get_mct_norms ()
    -
    - -

    FIXME DOC.

    - -

    References opj_mct_norms.

    - -

    Referenced by opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_mct_get_mct_norms_real()

    - -
    -
    - - - - - - - -
    const OPJ_FLOAT64* opj_mct_get_mct_norms_real ()
    -
    - -

    FIXME DOC.

    - -

    References opj_mct_norms_real.

    - -

    Referenced by opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_mct_getnorm()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
    -
    - -

    Get norm of the basis function used for the reversible multi-component transform.

    -
    Parameters
    - - -
    compnoNumber of the component (0->Y, 1->U, 2->V)
    -
    -
    -
    Returns
    - -

    References opj_mct_norms.

    - -
    -
    - -

    ◆ opj_mct_getnorm_real()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
    -
    - -

    Get norm of the basis function used for the irreversible multi-component transform.

    -
    Parameters
    - - -
    compnoNumber of the component (0->Y, 1->U, 2->V)
    -
    -
    -
    Returns
    - -

    References opj_mct_norms_real.

    - -
    -
    -

    Variable Documentation

    - -

    ◆ opj_mct_norms

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT64 opj_mct_norms[3] = { 1.732, .8292, .8292 }
    -
    -static
    -
    - -

    Referenced by opj_mct_get_mct_norms(), and opj_mct_getnorm().

    - -
    -
    - -

    ◆ opj_mct_norms_real

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_FLOAT64 opj_mct_norms_real[3] = { 1.732, 1.805, 1.573 }
    -
    -static
    -
    -
    -
    - - - - diff --git a/build/doc/html/mct_8h.html b/build/doc/html/mct_8h.html deleted file mode 100644 index 77de8deff..000000000 --- a/build/doc/html/mct_8h.html +++ /dev/null @@ -1,598 +0,0 @@ - - - - - - - -OpenJPEG: mct.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mct.h File Reference
    -
    -
    - -

    Implementation of a multi-component transforms (MCT) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component transform to an image. More...
     
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply a reversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
     Get norm of the basis function used for the reversible multi-component transform. More...
     
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component transform to an image. More...
     
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
     Apply an irreversible multi-component inverse transform to an image. More...
     
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
     Get norm of the basis function used for the irreversible multi-component transform. More...
     
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTE *p_coding_data, OPJ_SIZE_T n, OPJ_BYTE **p_data, OPJ_UINT32 p_nb_comp, OPJ_UINT32 is_signed)
     FIXME DOC. More...
     
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
     FIXME DOC. More...
     
    void opj_calculate_norms (OPJ_FLOAT64 *pNorms, OPJ_UINT32 p_nb_comps, OPJ_FLOAT32 *pMatrix)
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms (void)
     FIXME DOC. More...
     
    const OPJ_FLOAT64opj_mct_get_mct_norms_real (void)
     FIXME DOC. More...
     
    -

    Detailed Description

    -

    Implementation of a multi-component transforms (MCT)

    -

    The functions in MCT.C have for goal to realize reversible and irreversible multicomponent transform. The functions in MCT.C are used by some function in TCD.C.

    -

    Function Documentation

    - -

    ◆ opj_calculate_norms()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_calculate_norms (OPJ_FLOAT64pNorms,
    OPJ_UINT32 p_nb_comps,
    OPJ_FLOAT32pMatrix 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - -
    pNormsMCT data
    p_nb_compssize of components
    pMatrixcomponents
    -
    -
    -
    Returns
    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_mct_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_decode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply a reversible multi-component inverse transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_decode_custom()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_mct_decode_custom (OPJ_BYTEpDecodingData,
    OPJ_SIZE_T n,
    OPJ_BYTE ** pData,
    OPJ_UINT32 pNbComp,
    OPJ_UINT32 isSigned 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - - - -
    pDecodingDataMCT data
    nsize of components
    pDatacomponents
    pNbCompnb of components (i.e. size of p_data)
    isSignedtells if the data is signed
    -
    -
    -
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    - -

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_decode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_decode_real (OPJ_FLOAT32 *OPJ_RESTRICT c0,
    OPJ_FLOAT32 *OPJ_RESTRICT c1,
    OPJ_FLOAT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply an irreversible multi-component inverse transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for luminance component
    c1Samples for red chrominance component
    c2Samples for blue chrominance component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_decode().

    - -
    -
    - -

    ◆ opj_mct_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_encode (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply a reversible multi-component transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    -
    -
    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_encode_custom()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_mct_encode_custom (OPJ_BYTEp_coding_data,
    OPJ_SIZE_T n,
    OPJ_BYTE ** p_data,
    OPJ_UINT32 p_nb_comp,
    OPJ_UINT32 is_signed 
    )
    -
    - -

    FIXME DOC.

    -
    Parameters
    - - - - - - -
    p_coding_dataMCT data
    nsize of components
    p_datacomponents
    p_nb_compnb of components (i.e. size of p_data)
    is_signedtells if the data is signed
    -
    -
    -
    Returns
    OPJ_FALSE if function encounter a problem, OPJ_TRUE otherwise
    - -

    References OPJ_ARG_NOT_USED, OPJ_FALSE, opj_free(), opj_int_fix_mul(), opj_malloc(), and OPJ_TRUE.

    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_encode_real()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mct_encode_real (OPJ_INT32 *OPJ_RESTRICT c0,
    OPJ_INT32 *OPJ_RESTRICT c1,
    OPJ_INT32 *OPJ_RESTRICT c2,
    OPJ_SIZE_T n 
    )
    -
    - -

    Apply an irreversible multi-component transform to an image.

    -
    Parameters
    - - - - - -
    c0Samples for red component
    c1Samples for green component
    c2Samples blue component
    nNumber of samples for each component
    -
    -
    - -

    References opj_int_fix_mul().

    - -

    Referenced by opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ opj_mct_get_mct_norms()

    - -
    -
    - - - - - - - - -
    const OPJ_FLOAT64* opj_mct_get_mct_norms (void )
    -
    - -

    FIXME DOC.

    - -

    References opj_mct_norms.

    - -

    Referenced by opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_mct_get_mct_norms_real()

    - -
    -
    - - - - - - - - -
    const OPJ_FLOAT64* opj_mct_get_mct_norms_real (void )
    -
    - -

    FIXME DOC.

    - -

    References opj_mct_norms_real.

    - -

    Referenced by opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_mct_getnorm()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_mct_getnorm (OPJ_UINT32 compno)
    -
    - -

    Get norm of the basis function used for the reversible multi-component transform.

    -
    Parameters
    - - -
    compnoNumber of the component (0->Y, 1->U, 2->V)
    -
    -
    -
    Returns
    - -

    References opj_mct_norms.

    - -
    -
    - -

    ◆ opj_mct_getnorm_real()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_mct_getnorm_real (OPJ_UINT32 compno)
    -
    - -

    Get norm of the basis function used for the irreversible multi-component transform.

    -
    Parameters
    - - -
    compnoNumber of the component (0->Y, 1->U, 2->V)
    -
    -
    -
    Returns
    - -

    References opj_mct_norms_real.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/mct_8h_source.html b/build/doc/html/mct_8h_source.html deleted file mode 100644 index c714a1b6d..000000000 --- a/build/doc/html/mct_8h_source.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -OpenJPEG: mct.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mct.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    16  * All rights reserved.
    -
    17  *
    -
    18  * Redistribution and use in source and binary forms, with or without
    -
    19  * modification, are permitted provided that the following conditions
    -
    20  * are met:
    -
    21  * 1. Redistributions of source code must retain the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer.
    -
    23  * 2. Redistributions in binary form must reproduce the above copyright
    -
    24  * notice, this list of conditions and the following disclaimer in the
    -
    25  * documentation and/or other materials provided with the distribution.
    -
    26  *
    -
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    37  * POSSIBILITY OF SUCH DAMAGE.
    -
    38  */
    -
    39 
    -
    40 #ifndef OPJ_MCT_H
    -
    41 #define OPJ_MCT_H
    -
    42 
    -
    52 
    -
    55 /* ----------------------------------------------------------------------- */
    - - - - - -
    80 
    - - - - - -
    105 
    - -
    116  OPJ_BYTE * p_coding_data,
    -
    117  OPJ_SIZE_T n,
    -
    118  OPJ_BYTE ** p_data,
    -
    119  OPJ_UINT32 p_nb_comp,
    -
    120  OPJ_UINT32 is_signed);
    - -
    131  OPJ_BYTE * pDecodingData,
    -
    132  OPJ_SIZE_T n,
    -
    133  OPJ_BYTE ** pData,
    -
    134  OPJ_UINT32 pNbComp,
    -
    135  OPJ_UINT32 isSigned);
    -
    143 void opj_calculate_norms(OPJ_FLOAT64 * pNorms,
    -
    144  OPJ_UINT32 p_nb_comps,
    -
    145  OPJ_FLOAT32 * pMatrix);
    -
    149 const OPJ_FLOAT64 * opj_mct_get_mct_norms(void);
    - -
    154 /* ----------------------------------------------------------------------- */
    -
    158 
    -
    159 #endif /* OPJ_MCT_H */
    -
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    OPJ_FLOAT64 opj_mct_getnorm_real(OPJ_UINT32 compno)
    Get norm of the basis function used for the irreversible multi-component transform.
    Definition: mct.c:446
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms()
    FIXME DOC.
    Definition: mct.c:62
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    OPJ_FLOAT64 opj_mct_getnorm_real(OPJ_UINT32 compno)
    Get norm of the basis function used for the irreversible multi-component transform.
    Definition: mct.c:446
    -
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    -
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    -
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    -
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    -
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 pNbComps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    -
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *p_coding_data, OPJ_SIZE_T n, OPJ_BYTE **p_data, OPJ_UINT32 p_nb_comp, OPJ_UINT32 is_signed)
    FIXME DOC.
    Definition: mct.c:452
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    OPJ_FLOAT64 opj_mct_getnorm(OPJ_UINT32 compno)
    Get norm of the basis function used for the reversible multi-component transform.
    Definition: mct.c:204
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    -
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    -
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    -
    void opj_calculate_norms(OPJ_FLOAT64 *pNorms, OPJ_UINT32 p_nb_comps, OPJ_FLOAT32 *pMatrix)
    FIXME DOC.
    Definition: mct.c:547
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real()
    FIXME DOC.
    Definition: mct.c:67
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real(void)
    FIXME DOC.
    Definition: mct.c:67
    -
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    -
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    -
    OPJ_FLOAT64 opj_mct_getnorm(OPJ_UINT32 compno)
    Get norm of the basis function used for the reversible multi-component transform.
    Definition: mct.c:204
    -
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    -
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:452
    -
    static const OPJ_FLOAT64 opj_mct_norms_real[3]
    Definition: mct.c:60
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    -
    static const OPJ_FLOAT64 opj_mct_norms[3]
    Definition: mct.c:55
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms(void)
    FIXME DOC.
    Definition: mct.c:62
    - - - - diff --git a/build/doc/html/menu.js b/build/doc/html/menu.js deleted file mode 100644 index 433c15b8f..000000000 --- a/build/doc/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/build/doc/html/menudata.js b/build/doc/html/menudata.js deleted file mode 100644 index 94ee3cfba..000000000 --- a/build/doc/html/menudata.js +++ /dev/null @@ -1,174 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Related Pages",url:"pages.html"}, -{text:"Modules",url:"modules.html"}, -{text:"Data Structures",url:"annotated.html",children:[ -{text:"Data Structures",url:"annotated.html"}, -{text:"Data Fields",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions_b.html#index_b"}, -{text:"c",url:"functions_c.html#index_c"}, -{text:"d",url:"functions_d.html#index_d"}, -{text:"e",url:"functions_e.html#index_e"}, -{text:"f",url:"functions_f.html#index_f"}, -{text:"g",url:"functions_g.html#index_g"}, -{text:"h",url:"functions_h.html#index_h"}, -{text:"i",url:"functions_i.html#index_i"}, -{text:"j",url:"functions_j.html#index_j"}, -{text:"k",url:"functions_k.html#index_k"}, -{text:"l",url:"functions_l.html#index_l"}, -{text:"m",url:"functions_m.html#index_m"}, -{text:"n",url:"functions_n.html#index_n"}, -{text:"o",url:"functions_o.html#index_o"}, -{text:"p",url:"functions_p.html#index_p"}, -{text:"q",url:"functions_q.html#index_q"}, -{text:"r",url:"functions_r.html#index_r"}, -{text:"s",url:"functions_s.html#index_s"}, -{text:"t",url:"functions_t.html#index_t"}, -{text:"u",url:"functions_u.html#index_u"}, -{text:"v",url:"functions_v.html#index_v"}, -{text:"w",url:"functions_w.html#index_w"}, -{text:"x",url:"functions_x.html#index_x"}, -{text:"y",url:"functions_y.html#index_y"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars_b.html#index_b"}, -{text:"c",url:"functions_vars_c.html#index_c"}, -{text:"d",url:"functions_vars_d.html#index_d"}, -{text:"e",url:"functions_vars_e.html#index_e"}, -{text:"f",url:"functions_vars_f.html#index_f"}, -{text:"g",url:"functions_vars_g.html#index_g"}, -{text:"h",url:"functions_vars_h.html#index_h"}, -{text:"i",url:"functions_vars_i.html#index_i"}, -{text:"j",url:"functions_vars_j.html#index_j"}, -{text:"k",url:"functions_vars_k.html#index_k"}, -{text:"l",url:"functions_vars_l.html#index_l"}, -{text:"m",url:"functions_vars_m.html#index_m"}, -{text:"n",url:"functions_vars_n.html#index_n"}, -{text:"o",url:"functions_vars_o.html#index_o"}, -{text:"p",url:"functions_vars_p.html#index_p"}, -{text:"q",url:"functions_vars_q.html#index_q"}, -{text:"r",url:"functions_vars_r.html#index_r"}, -{text:"s",url:"functions_vars_s.html#index_s"}, -{text:"t",url:"functions_vars_t.html#index_t"}, -{text:"u",url:"functions_vars_u.html#index_u"}, -{text:"v",url:"functions_vars_v.html#index_v"}, -{text:"w",url:"functions_vars_w.html#index_w"}, -{text:"x",url:"functions_vars_x.html#index_x"}, -{text:"y",url:"functions_vars_y.html#index_y"}]}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"Globals",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"a",url:"globals.html#index_a"}, -{text:"b",url:"globals_b.html#index_b"}, -{text:"c",url:"globals_c.html#index_c"}, -{text:"d",url:"globals_d.html#index_d"}, -{text:"e",url:"globals_e.html#index_e"}, -{text:"f",url:"globals_f.html#index_f"}, -{text:"g",url:"globals_g.html#index_g"}, -{text:"h",url:"globals_h.html#index_h"}, -{text:"i",url:"globals_i.html#index_i"}, -{text:"j",url:"globals_j.html#index_j"}, -{text:"l",url:"globals_l.html#index_l"}, -{text:"m",url:"globals_m.html#index_m"}, -{text:"n",url:"globals_n.html#index_n"}, -{text:"o",url:"globals_o.html#index_o"}, -{text:"p",url:"globals_p.html#index_p"}, -{text:"q",url:"globals_q.html#index_q"}, -{text:"r",url:"globals_r.html#index_r"}, -{text:"s",url:"globals_s.html#index_s"}, -{text:"t",url:"globals_t.html#index_t"}, -{text:"u",url:"globals_u.html#index_u"}, -{text:"v",url:"globals_v.html#index_v"}, -{text:"w",url:"globals_w.html#index_w"}, -{text:"x",url:"globals_x.html#index_x"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"a",url:"globals_func.html#index_a"}, -{text:"b",url:"globals_func_b.html#index_b"}, -{text:"c",url:"globals_func_c.html#index_c"}, -{text:"d",url:"globals_func_d.html#index_d"}, -{text:"e",url:"globals_func_e.html#index_e"}, -{text:"f",url:"globals_func_f.html#index_f"}, -{text:"g",url:"globals_func_g.html#index_g"}, -{text:"h",url:"globals_func_h.html#index_h"}, -{text:"i",url:"globals_func_i.html#index_i"}, -{text:"j",url:"globals_func_j.html#index_j"}, -{text:"m",url:"globals_func_m.html#index_m"}, -{text:"o",url:"globals_func_o.html#index_o"}, -{text:"p",url:"globals_func_p.html#index_p"}, -{text:"r",url:"globals_func_r.html#index_r"}, -{text:"s",url:"globals_func_s.html#index_s"}, -{text:"t",url:"globals_func_t.html#index_t"}, -{text:"u",url:"globals_func_u.html#index_u"}, -{text:"w",url:"globals_func_w.html#index_w"}]}, -{text:"Variables",url:"globals_vars.html"}, -{text:"Typedefs",url:"globals_type.html",children:[ -{text:"a",url:"globals_type.html#index_a"}, -{text:"b",url:"globals_type.html#index_b"}, -{text:"c",url:"globals_type.html#index_c"}, -{text:"d",url:"globals_type.html#index_d"}, -{text:"f",url:"globals_type.html#index_f"}, -{text:"i",url:"globals_type.html#index_i"}, -{text:"j",url:"globals_type.html#index_j"}, -{text:"m",url:"globals_type.html#index_m"}, -{text:"o",url:"globals_type.html#index_o"}, -{text:"p",url:"globals_type.html#index_p"}, -{text:"q",url:"globals_type.html#index_q"}, -{text:"r",url:"globals_type.html#index_r"}, -{text:"s",url:"globals_type.html#index_s"}, -{text:"t",url:"globals_type.html#index_t"}]}, -{text:"Enumerations",url:"globals_enum.html"}, -{text:"Enumerator",url:"globals_eval.html",children:[ -{text:"c",url:"globals_eval.html#index_c"}, -{text:"f",url:"globals_eval.html#index_f"}, -{text:"h",url:"globals_eval.html#index_h"}, -{text:"j",url:"globals_eval.html#index_j"}, -{text:"m",url:"globals_eval.html#index_m"}, -{text:"n",url:"globals_eval.html#index_n"}, -{text:"o",url:"globals_eval.html#index_o"}, -{text:"p",url:"globals_eval.html#index_p"}, -{text:"q",url:"globals_eval.html#index_q"}, -{text:"s",url:"globals_eval.html#index_s"}, -{text:"t",url:"globals_eval.html#index_t"}, -{text:"u",url:"globals_eval.html#index_u"}, -{text:"x",url:"globals_eval.html#index_x"}]}, -{text:"Macros",url:"globals_defs.html",children:[ -{text:"b",url:"globals_defs.html#index_b"}, -{text:"d",url:"globals_defs_d.html#index_d"}, -{text:"e",url:"globals_defs_e.html#index_e"}, -{text:"f",url:"globals_defs_f.html#index_f"}, -{text:"i",url:"globals_defs_i.html#index_i"}, -{text:"j",url:"globals_defs_j.html#index_j"}, -{text:"l",url:"globals_defs_l.html#index_l"}, -{text:"m",url:"globals_defs_m.html#index_m"}, -{text:"n",url:"globals_defs_n.html#index_n"}, -{text:"o",url:"globals_defs_o.html#index_o"}, -{text:"p",url:"globals_defs_p.html#index_p"}, -{text:"s",url:"globals_defs_s.html#index_s"}, -{text:"t",url:"globals_defs_t.html#index_t"}, -{text:"u",url:"globals_defs_u.html#index_u"}, -{text:"v",url:"globals_defs_v.html#index_v"}]}]}]}]} diff --git a/build/doc/html/metadata__manager_8c.html b/build/doc/html/metadata__manager_8c.html deleted file mode 100644 index 082d7c9d3..000000000 --- a/build/doc/html/metadata__manager_8c.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - - - - -OpenJPEG: metadata_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    metadata_manager.c File Reference
    -
    -
    -
    #include "metadata_manager.h"
    -#include "opj_inttypes.h"
    -#include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <limits.h>
    -#include <assert.h>
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    metadatalist_param_tgene_metadatalist (void)
     generate a metadata list More...
     
    metadatalist_param_tconst_metadatalist (int fd)
     construct metadata-bin list of JP2 file More...
     
    void delete_metadatalist (metadatalist_param_t **list)
     delete metadata list More...
     
    metadata_param_tgene_metadata (Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
     generate a metadata bin More...
     
    void delete_metadata (metadata_param_t **metadata)
     delete a metadata bin More...
     
    void insert_metadata_into_list (metadata_param_t *metabin, metadatalist_param_t *metadatalist)
     insert a metadata-bin into list More...
     
    void print_metadata (metadata_param_t *metadata)
     print metadata-bin parameters More...
     
    void print_allmetadata (metadatalist_param_t *list)
     print all metadata parameters More...
     
    boxcontents_param_tgene_boxcontents (OPJ_OFF_T offset, OPJ_SIZE_T length)
     generate box contents More...
     
    metadata_param_tsearch_metadata (Byte8_t idx, metadatalist_param_t *list)
     search a metadata bin by index More...
     
    Byte8_t search_metadataidx (char boxtype[4], metadatalist_param_t *list)
     search a metadata index by box-type More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ const_metadatalist()

    - -
    -
    - - - - - - - - -
    metadatalist_param_t* const_metadatalist (int fd)
    -
    - -

    construct metadata-bin list of JP2 file

    -
    Parameters
    - - -
    [in]fdfile descriptor
    -
    -
    -
    Returns
    pointer to the generated metadata-bin list
    - -

    References delete_box_in_list(), FCGI_stderr, box_param::fd, boxlist_param::first, gene_boxcontents(), gene_metadata(), gene_metadatalist(), gene_placeholder(), gene_placeholderlist(), get_boxstructure(), get_DBoxlen(), get_DBoxoff(), get_filesize(), insert_metadata_into_list(), insert_placeholder_into_list(), box_param::next, and box_param::type.

    - -

    Referenced by parse_jp2file().

    - -
    -
    - -

    ◆ delete_metadata()

    - -
    -
    - - - - - - - - -
    void delete_metadata (metadata_param_t ** metadata)
    -
    - -

    delete a metadata bin

    -
    Parameters
    - - -
    [in,out]metadataaddress of the deleting metadata bin pointer
    -
    -
    - -

    References delete_boxlist(), and delete_placeholderlist().

    - -

    Referenced by delete_metadatalist().

    - -
    -
    - -

    ◆ delete_metadatalist()

    - -
    -
    - - - - - - - - -
    void delete_metadatalist (metadatalist_param_t ** list)
    -
    - -

    delete metadata list

    -
    Parameters
    - - -
    [in,out]listaddress of the metadata list pointer
    -
    -
    - -

    References delete_metadata(), and metadata_param::next.

    - -

    Referenced by delete_cache(), delete_index(), destroy_jpipdecoder(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ gene_boxcontents()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxcontents_param_t* gene_boxcontents (OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    generate box contents

    -
    Returns
    pointer to the box contents
    - -

    References boxcontents_param::length, and boxcontents_param::offset.

    - -

    Referenced by const_metadatalist(), and parse_metadata().

    - -
    -
    - -

    ◆ gene_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    metadata_param_t* gene_metadata (Byte8_t idx,
    boxlist_param_tboxlist,
    placeholderlist_param_tphldlist,
    boxcontents_param_tboxcontents 
    )
    -
    - -

    generate a metadata bin

    -
    Parameters
    - - - - - -
    [in]idxmetadata-bin index
    [in]boxlistbox list pointer
    [in]phldlistplaceholder list pointer
    [in]boxcontentsboxcontents pointer
    -
    -
    -
    Returns
    pointer to the generated metadata bin
    - -

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, metadata_param::next, and metadata_param::placeholderlist.

    - -

    Referenced by const_metadatalist(), and parse_metamsg().

    - -
    -
    - -

    ◆ gene_metadatalist()

    - -
    -
    - - - - - - - - -
    metadatalist_param_t* gene_metadatalist (void )
    -
    - -

    generate a metadata list

    -
    Returns
    pointer to the generated metadata list
    - -

    References metadatalist_param::first, and metadatalist_param::last.

    - -

    Referenced by const_metadatalist(), gene_cache(), handle_JPIPstreamMSG(), and init_jpipdecoder().

    - -
    -
    - -

    ◆ insert_metadata_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_metadata_into_list (metadata_param_tmetabin,
    metadatalist_param_tmetadatalist 
    )
    -
    - -

    insert a metadata-bin into list

    -
    Parameters
    - - - -
    [in]metabinmetadata-bin pointer
    [in]metadatalistmetadata list pointer
    -
    -
    - -

    References metadatalist_param::first, metadatalist_param::last, and metadata_param::next.

    - -

    Referenced by const_metadatalist(), and parse_metamsg().

    - -
    -
    - -

    ◆ print_allmetadata()

    - -
    -
    - - - - - - - - -
    void print_allmetadata (metadatalist_param_tlist)
    -
    - -

    print all metadata parameters

    -
    Parameters
    - - -
    [in]listmetadata list pointer
    -
    -
    - -

    References metadatalist_param::first, logstream, metadata_param::next, and print_metadata().

    - -

    Referenced by output_log(), and print_index().

    - -
    -
    - -

    ◆ print_metadata()

    - -
    -
    - - - - - - - - -
    void print_metadata (metadata_param_tmetadata)
    -
    - -

    print metadata-bin parameters

    -
    Parameters
    - - -
    [in]metadatametadata-bin pointer
    -
    -
    - -

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, boxcontents_param::length, logstream, boxcontents_param::offset, metadata_param::placeholderlist, print_allbox(), and print_allplaceholder().

    - -

    Referenced by print_allmetadata().

    - -
    -
    - -

    ◆ search_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    metadata_param_t* search_metadata (Byte8_t idx,
    metadatalist_param_tlist 
    )
    -
    - -

    search a metadata bin by index

    -
    Parameters
    - - - -
    [in]idxindex
    [in]listmetadata-bin list pointer
    -
    -
    -
    Returns
    found metadata-bin pointer
    - -

    References metadatalist_param::first, metadata_param::idx, and metadata_param::next.

    - -

    Referenced by enqueue_metadata().

    - -
    -
    - -

    ◆ search_metadataidx()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t search_metadataidx (char boxtype[4],
    metadatalist_param_tlist 
    )
    -
    - -

    search a metadata index by box-type

    -
    Parameters
    - - - -
    [in]boxtypebox-type
    [in]listmetadata-bin list pointer
    -
    -
    -
    Returns
    found metadata-bin index, if not found, -1
    - -

    References metadata_param::boxlist, boxlist_param::first, metadatalist_param::first, placeholderlist_param::first, metadata_param::idx, box_param::next, metadata_param::next, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigID, metadata_param::placeholderlist, and box_param::type.

    - -

    Referenced by enqueue_metabins().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/metadata__manager_8h.html b/build/doc/html/metadata__manager_8h.html deleted file mode 100644 index d558c01ad..000000000 --- a/build/doc/html/metadata__manager_8h.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - -OpenJPEG: metadata_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    metadata_manager.h File Reference
    -
    -
    -
    #include "box_manager.h"
    -#include "placeholder_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - -

    -Data Structures

    struct  boxcontents_param
     
    struct  metadata_param
     metadata-bin parameters More...
     
    struct  metadatalist_param
     metadata-bin list parameters More...
     
    - - - - - - - - - -

    -Typedefs

    typedef struct boxcontents_param boxcontents_param_t
     
    typedef struct metadata_param metadata_param_t
     metadata-bin parameters More...
     
    typedef struct metadatalist_param metadatalist_param_t
     metadata-bin list parameters More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    metadatalist_param_tgene_metadatalist (void)
     generate a metadata list More...
     
    metadatalist_param_tconst_metadatalist (int fd)
     construct metadata-bin list of JP2 file More...
     
    void delete_metadatalist (metadatalist_param_t **list)
     delete metadata list More...
     
    metadata_param_tgene_metadata (Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
     generate a metadata bin More...
     
    void delete_metadata (metadata_param_t **metadata)
     delete a metadata bin More...
     
    boxcontents_param_tgene_boxcontents (OPJ_OFF_T offset, OPJ_SIZE_T length)
     generate box contents More...
     
    void print_metadata (metadata_param_t *metadata)
     print metadata-bin parameters More...
     
    void print_allmetadata (metadatalist_param_t *list)
     print all metadata parameters More...
     
    metadata_param_tsearch_metadata (Byte8_t idx, metadatalist_param_t *list)
     search a metadata bin by index More...
     
    Byte8_t search_metadataidx (char boxtype[4], metadatalist_param_t *list)
     search a metadata index by box-type More...
     
    void insert_metadata_into_list (metadata_param_t *metabin, metadatalist_param_t *metadatalist)
     insert a metadata-bin into list More...
     
    -

    Typedef Documentation

    - -

    ◆ boxcontents_param_t

    - -
    -
    - - - - -
    typedef struct boxcontents_param boxcontents_param_t
    -
    - -
    -
    - -

    ◆ metadata_param_t

    - -
    -
    - - - - -
    typedef struct metadata_param metadata_param_t
    -
    - -

    metadata-bin parameters

    - -
    -
    - -

    ◆ metadatalist_param_t

    - -
    -
    - - - - -
    typedef struct metadatalist_param metadatalist_param_t
    -
    - -

    metadata-bin list parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ const_metadatalist()

    - -
    -
    - - - - - - - - -
    metadatalist_param_t* const_metadatalist (int fd)
    -
    - -

    construct metadata-bin list of JP2 file

    -
    Parameters
    - - -
    [in]fdfile descriptor
    -
    -
    -
    Returns
    pointer to the generated metadata-bin list
    - -

    References delete_box_in_list(), FCGI_stderr, box_param::fd, boxlist_param::first, gene_boxcontents(), gene_metadata(), gene_metadatalist(), gene_placeholder(), gene_placeholderlist(), get_boxstructure(), get_DBoxlen(), get_DBoxoff(), get_filesize(), insert_metadata_into_list(), insert_placeholder_into_list(), box_param::next, and box_param::type.

    - -

    Referenced by parse_jp2file().

    - -
    -
    - -

    ◆ delete_metadata()

    - -
    -
    - - - - - - - - -
    void delete_metadata (metadata_param_t ** metadata)
    -
    - -

    delete a metadata bin

    -
    Parameters
    - - -
    [in,out]metadataaddress of the deleting metadata bin pointer
    -
    -
    - -

    References delete_boxlist(), and delete_placeholderlist().

    - -

    Referenced by delete_metadatalist().

    - -
    -
    - -

    ◆ delete_metadatalist()

    - -
    -
    - - - - - - - - -
    void delete_metadatalist (metadatalist_param_t ** list)
    -
    - -

    delete metadata list

    -
    Parameters
    - - -
    [in,out]listaddress of the metadata list pointer
    -
    -
    - -

    References delete_metadata(), and metadata_param::next.

    - -

    Referenced by delete_cache(), delete_index(), destroy_jpipdecoder(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ gene_boxcontents()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    boxcontents_param_t* gene_boxcontents (OPJ_OFF_T offset,
    OPJ_SIZE_T length 
    )
    -
    - -

    generate box contents

    -
    Returns
    pointer to the box contents
    - -

    References boxcontents_param::length, and boxcontents_param::offset.

    - -

    Referenced by const_metadatalist(), and parse_metadata().

    - -
    -
    - -

    ◆ gene_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    metadata_param_t* gene_metadata (Byte8_t idx,
    boxlist_param_tboxlist,
    placeholderlist_param_tphldlist,
    boxcontents_param_tboxcontents 
    )
    -
    - -

    generate a metadata bin

    -
    Parameters
    - - - - - -
    [in]idxmetadata-bin index
    [in]boxlistbox list pointer
    [in]phldlistplaceholder list pointer
    [in]boxcontentsboxcontents pointer
    -
    -
    -
    Returns
    pointer to the generated metadata bin
    - -

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, metadata_param::next, and metadata_param::placeholderlist.

    - -

    Referenced by const_metadatalist(), and parse_metamsg().

    - -
    -
    - -

    ◆ gene_metadatalist()

    - -
    -
    - - - - - - - - -
    metadatalist_param_t* gene_metadatalist (void )
    -
    - -

    generate a metadata list

    -
    Returns
    pointer to the generated metadata list
    - -

    References metadatalist_param::first, and metadatalist_param::last.

    - -

    Referenced by const_metadatalist(), gene_cache(), handle_JPIPstreamMSG(), and init_jpipdecoder().

    - -
    -
    - -

    ◆ insert_metadata_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_metadata_into_list (metadata_param_tmetabin,
    metadatalist_param_tmetadatalist 
    )
    -
    - -

    insert a metadata-bin into list

    -
    Parameters
    - - - -
    [in]metabinmetadata-bin pointer
    [in]metadatalistmetadata list pointer
    -
    -
    - -

    References metadatalist_param::first, metadatalist_param::last, and metadata_param::next.

    - -

    Referenced by const_metadatalist(), and parse_metamsg().

    - -
    -
    - -

    ◆ print_allmetadata()

    - -
    -
    - - - - - - - - -
    void print_allmetadata (metadatalist_param_tlist)
    -
    - -

    print all metadata parameters

    -
    Parameters
    - - -
    [in]listmetadata list pointer
    -
    -
    - -

    References metadatalist_param::first, logstream, metadata_param::next, and print_metadata().

    - -

    Referenced by output_log(), and print_index().

    - -
    -
    - -

    ◆ print_metadata()

    - -
    -
    - - - - - - - - -
    void print_metadata (metadata_param_tmetadata)
    -
    - -

    print metadata-bin parameters

    -
    Parameters
    - - -
    [in]metadatametadata-bin pointer
    -
    -
    - -

    References metadata_param::boxcontents, metadata_param::boxlist, metadata_param::idx, boxcontents_param::length, logstream, boxcontents_param::offset, metadata_param::placeholderlist, print_allbox(), and print_allplaceholder().

    - -

    Referenced by print_allmetadata().

    - -
    -
    - -

    ◆ search_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    metadata_param_t* search_metadata (Byte8_t idx,
    metadatalist_param_tlist 
    )
    -
    - -

    search a metadata bin by index

    -
    Parameters
    - - - -
    [in]idxindex
    [in]listmetadata-bin list pointer
    -
    -
    -
    Returns
    found metadata-bin pointer
    - -

    References metadatalist_param::first, metadata_param::idx, and metadata_param::next.

    - -

    Referenced by enqueue_metadata().

    - -
    -
    - -

    ◆ search_metadataidx()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte8_t search_metadataidx (char boxtype[4],
    metadatalist_param_tlist 
    )
    -
    - -

    search a metadata index by box-type

    -
    Parameters
    - - - -
    [in]boxtypebox-type
    [in]listmetadata-bin list pointer
    -
    -
    -
    Returns
    found metadata-bin index, if not found, -1
    - -

    References metadata_param::boxlist, boxlist_param::first, metadatalist_param::first, placeholderlist_param::first, metadata_param::idx, box_param::next, metadata_param::next, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigID, metadata_param::placeholderlist, and box_param::type.

    - -

    Referenced by enqueue_metabins().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/metadata__manager_8h_source.html b/build/doc/html/metadata__manager_8h_source.html deleted file mode 100644 index f134ffdb0..000000000 --- a/build/doc/html/metadata__manager_8h_source.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - -OpenJPEG: metadata_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    metadata_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef METADATA_MANAGER_H_
    -
    32 #define METADATA_MANAGER_H_
    -
    33 
    -
    34 #include "box_manager.h"
    -
    35 #include "placeholder_manager.h"
    -
    36 
    -
    37 typedef struct boxcontents_param {
    - - - -
    41 
    -
    43 typedef struct metadata_param {
    - - - - - - -
    50  *next;
    - -
    52 
    -
    54 typedef struct metadatalist_param {
    - - - -
    58 
    -
    59 
    - -
    66 
    -
    67 
    - -
    75 
    -
    76 
    - -
    83 
    -
    84 
    - -
    95  placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents);
    -
    96 
    -
    102 void delete_metadata(metadata_param_t **metadata);
    -
    103 
    - -
    110 
    -
    116 void print_metadata(metadata_param_t *metadata);
    -
    117 
    - -
    124 
    -
    125 
    - -
    134 
    -
    135 
    -
    143 Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list);
    -
    144 
    -
    145 
    - -
    153  metadatalist_param_t *metadatalist);
    -
    154 
    -
    155 #endif /* !METADATA_MANAGER_H_ */
    -
    -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    -
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    -
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    -
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    -
    placeholderlist_param_t * placeholderlist
    placeholder box list
    Definition: metadata_manager.h:46
    -
    struct boxcontents_param boxcontents_param_t
    -
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    -
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    - -
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    -
    box parameters
    Definition: box_manager.h:37
    -
    metadata_param_t * first
    first metadata-bin pointer of the list
    Definition: metadata_manager.h:55
    -
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    -
    void delete_boxlist(boxlist_param_t **boxlist)
    delete box list
    Definition: box_manager.c:423
    -
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    -
    #define logstream
    Definition: metadata_manager.c:45
    -
    void print_allbox(boxlist_param_t *boxlist)
    print all box parameters
    Definition: box_manager.c:375
    -
    boxlist_param_t * get_boxstructure(int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
    get box structure of JP2 file
    Definition: box_manager.c:60
    -
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    -
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    struct metadata_param * next
    pointer to the next metadata-bin
    Definition: metadata_manager.h:49
    - -
    void delete_metadata(metadata_param_t **metadata)
    delete a metadata bin
    Definition: metadata_manager.c:143
    -
    Definition: metadata_manager.h:37
    -
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    -
    void print_metadata(metadata_param_t *metadata)
    print metadata-bin parameters
    Definition: metadata_manager.c:167
    -
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    -
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    -
    metadata-bin parameters
    Definition: metadata_manager.h:43
    -
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    -
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    -
    void delete_metadata(metadata_param_t **metadata)
    delete a metadata bin
    Definition: metadata_manager.c:143
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    -
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    -
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    -
    char type[4]
    type of information in the DBox
    Definition: box_manager.h:42
    -
    void delete_box_in_list(box_param_t **box, boxlist_param_t *boxlist)
    delete a box in list
    Definition: box_manager.c:395
    -
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    -
    struct metadatalist_param metadatalist_param_t
    metadata-bin list parameters
    -
    Byte8_t idx
    index number
    Definition: metadata_manager.h:44
    -
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    -
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    -
    Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list)
    search a metadata index by box-type
    Definition: metadata_manager.c:223
    -
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    -
    metadata_param_t * last
    last metadata-bin pointer of the list
    Definition: metadata_manager.h:56
    -
    Box list parameters.
    Definition: box_manager.h:48
    -
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    -
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    - -
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    -
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    -
    #define FCGI_stderr
    Definition: metadata_manager.c:44
    - -
    int fd
    file descriptor
    Definition: box_manager.h:38
    -
    void print_metadata(metadata_param_t *metadata)
    print metadata-bin parameters
    Definition: metadata_manager.c:167
    -
    OPJ_OFF_T get_DBoxoff(box_param_t *box)
    get DBox offset
    Definition: box_manager.c:306
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    metadatalist_param_t * const_metadatalist(int fd)
    construct metadata-bin list of JP2 file
    Definition: metadata_manager.c:61
    -
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    -
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    -
    struct metadata_param metadata_param_t
    metadata-bin parameters
    - - - - diff --git a/build/doc/html/mhixbox__manager_8c.html b/build/doc/html/mhixbox__manager_8c.html deleted file mode 100644 index 7be8c32e2..000000000 --- a/build/doc/html/mhixbox__manager_8c.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -OpenJPEG: mhixbox_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    mhixbox_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include "mhixbox_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - -

    -Functions

    mhixbox_param_tgene_mhixbox (box_param_t *box)
     generate mhix box More...
     
    markeridx_param_tsearch_markeridx (Byte2_t code, mhixbox_param_t *mhix)
     search a marker index by marker code from mhix box More...
     
    void print_mhixbox (mhixbox_param_t *mhix)
     print mhix box parameters More...
     
    void print_markeridx (markeridx_param_t *markeridx)
     print marker index parameters More...
     
    void delete_mhixbox (mhixbox_param_t **mhix)
     delete mhix box More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_mhixbox()

    - -
    -
    - - - - - - - - -
    void delete_mhixbox (mhixbox_param_t ** mhix)
    -
    - -

    delete mhix box

    -
    Parameters
    - - -
    [in,out]mhixaddress of the mhix box pointer
    -
    -
    - -

    References markeridx_param::next.

    - -

    Referenced by delete_index(), and set_mainmhixdata().

    - -
    -
    - -

    ◆ gene_mhixbox()

    - -
    -
    - - - - - - - - -
    mhixbox_param_t* gene_mhixbox (box_param_tbox)
    -
    - -

    generate mhix box

    -
    Parameters
    - - -
    [in]boxpointer to the reference mhix box
    -
    -
    -
    Returns
    generated mhixbox pointer
    - -

    References markeridx_param::code, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), mhixbox_param::first, get_DBoxlen(), markeridx_param::length, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    - -

    Referenced by set_mainmhixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ print_markeridx()

    - -
    -
    - - - - - - - - -
    void print_markeridx (markeridx_param_tmarkeridx)
    -
    - -

    print marker index parameters

    -
    Parameters
    - - -
    [in]markeridxmarker index pointer
    -
    -
    - -

    References markeridx_param::code, markeridx_param::length, logstream, markeridx_param::num_remain, and markeridx_param::offset.

    - -
    -
    - -

    ◆ print_mhixbox()

    - -
    -
    - - - - - - - - -
    void print_mhixbox (mhixbox_param_tmhix)
    -
    - -

    print mhix box parameters

    -
    Parameters
    - - -
    [in]mhixmhix box pointer
    -
    -
    - -

    References markeridx_param::code, mhixbox_param::first, markeridx_param::length, logstream, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    - -

    Referenced by print_index().

    - -
    -
    - -

    ◆ search_markeridx()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    markeridx_param_t* search_markeridx (Byte2_t code,
    mhixbox_param_tmhix 
    )
    -
    - -

    search a marker index by marker code from mhix box

    -
    Parameters
    - - - -
    [in]codemarker code
    [in]mhixmhix box pointer
    -
    -
    -
    Returns
    found marker index pointer
    - -

    References markeridx_param::code, FCGI_stderr, mhixbox_param::first, and markeridx_param::next.

    - -

    Referenced by set_mainmhixdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/mhixbox__manager_8h.html b/build/doc/html/mhixbox__manager_8h.html deleted file mode 100644 index 1298716ae..000000000 --- a/build/doc/html/mhixbox__manager_8h.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -OpenJPEG: mhixbox_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    mhixbox_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "box_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  markeridx_param
     Marker index parameters. More...
     
    struct  mhixbox_param
     header index table box parameters More...
     
    - - - - - - - -

    -Typedefs

    typedef struct markeridx_param markeridx_param_t
     Marker index parameters. More...
     
    typedef struct mhixbox_param mhixbox_param_t
     header index table box parameters More...
     
    - - - - - - - - - - - - - - - - -

    -Functions

    mhixbox_param_tgene_mhixbox (box_param_t *box)
     generate mhix box More...
     
    markeridx_param_tsearch_markeridx (Byte2_t code, mhixbox_param_t *mhix)
     search a marker index by marker code from mhix box More...
     
    void print_mhixbox (mhixbox_param_t *mhix)
     print mhix box parameters More...
     
    void print_markeridx (markeridx_param_t *markeridx)
     print marker index parameters More...
     
    void delete_mhixbox (mhixbox_param_t **mhix)
     delete mhix box More...
     
    -

    Typedef Documentation

    - -

    ◆ markeridx_param_t

    - -
    -
    - - - - -
    typedef struct markeridx_param markeridx_param_t
    -
    - -

    Marker index parameters.

    - -
    -
    - -

    ◆ mhixbox_param_t

    - -
    -
    - - - - -
    typedef struct mhixbox_param mhixbox_param_t
    -
    - -

    header index table box parameters

    -

    I.3.2.4.3 Header Index Table box

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_mhixbox()

    - -
    -
    - - - - - - - - -
    void delete_mhixbox (mhixbox_param_t ** mhix)
    -
    - -

    delete mhix box

    -
    Parameters
    - - -
    [in,out]mhixaddress of the mhix box pointer
    -
    -
    - -

    References markeridx_param::next.

    - -

    Referenced by delete_index(), and set_mainmhixdata().

    - -
    -
    - -

    ◆ gene_mhixbox()

    - -
    -
    - - - - - - - - -
    mhixbox_param_t* gene_mhixbox (box_param_tbox)
    -
    - -

    generate mhix box

    -
    Parameters
    - - -
    [in]boxpointer to the reference mhix box
    -
    -
    -
    Returns
    generated mhixbox pointer
    - -

    References markeridx_param::code, fetch_DBox2bytebigendian(), fetch_DBox8bytebigendian(), mhixbox_param::first, get_DBoxlen(), markeridx_param::length, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    - -

    Referenced by set_mainmhixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ print_markeridx()

    - -
    -
    - - - - - - - - -
    void print_markeridx (markeridx_param_tmarkeridx)
    -
    - -

    print marker index parameters

    -
    Parameters
    - - -
    [in]markeridxmarker index pointer
    -
    -
    - -

    References markeridx_param::code, markeridx_param::length, logstream, markeridx_param::num_remain, and markeridx_param::offset.

    - -
    -
    - -

    ◆ print_mhixbox()

    - -
    -
    - - - - - - - - -
    void print_mhixbox (mhixbox_param_tmhix)
    -
    - -

    print mhix box parameters

    -
    Parameters
    - - -
    [in]mhixmhix box pointer
    -
    -
    - -

    References markeridx_param::code, mhixbox_param::first, markeridx_param::length, logstream, markeridx_param::next, markeridx_param::num_remain, markeridx_param::offset, and mhixbox_param::tlen.

    - -

    Referenced by print_index().

    - -
    -
    - -

    ◆ search_markeridx()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    markeridx_param_t* search_markeridx (Byte2_t code,
    mhixbox_param_tmhix 
    )
    -
    - -

    search a marker index by marker code from mhix box

    -
    Parameters
    - - - -
    [in]codemarker code
    [in]mhixmhix box pointer
    -
    -
    -
    Returns
    found marker index pointer
    - -

    References markeridx_param::code, FCGI_stderr, mhixbox_param::first, and markeridx_param::next.

    - -

    Referenced by set_mainmhixdata().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/mhixbox__manager_8h_source.html b/build/doc/html/mhixbox__manager_8h_source.html deleted file mode 100644 index ee6aa7174..000000000 --- a/build/doc/html/mhixbox__manager_8h_source.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -OpenJPEG: mhixbox_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mhixbox_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef MHIXBOX_MANAGER_H_
    -
    32 # define MHIXBOX_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "box_manager.h"
    -
    36 
    -
    38 typedef struct markeridx_param {
    - - - - - - -
    47 
    -
    48 
    -
    49 
    -
    52 typedef struct mhixbox_param {
    - - - -
    57 
    -
    58 
    -
    59 
    - -
    67 
    -
    68 
    - -
    77 
    -
    78 
    -
    84 void print_mhixbox(mhixbox_param_t *mhix);
    -
    85 
    -
    86 
    -
    92 void print_markeridx(markeridx_param_t *markeridx);
    -
    93 
    -
    94 
    -
    100 void delete_mhixbox(mhixbox_param_t **mhix);
    -
    101 
    -
    102 #endif /* !MHIXBOX_MANAGER_H_ */
    -
    -
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    -
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    -
    mhixbox_param_t * gene_mhixbox(box_param_t *box)
    generate mhix box
    Definition: mhixbox_manager.c:47
    - -
    Byte2_t fetch_DBox2bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 2-byte big endian Byte codes in file stream
    Definition: box_manager.c:331
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    box parameters
    Definition: box_manager.h:37
    -
    void print_mhixbox(mhixbox_param_t *mhix)
    print mhix box parameters
    Definition: mhixbox_manager.c:98
    -
    void print_markeridx(markeridx_param_t *markeridx)
    print marker index parameters
    Definition: mhixbox_manager.c:117
    -
    Byte2_t length
    codestream ( including the length
    Definition: mhixbox_manager.h:44
    -
    #define FCGI_stderr
    Definition: mhixbox_manager.c:42
    -
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    void print_markeridx(markeridx_param_t *markeridx)
    print marker index parameters
    Definition: mhixbox_manager.c:117
    -
    struct markeridx_param * next
    pointer to the next markeridx
    Definition: mhixbox_manager.h:45
    -
    OPJ_SIZE_T get_DBoxlen(box_param_t *box)
    get DBox length
    Definition: box_manager.c:311
    -
    Byte2_t num_remain
    remining number of the same marker index segments listed immediately
    Definition: mhixbox_manager.h:40
    -
    OPJ_OFF_T offset
    offset relative to the start of the
    Definition: mhixbox_manager.h:41
    - -
    Byte8_t tlen
    length ( total length of the main
    Definition: mhixbox_manager.h:53
    -
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    -
    Byte2_t code
    marker code
    Definition: mhixbox_manager.h:39
    -
    #define logstream
    Definition: mhixbox_manager.c:43
    -
    uint16_t Byte2_t
    Definition: byte_manager.h:38
    -
    Byte8_t fetch_DBox8bytebigendian(box_param_t *box, OPJ_OFF_T offset)
    fetch DBox (Box Contents) 8-byte big endian Byte codes in file stream
    Definition: box_manager.c:341
    -
    header index table box parameters
    Definition: mhixbox_manager.h:52
    - -
    struct mhixbox_param mhixbox_param_t
    header index table box parameters
    - -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    struct markeridx_param markeridx_param_t
    Marker index parameters.
    -
    markeridx_param_t * first
    header or of the first tile-part header)
    Definition: mhixbox_manager.h:55
    -
    void delete_mhixbox(mhixbox_param_t **mhix)
    delete mhix box
    Definition: mhixbox_manager.c:128
    -
    Marker index parameters.
    Definition: mhixbox_manager.h:38
    -
    markeridx_param_t * search_markeridx(Byte2_t code, mhixbox_param_t *mhix)
    search a marker index by marker code from mhix box
    Definition: mhixbox_manager.c:78
    - - - - diff --git a/build/doc/html/modules.html b/build/doc/html/modules.html deleted file mode 100644 index adc12e0be..000000000 --- a/build/doc/html/modules.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -OpenJPEG: Modules - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    Modules
    -
    - - - - - diff --git a/build/doc/html/mqc_8c.html b/build/doc/html/mqc_8c.html deleted file mode 100644 index bcaf73877..000000000 --- a/build/doc/html/mqc_8c.html +++ /dev/null @@ -1,1063 +0,0 @@ - - - - - - - -OpenJPEG: mqc.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mqc.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include <assert.h>
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    #define BYPASS_CT_INIT   0xDEADBEEF
     
    static const opj_mqc_state_t mqc_states [47 *2]
     
    static void opj_mqc_byteout (opj_mqc_t *mqc)
     Output a byte, doing bit-stuffing if necessary. More...
     
    static void opj_mqc_renorme (opj_mqc_t *mqc)
     Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000. More...
     
    static void opj_mqc_codemps (opj_mqc_t *mqc)
     Encode the most probable symbol. More...
     
    static void opj_mqc_codelps (opj_mqc_t *mqc)
     Encode the most least symbol. More...
     
    static void opj_mqc_setbits (opj_mqc_t *mqc)
     Fill mqc->c with 1's for flushing. More...
     
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_t *mqc)
     Return the number of bytes written/read since initialisation. More...
     
    void opj_mqc_init_enc (opj_mqc_t *mqc, OPJ_BYTE *bp)
     Initialize the encoder. More...
     
    void opj_mqc_encode (opj_mqc_t *mqc, OPJ_UINT32 d)
     Encode a symbol using the MQ-coder. More...
     
    void opj_mqc_flush (opj_mqc_t *mqc)
     Flush the encoder, so that all remaining data is written. More...
     
    void opj_mqc_bypass_init_enc (opj_mqc_t *mqc)
     BYPASS mode switch, initialization operation. More...
     
    void opj_mqc_bypass_enc (opj_mqc_t *mqc, OPJ_UINT32 d)
     BYPASS mode switch, coding operation. More...
     
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_t *mqc, OPJ_BOOL erterm)
     Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass. More...
     
    void opj_mqc_bypass_flush_enc (opj_mqc_t *mqc, OPJ_BOOL erterm)
     BYPASS mode switch, flush operation. More...
     
    void opj_mqc_reset_enc (opj_mqc_t *mqc)
     RESET mode switch. More...
     
    void opj_mqc_restart_init_enc (opj_mqc_t *mqc)
     RESTART mode switch (TERMALL) reinitialisation. More...
     
    void opj_mqc_erterm_enc (opj_mqc_t *mqc)
     ERTERM mode switch (PTERM) More...
     
    void opj_mqc_segmark_enc (opj_mqc_t *mqc)
     SEGMARK mode switch (SEGSYM) More...
     
    static void opj_mqc_init_dec_common (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     
    void opj_mqc_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for MQ decoding. More...
     
    void opj_mqc_raw_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for RAW decoding. More...
     
    void opq_mqc_finish_dec (opj_mqc_t *mqc)
     Terminate RAW/MQC decoding. More...
     
    void opj_mqc_resetstates (opj_mqc_t *mqc)
     Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable) More...
     
    void opj_mqc_setstate (opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
     Set the state of a particular context. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ BYPASS_CT_INIT

    - -
    -
    - - - - -
    #define BYPASS_CT_INIT   0xDEADBEEF
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_mqc_bypass_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_bypass_enc (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    -
    - -

    BYPASS mode switch, coding operation.

    -

    JPEG 2000 p 505.

    Parameters
    - - - -
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    -
    -
    - -

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, and opj_mqc::ct.

    - -

    Referenced by opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_mqc_bypass_flush_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_bypass_flush_enc (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    -
    - -

    BYPASS mode switch, flush operation.

    -
    Parameters
    - - - -
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_bypass_get_extra_bytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    -
    - -

    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass.

    -
    Parameters
    - - - -
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    -
    -
    - -

    References opj_mqc::bp, and opj_mqc::ct.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_bypass_init_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_bypass_init_enc (opj_mqc_tmqc)
    -
    - -

    BYPASS mode switch, initialization operation.

    -

    JPEG 2000 p 505.

    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_byteout()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_mqc_byteout (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Output a byte, doing bit-stuffing if necessary.

    -

    After a 0xff byte, the next byte must be smaller than 0x90.

    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    - -

    Referenced by opj_mqc_erterm_enc(), opj_mqc_flush(), and opj_mqc_renorme().

    - -
    -
    - -

    ◆ opj_mqc_codelps()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_mqc_codelps (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Encode the most least symbol.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and opj_mqc_renorme().

    - -

    Referenced by opj_mqc_encode().

    - -
    -
    - -

    ◆ opj_mqc_codemps()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_mqc_codemps (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Encode the most probable symbol.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, opj_mqc::c, opj_mqc::curctx, and opj_mqc_renorme().

    - -

    Referenced by opj_mqc_encode().

    - -
    -
    - -

    ◆ opj_mqc_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_encode (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    -
    - -

    Encode a symbol using the MQ-coder.

    -
    Parameters
    - - - -
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    -
    -
    - -

    References opj_mqc::curctx, opj_mqc_codelps(), and opj_mqc_codemps().

    - -

    Referenced by opj_mqc_segmark_enc(), opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_mqc_erterm_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_erterm_enc (opj_mqc_tmqc)
    -
    - -

    ERTERM mode switch (PTERM)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_flush()

    - -
    -
    - - - - - - - - -
    void opj_mqc_flush (opj_mqc_tmqc)
    -
    - -

    Flush the encoder, so that all remaining data is written.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc_byteout(), and opj_mqc_setbits().

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    -
    - -

    Initialize the decoder for MQ decoding.

    -

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_bytein(), opj_mqc_init_dec_common(), and opj_mqc_setcurctx.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_init_dec_common()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_mqc_init_dec_common (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_mqc_init_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_init_enc (opj_mqc_tmqc,
    OPJ_BYTEbp 
    )
    -
    - -

    Initialize the encoder.

    -
    Parameters
    - - - -
    mqcMQC handle
    bpPointer to the start of the buffer where the bytes will be written
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_setcurctx, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_numbytes()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_tmqc)
    -
    - -

    Return the number of bytes written/read since initialisation.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    -
    Returns
    Returns the number of bytes already encoded
    - -

    References opj_mqc::bp, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_raw_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_raw_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    -
    - -

    Initialize the decoder for RAW decoding.

    -

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    -
    -
    - -

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_init_dec_common().

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_renorme()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_mqc_renorme (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    - -

    Referenced by opj_mqc_codelps(), and opj_mqc_codemps().

    - -
    -
    - -

    ◆ opj_mqc_reset_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_reset_enc (opj_mqc_tmqc)
    -
    - -

    RESET mode switch.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc_resetstates(), opj_mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_resetstates()

    - -
    -
    - - - - - - - - -
    void opj_mqc_resetstates (opj_mqc_tmqc)
    -
    - -

    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::ctxs, MQC_NUMCTXS, and mqc_states.

    - -

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_restart_init_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_restart_init_enc (opj_mqc_tmqc)
    -
    - -

    RESTART mode switch (TERMALL) reinitialisation.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_segmark_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_segmark_enc (opj_mqc_tmqc)
    -
    - -

    SEGMARK mode switch (SEGSYM)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc_encode(), and opj_mqc_setcurctx.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_setbits()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_mqc_setbits (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Fill mqc->c with 1's for flushing.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, and opj_mqc::c.

    - -

    Referenced by opj_mqc_flush().

    - -
    -
    - -

    ◆ opj_mqc_setstate()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_setstate (opj_mqc_tmqc,
    OPJ_UINT32 ctxno,
    OPJ_UINT32 msb,
    OPJ_INT32 prob 
    )
    -
    - -

    Set the state of a particular context.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    ctxnoNumber that identifies the context
    msbThe MSB of the new state of the context
    probNumber that identifies the probability of the symbols for the new state of the context
    -
    -
    - -

    References opj_mqc::ctxs, and mqc_states.

    - -

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opq_mqc_finish_dec()

    - -
    -
    - - - - - - - - -
    void opq_mqc_finish_dec (opj_mqc_tmqc)
    -
    - -

    Terminate RAW/MQC decoding.

    -

    This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ opj_mqc_raw_init_dec()

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::backup, opj_mqc::end, and OPJ_COMMON_CBLK_DATA_EXTRA.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    -

    Variable Documentation

    - -

    ◆ mqc_states

    - -
    -
    - - - - - -
    - - - - -
    const opj_mqc_state_t mqc_states[47 *2]
    -
    -static
    -
    - -

    Referenced by opj_mqc_resetstates(), and opj_mqc_setstate().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/mqc_8h.html b/build/doc/html/mqc_8h.html deleted file mode 100644 index bb4a576c7..000000000 --- a/build/doc/html/mqc_8h.html +++ /dev/null @@ -1,883 +0,0 @@ - - - - - - - -OpenJPEG: mqc.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    mqc.h File Reference
    -
    -
    - -

    Implementation of an MQ-Coder (MQC) -More...

    -
    #include "opj_common.h"
    -#include "mqc_inl.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  opj_mqc_state
     This struct defines the state of a context. More...
     
    struct  opj_mqc
     MQ coder. More...
     
    - - - -

    -Macros

    #define MQC_NUMCTXS   19
     
    - - - - - - - -

    -Typedefs

    typedef struct opj_mqc_state opj_mqc_state_t
     This struct defines the state of a context. More...
     
    typedef struct opj_mqc opj_mqc_t
     MQ coder. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Exported functions

    #define opj_mqc_setcurctx(mqc, ctxno)   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
     Set the current context used for coding/decoding. More...
     
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_t *mqc)
     Return the number of bytes written/read since initialisation. More...
     
    void opj_mqc_resetstates (opj_mqc_t *mqc)
     Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable) More...
     
    void opj_mqc_setstate (opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
     Set the state of a particular context. More...
     
    void opj_mqc_init_enc (opj_mqc_t *mqc, OPJ_BYTE *bp)
     Initialize the encoder. More...
     
    void opj_mqc_encode (opj_mqc_t *mqc, OPJ_UINT32 d)
     Encode a symbol using the MQ-coder. More...
     
    void opj_mqc_flush (opj_mqc_t *mqc)
     Flush the encoder, so that all remaining data is written. More...
     
    void opj_mqc_bypass_init_enc (opj_mqc_t *mqc)
     BYPASS mode switch, initialization operation. More...
     
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_t *mqc, OPJ_BOOL erterm)
     Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass. More...
     
    void opj_mqc_bypass_enc (opj_mqc_t *mqc, OPJ_UINT32 d)
     BYPASS mode switch, coding operation. More...
     
    void opj_mqc_bypass_flush_enc (opj_mqc_t *mqc, OPJ_BOOL erterm)
     BYPASS mode switch, flush operation. More...
     
    void opj_mqc_reset_enc (opj_mqc_t *mqc)
     RESET mode switch. More...
     
    void opj_mqc_restart_init_enc (opj_mqc_t *mqc)
     RESTART mode switch (TERMALL) reinitialisation. More...
     
    void opj_mqc_erterm_enc (opj_mqc_t *mqc)
     ERTERM mode switch (PTERM) More...
     
    void opj_mqc_segmark_enc (opj_mqc_t *mqc)
     SEGMARK mode switch (SEGSYM) More...
     
    void opj_mqc_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for MQ decoding. More...
     
    void opj_mqc_raw_init_dec (opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
     Initialize the decoder for RAW decoding. More...
     
    void opq_mqc_finish_dec (opj_mqc_t *mqc)
     Terminate RAW/MQC decoding. More...
     
    -

    Detailed Description

    -

    Implementation of an MQ-Coder (MQC)

    -

    The functions in MQC.C have for goal to realize the MQ-coder operations. The functions in MQC.C are used by some function in T1.C.

    -

    Macro Definition Documentation

    - -

    ◆ MQC_NUMCTXS

    - -
    -
    - - - - -
    #define MQC_NUMCTXS   19
    -
    - -
    -
    - -

    ◆ opj_mqc_setcurctx

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_setcurctx( mqc,
     ctxno 
    )   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    -
    - -

    Set the current context used for coding/decoding.

    -
    Parameters
    - - - -
    mqcMQC handle
    ctxnoNumber that identifies the context
    -
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ opj_mqc_state_t

    - -
    -
    - - - - -
    typedef struct opj_mqc_state opj_mqc_state_t
    -
    - -

    This struct defines the state of a context.

    - -
    -
    - -

    ◆ opj_mqc_t

    - -
    -
    - - - - -
    typedef struct opj_mqc opj_mqc_t
    -
    - -

    MQ coder.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_mqc_bypass_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_bypass_enc (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    -
    - -

    BYPASS mode switch, coding operation.

    -

    JPEG 2000 p 505.

    Parameters
    - - - -
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    -
    -
    - -

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, and opj_mqc::ct.

    - -

    Referenced by opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_mqc_bypass_flush_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_bypass_flush_enc (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    -
    - -

    BYPASS mode switch, flush operation.

    -
    Parameters
    - - - -
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_bypass_get_extra_bytes()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes (opj_mqc_tmqc,
    OPJ_BOOL erterm 
    )
    -
    - -

    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS pass.

    -
    Parameters
    - - - -
    mqcMQC handle
    erterm1 if ERTERM is enabled, 0 otherwise
    -
    -
    - -

    References opj_mqc::bp, and opj_mqc::ct.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_bypass_init_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_bypass_init_enc (opj_mqc_tmqc)
    -
    - -

    BYPASS mode switch, initialization operation.

    -

    JPEG 2000 p 505.

    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, BYPASS_CT_INIT, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_encode (opj_mqc_tmqc,
    OPJ_UINT32 d 
    )
    -
    - -

    Encode a symbol using the MQ-coder.

    -
    Parameters
    - - - -
    mqcMQC handle
    dThe symbol to be encoded (0 or 1)
    -
    -
    - -

    References opj_mqc::curctx, opj_mqc_codelps(), and opj_mqc_codemps().

    - -

    Referenced by opj_mqc_segmark_enc(), opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_mqc_erterm_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_erterm_enc (opj_mqc_tmqc)
    -
    - -

    ERTERM mode switch (PTERM)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc_byteout().

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_flush()

    - -
    -
    - - - - - - - - -
    void opj_mqc_flush (opj_mqc_tmqc)
    -
    - -

    Flush the encoder, so that all remaining data is written.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc_byteout(), and opj_mqc_setbits().

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    -
    - -

    Initialize the decoder for MQ decoding.

    -

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_bytein(), opj_mqc_init_dec_common(), and opj_mqc_setcurctx.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_init_enc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_mqc_init_enc (opj_mqc_tmqc,
    OPJ_BYTEbp 
    )
    -
    - -

    Initialize the encoder.

    -
    Parameters
    - - - -
    mqcMQC handle
    bpPointer to the start of the buffer where the bytes will be written
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, opj_mqc::end_of_byte_stream_counter, opj_mqc_setcurctx, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_numbytes()

    - -
    -
    - - - - - - - - -
    OPJ_UINT32 opj_mqc_numbytes (opj_mqc_tmqc)
    -
    - -

    Return the number of bytes written/read since initialisation.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    -
    Returns
    Returns the number of bytes already encoded
    - -

    References opj_mqc::bp, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_raw_init_dec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_raw_init_dec (opj_mqc_tmqc,
    OPJ_BYTEbp,
    OPJ_UINT32 len,
    OPJ_UINT32 extra_writable_bytes 
    )
    -
    - -

    Initialize the decoder for RAW decoding.

    -

    opj_mqc_finish_dec() must be absolutely called after finishing the decoding passes, so as to restore the bytes temporarily overwritten.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    bpPointer to the start of the buffer from which the bytes will be read Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer will be temporarily overwritten with an artificial 0xFF 0xFF marker. (they will be backuped in the mqc structure to be restored later) So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and writable.
    lenLength of the input buffer
    extra_writable_bytesIndicate how many bytes after len are writable. This is to indicate your consent that bp must be large enough.
    -
    -
    - -

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_init_dec_common().

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_reset_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_reset_enc (opj_mqc_tmqc)
    -
    - -

    RESET mode switch.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc_resetstates(), opj_mqc_setstate(), T1_CTXNO_AGG, T1_CTXNO_UNI, and T1_CTXNO_ZC.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_resetstates()

    - -
    -
    - - - - - - - - -
    void opj_mqc_resetstates (opj_mqc_tmqc)
    -
    - -

    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and 1 are more or less equiprobable)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::ctxs, MQC_NUMCTXS, and mqc_states.

    - -

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_restart_init_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_restart_init_enc (opj_mqc_tmqc)
    -
    - -

    RESTART mode switch (TERMALL) reinitialisation.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::a, opj_mqc::bp, opj_mqc::c, opj_mqc::ct, and opj_mqc::start.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_segmark_enc()

    - -
    -
    - - - - - - - - -
    void opj_mqc_segmark_enc (opj_mqc_tmqc)
    -
    - -

    SEGMARK mode switch (SEGSYM)

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc_encode(), and opj_mqc_setcurctx.

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_mqc_setstate()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_mqc_setstate (opj_mqc_tmqc,
    OPJ_UINT32 ctxno,
    OPJ_UINT32 msb,
    OPJ_INT32 prob 
    )
    -
    - -

    Set the state of a particular context.

    -
    Parameters
    - - - - - -
    mqcMQC handle
    ctxnoNumber that identifies the context
    msbThe MSB of the new state of the context
    probNumber that identifies the probability of the symbols for the new state of the context
    -
    -
    - -

    References opj_mqc::ctxs, and mqc_states.

    - -

    Referenced by opj_mqc_reset_enc(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opq_mqc_finish_dec()

    - -
    -
    - - - - - - - - -
    void opq_mqc_finish_dec (opj_mqc_tmqc)
    -
    - -

    Terminate RAW/MQC decoding.

    -

    This restores the bytes temporarily overwritten by opj_mqc_init_dec()/ opj_mqc_raw_init_dec()

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::backup, opj_mqc::end, and OPJ_COMMON_CBLK_DATA_EXTRA.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/mqc_8h_source.html b/build/doc/html/mqc_8h_source.html deleted file mode 100644 index fca21dfbe..000000000 --- a/build/doc/html/mqc_8h_source.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -OpenJPEG: mqc.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mqc.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    15  * All rights reserved.
    -
    16  *
    -
    17  * Redistribution and use in source and binary forms, with or without
    -
    18  * modification, are permitted provided that the following conditions
    -
    19  * are met:
    -
    20  * 1. Redistributions of source code must retain the above copyright
    -
    21  * notice, this list of conditions and the following disclaimer.
    -
    22  * 2. Redistributions in binary form must reproduce the above copyright
    -
    23  * notice, this list of conditions and the following disclaimer in the
    -
    24  * documentation and/or other materials provided with the distribution.
    -
    25  *
    -
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    27  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    29  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    36  * POSSIBILITY OF SUCH DAMAGE.
    -
    37  */
    -
    38 
    -
    39 #ifndef OPJ_MQC_H
    -
    40 #define OPJ_MQC_H
    -
    41 
    -
    42 #include "opj_common.h"
    -
    43 
    -
    54 
    -
    58 typedef struct opj_mqc_state {
    - - -
    64  const struct opj_mqc_state *nmps;
    -
    66  const struct opj_mqc_state *nlps;
    - -
    68 
    -
    69 #define MQC_NUMCTXS 19
    -
    70 
    -
    74 typedef struct opj_mqc {
    - - - -
    81  /* only used by decoder, to count the number of times a terminating 0xFF >0x8F marker is read */
    - - - - - - -
    93  /* lut_ctxno_zc shifted by (1 << 9) * bandno */
    - - -
    97 } opj_mqc_t;
    -
    98 
    -
    99 #include "mqc_inl.h"
    -
    100 
    -
    103 /* ----------------------------------------------------------------------- */
    -
    104 
    - -
    116 void opj_mqc_resetstates(opj_mqc_t *mqc);
    -
    124 void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb,
    -
    125  OPJ_INT32 prob);
    -
    131 void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp);
    -
    137 #define opj_mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    -
    138 
    -
    143 void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d);
    -
    148 void opj_mqc_flush(opj_mqc_t *mqc);
    - -
    155 
    - -
    162 
    - -
    175 void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm);
    -
    180 void opj_mqc_reset_enc(opj_mqc_t *mqc);
    -
    181 
    -
    182 #ifdef notdef
    -
    183 
    -
    188 OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc);
    -
    189 #endif
    -
    190 
    - -
    200 void opj_mqc_erterm_enc(opj_mqc_t *mqc);
    -
    205 void opj_mqc_segmark_enc(opj_mqc_t *mqc);
    -
    206 
    -
    225 void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len,
    -
    226  OPJ_UINT32 extra_writable_bytes);
    -
    227 
    - -
    247  OPJ_UINT32 extra_writable_bytes);
    -
    248 
    -
    249 
    -
    258 void opq_mqc_finish_dec(opj_mqc_t *mqc);
    -
    259 
    -
    265 /*static INLINE OPJ_UINT32 opj_mqc_decode(opj_mqc_t * const mqc);*/
    -
    266 /* ----------------------------------------------------------------------- */
    -
    270 
    -
    271 #endif /* OPJ_MQC_H */
    -
    -
    struct opj_mqc_state opj_mqc_state_t
    This struct defines the state of a context.
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    - -
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    -
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    -
    MQ coder.
    Definition: mqc.h:74
    -
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    -
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    -
    const opj_mqc_state_t ** curctx
    Active context.
    Definition: mqc.h:92
    -
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    -
    #define T1_CTXNO_UNI
    Definition: t1.h:65
    -
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    -
    static void opj_mqc_codemps(opj_mqc_t *mqc)
    Encode the most probable symbol.
    Definition: mqc.c:231
    -
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    -
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    -
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    -
    #define T1_CTXNO_AGG
    Definition: t1.h:64
    - -
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    -
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    -
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    -
    const struct opj_mqc_state * nmps
    next state if the next encoded symbol is the MPS
    Definition: mqc.h:64
    -
    OPJ_UINT32 mps
    the Most Probable Symbol (0 or 1)
    Definition: mqc.h:62
    -
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    -
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    -
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    -
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    -
    OPJ_UINT32 a
    only used by MQ decoder
    Definition: mqc.h:78
    -
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    -
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    -
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    static void opj_mqc_codelps(opj_mqc_t *mqc)
    Encode the most least symbol.
    Definition: mqc.c:247
    -
    const opj_mqc_state_t * ctxs[MQC_NUMCTXS]
    Array of contexts.
    Definition: mqc.h:90
    -
    static const opj_mqc_state_t mqc_states[47 *2]
    Definition: mqc.c:82
    - -
    #define BYPASS_CT_INIT
    Definition: mqc.c:332
    -
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    -
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    -
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    -
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    -
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: mqc.h:88
    -
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    #define opj_mqc_setcurctx(mqc, ctxno)
    Set the current context used for coding/decoding.
    Definition: mqc.h:137
    -
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    -
    const struct opj_mqc_state * nlps
    next state if the next encoded symbol is the LPS
    Definition: mqc.h:66
    -
    static void opj_mqc_byteout(opj_mqc_t *mqc)
    Output a byte, doing bit-stuffing if necessary.
    Definition: mqc.c:185
    -
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: mqc.h:86
    -
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    -
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    -
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    -
    OPJ_UINT32 qeval
    the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff)
    Definition: mqc.h:60
    -
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    -
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    -
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    -
    static void opj_mqc_init_dec_common(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Definition: mqc.c:488
    -
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    -
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    -
    This struct defines the state of a context.
    Definition: mqc.h:58
    -
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    -
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    -
    OPJ_BYTE backup[OPJ_COMMON_CBLK_DATA_EXTRA]
    Original value of the 2 bytes at end[0] and end[1].
    Definition: mqc.h:96
    -
    static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    Input a byte.
    Definition: mqc_inl.h:175
    -
    static void opj_mqc_setbits(opj_mqc_t *mqc)
    Fill mqc->c with 1's for flushing.
    Definition: mqc.c:259
    -
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    -
    struct opj_mqc opj_mqc_t
    MQ coder.
    -
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    -
    static void opj_mqc_renorme(opj_mqc_t *mqc)
    Renormalize mqc->a and mqc->c while encoding, so that mqc->a stays between 0x8000 and 0x10000.
    Definition: mqc.c:219
    -
    #define MQC_NUMCTXS
    Definition: mqc.h:69
    -
    OPJ_UINT32 end_of_byte_stream_counter
    Definition: mqc.h:82
    -
    const OPJ_BYTE * lut_ctxno_zc_orient
    Definition: mqc.h:94
    - - - - diff --git a/build/doc/html/mqc__inl_8h.html b/build/doc/html/mqc__inl_8h.html deleted file mode 100644 index 7ae13cbc2..000000000 --- a/build/doc/html/mqc__inl_8h.html +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - -OpenJPEG: mqc_inl.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    mqc_inl.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define opj_mqc_mpsexchange_macro(d, curctx, a)
     
    #define opj_mqc_lpsexchange_macro(d, curctx, a)
     
    #define opj_mqc_bytein_macro(mqc, c, ct)
     
    #define opj_mqc_renormd_macro(mqc, a, c, ct)
     
    #define opj_mqc_decode_macro(d, mqc, curctx, a, c, ct)
     
    #define DOWNLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct)
     
    #define UPLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct)
     
    #define opj_mqc_renormd(mqc)   opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
     Renormalize mqc->a and mqc->c while decoding. More...
     
    #define opj_mqc_decode(d, mqc)   opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
     Decode a symbol. More...
     
    - - - - - - - -

    -Functions

    static INLINE OPJ_UINT32 opj_mqc_raw_decode (opj_mqc_t *mqc)
     Decode a symbol using raw-decoder. More...
     
    static INLINE void opj_mqc_bytein (opj_mqc_t *const mqc)
     Input a byte. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ DOWNLOAD_MQC_VARIABLES

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define DOWNLOAD_MQC_VARIABLES( mqc,
     curctx,
     c,
     a,
     ct 
    )
    -
    -Value:
    register const opj_mqc_state_t **curctx = mqc->curctx; \
    -
    register OPJ_UINT32 c = mqc->c; \
    -
    register OPJ_UINT32 a = mqc->a; \
    -
    register OPJ_UINT32 ct = mqc->ct
    -
    -
    -
    - -

    ◆ opj_mqc_bytein_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_bytein_macro( mqc,
     c,
     ct 
    )
    -
    -Value:
    { \
    -
    OPJ_UINT32 l_c; \
    -
    /* Given opj_mqc_init_dec() we know that at some point we will */ \
    -
    /* have a 0xFF 0xFF artificial marker */ \
    -
    l_c = *(mqc->bp + 1); \
    -
    if (*mqc->bp == 0xff) { \
    -
    if (l_c > 0x8f) { \
    -
    c += 0xff00; \
    -
    ct = 8; \
    -
    mqc->end_of_byte_stream_counter ++; \
    -
    } else { \
    -
    mqc->bp++; \
    -
    c += l_c << 9; \
    -
    ct = 7; \
    -
    } \
    -
    } else { \
    -
    mqc->bp++; \
    -
    c += l_c << 8; \
    -
    ct = 8; \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_mqc_decode

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_decode( d,
     mqc 
    )   opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
    -
    - -

    Decode a symbol.

    -
    Parameters
    - - - -
    dOPJ_UINT32 value where to store the decoded symbol
    mqcMQC handle
    -
    -
    -
    Returns
    Returns the decoded symbol (0 or 1) in d
    - -
    -
    - -

    ◆ opj_mqc_decode_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_decode_macro( d,
     mqc,
     curctx,
     a,
     c,
     ct 
    )
    -
    -Value:
    { \
    -
    /* Implements ISO 15444-1 C.3.2 Decoding a decision (DECODE) */ \
    -
    /* Note: alternate "J.2 - Decoding an MPS or an LPS in the */ \
    -
    /* software-conventions decoder" has been tried, but does not bring any */ \
    -
    /* improvement. See https://github.com/uclouvain/openjpeg/issues/921 */ \
    -
    a -= (*curctx)->qeval; \
    -
    if ((c >> 16) < (*curctx)->qeval) { \
    -
    opj_mqc_lpsexchange_macro(d, curctx, a); \
    -
    opj_mqc_renormd_macro(mqc, a, c, ct); \
    -
    } else { \
    -
    c -= (*curctx)->qeval << 16; \
    -
    if ((a & 0x8000) == 0) { \
    -
    opj_mqc_mpsexchange_macro(d, curctx, a); \
    -
    opj_mqc_renormd_macro(mqc, a, c, ct); \
    -
    } else { \
    -
    d = (*curctx)->mps; \
    -
    } \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_mqc_lpsexchange_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_lpsexchange_macro( d,
     curctx,
     
    )
    -
    -Value:
    { \
    -
    if (a < (*curctx)->qeval) { \
    -
    a = (*curctx)->qeval; \
    -
    d = (*curctx)->mps; \
    -
    *curctx = (*curctx)->nmps; \
    -
    } else { \
    -
    a = (*curctx)->qeval; \
    -
    d = !((*curctx)->mps); \
    -
    *curctx = (*curctx)->nlps; \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_mqc_mpsexchange_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_mpsexchange_macro( d,
     curctx,
     
    )
    -
    -Value:
    { \
    -
    if (a < (*curctx)->qeval) { \
    -
    d = !((*curctx)->mps); \
    -
    *curctx = (*curctx)->nlps; \
    -
    } else { \
    -
    d = (*curctx)->mps; \
    -
    *curctx = (*curctx)->nmps; \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_mqc_renormd

    - -
    -
    - - - - - - - - -
    #define opj_mqc_renormd( mqc)   opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
    -
    - -

    Renormalize mqc->a and mqc->c while decoding.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -
    -
    - -

    ◆ opj_mqc_renormd_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_mqc_renormd_macro( mqc,
     a,
     c,
     ct 
    )
    -
    -Value:
    { \
    -
    do { \
    -
    if (ct == 0) { \
    -
    opj_mqc_bytein_macro(mqc, c, ct); \
    -
    } \
    -
    a <<= 1; \
    -
    c <<= 1; \
    -
    ct--; \
    -
    } while (a < 0x8000); \
    -
    }
    -
    -
    -
    - -

    ◆ UPLOAD_MQC_VARIABLES

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define UPLOAD_MQC_VARIABLES( mqc,
     curctx,
     c,
     a,
     ct 
    )
    -
    -Value:
    mqc->curctx = curctx; \
    -
    mqc->c = c; \
    -
    mqc->a = a; \
    -
    mqc->ct = ct;
    -
    -
    -
    -

    Function Documentation

    - -

    ◆ opj_mqc_bytein()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE void opj_mqc_bytein (opj_mqc_t *const mqc)
    -
    -static
    -
    - -

    Input a byte.

    -
    Parameters
    - - -
    mqcMQC handle
    -
    -
    - -

    References opj_mqc::c, opj_mqc::ct, and opj_mqc_bytein_macro.

    - -

    Referenced by opj_mqc_init_dec().

    - -
    -
    - -

    ◆ opj_mqc_raw_decode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_UINT32 opj_mqc_raw_decode (opj_mqc_tmqc)
    -
    -static
    -
    - -

    Decode a symbol using raw-decoder.

    -

    Cfr p.506 TAUBMAN

    Parameters
    - - -
    mqcMQC handle
    -
    -
    -
    Returns
    Returns the decoded symbol (0 or 1)
    - -

    References opj_mqc::bp, opj_mqc::c, and opj_mqc::ct.

    - -

    Referenced by opj_t1_dec_refpass_step_raw(), and opj_t1_dec_sigpass_step_raw().

    - -
    -
    -
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    This struct defines the state of a context.
    Definition: mqc.h:58
    - - - - diff --git a/build/doc/html/mqc__inl_8h_source.html b/build/doc/html/mqc__inl_8h_source.html deleted file mode 100644 index a9e106b4f..000000000 --- a/build/doc/html/mqc__inl_8h_source.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - -OpenJPEG: mqc_inl.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    mqc_inl.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    15  * All rights reserved.
    -
    16  *
    -
    17  * Redistribution and use in source and binary forms, with or without
    -
    18  * modification, are permitted provided that the following conditions
    -
    19  * are met:
    -
    20  * 1. Redistributions of source code must retain the above copyright
    -
    21  * notice, this list of conditions and the following disclaimer.
    -
    22  * 2. Redistributions in binary form must reproduce the above copyright
    -
    23  * notice, this list of conditions and the following disclaimer in the
    -
    24  * documentation and/or other materials provided with the distribution.
    -
    25  *
    -
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    27  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    29  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    36  * POSSIBILITY OF SUCH DAMAGE.
    -
    37  */
    -
    38 
    -
    39 #ifndef OPJ_MQC_INL_H
    -
    40 #define OPJ_MQC_INL_H
    -
    41 
    -
    42 /* For internal use of opj_mqc_decode_macro() */
    -
    43 #define opj_mqc_mpsexchange_macro(d, curctx, a) \
    -
    44 { \
    -
    45  if (a < (*curctx)->qeval) { \
    -
    46  d = !((*curctx)->mps); \
    -
    47  *curctx = (*curctx)->nlps; \
    -
    48  } else { \
    -
    49  d = (*curctx)->mps; \
    -
    50  *curctx = (*curctx)->nmps; \
    -
    51  } \
    -
    52 }
    -
    53 
    -
    54 /* For internal use of opj_mqc_decode_macro() */
    -
    55 #define opj_mqc_lpsexchange_macro(d, curctx, a) \
    -
    56 { \
    -
    57  if (a < (*curctx)->qeval) { \
    -
    58  a = (*curctx)->qeval; \
    -
    59  d = (*curctx)->mps; \
    -
    60  *curctx = (*curctx)->nmps; \
    -
    61  } else { \
    -
    62  a = (*curctx)->qeval; \
    -
    63  d = !((*curctx)->mps); \
    -
    64  *curctx = (*curctx)->nlps; \
    -
    65  } \
    -
    66 }
    -
    67 
    -
    68 
    - -
    75 {
    -
    76  OPJ_UINT32 d;
    -
    77  if (mqc->ct == 0) {
    -
    78  /* Given opj_mqc_raw_init_dec() we know that at some point we will */
    -
    79  /* have a 0xFF 0xFF artificial marker */
    -
    80  if (mqc->c == 0xff) {
    -
    81  if (*mqc->bp > 0x8f) {
    -
    82  mqc->c = 0xff;
    -
    83  mqc->ct = 8;
    -
    84  } else {
    -
    85  mqc->c = *mqc->bp;
    -
    86  mqc->bp ++;
    -
    87  mqc->ct = 7;
    -
    88  }
    -
    89  } else {
    -
    90  mqc->c = *mqc->bp;
    -
    91  mqc->bp ++;
    -
    92  mqc->ct = 8;
    -
    93  }
    -
    94  }
    -
    95  mqc->ct--;
    -
    96  d = ((OPJ_UINT32)mqc->c >> mqc->ct) & 0x01U;
    -
    97 
    -
    98  return d;
    -
    99 }
    -
    100 
    -
    101 
    -
    102 #define opj_mqc_bytein_macro(mqc, c, ct) \
    -
    103 { \
    -
    104  OPJ_UINT32 l_c; \
    -
    105  /* Given opj_mqc_init_dec() we know that at some point we will */ \
    -
    106  /* have a 0xFF 0xFF artificial marker */ \
    -
    107  l_c = *(mqc->bp + 1); \
    -
    108  if (*mqc->bp == 0xff) { \
    -
    109  if (l_c > 0x8f) { \
    -
    110  c += 0xff00; \
    -
    111  ct = 8; \
    -
    112  mqc->end_of_byte_stream_counter ++; \
    -
    113  } else { \
    -
    114  mqc->bp++; \
    -
    115  c += l_c << 9; \
    -
    116  ct = 7; \
    -
    117  } \
    -
    118  } else { \
    -
    119  mqc->bp++; \
    -
    120  c += l_c << 8; \
    -
    121  ct = 8; \
    -
    122  } \
    -
    123 }
    -
    124 
    -
    125 /* For internal use of opj_mqc_decode_macro() */
    -
    126 #define opj_mqc_renormd_macro(mqc, a, c, ct) \
    -
    127 { \
    -
    128  do { \
    -
    129  if (ct == 0) { \
    -
    130  opj_mqc_bytein_macro(mqc, c, ct); \
    -
    131  } \
    -
    132  a <<= 1; \
    -
    133  c <<= 1; \
    -
    134  ct--; \
    -
    135  } while (a < 0x8000); \
    -
    136 }
    -
    137 
    -
    138 #define opj_mqc_decode_macro(d, mqc, curctx, a, c, ct) \
    -
    139 { \
    -
    140  /* Implements ISO 15444-1 C.3.2 Decoding a decision (DECODE) */ \
    -
    141  /* Note: alternate "J.2 - Decoding an MPS or an LPS in the */ \
    -
    142  /* software-conventions decoder" has been tried, but does not bring any */ \
    -
    143  /* improvement. See https://github.com/uclouvain/openjpeg/issues/921 */ \
    -
    144  a -= (*curctx)->qeval; \
    -
    145  if ((c >> 16) < (*curctx)->qeval) { \
    -
    146  opj_mqc_lpsexchange_macro(d, curctx, a); \
    -
    147  opj_mqc_renormd_macro(mqc, a, c, ct); \
    -
    148  } else { \
    -
    149  c -= (*curctx)->qeval << 16; \
    -
    150  if ((a & 0x8000) == 0) { \
    -
    151  opj_mqc_mpsexchange_macro(d, curctx, a); \
    -
    152  opj_mqc_renormd_macro(mqc, a, c, ct); \
    -
    153  } else { \
    -
    154  d = (*curctx)->mps; \
    -
    155  } \
    -
    156  } \
    -
    157 }
    -
    158 
    -
    159 #define DOWNLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct) \
    -
    160  register const opj_mqc_state_t **curctx = mqc->curctx; \
    -
    161  register OPJ_UINT32 c = mqc->c; \
    -
    162  register OPJ_UINT32 a = mqc->a; \
    -
    163  register OPJ_UINT32 ct = mqc->ct
    -
    164 
    -
    165 #define UPLOAD_MQC_VARIABLES(mqc, curctx, c, a, ct) \
    -
    166  mqc->curctx = curctx; \
    -
    167  mqc->c = c; \
    -
    168  mqc->a = a; \
    -
    169  mqc->ct = ct;
    -
    170 
    -
    175 static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    -
    176 {
    -
    177  opj_mqc_bytein_macro(mqc, mqc->c, mqc->ct);
    -
    178 }
    -
    179 
    -
    184 #define opj_mqc_renormd(mqc) \
    -
    185  opj_mqc_renormd_macro(mqc, mqc->a, mqc->c, mqc->ct)
    -
    186 
    -
    193 #define opj_mqc_decode(d, mqc) \
    -
    194  opj_mqc_decode_macro(d, mqc, mqc->curctx, mqc->a, mqc->c, mqc->ct)
    -
    195 
    -
    196 #endif /* OPJ_MQC_INL_H */
    -
    -
    MQ coder.
    Definition: mqc.h:74
    -
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    static INLINE OPJ_UINT32 opj_mqc_raw_decode(opj_mqc_t *mqc)
    Decode a symbol using raw-decoder.
    Definition: mqc_inl.h:74
    -
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    static INLINE void opj_mqc_bytein(opj_mqc_t *const mqc)
    Input a byte.
    Definition: mqc_inl.h:175
    -
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    -
    #define opj_mqc_bytein_macro(mqc, c, ct)
    Definition: mqc_inl.h:102
    - - - - diff --git a/build/doc/html/msgqueue__manager_8c.html b/build/doc/html/msgqueue__manager_8c.html deleted file mode 100644 index c34ad5be7..000000000 --- a/build/doc/html/msgqueue__manager_8c.html +++ /dev/null @@ -1,1387 +0,0 @@ - - - - - - - -OpenJPEG: msgqueue_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    msgqueue_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <sys/types.h>
    -#include <sys/stat.h>
    -#include <string.h>
    -#include <ctype.h>
    -#include <assert.h>
    -#include <limits.h>
    -#include <unistd.h>
    -#include "msgqueue_manager.h"
    -#include "metadata_manager.h"
    -#include "index_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    msgqueue_param_tgene_msgqueue (OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
     generate message queue More...
     
    void delete_msgqueue (msgqueue_param_t **msgqueue)
     delete message queue More...
     
    void print_msgqueue (msgqueue_param_t *msgqueue)
     print message queue More...
     
    void enqueue_message (message_param_t *msg, msgqueue_param_t *msgqueue)
     
    void enqueue_mainheader (msgqueue_param_t *msgqueue)
     enqueue main header data-bin into message queue More...
     
    void enqueue_tileheader (int tile_id, msgqueue_param_t *msgqueue)
     enqueue tile headers data-bin into message queue More...
     
    void enqueue_tile (Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
     enqueue tile data-bin into message queue More...
     
    void enqueue_precinct (int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bin into message queue More...
     
    Byte8_t comp_precinct_id (int t, int c, int s, int num_components, int num_tiles)
     compute precinct ID A.3.2.1 More...
     
    void enqueue_box (Byte8_t meta_id, boxlist_param_t *boxlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_phld (Byte8_t meta_id, placeholderlist_param_t *phldlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_boxcontents (Byte8_t meta_id, boxcontents_param_t *boxcontents, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
     
    void enqueue_metadata (Byte8_t meta_id, msgqueue_param_t *msgqueue)
     enqueue Metadata-bin into message queue More...
     
    message_param_tgene_metamsg (Byte8_t meta_id, Byte8_t binoffset, Byte8_t length, OPJ_OFF_T res_offset, placeholder_param_t *phld, Byte8_t csn)
     
    void add_bin_id_vbas_stream (Byte_t bb, Byte_t c, Byte8_t in_class_id, int tmpfd)
     
    void add_vbas_stream (Byte8_t code, int tmpfd)
     
    void add_body_stream (message_param_t *msg, int fd, int tmpfd)
     
    void add_placeholder_stream (placeholder_param_t *phld, int tmpfd)
     
    void recons_stream_from_msgqueue (msgqueue_param_t *msgqueue, int tmpfd)
     reconstruct JPT/JPP-stream from message queue More...
     
    void add_vbas_with_bytelen_stream (Byte8_t code, int bytelength, int tmpfd)
     
    void print_binarycode (Byte8_t n, int segmentlen)
     
    void add_bigendian_bytestream (Byte8_t code, int bytelength, int tmpfd)
     
    Byte_tparse_bin_id_vbas (Byte_t *streamptr, Byte_t *bb, Byte_t *c, Byte8_t *in_class_id)
     
    Byte_tparse_vbas (Byte_t *streamptr, Byte8_t *elem)
     
    void parse_JPIPstream (Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
     parse JPT- JPP- stream to message queue More...
     
    void parse_metadata (metadata_param_t *metadata, message_param_t *msg, Byte_t *stream)
     
    void parse_metamsg (msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
     parse JPT- JPP- stream to message queue More...
     
    placeholder_param_tparse_phld (Byte_t *datastream, Byte8_t metalength)
     
    void delete_message_in_msgqueue (message_param_t **msg, msgqueue_param_t *msgqueue)
     delete a message in msgqueue More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ add_bigendian_bytestream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void add_bigendian_bytestream (Byte8_t code,
    int bytelength,
    int tmpfd 
    )
    -
    - -

    References FCGI_stderr.

    - -

    Referenced by add_placeholder_stream().

    - -
    -
    - -

    ◆ add_bin_id_vbas_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void add_bin_id_vbas_stream (Byte_t bb,
    Byte_t c,
    Byte8_t in_class_id,
    int tmpfd 
    )
    -
    -
    - -

    ◆ add_body_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void add_body_stream (message_param_tmsg,
    int fd,
    int tmpfd 
    )
    -
    -
    - -

    ◆ add_placeholder_stream()

    - - - -

    ◆ add_vbas_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void add_vbas_stream (Byte8_t code,
    int tmpfd 
    )
    -
    -
    - -

    ◆ add_vbas_with_bytelen_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void add_vbas_with_bytelen_stream (Byte8_t code,
    int bytelength,
    int tmpfd 
    )
    -
    - -

    References FCGI_stderr.

    - -

    Referenced by add_bin_id_vbas_stream(), and add_vbas_stream().

    - -
    -
    - -

    ◆ comp_precinct_id()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t comp_precinct_id (int t,
    int c,
    int s,
    int num_components,
    int num_tiles 
    )
    -
    - -

    compute precinct ID A.3.2.1

    -
    Parameters
    - - - - - - -
    [in]ttile index
    [in]ccomponent index
    [in]ssequence number
    [in]num_componentstotal number of components
    [in]num_tilestotal number of tiles
    -
    -
    -
    Returns
    precicnt id
    - -

    Referenced by enqueue_precinct(), recons_packet(), and recons_precinct().

    - -
    -
    - -

    ◆ delete_message_in_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_message_in_msgqueue (message_param_t ** message,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    delete a message in msgqueue

    -
    Parameters
    - - - -
    [in]messageaddress of the deleting message pointer
    [in]msgqueuemessage queue pointer
    -
    -
    - -

    References msgqueue_param::first, msgqueue_param::last, message_param::next, and opj_free().

    - -
    -
    - -

    ◆ delete_msgqueue()

    - -
    -
    - - - - - - - - -
    void delete_msgqueue (msgqueue_param_t ** msgqueue)
    -
    - -

    delete message queue

    -
    Parameters
    - - -
    [in]msgqueueaddress of the message queue pointer
    -
    -
    - -

    References delete_cachemodel(), message_param::next, and opj_free().

    - -

    Referenced by destroy_jpipdecoder(), and terminate_dec_server().

    - -
    -
    - -

    ◆ enqueue_box()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_box (Byte8_t meta_id,
    boxlist_param_tboxlist,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    -
    -
    - -

    ◆ enqueue_boxcontents()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_boxcontents (Byte8_t meta_id,
    boxcontents_param_tboxcontents,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    -
    -
    - -

    ◆ enqueue_mainheader()

    - - - -

    ◆ enqueue_message()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void enqueue_message (message_param_tmsg,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void enqueue_metadata (Byte8_t meta_id,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_phld()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_phld (Byte8_t meta_id,
    placeholderlist_param_tphldlist,
    msgqueue_param_tmsgqueue,
    Byte8_tbinOffset 
    )
    -
    -
    - -

    ◆ enqueue_precinct()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_precinct (int seq_id,
    int tile_id,
    int comp_id,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_tile (Byte4_t tile_id,
    int level,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_tileheader()

    - - - -

    ◆ gene_metamsg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    message_param_t * gene_metamsg (Byte8_t meta_id,
    Byte8_t binoffset,
    Byte8_t length,
    OPJ_OFF_T res_offset,
    placeholder_param_tphld,
    Byte8_t csn 
    )
    -
    -
    - -

    ◆ gene_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    msgqueue_param_t* gene_msgqueue (OPJ_BOOL stateless,
    cachemodel_param_tcachemodel 
    )
    -
    - -

    generate message queue

    -
    Parameters
    - - - -
    [in]statelessif this is a stateless message queue
    [in]cachemodelcachemodel pointer
    -
    -
    -
    Returns
    generated message queue pointer
    - -

    References msgqueue_param::cachemodel, msgqueue_param::first, msgqueue_param::last, opj_malloc(), and msgqueue_param::stateless.

    - -

    Referenced by gene_JPIPstream(), init_dec_server(), and init_jpipdecoder().

    - -
    -
    - -

    ◆ parse_bin_id_vbas()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte_t * parse_bin_id_vbas (Byte_tstreamptr,
    Byte_tbb,
    Byte_tc,
    Byte8_tin_class_id 
    )
    -
    - -

    Referenced by parse_JPIPstream().

    - -
    -
    - -

    ◆ parse_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void parse_JPIPstream (Byte_tJPIPstream,
    Byte8_t streamlen,
    OPJ_OFF_T offset,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    parse JPT- JPP- stream to message queue

    -
    Parameters
    - - - - - -
    [in]JPIPstreamJPT- JPP- stream data pointer
    [in]streamlenJPIPstream length
    [in]offsetoffset of the stream from the whole beginning
    [in,out]msgqueueadding message queue pointer
    -
    -
    - -

    References message_param::aux, message_param::bin_offset, message_param::class_id, message_param::csn, msgqueue_param::first, message_param::in_class_id, msgqueue_param::last, message_param::last_byte, message_param::length, message_param::next, OPJ_FALSE, opj_malloc(), OPJ_TRUE, parse_bin_id_vbas(), parse_vbas(), message_param::phld, and message_param::res_offset.

    - -

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ parse_metadata()

    - - - -

    ◆ parse_metamsg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void parse_metamsg (msgqueue_param_tmsgqueue,
    Byte_tstream,
    Byte8_t streamlen,
    metadatalist_param_tmetadatalist 
    )
    -
    - -

    parse JPT- JPP- stream to message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuereference message queue pointer
    [in]streamstream data pointer
    [in]streamlenstream length
    [in]metadatalistadding metadata list pointer
    -
    -
    - -

    References message_param::class_id, msgqueue_param::first, gene_metadata(), message_param::in_class_id, insert_metadata_into_list(), METADATA_MSG, message_param::next, parse_metadata(), and message_param::res_offset.

    - -

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ parse_phld()

    - - - -

    ◆ parse_vbas()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    Byte_t * parse_vbas (Byte_tstreamptr,
    Byte8_telem 
    )
    -
    - -

    Referenced by parse_JPIPstream().

    - -
    -
    - -

    ◆ print_binarycode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void print_binarycode (Byte8_t n,
    int segmentlen 
    )
    -
    - -
    -
    - -

    ◆ print_msgqueue()

    - -
    -
    - - - - - - - - -
    void print_msgqueue (msgqueue_param_tmsgqueue)
    -
    -
    - -

    ◆ recons_stream_from_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void recons_stream_from_msgqueue (msgqueue_param_tmsgqueue,
    int tmpfd 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/msgqueue__manager_8h.html b/build/doc/html/msgqueue__manager_8h.html deleted file mode 100644 index 5ed516bf3..000000000 --- a/build/doc/html/msgqueue__manager_8h.html +++ /dev/null @@ -1,852 +0,0 @@ - - - - - - - -OpenJPEG: msgqueue_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    msgqueue_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "cachemodel_manager.h"
    -#include "placeholder_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  message_param
     message parameters More...
     
    struct  msgqueue_param
     message queue parameters More...
     
    - - - - - - - - - - - - - - - -

    -Macros

    #define PRECINCT_MSG   0
     
    #define EXT_PRECINCT_MSG   1
     
    #define TILE_HEADER_MSG   2
     
    #define TILE_MSG   4
     
    #define EXT_TILE_MSG   5
     
    #define MAINHEADER_MSG   6
     
    #define METADATA_MSG   8
     
    - - - - - - - -

    -Typedefs

    typedef struct message_param message_param_t
     message parameters More...
     
    typedef struct msgqueue_param msgqueue_param_t
     message queue parameters More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    msgqueue_param_tgene_msgqueue (OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
     generate message queue More...
     
    void delete_msgqueue (msgqueue_param_t **msgqueue)
     delete message queue More...
     
    void delete_message_in_msgqueue (message_param_t **message, msgqueue_param_t *msgqueue)
     delete a message in msgqueue More...
     
    void print_msgqueue (msgqueue_param_t *msgqueue)
     print message queue More...
     
    void enqueue_mainheader (msgqueue_param_t *msgqueue)
     enqueue main header data-bin into message queue More...
     
    void enqueue_tileheader (int tile_id, msgqueue_param_t *msgqueue)
     enqueue tile headers data-bin into message queue More...
     
    void enqueue_tile (Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
     enqueue tile data-bin into message queue More...
     
    void enqueue_precinct (int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
     enqueue precinct data-bin into message queue More...
     
    void enqueue_metadata (Byte8_t meta_id, msgqueue_param_t *msgqueue)
     enqueue Metadata-bin into message queue More...
     
    void recons_stream_from_msgqueue (msgqueue_param_t *msgqueue, int tmpfd)
     reconstruct JPT/JPP-stream from message queue More...
     
    void parse_JPIPstream (Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
     parse JPT- JPP- stream to message queue More...
     
    void parse_metamsg (msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
     parse JPT- JPP- stream to message queue More...
     
    Byte8_t comp_precinct_id (int t, int c, int s, int num_components, int num_tiles)
     compute precinct ID A.3.2.1 More...
     
    -

    Macro Definition Documentation

    - -

    ◆ EXT_PRECINCT_MSG

    - -
    -
    - - - - -
    #define EXT_PRECINCT_MSG   1
    -
    - -
    -
    - -

    ◆ EXT_TILE_MSG

    - -
    -
    - - - - -
    #define EXT_TILE_MSG   5
    -
    - -
    -
    - -

    ◆ MAINHEADER_MSG

    - -
    -
    - - - - -
    #define MAINHEADER_MSG   6
    -
    - -
    -
    - -

    ◆ METADATA_MSG

    - -
    -
    - - - - -
    #define METADATA_MSG   8
    -
    - -
    -
    - -

    ◆ PRECINCT_MSG

    - -
    -
    - - - - -
    #define PRECINCT_MSG   0
    -
    - -
    -
    - -

    ◆ TILE_HEADER_MSG

    - -
    -
    - - - - -
    #define TILE_HEADER_MSG   2
    -
    - -
    -
    - -

    ◆ TILE_MSG

    - -
    -
    - - - - -
    #define TILE_MSG   4
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ message_param_t

    - -
    -
    - - - - -
    typedef struct message_param message_param_t
    -
    - -

    message parameters

    - -
    -
    - -

    ◆ msgqueue_param_t

    - -
    -
    - - - - -
    typedef struct msgqueue_param msgqueue_param_t
    -
    - -

    message queue parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ comp_precinct_id()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Byte8_t comp_precinct_id (int t,
    int c,
    int s,
    int num_components,
    int num_tiles 
    )
    -
    - -

    compute precinct ID A.3.2.1

    -
    Parameters
    - - - - - - -
    [in]ttile index
    [in]ccomponent index
    [in]ssequence number
    [in]num_componentstotal number of components
    [in]num_tilestotal number of tiles
    -
    -
    -
    Returns
    precicnt id
    - -

    Referenced by enqueue_precinct(), recons_packet(), and recons_precinct().

    - -
    -
    - -

    ◆ delete_message_in_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_message_in_msgqueue (message_param_t ** message,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    delete a message in msgqueue

    -
    Parameters
    - - - -
    [in]messageaddress of the deleting message pointer
    [in]msgqueuemessage queue pointer
    -
    -
    - -

    References msgqueue_param::first, msgqueue_param::last, message_param::next, and opj_free().

    - -
    -
    - -

    ◆ delete_msgqueue()

    - -
    -
    - - - - - - - - -
    void delete_msgqueue (msgqueue_param_t ** msgqueue)
    -
    - -

    delete message queue

    -
    Parameters
    - - -
    [in]msgqueueaddress of the message queue pointer
    -
    -
    - -

    References delete_cachemodel(), message_param::next, and opj_free().

    - -

    Referenced by destroy_jpipdecoder(), and terminate_dec_server().

    - -
    -
    - -

    ◆ enqueue_mainheader()

    - - - -

    ◆ enqueue_metadata()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void enqueue_metadata (Byte8_t meta_id,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_precinct()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_precinct (int seq_id,
    int tile_id,
    int comp_id,
    int layers,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void enqueue_tile (Byte4_t tile_id,
    int level,
    msgqueue_param_tmsgqueue 
    )
    -
    -
    - -

    ◆ enqueue_tileheader()

    - - - -

    ◆ gene_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    msgqueue_param_t* gene_msgqueue (OPJ_BOOL stateless,
    cachemodel_param_tcachemodel 
    )
    -
    - -

    generate message queue

    -
    Parameters
    - - - -
    [in]statelessif this is a stateless message queue
    [in]cachemodelcachemodel pointer
    -
    -
    -
    Returns
    generated message queue pointer
    - -

    References msgqueue_param::cachemodel, msgqueue_param::first, msgqueue_param::last, opj_malloc(), and msgqueue_param::stateless.

    - -

    Referenced by gene_JPIPstream(), init_dec_server(), and init_jpipdecoder().

    - -
    -
    - -

    ◆ parse_JPIPstream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void parse_JPIPstream (Byte_tJPIPstream,
    Byte8_t streamlen,
    OPJ_OFF_T offset,
    msgqueue_param_tmsgqueue 
    )
    -
    - -

    parse JPT- JPP- stream to message queue

    -
    Parameters
    - - - - - -
    [in]JPIPstreamJPT- JPP- stream data pointer
    [in]streamlenJPIPstream length
    [in]offsetoffset of the stream from the whole beginning
    [in,out]msgqueueadding message queue pointer
    -
    -
    - -

    References message_param::aux, message_param::bin_offset, message_param::class_id, message_param::csn, msgqueue_param::first, message_param::in_class_id, msgqueue_param::last, message_param::last_byte, message_param::length, message_param::next, OPJ_FALSE, opj_malloc(), OPJ_TRUE, parse_bin_id_vbas(), parse_vbas(), message_param::phld, and message_param::res_offset.

    - -

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ parse_metamsg()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void parse_metamsg (msgqueue_param_tmsgqueue,
    Byte_tstream,
    Byte8_t streamlen,
    metadatalist_param_tmetadatalist 
    )
    -
    - -

    parse JPT- JPP- stream to message queue

    -
    Parameters
    - - - - - -
    [in]msgqueuereference message queue pointer
    [in]streamstream data pointer
    [in]streamlenstream length
    [in]metadatalistadding metadata list pointer
    -
    -
    - -

    References message_param::class_id, msgqueue_param::first, gene_metadata(), message_param::in_class_id, insert_metadata_into_list(), METADATA_MSG, message_param::next, parse_metadata(), and message_param::res_offset.

    - -

    Referenced by decode_jpip(), and handle_JPIPstreamMSG().

    - -
    -
    - -

    ◆ print_msgqueue()

    - -
    -
    - - - - - - - - -
    void print_msgqueue (msgqueue_param_tmsgqueue)
    -
    -
    - -

    ◆ recons_stream_from_msgqueue()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void recons_stream_from_msgqueue (msgqueue_param_tmsgqueue,
    int tmpfd 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/msgqueue__manager_8h_source.html b/build/doc/html/msgqueue__manager_8h_source.html deleted file mode 100644 index e7e45c4f7..000000000 --- a/build/doc/html/msgqueue__manager_8h_source.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -OpenJPEG: msgqueue_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    msgqueue_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef MSGQUEUE_MANAGER_H_
    -
    33 # define MSGQUEUE_MANAGER_H_
    -
    34 
    -
    35 #include "byte_manager.h"
    -
    36 #include "cachemodel_manager.h"
    -
    37 #include "placeholder_manager.h"
    -
    38 
    -
    39 #define PRECINCT_MSG 0
    -
    40 #define EXT_PRECINCT_MSG 1
    -
    41 #define TILE_HEADER_MSG 2
    -
    42 #define TILE_MSG 4
    -
    43 #define EXT_TILE_MSG 5
    -
    44 #define MAINHEADER_MSG 6
    -
    45 #define METADATA_MSG 8
    -
    46 
    -
    48 typedef struct message_param {
    -
    49  OPJ_BOOL
    - - - - - - - - - -
    59  struct message_param *next;
    - -
    61 
    -
    63 typedef struct msgqueue_param {
    - - - - - -
    69 
    - -
    78  cachemodel_param_t *cachemodel);
    -
    79 
    -
    85 void delete_msgqueue(msgqueue_param_t **msgqueue);
    -
    86 
    - -
    94  msgqueue_param_t *msgqueue);
    -
    95 
    -
    101 void print_msgqueue(msgqueue_param_t *msgqueue);
    -
    102 
    -
    103 
    -
    109 void enqueue_mainheader(msgqueue_param_t *msgqueue);
    -
    110 
    -
    117 void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue);
    -
    118 
    -
    126 void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue);
    -
    127 
    -
    137 void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers,
    -
    138  msgqueue_param_t *msgqueue);
    -
    139 
    -
    140 
    -
    147 void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue);
    -
    148 
    -
    149 
    -
    156 void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd);
    -
    157 
    -
    158 
    -
    167 void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset,
    -
    168  msgqueue_param_t *msgqueue);
    -
    169 
    -
    178 void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream,
    -
    179  Byte8_t streamlen, metadatalist_param_t *metadatalist);
    -
    180 
    -
    191 Byte8_t comp_precinct_id(int t, int c, int s, int num_components,
    -
    192  int num_tiles);
    -
    193 
    -
    194 #endif /* !MSGQUEUE_MANAGER_H_ */
    -
    -
    #define METADATA_MSG
    Definition: msgqueue_manager.h:45
    -
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    -
    boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length)
    generate box contents
    Definition: metadata_manager.c:194
    -
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    -
    OPJ_BOOL ** pp_model
    dynamic array pointer of precint packet model
    Definition: cachemodel_manager.h:43
    -
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    -
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    -
    struct box_param * next
    pointer to the next box
    Definition: box_manager.h:43
    -
    #define TILE_MSG
    Definition: msgqueue_manager.h:42
    -
    void add_bigendian_bytestream(Byte8_t code, int bytelength, int tmpfd)
    Definition: msgqueue_manager.c:589
    -
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    -
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    -
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    -
    void delete_message_in_msgqueue(message_param_t **message, msgqueue_param_t *msgqueue)
    delete a message in msgqueue
    Definition: msgqueue_manager.c:795
    -
    Byte2_t numOflayers
    number of layers
    Definition: index_manager.h:79
    -
    placeholderlist_param_t * placeholderlist
    placeholder box list
    Definition: metadata_manager.h:46
    -
    void delete_message_in_msgqueue(message_param_t **msg, msgqueue_param_t *msgqueue)
    delete a message in msgqueue
    Definition: msgqueue_manager.c:795
    -
    void delete_cachemodel(cachemodel_param_t **cachemodel)
    delete a cache model
    Definition: cachemodel_manager.c:191
    -
    int csn
    codestream number
    Definition: target_manager.h:47
    -
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    -
    OPJ_OFF_T offset
    byte position of the whole Box (LBox) in the file
    Definition: box_manager.h:39
    -
    Byte4_t XTnum
    number of tiles in horizontal direction
    Definition: index_manager.h:66
    -
    Byte4_t big4(Byte_t *buf)
    convert 4-byte big endian Byte codes to number
    Definition: byte_manager.c:147
    -
    #define logstream
    Definition: msgqueue_manager.c:56
    -
    #define EXT_TILE_MSG
    Definition: msgqueue_manager.h:43
    - -
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    -
    OPJ_OFF_T offset
    codestream offset
    Definition: index_manager.h:88
    -
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    -
    OPJ_BOOL stateless
    if this is a stateless message queue
    Definition: msgqueue_manager.h:66
    -
    #define PRECINCT_MSG
    Definition: msgqueue_manager.h:39
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T offset
    byte position of the box contents in the file
    Definition: metadata_manager.h:38
    -
    box parameters
    Definition: box_manager.h:37
    -
    index parameters
    Definition: index_manager.h:86
    -
    fragment array index box parameters
    Definition: faixbox_manager.h:77
    -
    Byte8_t get_nmax(faixbox_param_t *faix)
    get nmax parameter value from faix box
    Definition: faixbox_manager.c:163
    -
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    -
    void add_vbas_stream(Byte8_t code, int tmpfd)
    Definition: msgqueue_manager.c:521
    -
    Byte8_t comp_precinct_id(int t, int c, int s, int num_components, int num_tiles)
    compute precinct ID A.3.2.1
    Definition: msgqueue_manager.c:311
    -
    void enqueue_box(Byte8_t meta_id, boxlist_param_t *boxlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:356
    -
    void add_body_stream(message_param_t *msg, int fd, int tmpfd)
    Definition: msgqueue_manager.c:554
    -
    metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list)
    search a metadata bin by index
    Definition: metadata_manager.c:206
    -
    void add_placeholder_stream(placeholder_param_t *phld, int tmpfd)
    Definition: msgqueue_manager.c:573
    -
    faixbox_param_t * tilepart
    tile part information from tpix box
    Definition: index_manager.h:93
    -
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    -
    boxlist_param_t * boxlist
    box list
    Definition: metadata_manager.h:45
    -
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    OPJ_BOOL last_byte
    if message contains the last byte of the data-bin
    Definition: msgqueue_manager.h:50
    -
    Byte8_t length
    message byte length
    Definition: msgqueue_manager.h:55
    -
    void enqueue_message(message_param_t *msg, msgqueue_param_t *msgqueue)
    Definition: msgqueue_manager.c:426
    -
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    -
    Byte4_t YTnum
    number of tiles in vertical direction
    Definition: index_manager.h:67
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    -
    #define FCGI_stderr
    Definition: msgqueue_manager.c:55
    -
    CODmarker_param_t COD
    COD marker information.
    Definition: index_manager.h:92
    -
    Byte8_t bin_offset
    offset of the data in this message from the start of the data-bin
    Definition: msgqueue_manager.h:54
    -
    void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue)
    enqueue tile headers data-bin into message queue
    Definition: msgqueue_manager.c:165
    -
    Byte8_t get_elemOff(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get offset of a element from faix box
    Definition: faixbox_manager.c:181
    - -
    Byte8_t get_elemLen(faixbox_param_t *faix, Byte8_t elem_id, Byte8_t row_id)
    get length of a element from faix box
    Definition: faixbox_manager.c:192
    -
    void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue)
    enqueue precinct data-bin into message queue
    Definition: msgqueue_manager.c:256
    -
    message parameters
    Definition: msgqueue_manager.h:48
    -
    boxlist_param_t * gene_boxlist(void)
    generate a box list
    Definition: box_manager.c:48
    -
    Byte_t * parse_vbas(Byte_t *streamptr, Byte8_t *elem)
    Definition: msgqueue_manager.c:780
    -
    void enqueue_boxcontents(Byte8_t meta_id, boxcontents_param_t *boxcontents, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:392
    -
    Definition: metadata_manager.h:37
    -
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    -
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    -
    box_param_t * gene_boxbyOffinStream(Byte_t *stream, OPJ_OFF_T offset)
    generate box from code stream (JPP or JPT stream) at the given offset
    Definition: box_manager.c:138
    - -
    void insert_metadata_into_list(metadata_param_t *metabin, metadatalist_param_t *metadatalist)
    insert a metadata-bin into list
    Definition: metadata_manager.c:156
    -
    void enqueue_phld(Byte8_t meta_id, placeholderlist_param_t *phldlist, msgqueue_param_t *msgqueue, Byte8_t *binOffset)
    Definition: msgqueue_manager.c:374
    -
    metadata-bin parameters
    Definition: metadata_manager.h:43
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    struct message_param * next
    pointer to the next message
    Definition: msgqueue_manager.h:59
    -
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    -
    cachemodel_param_t * cachemodel
    reference cachemodel pointer
    Definition: msgqueue_manager.h:67
    -
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    -
    mhixbox_param_t ** tileheader
    dynamic array of tile header information from thix box
    Definition: index_manager.h:95
    -
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    Byte8_t get_m(faixbox_param_t *faix)
    get m parameter value from faix box
    Definition: faixbox_manager.c:172
    -
    void add_bin_id_vbas_stream(Byte_t bb, Byte_t c, Byte8_t in_class_id, int tmpfd)
    Definition: msgqueue_manager.c:501
    -
    OPJ_OFF_T res_offset
    offset in the resource
    Definition: msgqueue_manager.h:57
    -
    void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
    enqueue tile data-bin into message queue
    Definition: msgqueue_manager.c:198
    -
    OPJ_BOOL * tp_model
    dynamic array pointer of tile part model, if sent, 1, else 0
    Definition: cachemodel_manager.h:41
    -
    placeholder_param_t * parse_phld(Byte_t *datastream, Byte8_t metalength)
    Definition: msgqueue_manager.c:741
    -
    OPJ_BOOL * th_model
    dynamic array pointer of tile header model
    Definition: cachemodel_manager.h:42
    -
    Byte8_t length
    length of the whole Box
    Definition: box_manager.h:41
    -
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    -
    Byte8_t in_class_id
    in-class identifier A.2.3
    Definition: msgqueue_manager.h:51
    -
    Byte8_t aux
    Definition: msgqueue_manager.h:56
    -
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    -
    message_param_t * last
    last message pointer of the list
    Definition: msgqueue_manager.h:65
    -
    char TBox[4]
    Definition: placeholder_manager.h:41
    -
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    -
    struct message_param message_param_t
    message parameters
    -
    void parse_metadata(metadata_param_t *metadata, message_param_t *msg, Byte_t *stream)
    Definition: msgqueue_manager.c:710
    -
    void insert_box_into_list(box_param_t *box, boxlist_param_t *boxlist)
    insert a box into list
    Definition: box_manager.c:440
    -
    SIZmarker_param_t SIZ
    SIZ marker information.
    Definition: index_manager.h:91
    -
    Byte8_t big8(Byte_t *buf)
    convert 8-byte big endian Byte codes to number
    Definition: byte_manager.c:153
    -
    metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
    generate a metadata bin
    Definition: metadata_manager.c:128
    -
    boxcontents_param_t * boxcontents
    box contens in case of no boxlist and placeholderlist
    Definition: metadata_manager.h:48
    -
    Byte2_t Csiz
    number of the components in the image
    Definition: index_manager.h:68
    -
    Byte4_t LBox
    Definition: placeholder_manager.h:40
    -
    metadatalist_param_t * metadatalist
    metadata-bin list
    Definition: index_manager.h:87
    -
    void print_binarycode(Byte8_t n, int segmentlen)
    Definition: msgqueue_manager.c:605
    -
    #define MAINHEADER_MSG
    Definition: msgqueue_manager.h:44
    - -
    Byte8_t tlen
    length ( total length of the main
    Definition: mhixbox_manager.h:53
    -
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    -
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    -
    Byte_t * parse_bin_id_vbas(Byte_t *streamptr, Byte_t *bb, Byte_t *c, Byte8_t *in_class_id)
    Definition: msgqueue_manager.c:759
    -
    Byte8_t class_id
    class identifiers
    Definition: msgqueue_manager.h:52
    -
    struct msgqueue_param msgqueue_param_t
    message queue parameters
    -
    void enqueue_mainheader(msgqueue_param_t *msgqueue)
    enqueue main header data-bin into message queue
    Definition: msgqueue_manager.c:135
    -
    int fd
    file descriptor
    Definition: target_manager.h:43
    -
    target parameters
    Definition: target_manager.h:40
    -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue)
    enqueue Metadata-bin into message queue
    Definition: msgqueue_manager.c:323
    -
    Box list parameters.
    Definition: box_manager.h:48
    -
    faixbox_param_t ** precpacket
    dynamic array of precint packet information from ppix box
    Definition: index_manager.h:97
    -
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    - -
    Byte8_t length
    length of the box contents
    Definition: metadata_manager.h:39
    -
    placeholder_param_t * phld
    placeholder pointer in index
    Definition: msgqueue_manager.h:58
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    box_param_t * first
    first box pointer of the list
    Definition: box_manager.h:49
    - - -
    OPJ_BOOL mhead_model
    main header model, if sent, 1, else 0
    Definition: cachemodel_manager.h:40
    -
    Byte8_t mhead_length
    main header length
    Definition: index_manager.h:90
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte4_t Flags
    Definition: placeholder_manager.h:42
    -
    #define TILE_HEADER_MSG
    Definition: msgqueue_manager.h:41
    -
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    -
    message_param_t * gene_metamsg(Byte8_t meta_id, Byte8_t binoffset, Byte8_t length, OPJ_OFF_T res_offset, placeholder_param_t *phld, Byte8_t csn)
    Definition: msgqueue_manager.c:405
    -
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    -
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    -
    void add_vbas_with_bytelen_stream(Byte8_t code, int bytelength, int tmpfd)
    Definition: msgqueue_manager.c:535
    -
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    - - - - diff --git a/build/doc/html/nav_f.png b/build/doc/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/build/doc/html/nav_g.png b/build/doc/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -OpenJPEG: openjpeg.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    openjpeg.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the info handler use by openjpeg. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the warning handler use by openjpeg. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the error handler use by openjpeg. More...
     
    static OPJ_SIZE_T opj_read_from_file (void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
     
    static OPJ_UINT64 opj_get_data_length_from_file (FILE *p_file)
     
    static OPJ_SIZE_T opj_write_from_file (void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
     
    static OPJ_OFF_T opj_skip_from_file (OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
     
    static OPJ_BOOL opj_seek_from_file (OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
     
    const char *OPJ_CALLCONV opj_version (void)
     
    opj_codec_t *OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT p_format)
     Creates a J2K/JP2 decompression structure. More...
     
    void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_t *parameters)
     Set decoding parameters to default values. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_t *p_codec, int num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_t *p_codec, opj_dparameters_t *parameters)
     Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
     Decodes an image header. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
     Restrict the number of components to decode. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
     Sets the given area to be decoded. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
     Reads a tile header. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Reads a tile data. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
     Get the decoded tile from the codec. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_t *p_codec, OPJ_UINT32 res_factor)
     Set the resolution factor of the decoded image. More...
     
    opj_codec_t *OPJ_CALLCONV opj_create_compress (OPJ_CODEC_FORMAT p_format)
     Creates a J2K/JP2 compression structure. More...
     
    void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_t *parameters)
     Set encoding parameters to default values, that means : More...
     
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *p_image)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_t *p_codec, const char *const *options)
     Specify extra options for the encoder. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
     Start to compress the current image. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_t *p_info, opj_stream_t *p_stream)
     Encode an image into a JPEG-2000 codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     End to compress the current image. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Read after the codestream if necessary. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
     Sets the MCT matrix to use. More...
     
    OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Writes a tile with the given data. More...
     
    void OPJ_CALLCONV opj_destroy_codec (opj_codec_t *p_codec)
     Destroy a decompressor handle. More...
     
    void OPJ_CALLCONV opj_dump_codec (opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     Dump the codec information into the output stream. More...
     
    opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info (opj_codec_t *p_codec)
     Get the codestream information from the codec. More...
     
    void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t **cstr_info)
     Destroy Codestream information after compression or decompression. More...
     
    opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index (opj_codec_t *p_codec)
     Get the codestream index from the codec. More...
     
    void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t **p_cstr_index)
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream (const char *fname, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with default parameters (helper function) More...
     
    opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream (const char *fname, OPJ_SIZE_T p_size, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with a specific buffer size. More...
     
    void *OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
     Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free. More...
     
    void OPJ_CALLCONV opj_image_data_free (void *ptr)
     Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc. More...
     
    -

    Function Documentation

    - -

    ◆ opj_codec_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_tp_codec,
    int num_threads 
    )
    -
    - -

    Allocates worker threads for the compressor/decompressor.

    -

    By default, only the main thread is used. If this function is not used, but the OPJ_NUM_THREADS environment variable is set, its value will be used to initialize the number of threads. The value can be either an integer number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is called, this function will override the behaviour of the environment variable.

    -

    Currently this function must be called after opj_setup_decoder() and before opj_read_header().

    -

    Note: currently only has effect on the decompressor.

    -
    Parameters
    - - - -
    p_codecdecompressor handler
    num_threadsnumber of threads.
    -
    -
    -
    Returns
    OPJ_TRUE if the decoder is correctly set
    - -

    References opj_codec_private::m_codec, OPJ_FALSE, and opj_codec_private::opj_set_threads.

    - -
    -
    - -

    ◆ opj_create_compress()

    - - - -

    ◆ opj_create_decompress()

    - -
    -
    - - - - - - - - -
    opj_codec_t* OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
    -
    -
    - -

    ◆ opj_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_tp_decompressor,
    opj_stream_tp_stream,
    opj_image_tp_image 
    )
    -
    - -

    Decode an image from a JPEG-2000 codestream.

    -
    Parameters
    - - - - -
    p_decompressordecompressor handle
    p_streamInput buffer stream
    p_imagethe decoded image
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_decode_tile_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    -
    - -

    Reads a tile data.

    -

    This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    -

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    -
    Parameters
    - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile being decoded, this should be the value set by opj_read_tile_header.
    p_datapointer to a memory block that will hold the decoded data.
    p_data_sizesize of p_data. p_data_size should be bigger or equal to the value set by opj_read_tile_header.
    p_streamthe stream to decode.
    -
    -
    -
    Returns
    true if the data could be decoded.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_destroy_codec()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_destroy_codec (opj_codec_tp_codec)
    -
    - -

    Destroy a decompressor handle.

    -
    Parameters
    - - -
    p_codecdecompressor handle to destroy
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_decompression, and opj_free().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_destroy_cstr_index()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t ** p_cstr_index)
    -
    - -

    References j2k_destroy_cstr_index().

    - -
    -
    - -

    ◆ opj_destroy_cstr_info()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t ** cstr_info)
    -
    - -

    Destroy Codestream information after compression or decompression.

    -
    Parameters
    - - -
    cstr_infoCodestream information structure
    -
    -
    - -

    References opj_free().

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ opj_dump_codec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV opj_dump_codec (opj_codec_tp_codec,
    OPJ_INT32 info_flag,
    FILE * output_stream 
    )
    -
    - -

    Dump the codec information into the output stream.

    -
    Parameters
    - - - - -
    p_codecthe jpeg2000 codec.
    info_flagtype of information dump.
    output_streamoutput stream where dump the information gotten from the codec.
    -
    -
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_dump_codec.

    - -
    -
    - -

    ◆ opj_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    Encode an image into a JPEG-2000 codestream.

    -
    Parameters
    - - - -
    p_codeccompressor handle
    p_streamOutput buffer stream
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_tp_codec,
    const char *const * p_options 
    )
    -
    - -

    Specify extra options for the encoder.

    -

    This may be called after opj_setup_encoder() and before opj_start_compress()

    -

    This is the way to add new options in a fully ABI compatible way, without extending the opj_cparameters_t structure.

    -

    Currently supported options are:

      -
    • -PLT=YES/NO. Defaults to NO. If set to YES, PLT marker segments, indicating the length of each packet in the tile-part header, will be written. Since 2.3.2
    • -
    -
    Parameters
    - - - -
    p_codecCompressor handle
    p_optionsCompression options. This should be a NULL terminated array of strings. Each string is of the form KEY=VALUE.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    -
    Since
    2.3.2
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    End to compress the current image.

    -
    Parameters
    - - - -
    p_codecCompressor handle
    p_streamInput stgream
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    Read after the codestream if necessary.

    -
    Parameters
    - - - -
    p_codecthe JPEG2000 codec to read.
    p_streamthe JPEG2000 stream.
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_get_cstr_index()

    - -
    -
    - - - - - - - - -
    opj_codestream_index_t* OPJ_CALLCONV opj_get_cstr_index (opj_codec_tp_codec)
    -
    - -

    Get the codestream index from the codec.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a codestream index structure.
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_index.

    - -
    -
    - -

    ◆ opj_get_cstr_info()

    - -
    -
    - - - - - - - - -
    opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info (opj_codec_tp_codec)
    -
    - -

    Get the codestream information from the codec.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a codestream information structure.
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_info.

    - -
    -
    - -

    ◆ opj_get_data_length_from_file()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT64 opj_get_data_length_from_file (FILE * p_file)
    -
    -static
    -
    - -

    References OPJ_FSEEK, and OPJ_FTELL.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_get_decoded_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_tp_codec,
    opj_stream_tp_stream,
    opj_image_tp_image,
    OPJ_UINT32 tile_index 
    )
    -
    - -

    Get the decoded tile from the codec.

    -
    Parameters
    - - - - - -
    p_codecthe jpeg2000 codec.
    p_streaminput streamm
    p_imageoutput image
    tile_indexindex of the tile which will be decode
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_image_data_alloc()

    - -
    -
    - - - - - - - - -
    void* OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
    -
    - -

    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.

    -
    Parameters
    - - -
    sizenumber of bytes to allocate
    -
    -
    -
    Returns
    a new pointer if successful, NULL otherwise.
    -
    Since
    2.2.0
    - -

    References opj_aligned_malloc().

    - -

    Referenced by opj_alloc_tile_component_data(), opj_image_create(), opj_j2k_update_image_data(), opj_jp2_apply_pclr(), and opj_tcd_decode_tile().

    - -
    -
    - -

    ◆ opj_image_data_free()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_image_data_free (void * ptr)
    -
    - -

    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.

    -
    Parameters
    - - -
    ptrPointer to free
    -
    -
    -
    Since
    2.2.0
    - -

    References opj_aligned_free().

    - -

    Referenced by opj_alloc_tile_component_data(), opj_copy_image_header(), opj_image_destroy(), opj_j2k_decode_tiles(), opj_j2k_get_tile(), opj_j2k_move_data_from_codec_to_output_image(), opj_jp2_apply_pclr(), opj_tcd_decode_tile(), opj_tcd_free_tile(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_read_from_file()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_SIZE_T opj_read_from_file (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    FILE * p_file 
    )
    -
    -static
    -
    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_tp_stream,
    opj_codec_tp_codec,
    opj_image_t ** p_image 
    )
    -
    - -

    Decodes an image header.

    -
    Parameters
    - - - - -
    p_streamthe jpeg2000 stream.
    p_codecthe jpeg2000 codec to read.
    p_imagethe image structure initialized with the characteristics of encoded image.
    -
    -
    -
    Returns
    true if the main header of the codestream and the JP2 header is correctly read.
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_tp_codec,
    opj_stream_tp_stream,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_should_go_on 
    )
    -
    - -

    Reads a tile header.

    -

    This function is compulsory and allows one to know the size of the tile that will be decoded. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    -
    Parameters
    - - - - - - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexpointer to a value that will hold the index of the tile being decoded, in case of success.
    p_data_sizepointer to a value that will hold the maximum size of the decoded data, in case of success. In case of truncated codestreams, the actual number of bytes decoded may be lower. The computation of the size is the same as depicted in opj_write_tile.
    p_tile_x0pointer to a value that will hold the x0 pos of the tile (in the image).
    p_tile_y0pointer to a value that will hold the y0 pos of the tile (in the image).
    p_tile_x1pointer to a value that will hold the x1 pos of the tile (in the image).
    p_tile_y1pointer to a value that will hold the y1 pos of the tile (in the image).
    p_nb_compspointer to a value that will hold the number of components in the tile.
    p_should_go_onpointer to a boolean that will hold the fact that the decoding should go on. In case the codestream is over at the time of the call, the value will be set to false. The user should then stop the decoding.
    p_streamthe stream to decode.
    -
    -
    -
    Returns
    true if the tile header could be decoded. In case the decoding should end, the returned value is still true. returning false may be the result of a shortage of memory or an internal error.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_seek_from_file()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_seek_from_file (OPJ_OFF_T p_nb_bytes,
    FILE * p_user_data 
    )
    -
    -static
    -
    - -

    References OPJ_FALSE, OPJ_FSEEK, and OPJ_TRUE.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_tp_codec,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -

    The coordinates passed to this function should be expressed in the reference grid, that is to say at the highest resolution level, even if requesting the image at lower resolution levels.

    -

    Generally opj_set_decode_area() should be followed by opj_decode(), and the codec cannot be re-used. In the particular case of an image made of a single tile, several sequences of calls to opoj_set_decode_area() and opj_decode() are allowed, and will bring performance improvements when reading an image by chunks.

    -
    Parameters
    - - - - - - - -
    p_codecthe jpeg2000 codec.
    p_imagethe decoded image previously set by opj_read_header
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_tp_codec,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    OPJ_BOOL apply_color_transforms 
    )
    -
    - -

    Restrict the number of components to decode.

    -

    This function should be called after opj_read_header().

    -

    This function enables to restrict the set of decoded components to the specified indices. Note that the current implementation (apply_color_transforms == OPJ_FALSE) is such that neither the multi-component transform at codestream level, nor JP2 channel transformations will be applied. Consequently the indices are relative to the codestream.

    -

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    -
    Parameters
    - - - - - -
    p_codecthe jpeg2000 codec to read.
    numcompsSize of the comps_indices array.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0)
    apply_color_transformsWhether multi-component transform at codestream level or JP2 channel transformations should be applied. Currently this parameter should be set to OPJ_FALSE. Setting it to OPJ_TRUE will result in an error.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_set_decoded_resolution_factor()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_tp_codec,
    OPJ_UINT32 res_factor 
    )
    -
    - -

    Set the resolution factor of the decoded image.

    -
    Parameters
    - - - -
    p_codecthe jpeg2000 codec.
    res_factorresolution factor to set
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_set_default_decoder_parameters()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_tparameters)
    -
    -
    - -

    ◆ opj_set_default_encoder_parameters()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_tparameters)
    -
    - -

    Set encoding parameters to default values, that means :

    -
      -
    • -Lossless
    • -
    • -1 tile
    • -
    • -Size of precinct : 2^15 x 2^15 (means 1 precinct)
    • -
    • -Size of code-block : 64 x 64
    • -
    • -Number of resolutions: 6
    • -
    • -No SOP marker in the codestream
    • -
    • -No EPH marker in the codestream
    • -
    • -No sub-sampling in x or y direction
    • -
    • -No mode switch activated
    • -
    • -Progression order: LRCP
    • -
    • -No index file
    • -
    • -No ROI upshifted
    • -
    • -No offset of the origin of the image
    • -
    • -No offset of the origin of the tiles
    • -
    • -Reversible DWT 5-3
    • -
    -
    Parameters
    - - -
    parametersCompression parameters
    -
    -
    - -

    References opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cparameters::cod_format, opj_cparameters::cp_cinema, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_rsiz, opj_cparameters::decod_format, opj_cparameters::jpip_on, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_cparameters::max_comp_size, opj_cparameters::numresolution, OPJ_COMP_PARAM_DEFAULT_CBLOCKH, OPJ_COMP_PARAM_DEFAULT_CBLOCKW, OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION, OPJ_COMP_PARAM_DEFAULT_PROG_ORDER, OPJ_FALSE, OPJ_OFF, OPJ_PROFILE_NONE, OPJ_STD_RSIZ, opj_cparameters::prog_order, opj_cparameters::roi_compno, opj_cparameters::rsiz, opj_cparameters::subsampling_dx, opj_cparameters::subsampling_dy, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, and opj_cparameters::tp_on.

    - -
    -
    - -

    ◆ opj_set_error_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the error handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_event_mgr::error_handler, opj_event_mgr::m_error_data, opj_codec_private::m_event_mgr, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_info_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the info handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_event_mgr::info_handler, opj_codec_private::m_event_mgr, opj_event_mgr::m_info_data, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_MCT()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_tparameters,
    OPJ_FLOAT32pEncodingMatrix,
    OPJ_INT32p_dc_shift,
    OPJ_UINT32 pNbComp 
    )
    -
    - -

    Sets the MCT matrix to use.

    -
    Parameters
    - - - - - -
    parametersthe parameters to change.
    pEncodingMatrixthe encoding matrix.
    p_dc_shiftthe dc shift coefficients to use.
    pNbCompthe number of components of the image.
    -
    -
    -
    Returns
    true if the parameters could be set.
    - -

    References opj_cparameters::irreversible, opj_cparameters::mct_data, OPJ_EXTENSION_MCT, OPJ_FALSE, OPJ_IS_PART2, opj_malloc(), OPJ_PROFILE_PART2, OPJ_TRUE, opj_cparameters::rsiz, and opj_cparameters::tcp_mct.

    - -
    -
    - -

    ◆ opj_set_warning_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the warning handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_codec_private::m_event_mgr, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_tp_codec,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user.

    -
    Parameters
    - - - -
    p_codecdecompressor handler
    parametersdecompression parameters
    -
    -
    -
    Returns
    true if the decoder is correctly set
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_tp_codec,
    opj_cparameters_tparameters,
    opj_image_timage 
    )
    -
    - -

    Setup the encoder parameters using the current image and using user parameters.

    -
    Parameters
    - - - - -
    p_codecCompressor handle
    parametersCompression parameters
    imageInput filled image
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_skip_from_file()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_OFF_T opj_skip_from_file (OPJ_OFF_T p_nb_bytes,
    FILE * p_user_data 
    )
    -
    -static
    -
    - -

    References OPJ_FSEEK.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_tp_codec,
    opj_image_tp_image,
    opj_stream_tp_stream 
    )
    -
    - -

    Start to compress the current image.

    -
    Parameters
    - - - - -
    p_codecCompressor handle
    p_imageInput filled image
    p_streamInput stgream
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_stream_create_default_file_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (const char * fname,
    OPJ_BOOL p_is_read_stream 
    )
    -
    - -

    Create a stream from a file identified with its filename with default parameters (helper function)

    -
    Parameters
    - - - -
    fnamethe filename of the file to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    -
    -
    - -

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create_file_stream().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_stream_create_file_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (const char * fname,
    OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_read_stream 
    )
    -
    - -

    Create a stream from a file identified with its filename with a specific buffer size.

    -
    Parameters
    - - - - -
    fnamethe filename of the file to stream
    p_buffer_sizesize of the chunk used to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    -
    -
    - -

    References opj_get_data_length_from_file(), opj_read_from_file(), opj_seek_from_file(), opj_skip_from_file(), opj_stream_create(), opj_stream_set_read_function(), opj_stream_set_seek_function(), opj_stream_set_skip_function(), opj_stream_set_user_data(), opj_stream_set_user_data_length(), opj_stream_set_write_function(), and opj_write_from_file().

    - -

    Referenced by opj_stream_create_default_file_stream().

    - -
    -
    - -

    ◆ opj_version()

    - -
    -
    - - - - - - - - -
    const char* OPJ_CALLCONV opj_version (void )
    -
    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_write_from_file()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_SIZE_T opj_write_from_file (void * p_buffer,
    OPJ_SIZE_T p_nb_bytes,
    FILE * p_file 
    )
    -
    -static
    -
    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    -
    - -

    Writes a tile with the given data.

    -
    Parameters
    - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
    p_datapointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
    p_data_sizethis value os used to make sure the data being written is correct. The size must be equal to the sum for each component of tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
    p_streamthe stream to write data to.
    -
    -
    -
    Returns
    true if the data could be written.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/openjpeg_8h.html b/build/doc/html/openjpeg_8h.html deleted file mode 100644 index 447fc3150..000000000 --- a/build/doc/html/openjpeg_8h.html +++ /dev/null @@ -1,5071 +0,0 @@ - - - - - - - -OpenJPEG: openjpeg.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    openjpeg.h File Reference
    -
    -
    -
    #include "opj_stdint.h"
    -#include <stdio.h>
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Structures

    struct  opj_poc
     Progression order changes. More...
     
    struct  opj_cparameters
     Compression parameters. More...
     
    struct  opj_dparameters
     Decompression parameters. More...
     
    struct  opj_image_comp
     Defines a single image component. More...
     
    struct  opj_image
     Defines image data and characteristics. More...
     
    struct  opj_image_comptparm
     Component parameters structure used by the opj_image_create function. More...
     
    struct  opj_packet_info
     Index structure : Information concerning a packet inside tile. More...
     
    struct  opj_marker_info
     Marker structure. More...
     
    struct  opj_tp_info
     Index structure : Information concerning tile-parts. More...
     
    struct  opj_tile_info
     Index structure : information regarding tiles. More...
     
    struct  opj_codestream_info
     Index structure of the codestream. More...
     
    struct  opj_tccp_info
     Tile-component coding parameters information. More...
     
    struct  opj_tile_v2_info
     Tile coding parameters information. More...
     
    struct  opj_codestream_info_v2
     Information structure about the codestream (FIXME should be expand and enhance) More...
     
    struct  opj_tp_index
     Index structure about a tile part. More...
     
    struct  opj_tile_index
     Index structure about a tile. More...
     
    struct  opj_codestream_index
     Index structure of the codestream (FIXME should be expand and enhance) More...
     
    struct  opj_jp2_metadata
     Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    struct  opj_jp2_index
     Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define INLINE
     
    #define OPJ_DEPRECATED(func)   func
     
    #define OPJ_API
     
    #define OPJ_LOCAL
     
    #define OPJ_CALLCONV
     
    #define OPJ_TRUE   1
     
    #define OPJ_FALSE   0
     
    #define OPJ_ARG_NOT_USED(x)   (void)(x)
     
    #define OPJ_PATH_LEN   4096
     Maximum allowed size for filenames. More...
     
    #define OPJ_J2K_MAXRLVLS   33
     Number of maximum resolution level authorized. More...
     
    #define OPJ_J2K_MAXBANDS   (3*OPJ_J2K_MAXRLVLS-2)
     Number of maximum sub-band linked to number of resolution level. More...
     
    #define OPJ_J2K_DEFAULT_NB_SEGS   10
     
    #define OPJ_J2K_STREAM_CHUNK_SIZE   0x100000 /** 1 mega by default */
     
    #define OPJ_J2K_DEFAULT_HEADER_SIZE   1000
     
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS   10
     
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS   10
     
    #define JPWL_MAX_NO_TILESPECS   16
     Maximum number of tile parts expected by JPWL: increase at your will. More...
     
    #define JPWL_MAX_NO_PACKSPECS   16
     Maximum number of packet parts expected by JPWL: increase at your will. More...
     
    #define JPWL_MAX_NO_MARKERS   512
     Maximum number of JPWL markers: increase at your will. More...
     
    #define JPWL_PRIVATEINDEX_NAME   "jpwl_index_privatefilename"
     index file name used when JPWL is on More...
     
    #define JPWL_EXPECTED_COMPONENTS   3
     Expect this number of components, so you'll find better the first EPB. More...
     
    #define JPWL_MAXIMUM_TILES   8192
     Expect this maximum number of tiles, to avoid some crashes. More...
     
    #define JPWL_MAXIMUM_HAMMING   2
     Expect this maximum number of bit errors in marker id's. More...
     
    #define JPWL_MAXIMUM_EPB_ROOM   65450
     Expect this maximum number of bytes for composition of EPBs. More...
     
    #define OPJ_IMG_INFO   1
     EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump. More...
     
    #define OPJ_J2K_MH_INFO   2
     Codestream information based only on the main header. More...
     
    #define OPJ_J2K_TH_INFO   4
     Tile information based on the current tile header. More...
     
    #define OPJ_J2K_TCH_INFO   8
     Tile/Component information of all tiles. More...
     
    #define OPJ_J2K_MH_IND   16
     Codestream index based only on the main header. More...
     
    #define OPJ_J2K_TH_IND   32
     Tile index based on the current tile. More...
     
    #define OPJ_JP2_INFO   128
     <
    - More...
     
    #define OPJ_JP2_IND   256
     JP2 file index. More...
     
    #define OPJ_PROFILE_NONE   0x0000 /** no profile, conform to 15444-1 */
     JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing the RSIZ value for the J2K codestream. More...
     
    #define OPJ_PROFILE_0   0x0001 /** Profile 0 as described in 15444-1,Table A.45 */
     
    #define OPJ_PROFILE_1   0x0002 /** Profile 1 as described in 15444-1,Table A.45 */
     
    #define OPJ_PROFILE_PART2   0x8000 /** At least 1 extension defined in 15444-2 (Part-2) */
     
    #define OPJ_PROFILE_CINEMA_2K   0x0003 /** 2K cinema profile defined in 15444-1 AMD1 */
     
    #define OPJ_PROFILE_CINEMA_4K   0x0004 /** 4K cinema profile defined in 15444-1 AMD1 */
     
    #define OPJ_PROFILE_CINEMA_S2K   0x0005 /** Scalable 2K cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_CINEMA_S4K   0x0006 /** Scalable 4K cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_CINEMA_LTS   0x0007 /** Long term storage cinema profile defined in 15444-1 AMD2 */
     
    #define OPJ_PROFILE_BC_SINGLE   0x0100 /** Single Tile Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_BC_MULTI   0x0200 /** Multi Tile Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_BC_MULTI_R   0x0300 /** Multi Tile Reversible Broadcast profile defined in 15444-1 AMD3 */
     
    #define OPJ_PROFILE_IMF_2K   0x0400 /** 2K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_4K   0x0500 /** 4K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_8K   0x0600 /** 8K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_2K_R   0x0700 /** 2K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_4K_R   0x0800 /** 4K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_PROFILE_IMF_8K_R   0x0900 /** 8K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
     
    #define OPJ_EXTENSION_NONE   0x0000 /** No Part-2 extension */
     JPEG 2000 Part-2 extensions. More...
     
    #define OPJ_EXTENSION_MCT   0x0100 /** Custom MCT support */
     
    #define OPJ_IS_CINEMA(v)   (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
     JPEG 2000 profile macros. More...
     
    #define OPJ_IS_STORAGE(v)   ((v) == OPJ_PROFILE_CINEMA_LTS)
     
    #define OPJ_IS_BROADCAST(v)   (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
     
    #define OPJ_IS_IMF(v)   (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
     
    #define OPJ_IS_PART2(v)   ((v) & OPJ_PROFILE_PART2)
     
    #define OPJ_GET_IMF_PROFILE(v)   ((v) & 0xff00) /** Extract IMF profile without mainlevel/sublevel */
     
    #define OPJ_GET_IMF_MAINLEVEL(v)   ((v) & 0xf) /** Extract IMF main level */
     
    #define OPJ_GET_IMF_SUBLEVEL(v)   (((v) >> 4) & 0xf) /** Extract IMF sub level */
     
    #define OPJ_IMF_MAINLEVEL_MAX   11 /** Maximum main level */
     
    #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC   65 /** MSamples/sec for IMF main level 1 */
     Max. More...
     
    #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC   130 /** MSamples/sec for IMF main level 2 */
     
    #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC   195 /** MSamples/sec for IMF main level 3 */
     
    #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC   260 /** MSamples/sec for IMF main level 4 */
     
    #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC   520 /** MSamples/sec for IMF main level 5 */
     
    #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC   1200 /** MSamples/sec for IMF main level 6 */
     
    #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC   2400 /** MSamples/sec for IMF main level 7 */
     
    #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC   4800 /** MSamples/sec for IMF main level 8 */
     
    #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC   9600 /** MSamples/sec for IMF main level 9 */
     
    #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC   19200 /** MSamples/sec for IMF main level 10 */
     
    #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC   38400 /** MSamples/sec for IMF main level 11 */
     
    #define OPJ_IMF_SUBLEVEL_1_MBITSSEC   200 /** Mbits/s for IMF sub level 1 */
     Max. More...
     
    #define OPJ_IMF_SUBLEVEL_2_MBITSSEC   400 /** Mbits/s for IMF sub level 2 */
     
    #define OPJ_IMF_SUBLEVEL_3_MBITSSEC   800 /** Mbits/s for IMF sub level 3 */
     
    #define OPJ_IMF_SUBLEVEL_4_MBITSSEC   1600 /** Mbits/s for IMF sub level 4 */
     
    #define OPJ_IMF_SUBLEVEL_5_MBITSSEC   3200 /** Mbits/s for IMF sub level 5 */
     
    #define OPJ_IMF_SUBLEVEL_6_MBITSSEC   6400 /** Mbits/s for IMF sub level 6 */
     
    #define OPJ_IMF_SUBLEVEL_7_MBITSSEC   12800 /** Mbits/s for IMF sub level 7 */
     
    #define OPJ_IMF_SUBLEVEL_8_MBITSSEC   25600 /** Mbits/s for IMF sub level 8 */
     
    #define OPJ_IMF_SUBLEVEL_9_MBITSSEC   51200 /** Mbits/s for IMF sub level 9 */
     
    #define OPJ_CINEMA_24_CS   1302083 /** Maximum codestream length for 24fps */
     JPEG 2000 codestream and component size limits in cinema profiles. More...
     
    #define OPJ_CINEMA_48_CS   651041 /** Maximum codestream length for 48fps */
     
    #define OPJ_CINEMA_24_COMP   1041666 /** Maximum size per color component for 2K & 4K @ 24fps */
     
    #define OPJ_CINEMA_48_COMP   520833 /** Maximum size per color component for 2K @ 48fps */
     
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_INT32
     
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG   0x0001
     
    #define OPJ_DPARAMETERS_DUMP_FLAG   0x0002
     
    #define OPJ_STREAM_READ   OPJ_TRUE
     Stream open flags. More...
     
    #define OPJ_STREAM_WRITE   OPJ_FALSE
     The stream was opened for writing. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    typedef int OPJ_BOOL
     
    typedef char OPJ_CHAR
     
    typedef float OPJ_FLOAT32
     
    typedef double OPJ_FLOAT64
     
    typedef unsigned char OPJ_BYTE
     
    typedef int8_t OPJ_INT8
     
    typedef uint8_t OPJ_UINT8
     
    typedef int16_t OPJ_INT16
     
    typedef uint16_t OPJ_UINT16
     
    typedef int32_t OPJ_INT32
     
    typedef uint32_t OPJ_UINT32
     
    typedef int64_t OPJ_INT64
     
    typedef uint64_t OPJ_UINT64
     
    typedef int64_t OPJ_OFF_T
     
    typedef size_t OPJ_SIZE_T
     
    typedef enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities. More...
     
    typedef enum CINEMA_MODE OPJ_CINEMA_MODE
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode. More...
     
    typedef enum PROG_ORDER OPJ_PROG_ORDER
     Progression order. More...
     
    typedef enum COLOR_SPACE OPJ_COLOR_SPACE
     Supported image color spaces. More...
     
    typedef enum CODEC_FORMAT OPJ_CODEC_FORMAT
     Supported codec. More...
     
    typedef void(* opj_msg_callback) (const char *msg, void *client_data)
     Callback function prototype for events. More...
     
    typedef struct opj_poc opj_poc_t
     Progression order changes. More...
     
    typedef struct opj_cparameters opj_cparameters_t
     Compression parameters. More...
     
    typedef struct opj_dparameters opj_dparameters_t
     Decompression parameters. More...
     
    typedef void * opj_codec_t
     JPEG2000 codec V2. More...
     
    typedef OPJ_SIZE_T(* opj_stream_read_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_SIZE_T(* opj_stream_write_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_OFF_T(* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     
    typedef OPJ_BOOL(* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
     
    typedef void(* opj_stream_free_user_data_fn) (void *p_user_data)
     
    typedef void * opj_stream_t
     
    typedef struct opj_image_comp opj_image_comp_t
     Defines a single image component. More...
     
    typedef struct opj_image opj_image_t
     Defines image data and characteristics. More...
     
    typedef struct opj_image_comptparm opj_image_cmptparm_t
     Component parameters structure used by the opj_image_create function. More...
     
    typedef struct opj_packet_info opj_packet_info_t
     Index structure : Information concerning a packet inside tile. More...
     
    typedef struct opj_marker_info opj_marker_info_t
     Marker structure. More...
     
    typedef struct opj_tp_info opj_tp_info_t
     Index structure : Information concerning tile-parts. More...
     
    typedef struct opj_tile_info opj_tile_info_t
     Index structure : information regarding tiles. More...
     
    typedef struct opj_codestream_info opj_codestream_info_t
     Index structure of the codestream. More...
     
    typedef struct opj_tccp_info opj_tccp_info_t
     Tile-component coding parameters information. More...
     
    typedef struct opj_tile_v2_info opj_tile_info_v2_t
     Tile coding parameters information. More...
     
    typedef struct opj_codestream_info_v2 opj_codestream_info_v2_t
     Information structure about the codestream (FIXME should be expand and enhance) More...
     
    typedef struct opj_tp_index opj_tp_index_t
     Index structure about a tile part. More...
     
    typedef struct opj_tile_index opj_tile_index_t
     Index structure about a tile. More...
     
    typedef struct opj_codestream_index opj_codestream_index_t
     Index structure of the codestream (FIXME should be expand and enhance) More...
     
    typedef struct opj_jp2_metadata opj_jp2_metadata_t
     Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    typedef struct opj_jp2_index opj_jp2_index_t
     Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. More...
     
    - - - - - - - - - - - - - - - - -

    -Enumerations

    enum  RSIZ_CAPABILITIES { OPJ_STD_RSIZ = 0, -OPJ_CINEMA2K = 3, -OPJ_CINEMA4K = 4, -OPJ_MCT = 0x8100 - }
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities. More...
     
    enum  CINEMA_MODE { OPJ_OFF = 0, -OPJ_CINEMA2K_24 = 1, -OPJ_CINEMA2K_48 = 2, -OPJ_CINEMA4K_24 = 3 - }
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode. More...
     
    enum  PROG_ORDER {
    -  OPJ_PROG_UNKNOWN = -1, -OPJ_LRCP = 0, -OPJ_RLCP = 1, -OPJ_RPCL = 2, -
    -  OPJ_PCRL = 3, -OPJ_CPRL = 4 -
    - }
     Progression order. More...
     
    enum  COLOR_SPACE {
    -  OPJ_CLRSPC_UNKNOWN = -1, -OPJ_CLRSPC_UNSPECIFIED = 0, -OPJ_CLRSPC_SRGB = 1, -OPJ_CLRSPC_GRAY = 2, -
    -  OPJ_CLRSPC_SYCC = 3, -OPJ_CLRSPC_EYCC = 4, -OPJ_CLRSPC_CMYK = 5 -
    - }
     Supported image color spaces. More...
     
    enum  CODEC_FORMAT {
    -  OPJ_CODEC_UNKNOWN = -1, -OPJ_CODEC_J2K = 0, -OPJ_CODEC_JPT = 1, -OPJ_CODEC_JP2 = 2, -
    -  OPJ_CODEC_JPP = 3, -OPJ_CODEC_JPX = 4 -
    - }
     Supported codec. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    const OPJ_API char *OPJ_CALLCONV opj_version (void)
     
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Create an image. More...
     
    OPJ_API void OPJ_CALLCONV opj_image_destroy (opj_image_t *image)
     Deallocate any resources associated with an image. More...
     
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
     Creates an image without allocating memory for the image (used in the new version of the library). More...
     
    OPJ_API void *OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
     Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free. More...
     
    OPJ_API void OPJ_CALLCONV opj_image_data_free (void *ptr)
     Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
     Creates an abstract stream. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_input)
     Creates an abstract stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_destroy (opj_stream_t *p_stream)
     Destroys a stream created by opj_create_stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_t *p_stream, opj_stream_read_fn p_function)
     Sets the given function to be used as a read function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_t *p_stream, opj_stream_write_fn p_function)
     Sets the given function to be used as a write function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_t *p_stream, opj_stream_skip_fn p_function)
     Sets the given function to be used as a skip function. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_t *p_stream, opj_stream_seek_fn p_function)
     Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
     Sets the given data to be used as a user data for the stream. More...
     
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_t *p_stream, OPJ_UINT64 data_length)
     Sets the length of the user data for the stream. More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream (const char *fname, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with default parameters (helper function) More...
     
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream (const char *fname, OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_read_stream)
     Create a stream from a file identified with its filename with a specific buffer size. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the info handler use by openjpeg. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the warning handler use by openjpeg. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
     Set the error handler use by openjpeg. More...
     
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
     Creates a J2K/JP2 decompression structure. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_codec (opj_codec_t *p_codec)
     Destroy a decompressor handle. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Read after the codestream if necessary. More...
     
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_t *parameters)
     Set decoding parameters to default values. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_t *p_codec, opj_dparameters_t *parameters)
     Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_t *p_codec, int num_threads)
     Allocates worker threads for the compressor/decompressor. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
     Decodes an image header. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
     Restrict the number of components to decode. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
     Sets the given area to be decoded. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_t *p_decompressor, opj_stream_t *p_stream, opj_image_t *p_image)
     Decode an image from a JPEG-2000 codestream. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
     Get the decoded tile from the codec. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_t *p_codec, OPJ_UINT32 res_factor)
     Set the resolution factor of the decoded image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Writes a tile with the given data. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
     Reads a tile header. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
     Reads a tile data. More...
     
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_compress (OPJ_CODEC_FORMAT format)
     Creates a J2K/JP2 compression structure. More...
     
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_t *parameters)
     Set encoding parameters to default values, that means : More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *image)
     Setup the encoder parameters using the current image and using user parameters. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_t *p_codec, const char *const *p_options)
     Specify extra options for the encoder. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
     Start to compress the current image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec, opj_stream_t *p_stream)
     End to compress the current image. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_t *p_codec, opj_stream_t *p_stream)
     Encode an image into a JPEG-2000 codestream. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t **cstr_info)
     Destroy Codestream information after compression or decompression. More...
     
    OPJ_API void OPJ_CALLCONV opj_dump_codec (opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     Dump the codec information into the output stream. More...
     
    OPJ_API opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info (opj_codec_t *p_codec)
     Get the codestream information from the codec. More...
     
    OPJ_API opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index (opj_codec_t *p_codec)
     Get the codestream index from the codec. More...
     
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t **p_cstr_index)
     
    OPJ_API opj_jp2_metadata_t *OPJ_CALLCONV opj_get_jp2_metadata (opj_codec_t *p_codec)
     Get the JP2 file information from the codec FIXME. More...
     
    OPJ_API opj_jp2_index_t *OPJ_CALLCONV opj_get_jp2_index (opj_codec_t *p_codec)
     Get the JP2 file index from the codec FIXME. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
     Sets the MCT matrix to use. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void)
     Returns if the library is built with thread support. More...
     
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus (void)
     Return the number of virtual CPUs. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ INLINE

    - -
    -
    - - - - -
    #define INLINE
    -
    - -
    -
    - -

    ◆ JPWL_EXPECTED_COMPONENTS

    - -
    -
    - - - - -
    #define JPWL_EXPECTED_COMPONENTS   3
    -
    - -

    Expect this number of components, so you'll find better the first EPB.

    - -
    -
    - -

    ◆ JPWL_MAX_NO_MARKERS

    - -
    -
    - - - - -
    #define JPWL_MAX_NO_MARKERS   512
    -
    - -

    Maximum number of JPWL markers: increase at your will.

    - -
    -
    - -

    ◆ JPWL_MAX_NO_PACKSPECS

    - -
    -
    - - - - -
    #define JPWL_MAX_NO_PACKSPECS   16
    -
    - -

    Maximum number of packet parts expected by JPWL: increase at your will.

    - -
    -
    - -

    ◆ JPWL_MAX_NO_TILESPECS

    - -
    -
    - - - - -
    #define JPWL_MAX_NO_TILESPECS   16
    -
    - -

    Maximum number of tile parts expected by JPWL: increase at your will.

    - -
    -
    - -

    ◆ JPWL_MAXIMUM_EPB_ROOM

    - -
    -
    - - - - -
    #define JPWL_MAXIMUM_EPB_ROOM   65450
    -
    - -

    Expect this maximum number of bytes for composition of EPBs.

    - -
    -
    - -

    ◆ JPWL_MAXIMUM_HAMMING

    - -
    -
    - - - - -
    #define JPWL_MAXIMUM_HAMMING   2
    -
    - -

    Expect this maximum number of bit errors in marker id's.

    - -
    -
    - -

    ◆ JPWL_MAXIMUM_TILES

    - -
    -
    - - - - -
    #define JPWL_MAXIMUM_TILES   8192
    -
    - -

    Expect this maximum number of tiles, to avoid some crashes.

    - -
    -
    - -

    ◆ JPWL_PRIVATEINDEX_NAME

    - -
    -
    - - - - -
    #define JPWL_PRIVATEINDEX_NAME   "jpwl_index_privatefilename"
    -
    - -

    index file name used when JPWL is on

    - -
    -
    - -

    ◆ OPJ_API

    - -
    -
    - - - - -
    #define OPJ_API
    -
    - -
    -
    - -

    ◆ OPJ_ARG_NOT_USED

    - -
    -
    - - - - - - - - -
    #define OPJ_ARG_NOT_USED( x)   (void)(x)
    -
    - -
    -
    - -

    ◆ OPJ_CALLCONV

    - -
    -
    - - - - -
    #define OPJ_CALLCONV
    -
    - -
    -
    - -

    ◆ OPJ_CINEMA_24_COMP

    - -
    -
    - - - - -
    #define OPJ_CINEMA_24_COMP   1041666 /** Maximum size per color component for 2K & 4K @ 24fps */
    -
    - -
    -
    - -

    ◆ OPJ_CINEMA_24_CS

    - -
    -
    - - - - -
    #define OPJ_CINEMA_24_CS   1302083 /** Maximum codestream length for 24fps */
    -
    - -

    JPEG 2000 codestream and component size limits in cinema profiles.

    - -
    -
    - -

    ◆ OPJ_CINEMA_48_COMP

    - -
    -
    - - - - -
    #define OPJ_CINEMA_48_COMP   520833 /** Maximum size per color component for 2K @ 48fps */
    -
    - -
    -
    - -

    ◆ OPJ_CINEMA_48_CS

    - -
    -
    - - - - -
    #define OPJ_CINEMA_48_CS   651041 /** Maximum codestream length for 48fps */
    -
    - -
    -
    - -

    ◆ OPJ_DEPRECATED

    - -
    -
    - - - - - - - - -
    #define OPJ_DEPRECATED( func)   func
    -
    - -
    -
    - -

    ◆ OPJ_DPARAMETERS_DUMP_FLAG

    - -
    -
    - - - - -
    #define OPJ_DPARAMETERS_DUMP_FLAG   0x0002
    -
    - -
    -
    - -

    ◆ OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG

    - -
    -
    - - - - -
    #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG   0x0001
    -
    - -
    -
    - -

    ◆ OPJ_EXTENSION_MCT

    - -
    -
    - - - - -
    #define OPJ_EXTENSION_MCT   0x0100 /** Custom MCT support */
    -
    - -
    -
    - -

    ◆ OPJ_EXTENSION_NONE

    - -
    -
    - - - - -
    #define OPJ_EXTENSION_NONE   0x0000 /** No Part-2 extension */
    -
    - -

    JPEG 2000 Part-2 extensions.

    - -
    -
    - -

    ◆ OPJ_FALSE

    - -
    -
    - - - - -
    #define OPJ_FALSE   0
    -
    - -
    -
    - -

    ◆ OPJ_GET_IMF_MAINLEVEL

    - -
    -
    - - - - - - - - -
    #define OPJ_GET_IMF_MAINLEVEL( v)   ((v) & 0xf) /** Extract IMF main level */
    -
    - -
    -
    - -

    ◆ OPJ_GET_IMF_PROFILE

    - -
    -
    - - - - - - - - -
    #define OPJ_GET_IMF_PROFILE( v)   ((v) & 0xff00) /** Extract IMF profile without mainlevel/sublevel */
    -
    - -
    -
    - -

    ◆ OPJ_GET_IMF_SUBLEVEL

    - -
    -
    - - - - - - - - -
    #define OPJ_GET_IMF_SUBLEVEL( v)   (((v) >> 4) & 0xf) /** Extract IMF sub level */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_10_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC   19200 /** MSamples/sec for IMF main level 10 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_11_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC   38400 /** MSamples/sec for IMF main level 11 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_1_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC   65 /** MSamples/sec for IMF main level 1 */
    -
    - -

    Max.

    -

    Components Sampling Rate (MSamples/sec) per IMF main level

    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_2_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC   130 /** MSamples/sec for IMF main level 2 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_3_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC   195 /** MSamples/sec for IMF main level 3 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_4_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC   260 /** MSamples/sec for IMF main level 4 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_5_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC   520 /** MSamples/sec for IMF main level 5 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_6_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC   1200 /** MSamples/sec for IMF main level 6 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_7_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC   2400 /** MSamples/sec for IMF main level 7 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_8_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC   4800 /** MSamples/sec for IMF main level 8 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_9_MSAMPLESEC

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC   9600 /** MSamples/sec for IMF main level 9 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_MAINLEVEL_MAX

    - -
    -
    - - - - -
    #define OPJ_IMF_MAINLEVEL_MAX   11 /** Maximum main level */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_1_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_1_MBITSSEC   200 /** Mbits/s for IMF sub level 1 */
    -
    - -

    Max.

    -

    compressed Bit Rate (Mbits/s) per IMF sub level

    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_2_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_2_MBITSSEC   400 /** Mbits/s for IMF sub level 2 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_3_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_3_MBITSSEC   800 /** Mbits/s for IMF sub level 3 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_4_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_4_MBITSSEC   1600 /** Mbits/s for IMF sub level 4 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_5_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_5_MBITSSEC   3200 /** Mbits/s for IMF sub level 5 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_6_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_6_MBITSSEC   6400 /** Mbits/s for IMF sub level 6 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_7_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_7_MBITSSEC   12800 /** Mbits/s for IMF sub level 7 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_8_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_8_MBITSSEC   25600 /** Mbits/s for IMF sub level 8 */
    -
    - -
    -
    - -

    ◆ OPJ_IMF_SUBLEVEL_9_MBITSSEC

    - -
    -
    - - - - -
    #define OPJ_IMF_SUBLEVEL_9_MBITSSEC   51200 /** Mbits/s for IMF sub level 9 */
    -
    - -
    -
    - -

    ◆ OPJ_IMG_INFO

    - -
    -
    - - - - -
    #define OPJ_IMG_INFO   1
    -
    - -

    EXPERIMENTAL FOR THE MOMENT Supported options about file information used only in j2k_dump.

    -

    Basic image information provided to the user

    - -
    -
    - -

    ◆ OPJ_IS_BROADCAST

    - -
    -
    - - - - - - - - -
    #define OPJ_IS_BROADCAST( v)   (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
    -
    - -
    -
    - -

    ◆ OPJ_IS_CINEMA

    - -
    -
    - - - - - - - - -
    #define OPJ_IS_CINEMA( v)   (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
    -
    - -

    JPEG 2000 profile macros.

    - -
    -
    - -

    ◆ OPJ_IS_IMF

    - -
    -
    - - - - - - - - -
    #define OPJ_IS_IMF( v)   (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
    -
    - -
    -
    - -

    ◆ OPJ_IS_PART2

    - -
    -
    - - - - - - - - -
    #define OPJ_IS_PART2( v)   ((v) & OPJ_PROFILE_PART2)
    -
    - -
    -
    - -

    ◆ OPJ_IS_STORAGE

    - -
    -
    - - - - - - - - -
    #define OPJ_IS_STORAGE( v)   ((v) == OPJ_PROFILE_CINEMA_LTS)
    -
    - -
    -
    - -

    ◆ OPJ_J2K_DEFAULT_HEADER_SIZE

    - -
    -
    - - - - -
    #define OPJ_J2K_DEFAULT_HEADER_SIZE   1000
    -
    - -
    -
    - -

    ◆ OPJ_J2K_DEFAULT_NB_SEGS

    - -
    -
    - - - - -
    #define OPJ_J2K_DEFAULT_NB_SEGS   10
    -
    - -
    -
    - -

    ◆ OPJ_J2K_MAXBANDS

    - -
    -
    - - - - -
    #define OPJ_J2K_MAXBANDS   (3*OPJ_J2K_MAXRLVLS-2)
    -
    - -

    Number of maximum sub-band linked to number of resolution level.

    - -
    -
    - -

    ◆ OPJ_J2K_MAXRLVLS

    - -
    -
    - - - - -
    #define OPJ_J2K_MAXRLVLS   33
    -
    - -

    Number of maximum resolution level authorized.

    - -
    -
    - -

    ◆ OPJ_J2K_MCC_DEFAULT_NB_RECORDS

    - -
    -
    - - - - -
    #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS   10
    -
    - -
    -
    - -

    ◆ OPJ_J2K_MCT_DEFAULT_NB_RECORDS

    - -
    -
    - - - - -
    #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS   10
    -
    - -
    -
    - -

    ◆ OPJ_J2K_MH_IND

    - -
    -
    - - - - -
    #define OPJ_J2K_MH_IND   16
    -
    - -

    Codestream index based only on the main header.

    - -
    -
    - -

    ◆ OPJ_J2K_MH_INFO

    - -
    -
    - - - - -
    #define OPJ_J2K_MH_INFO   2
    -
    - -

    Codestream information based only on the main header.

    - -
    -
    - -

    ◆ OPJ_J2K_STREAM_CHUNK_SIZE

    - -
    -
    - - - - -
    #define OPJ_J2K_STREAM_CHUNK_SIZE   0x100000 /** 1 mega by default */
    -
    - -
    -
    - -

    ◆ OPJ_J2K_TCH_INFO

    - -
    -
    - - - - -
    #define OPJ_J2K_TCH_INFO   8
    -
    - -

    Tile/Component information of all tiles.

    - -
    -
    - -

    ◆ OPJ_J2K_TH_IND

    - -
    -
    - - - - -
    #define OPJ_J2K_TH_IND   32
    -
    - -

    Tile index based on the current tile.

    - -
    -
    - -

    ◆ OPJ_J2K_TH_INFO

    - -
    -
    - - - - -
    #define OPJ_J2K_TH_INFO   4
    -
    - -

    Tile information based on the current tile header.

    - -
    -
    - -

    ◆ OPJ_JP2_IND

    - -
    -
    - - - - -
    #define OPJ_JP2_IND   256
    -
    - -

    JP2 file index.

    - -
    -
    - -

    ◆ OPJ_JP2_INFO

    - -
    -
    - - - - -
    #define OPJ_JP2_INFO   128
    -
    - -

    <
    -

    -

    JP2 file information

    - -
    -
    - -

    ◆ OPJ_LOCAL

    - -
    -
    - - - - -
    #define OPJ_LOCAL
    -
    - -
    -
    - -

    ◆ OPJ_PATH_LEN

    - -
    -
    - - - - -
    #define OPJ_PATH_LEN   4096
    -
    - -

    Maximum allowed size for filenames.

    - -
    -
    - -

    ◆ OPJ_PROFILE_0

    - -
    -
    - - - - -
    #define OPJ_PROFILE_0   0x0001 /** Profile 0 as described in 15444-1,Table A.45 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_1

    - -
    -
    - - - - -
    #define OPJ_PROFILE_1   0x0002 /** Profile 1 as described in 15444-1,Table A.45 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_BC_MULTI

    - -
    -
    - - - - -
    #define OPJ_PROFILE_BC_MULTI   0x0200 /** Multi Tile Broadcast profile defined in 15444-1 AMD3 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_BC_MULTI_R

    - -
    -
    - - - - -
    #define OPJ_PROFILE_BC_MULTI_R   0x0300 /** Multi Tile Reversible Broadcast profile defined in 15444-1 AMD3 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_BC_SINGLE

    - -
    -
    - - - - -
    #define OPJ_PROFILE_BC_SINGLE   0x0100 /** Single Tile Broadcast profile defined in 15444-1 AMD3 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_CINEMA_2K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_CINEMA_2K   0x0003 /** 2K cinema profile defined in 15444-1 AMD1 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_CINEMA_4K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_CINEMA_4K   0x0004 /** 4K cinema profile defined in 15444-1 AMD1 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_CINEMA_LTS

    - -
    -
    - - - - -
    #define OPJ_PROFILE_CINEMA_LTS   0x0007 /** Long term storage cinema profile defined in 15444-1 AMD2 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_CINEMA_S2K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_CINEMA_S2K   0x0005 /** Scalable 2K cinema profile defined in 15444-1 AMD2 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_CINEMA_S4K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_CINEMA_S4K   0x0006 /** Scalable 4K cinema profile defined in 15444-1 AMD2 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_2K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_2K   0x0400 /** 2K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_2K_R

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_2K_R   0x0700 /** 2K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_4K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_4K   0x0500 /** 4K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_4K_R

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_4K_R   0x0800 /** 4K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_8K

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_8K   0x0600 /** 8K Single Tile Lossy IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_IMF_8K_R

    - -
    -
    - - - - -
    #define OPJ_PROFILE_IMF_8K_R   0x0900 /** 8K Single/Multi Tile Reversible IMF profile defined in 15444-1 AMD 8 */
    -
    - -
    -
    - -

    ◆ OPJ_PROFILE_NONE

    - -
    -
    - - - - -
    #define OPJ_PROFILE_NONE   0x0000 /** no profile, conform to 15444-1 */
    -
    - -

    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing the RSIZ value for the J2K codestream.

    -

    The RSIZ value triggers various encoding options, as detailed in Table A.10. If OPJ_PROFILE_PART2 is chosen, it has to be combined with one or more extensions described hereunder. Example: rsiz = OPJ_PROFILE_PART2 | OPJ_EXTENSION_MCT; For broadcast profiles, the OPJ_PROFILE value has to be combined with the targeted mainlevel (3-0 LSB, value between 0 and 11): Example: rsiz = OPJ_PROFILE_BC_MULTI | 0x0005; (here mainlevel 5) For IMF profiles, the OPJ_PROFILE value has to be combined with the targeted mainlevel (3-0 LSB, value between 0 and 11) and sublevel (7-4 LSB, value between 0 and 9): Example: rsiz = OPJ_PROFILE_IMF_2K | 0x0040 | 0x0005; (here main 5 and sublevel 4)

    - -
    -
    - -

    ◆ OPJ_PROFILE_PART2

    - -
    -
    - - - - -
    #define OPJ_PROFILE_PART2   0x8000 /** At least 1 extension defined in 15444-2 (Part-2) */
    -
    - -
    -
    - -

    ◆ OPJ_STREAM_READ

    - -
    -
    - - - - -
    #define OPJ_STREAM_READ   OPJ_TRUE
    -
    - -

    Stream open flags.

    -

    The stream was opened for reading.

    - -
    -
    - -

    ◆ OPJ_STREAM_WRITE

    - -
    -
    - - - - -
    #define OPJ_STREAM_WRITE   OPJ_FALSE
    -
    - -

    The stream was opened for writing.

    - -
    -
    - -

    ◆ OPJ_TRUE

    - -
    -
    - - - - -
    #define OPJ_TRUE   1
    -
    - -
    -
    - -

    ◆ OPJ_UINT32_SEMANTICALLY_BUT_INT32

    - -
    -
    - - - - -
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_INT32
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ OPJ_BOOL

    - -
    -
    - - - - -
    typedef int OPJ_BOOL
    -
    - -
    -
    - -

    ◆ OPJ_BYTE

    - -
    -
    - - - - -
    typedef unsigned char OPJ_BYTE
    -
    - -
    -
    - -

    ◆ OPJ_CHAR

    - -
    -
    - - - - -
    typedef char OPJ_CHAR
    -
    - -
    -
    - -

    ◆ OPJ_CINEMA_MODE

    - -
    -
    - - - - -
    typedef enum CINEMA_MODE OPJ_CINEMA_MODE
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.

    - -
    -
    - -

    ◆ OPJ_CODEC_FORMAT

    - -
    -
    - - - - -
    typedef enum CODEC_FORMAT OPJ_CODEC_FORMAT
    -
    - -

    Supported codec.

    - -
    -
    - -

    ◆ opj_codec_t

    - -
    -
    - - - - -
    typedef void* opj_codec_t
    -
    - -

    JPEG2000 codec V2.

    - -
    -
    - -

    ◆ opj_codestream_index_t

    - -
    -
    - - - - -
    typedef struct opj_codestream_index opj_codestream_index_t
    -
    - -

    Index structure of the codestream (FIXME should be expand and enhance)

    - -
    -
    - -

    ◆ opj_codestream_info_t

    - -
    -
    - - - - -
    typedef struct opj_codestream_info opj_codestream_info_t
    -
    - -

    Index structure of the codestream.

    - -
    -
    - -

    ◆ opj_codestream_info_v2_t

    - -
    -
    - -

    Information structure about the codestream (FIXME should be expand and enhance)

    - -
    -
    - -

    ◆ OPJ_COLOR_SPACE

    - -
    -
    - - - - -
    typedef enum COLOR_SPACE OPJ_COLOR_SPACE
    -
    - -

    Supported image color spaces.

    - -
    -
    - -

    ◆ opj_cparameters_t

    - -
    -
    - - - - -
    typedef struct opj_cparameters opj_cparameters_t
    -
    - -

    Compression parameters.

    - -
    -
    - -

    ◆ opj_dparameters_t

    - -
    -
    - - - - -
    typedef struct opj_dparameters opj_dparameters_t
    -
    - -

    Decompression parameters.

    - -
    -
    - -

    ◆ OPJ_FLOAT32

    - -
    -
    - - - - -
    typedef float OPJ_FLOAT32
    -
    - -
    -
    - -

    ◆ OPJ_FLOAT64

    - -
    -
    - - - - -
    typedef double OPJ_FLOAT64
    -
    - -
    -
    - -

    ◆ opj_image_cmptparm_t

    - -
    -
    - - - - -
    typedef struct opj_image_comptparm opj_image_cmptparm_t
    -
    - -

    Component parameters structure used by the opj_image_create function.

    - -
    -
    - -

    ◆ opj_image_comp_t

    - -
    -
    - - - - -
    typedef struct opj_image_comp opj_image_comp_t
    -
    - -

    Defines a single image component.

    - -
    -
    - -

    ◆ opj_image_t

    - -
    -
    - - - - -
    typedef struct opj_image opj_image_t
    -
    - -

    Defines image data and characteristics.

    - -
    -
    - -

    ◆ OPJ_INT16

    - -
    -
    - - - - -
    typedef int16_t OPJ_INT16
    -
    - -
    -
    - -

    ◆ OPJ_INT32

    - -
    -
    - - - - -
    typedef int32_t OPJ_INT32
    -
    - -
    -
    - -

    ◆ OPJ_INT64

    - -
    -
    - - - - -
    typedef int64_t OPJ_INT64
    -
    - -
    -
    - -

    ◆ OPJ_INT8

    - -
    -
    - - - - -
    typedef int8_t OPJ_INT8
    -
    - -
    -
    - -

    ◆ opj_jp2_index_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_index opj_jp2_index_t
    -
    - -

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    - -
    -
    - -

    ◆ opj_jp2_metadata_t

    - -
    -
    - - - - -
    typedef struct opj_jp2_metadata opj_jp2_metadata_t
    -
    - -

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    - -
    -
    - -

    ◆ opj_marker_info_t

    - -
    -
    - - - - -
    typedef struct opj_marker_info opj_marker_info_t
    -
    - -

    Marker structure.

    - -
    -
    - -

    ◆ opj_msg_callback

    - -
    -
    - - - - -
    typedef void(* opj_msg_callback) (const char *msg, void *client_data)
    -
    - -

    Callback function prototype for events.

    -
    Parameters
    - - - -
    msgEvent message
    client_dataClient object where will be return the event message
    -
    -
    - -
    -
    - -

    ◆ OPJ_OFF_T

    - -
    -
    - - - - -
    typedef int64_t OPJ_OFF_T
    -
    - -
    -
    - -

    ◆ opj_packet_info_t

    - -
    -
    - - - - -
    typedef struct opj_packet_info opj_packet_info_t
    -
    - -

    Index structure : Information concerning a packet inside tile.

    - -
    -
    - -

    ◆ opj_poc_t

    - -
    -
    - - - - -
    typedef struct opj_poc opj_poc_t
    -
    - -

    Progression order changes.

    - -
    -
    - -

    ◆ OPJ_PROG_ORDER

    - -
    -
    - - - - -
    typedef enum PROG_ORDER OPJ_PROG_ORDER
    -
    - -

    Progression order.

    - -
    -
    - -

    ◆ OPJ_RSIZ_CAPABILITIES

    - -
    -
    - - - - -
    typedef enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.

    - -
    -
    - -

    ◆ OPJ_SIZE_T

    - -
    -
    - - - - -
    typedef size_t OPJ_SIZE_T
    -
    - -
    -
    - -

    ◆ opj_stream_free_user_data_fn

    - -
    -
    - - - - -
    typedef void(* opj_stream_free_user_data_fn) (void *p_user_data)
    -
    - -
    -
    - -

    ◆ opj_stream_read_fn

    - -
    -
    - - - - -
    typedef OPJ_SIZE_T(* opj_stream_read_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    -
    - -
    -
    - -

    ◆ opj_stream_seek_fn

    - -
    -
    - - - - -
    typedef OPJ_BOOL(* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
    -
    - -
    -
    - -

    ◆ opj_stream_skip_fn

    - -
    -
    - - - - -
    typedef OPJ_OFF_T(* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void *p_user_data)
    -
    - -
    -
    - -

    ◆ opj_stream_t

    - -
    -
    - - - - -
    typedef void* opj_stream_t
    -
    - -
    -
    - -

    ◆ opj_stream_write_fn

    - -
    -
    - - - - -
    typedef OPJ_SIZE_T(* opj_stream_write_fn) (void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    -
    - -
    -
    - -

    ◆ opj_tccp_info_t

    - -
    -
    - - - - -
    typedef struct opj_tccp_info opj_tccp_info_t
    -
    - -

    Tile-component coding parameters information.

    - -
    -
    - -

    ◆ opj_tile_index_t

    - -
    -
    - - - - -
    typedef struct opj_tile_index opj_tile_index_t
    -
    - -

    Index structure about a tile.

    - -
    -
    - -

    ◆ opj_tile_info_t

    - -
    -
    - - - - -
    typedef struct opj_tile_info opj_tile_info_t
    -
    - -

    Index structure : information regarding tiles.

    - -
    -
    - -

    ◆ opj_tile_info_v2_t

    - -
    -
    - - - - -
    typedef struct opj_tile_v2_info opj_tile_info_v2_t
    -
    - -

    Tile coding parameters information.

    - -
    -
    - -

    ◆ opj_tp_index_t

    - -
    -
    - - - - -
    typedef struct opj_tp_index opj_tp_index_t
    -
    - -

    Index structure about a tile part.

    - -
    -
    - -

    ◆ opj_tp_info_t

    - -
    -
    - - - - -
    typedef struct opj_tp_info opj_tp_info_t
    -
    - -

    Index structure : Information concerning tile-parts.

    - -
    -
    - -

    ◆ OPJ_UINT16

    - -
    -
    - - - - -
    typedef uint16_t OPJ_UINT16
    -
    - -
    -
    - -

    ◆ OPJ_UINT32

    - -
    -
    - - - - -
    typedef uint32_t OPJ_UINT32
    -
    - -
    -
    - -

    ◆ OPJ_UINT64

    - -
    -
    - - - - -
    typedef uint64_t OPJ_UINT64
    -
    - -
    -
    - -

    ◆ OPJ_UINT8

    - -
    -
    - - - - -
    typedef uint8_t OPJ_UINT8
    -
    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ CINEMA_MODE

    - -
    -
    - - - - -
    enum CINEMA_MODE
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.

    - - - - - -
    Enumerator
    OPJ_OFF 
    OPJ_CINEMA2K_24 

    Not Digital Cinema.

    -
    OPJ_CINEMA2K_48 

    2K Digital Cinema at 24 fps

    -
    OPJ_CINEMA4K_24 

    2K Digital Cinema at 48 fps

    -
    - -
    -
    - -

    ◆ CODEC_FORMAT

    - -
    -
    - - - - -
    enum CODEC_FORMAT
    -
    - -

    Supported codec.

    - - - - - - - -
    Enumerator
    OPJ_CODEC_UNKNOWN 

    place-holder

    -
    OPJ_CODEC_J2K 

    JPEG-2000 codestream : read/write.

    -
    OPJ_CODEC_JPT 

    JPT-stream (JPEG 2000, JPIP) : read only.

    -
    OPJ_CODEC_JP2 

    JP2 file format : read/write.

    -
    OPJ_CODEC_JPP 

    JPP-stream (JPEG 2000, JPIP) : to be coded.

    -
    OPJ_CODEC_JPX 

    JPX file format (JPEG 2000 Part-2) : to be coded.

    -
    - -
    -
    - -

    ◆ COLOR_SPACE

    - -
    -
    - - - - -
    enum COLOR_SPACE
    -
    - -

    Supported image color spaces.

    - - - - - - - - -
    Enumerator
    OPJ_CLRSPC_UNKNOWN 

    not supported by the library

    -
    OPJ_CLRSPC_UNSPECIFIED 

    not specified in the codestream

    -
    OPJ_CLRSPC_SRGB 

    sRGB

    -
    OPJ_CLRSPC_GRAY 

    grayscale

    -
    OPJ_CLRSPC_SYCC 

    YUV.

    -
    OPJ_CLRSPC_EYCC 

    e-YCC

    -
    OPJ_CLRSPC_CMYK 

    CMYK.

    -
    - -
    -
    - -

    ◆ PROG_ORDER

    - -
    -
    - - - - -
    enum PROG_ORDER
    -
    - -

    Progression order.

    - - - - - - - -
    Enumerator
    OPJ_PROG_UNKNOWN 

    place-holder

    -
    OPJ_LRCP 

    layer-resolution-component-precinct order

    -
    OPJ_RLCP 

    resolution-layer-component-precinct order

    -
    OPJ_RPCL 

    resolution-precinct-component-layer order

    -
    OPJ_PCRL 

    precinct-component-resolution-layer order

    -
    OPJ_CPRL 

    component-precinct-resolution-layer order

    -
    - -
    -
    - -

    ◆ RSIZ_CAPABILITIES

    - -
    -
    - - - - -
    enum RSIZ_CAPABILITIES
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.

    - - - - - -
    Enumerator
    OPJ_STD_RSIZ 
    OPJ_CINEMA2K 

    Standard JPEG2000 profile.

    -
    OPJ_CINEMA4K 

    Profile name for a 2K image.

    -
    OPJ_MCT 

    Profile name for a 4K image.

    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_codec_set_threads()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads (opj_codec_tp_codec,
    int num_threads 
    )
    -
    - -

    Allocates worker threads for the compressor/decompressor.

    -

    By default, only the main thread is used. If this function is not used, but the OPJ_NUM_THREADS environment variable is set, its value will be used to initialize the number of threads. The value can be either an integer number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is called, this function will override the behaviour of the environment variable.

    -

    Currently this function must be called after opj_setup_decoder() and before opj_read_header().

    -

    Note: currently only has effect on the decompressor.

    -
    Parameters
    - - - -
    p_codecdecompressor handler
    num_threadsnumber of threads.
    -
    -
    -
    Returns
    OPJ_TRUE if the decoder is correctly set
    - -

    References opj_codec_private::m_codec, OPJ_FALSE, and opj_codec_private::opj_set_threads.

    - -
    -
    - -

    ◆ opj_create_compress()

    - - - -

    ◆ opj_create_decompress()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_decompress (OPJ_CODEC_FORMAT format)
    -
    -
    - -

    ◆ opj_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode (opj_codec_tp_decompressor,
    opj_stream_tp_stream,
    opj_image_tp_image 
    )
    -
    - -

    Decode an image from a JPEG-2000 codestream.

    -
    Parameters
    - - - - -
    p_decompressordecompressor handle
    p_streamInput buffer stream
    p_imagethe decoded image
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_decode_tile_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    -
    - -

    Reads a tile data.

    -

    This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    -

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    -
    Parameters
    - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile being decoded, this should be the value set by opj_read_tile_header.
    p_datapointer to a memory block that will hold the decoded data.
    p_data_sizesize of p_data. p_data_size should be bigger or equal to the value set by opj_read_tile_header.
    p_streamthe stream to decode.
    -
    -
    -
    Returns
    true if the data could be decoded.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_destroy_codec()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_destroy_codec (opj_codec_tp_codec)
    -
    - -

    Destroy a decompressor handle.

    -
    Parameters
    - - -
    p_codecdecompressor handle to destroy
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_decompression, and opj_free().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_destroy_cstr_index()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index (opj_codestream_index_t ** p_cstr_index)
    -
    - -

    References j2k_destroy_cstr_index().

    - -
    -
    - -

    ◆ opj_destroy_cstr_info()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info (opj_codestream_info_v2_t ** cstr_info)
    -
    - -

    Destroy Codestream information after compression or decompression.

    -
    Parameters
    - - -
    cstr_infoCodestream information structure
    -
    -
    - -

    References opj_free().

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ opj_dump_codec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_dump_codec (opj_codec_tp_codec,
    OPJ_INT32 info_flag,
    FILE * output_stream 
    )
    -
    - -

    Dump the codec information into the output stream.

    -
    Parameters
    - - - - -
    p_codecthe jpeg2000 codec.
    info_flagtype of information dump.
    output_streamoutput stream where dump the information gotten from the codec.
    -
    -
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_dump_codec.

    - -
    -
    - -

    ◆ opj_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    Encode an image into a JPEG-2000 codestream.

    -
    Parameters
    - - - -
    p_codeccompressor handle
    p_streamOutput buffer stream
    -
    -
    -
    Returns
    Returns true if successful, returns false otherwise
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_encoder_set_extra_options()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options (opj_codec_tp_codec,
    const char *const * p_options 
    )
    -
    - -

    Specify extra options for the encoder.

    -

    This may be called after opj_setup_encoder() and before opj_start_compress()

    -

    This is the way to add new options in a fully ABI compatible way, without extending the opj_cparameters_t structure.

    -

    Currently supported options are:

      -
    • -PLT=YES/NO. Defaults to NO. If set to YES, PLT marker segments, indicating the length of each packet in the tile-part header, will be written. Since 2.3.2
    • -
    -
    Parameters
    - - - -
    p_codecCompressor handle
    p_optionsCompression options. This should be a NULL terminated array of strings. Each string is of the form KEY=VALUE.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    -
    Since
    2.3.2
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_end_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    End to compress the current image.

    -
    Parameters
    - - - -
    p_codecCompressor handle
    p_streamInput stgream
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_end_decompress()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress (opj_codec_tp_codec,
    opj_stream_tp_stream 
    )
    -
    - -

    Read after the codestream if necessary.

    -
    Parameters
    - - - -
    p_codecthe JPEG2000 codec to read.
    p_streamthe JPEG2000 stream.
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_get_cstr_index()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_codestream_index_t* OPJ_CALLCONV opj_get_cstr_index (opj_codec_tp_codec)
    -
    - -

    Get the codestream index from the codec.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a codestream index structure.
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_index.

    - -
    -
    - -

    ◆ opj_get_cstr_info()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info (opj_codec_tp_codec)
    -
    - -

    Get the codestream information from the codec.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a codestream information structure.
    - -

    References opj_codec_private::m_codec, and opj_codec_private::opj_get_codec_info.

    - -
    -
    - -

    ◆ opj_get_decoded_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile (opj_codec_tp_codec,
    opj_stream_tp_stream,
    opj_image_tp_image,
    OPJ_UINT32 tile_index 
    )
    -
    - -

    Get the decoded tile from the codec.

    -
    Parameters
    - - - - - -
    p_codecthe jpeg2000 codec.
    p_streaminput streamm
    p_imageoutput image
    tile_indexindex of the tile which will be decode
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_get_jp2_index()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index (opj_codec_tp_codec)
    -
    - -

    Get the JP2 file index from the codec FIXME.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a JP2 index structure.
    - -
    -
    - -

    ◆ opj_get_jp2_metadata()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata (opj_codec_tp_codec)
    -
    - -

    Get the JP2 file information from the codec FIXME.

    -
    Parameters
    - - -
    p_codecthe jpeg2000 codec.
    -
    -
    -
    Returns
    a pointer to a JP2 metadata structure.
    - -
    -
    - -

    ◆ opj_get_num_cpus()

    - -
    -
    - - - - - - - - -
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus (void )
    -
    - -

    Return the number of virtual CPUs.

    - -

    Referenced by opj_j2k_get_default_thread_count().

    - -
    -
    - -

    ◆ opj_has_thread_support()

    - -
    -
    - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void )
    -
    - -

    Returns if the library is built with thread support.

    -

    OPJ_TRUE if mutex, condition, thread, thread pool are available.

    - -

    References OPJ_FALSE.

    - -

    Referenced by opj_j2k_get_default_thread_count(), and opj_j2k_set_threads().

    - -
    -
    - -

    ◆ opj_image_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    -
    -
    - -

    ◆ opj_image_data_alloc()

    - -
    -
    - - - - - - - - -
    OPJ_API void* OPJ_CALLCONV opj_image_data_alloc (OPJ_SIZE_T size)
    -
    - -

    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.

    -
    Parameters
    - - -
    sizenumber of bytes to allocate
    -
    -
    -
    Returns
    a new pointer if successful, NULL otherwise.
    -
    Since
    2.2.0
    - -

    References opj_aligned_malloc().

    - -

    Referenced by opj_alloc_tile_component_data(), opj_image_create(), opj_j2k_update_image_data(), opj_jp2_apply_pclr(), and opj_tcd_decode_tile().

    - -
    -
    - -

    ◆ opj_image_data_free()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_image_data_free (void * ptr)
    -
    - -

    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.

    -
    Parameters
    - - -
    ptrPointer to free
    -
    -
    -
    Since
    2.2.0
    - -

    References opj_aligned_free().

    - -

    Referenced by opj_alloc_tile_component_data(), opj_copy_image_header(), opj_image_destroy(), opj_j2k_decode_tiles(), opj_j2k_get_tile(), opj_j2k_move_data_from_codec_to_output_image(), opj_jp2_apply_pclr(), opj_tcd_decode_tile(), opj_tcd_free_tile(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_image_destroy()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_image_destroy (opj_image_timage)
    -
    -
    - -

    ◆ opj_image_tile_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create (OPJ_UINT32 numcmpts,
    opj_image_cmptparm_tcmptparms,
    OPJ_COLOR_SPACE clrspc 
    )
    -
    - -

    Creates an image without allocating memory for the image (used in the new version of the library).

    -
    Parameters
    - - - - -
    numcmptsthe number of components
    cmptparmsthe components parameters
    clrspcthe image color space
    -
    -
    -
    Returns
    a new image structure if successful, NULL otherwise.
    - -

    References opj_image::color_space, opj_image::comps, opj_image_comp::data, opj_image_comp::dx, opj_image_comptparm::dx, opj_image_comp::dy, opj_image_comptparm::dy, opj_image_comp::h, opj_image_comptparm::h, opj_image::numcomps, opj_calloc(), opj_image_destroy(), opj_image_comp::prec, opj_image_comptparm::prec, opj_image_comp::sgnd, opj_image_comptparm::sgnd, opj_image_comp::w, opj_image_comptparm::w, opj_image_comp::x0, opj_image_comptparm::x0, opj_image_comp::y0, and opj_image_comptparm::y0.

    - -
    -
    - -

    ◆ opj_read_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header (opj_stream_tp_stream,
    opj_codec_tp_codec,
    opj_image_t ** p_image 
    )
    -
    - -

    Decodes an image header.

    -
    Parameters
    - - - - -
    p_streamthe jpeg2000 stream.
    p_codecthe jpeg2000 codec to read.
    p_imagethe image structure initialized with the characteristics of encoded image.
    -
    -
    -
    Returns
    true if the main header of the codestream and the JP2 header is correctly read.
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_read_tile_header()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header (opj_codec_tp_codec,
    opj_stream_tp_stream,
    OPJ_UINT32p_tile_index,
    OPJ_UINT32p_data_size,
    OPJ_INT32p_tile_x0,
    OPJ_INT32p_tile_y0,
    OPJ_INT32p_tile_x1,
    OPJ_INT32p_tile_y1,
    OPJ_UINT32p_nb_comps,
    OPJ_BOOLp_should_go_on 
    )
    -
    - -

    Reads a tile header.

    -

    This function is compulsory and allows one to know the size of the tile that will be decoded. The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.

    -
    Parameters
    - - - - - - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexpointer to a value that will hold the index of the tile being decoded, in case of success.
    p_data_sizepointer to a value that will hold the maximum size of the decoded data, in case of success. In case of truncated codestreams, the actual number of bytes decoded may be lower. The computation of the size is the same as depicted in opj_write_tile.
    p_tile_x0pointer to a value that will hold the x0 pos of the tile (in the image).
    p_tile_y0pointer to a value that will hold the y0 pos of the tile (in the image).
    p_tile_x1pointer to a value that will hold the x1 pos of the tile (in the image).
    p_tile_y1pointer to a value that will hold the y1 pos of the tile (in the image).
    p_nb_compspointer to a value that will hold the number of components in the tile.
    p_should_go_onpointer to a boolean that will hold the fact that the decoding should go on. In case the codestream is over at the time of the call, the value will be set to false. The user should then stop the decoding.
    p_streamthe stream to decode.
    -
    -
    -
    Returns
    true if the tile header could be decoded. In case the decoding should end, the returned value is still true. returning false may be the result of a shortage of memory or an internal error.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_set_decode_area()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area (opj_codec_tp_codec,
    opj_image_tp_image,
    OPJ_INT32 p_start_x,
    OPJ_INT32 p_start_y,
    OPJ_INT32 p_end_x,
    OPJ_INT32 p_end_y 
    )
    -
    - -

    Sets the given area to be decoded.

    -

    This function should be called right after opj_read_header and before any tile header reading.

    -

    The coordinates passed to this function should be expressed in the reference grid, that is to say at the highest resolution level, even if requesting the image at lower resolution levels.

    -

    Generally opj_set_decode_area() should be followed by opj_decode(), and the codec cannot be re-used. In the particular case of an image made of a single tile, several sequences of calls to opoj_set_decode_area() and opj_decode() are allowed, and will bring performance improvements when reading an image by chunks.

    -
    Parameters
    - - - - - - - -
    p_codecthe jpeg2000 codec.
    p_imagethe decoded image previously set by opj_read_header
    p_start_xthe left position of the rectangle to decode (in image coordinates).
    p_end_xthe right position of the rectangle to decode (in image coordinates).
    p_start_ythe up position of the rectangle to decode (in image coordinates).
    p_end_ythe bottom position of the rectangle to decode (in image coordinates).
    -
    -
    -
    Returns
    true if the area could be set.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_decoded_components()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components (opj_codec_tp_codec,
    OPJ_UINT32 numcomps,
    const OPJ_UINT32comps_indices,
    OPJ_BOOL apply_color_transforms 
    )
    -
    - -

    Restrict the number of components to decode.

    -

    This function should be called after opj_read_header().

    -

    This function enables to restrict the set of decoded components to the specified indices. Note that the current implementation (apply_color_transforms == OPJ_FALSE) is such that neither the multi-component transform at codestream level, nor JP2 channel transformations will be applied. Consequently the indices are relative to the codestream.

    -

    Note: opj_decode_tile_data() should not be used together with opj_set_decoded_components().

    -
    Parameters
    - - - - - -
    p_codecthe jpeg2000 codec to read.
    numcompsSize of the comps_indices array.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0)
    apply_color_transformsWhether multi-component transform at codestream level or JP2 channel transformations should be applied. Currently this parameter should be set to OPJ_FALSE. Setting it to OPJ_TRUE will result in an error.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_set_decoded_resolution_factor()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor (opj_codec_tp_codec,
    OPJ_UINT32 res_factor 
    )
    -
    - -

    Set the resolution factor of the decoded image.

    -
    Parameters
    - - - -
    p_codecthe jpeg2000 codec.
    res_factorresolution factor to set
    -
    -
    -
    Returns
    true if success, otherwise false
    - -

    References opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_set_default_decoder_parameters()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters (opj_dparameters_tparameters)
    -
    -
    - -

    ◆ opj_set_default_encoder_parameters()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters (opj_cparameters_tparameters)
    -
    - -

    Set encoding parameters to default values, that means :

    -
      -
    • -Lossless
    • -
    • -1 tile
    • -
    • -Size of precinct : 2^15 x 2^15 (means 1 precinct)
    • -
    • -Size of code-block : 64 x 64
    • -
    • -Number of resolutions: 6
    • -
    • -No SOP marker in the codestream
    • -
    • -No EPH marker in the codestream
    • -
    • -No sub-sampling in x or y direction
    • -
    • -No mode switch activated
    • -
    • -Progression order: LRCP
    • -
    • -No index file
    • -
    • -No ROI upshifted
    • -
    • -No offset of the origin of the image
    • -
    • -No offset of the origin of the tiles
    • -
    • -Reversible DWT 5-3
    • -
    -
    Parameters
    - - -
    parametersCompression parameters
    -
    -
    - -

    References opj_cparameters::cblockh_init, opj_cparameters::cblockw_init, opj_cparameters::cod_format, opj_cparameters::cp_cinema, opj_cparameters::cp_disto_alloc, opj_cparameters::cp_fixed_alloc, opj_cparameters::cp_fixed_quality, opj_cparameters::cp_rsiz, opj_cparameters::decod_format, opj_cparameters::jpip_on, opj_cparameters::jpwl_epc_on, opj_cparameters::jpwl_hprot_MH, opj_cparameters::jpwl_hprot_TPH, opj_cparameters::jpwl_hprot_TPH_tileno, JPWL_MAX_NO_PACKSPECS, JPWL_MAX_NO_TILESPECS, opj_cparameters::jpwl_pprot, opj_cparameters::jpwl_pprot_packno, opj_cparameters::jpwl_pprot_tileno, opj_cparameters::jpwl_sens_addr, opj_cparameters::jpwl_sens_MH, opj_cparameters::jpwl_sens_range, opj_cparameters::jpwl_sens_size, opj_cparameters::jpwl_sens_TPH, opj_cparameters::jpwl_sens_TPH_tileno, opj_cparameters::max_comp_size, opj_cparameters::numresolution, OPJ_COMP_PARAM_DEFAULT_CBLOCKH, OPJ_COMP_PARAM_DEFAULT_CBLOCKW, OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION, OPJ_COMP_PARAM_DEFAULT_PROG_ORDER, OPJ_FALSE, OPJ_OFF, OPJ_PROFILE_NONE, OPJ_STD_RSIZ, opj_cparameters::prog_order, opj_cparameters::roi_compno, opj_cparameters::rsiz, opj_cparameters::subsampling_dx, opj_cparameters::subsampling_dy, opj_cparameters::tcp_numlayers, opj_cparameters::tcp_rates, and opj_cparameters::tp_on.

    - -
    -
    - -

    ◆ opj_set_error_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the error handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_event_mgr::error_handler, opj_event_mgr::m_error_data, opj_codec_private::m_event_mgr, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_info_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the info handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_event_mgr::info_handler, opj_codec_private::m_event_mgr, opj_event_mgr::m_info_data, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_set_MCT()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT (opj_cparameters_tparameters,
    OPJ_FLOAT32pEncodingMatrix,
    OPJ_INT32p_dc_shift,
    OPJ_UINT32 pNbComp 
    )
    -
    - -

    Sets the MCT matrix to use.

    -
    Parameters
    - - - - - -
    parametersthe parameters to change.
    pEncodingMatrixthe encoding matrix.
    p_dc_shiftthe dc shift coefficients to use.
    pNbCompthe number of components of the image.
    -
    -
    -
    Returns
    true if the parameters could be set.
    - -

    References opj_cparameters::irreversible, opj_cparameters::mct_data, OPJ_EXTENSION_MCT, OPJ_FALSE, OPJ_IS_PART2, opj_malloc(), OPJ_PROFILE_PART2, OPJ_TRUE, opj_cparameters::rsiz, and opj_cparameters::tcp_mct.

    - -
    -
    - -

    ◆ opj_set_warning_handler()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler (opj_codec_tp_codec,
    opj_msg_callback p_callback,
    void * p_user_data 
    )
    -
    - -

    Set the warning handler use by openjpeg.

    -
    Parameters
    - - - - -
    p_codecthe codec previously initialise
    p_callbackthe callback function which will be used
    p_user_dataclient object where will be returned the message
    -
    -
    - -

    References opj_codec_private::m_event_mgr, opj_event_mgr::m_warning_data, OPJ_FALSE, OPJ_TRUE, and opj_event_mgr::warning_handler.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_setup_decoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder (opj_codec_tp_codec,
    opj_dparameters_tparameters 
    )
    -
    - -

    Setup the decoder with decompression parameters provided by the user and with the message handler provided by the user.

    -
    Parameters
    - - - -
    p_codecdecompressor handler
    parametersdecompression parameters
    -
    -
    -
    Returns
    true if the decoder is correctly set
    - -

    References EVT_ERROR, opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_decompression, opj_codec_private::m_event_mgr, opj_event_msg(), OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_setup_encoder()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder (opj_codec_tp_codec,
    opj_cparameters_tparameters,
    opj_image_timage 
    )
    -
    - -

    Setup the encoder parameters using the current image and using user parameters.

    -
    Parameters
    - - - - -
    p_codecCompressor handle
    parametersCompression parameters
    imageInput filled image
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_start_compress()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress (opj_codec_tp_codec,
    opj_image_tp_image,
    opj_stream_tp_stream 
    )
    -
    - -

    Start to compress the current image.

    -
    Parameters
    - - - - -
    p_codecCompressor handle
    p_imageInput filled image
    p_streamInput stgream
    -
    -
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    - -

    ◆ opj_stream_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create (OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_input 
    )
    -
    -
    - -

    ◆ opj_stream_create_default_file_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (const char * fname,
    OPJ_BOOL p_is_read_stream 
    )
    -
    - -

    Create a stream from a file identified with its filename with default parameters (helper function)

    -
    Parameters
    - - - -
    fnamethe filename of the file to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    -
    -
    - -

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create_file_stream().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_stream_create_file_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (const char * fname,
    OPJ_SIZE_T p_buffer_size,
    OPJ_BOOL p_is_read_stream 
    )
    -
    - -

    Create a stream from a file identified with its filename with a specific buffer size.

    -
    Parameters
    - - - - -
    fnamethe filename of the file to stream
    p_buffer_sizesize of the chunk used to stream
    p_is_read_streamwhether the stream is a read stream (true) or not (false)
    -
    -
    - -

    References opj_get_data_length_from_file(), opj_read_from_file(), opj_seek_from_file(), opj_skip_from_file(), opj_stream_create(), opj_stream_set_read_function(), opj_stream_set_seek_function(), opj_stream_set_skip_function(), opj_stream_set_user_data(), opj_stream_set_user_data_length(), opj_stream_set_write_function(), and opj_write_from_file().

    - -

    Referenced by opj_stream_create_default_file_stream().

    - -
    -
    - -

    ◆ opj_stream_default_create()

    - -
    -
    - - - - - - - - -
    OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_default_create (OPJ_BOOL p_is_input)
    -
    - -

    Creates an abstract stream.

    -

    This function does nothing except allocating memory and initializing the abstract stream.

    -
    Parameters
    - - -
    p_is_inputif set to true then the stream will be an input stream, an output stream else.
    -
    -
    -
    Returns
    a stream object.
    - -

    References OPJ_J2K_STREAM_CHUNK_SIZE, and opj_stream_create().

    - -
    -
    - -

    ◆ opj_stream_destroy()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_destroy (opj_stream_tp_stream)
    -
    - -

    Destroys a stream created by opj_create_stream.

    -

    This function does NOT close the abstract stream. If needed the user must close its own implementation of the stream.

    -
    Parameters
    - - -
    p_streamthe stream to destroy.
    -
    -
    - -

    References opj_stream_private::m_free_user_data_fn, opj_stream_private::m_stored_data, opj_stream_private::m_user_data, and opj_free().

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ opj_stream_set_read_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function (opj_stream_tp_stream,
    opj_stream_read_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a read function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a read function.
    -
    -
    - -

    References opj_stream_private::m_read_fn, opj_stream_private::m_status, and OPJ_STREAM_STATUS_INPUT.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_seek_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function (opj_stream_tp_stream,
    opj_stream_seek_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a seek function, the stream is then seekable, using SEEK_SET behavior.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    -
    -
    - -

    References opj_stream_private::m_seek_fn.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_skip_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function (opj_stream_tp_stream,
    opj_stream_skip_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a skip function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a skip function.
    -
    -
    - -

    References opj_stream_private::m_skip_fn.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_user_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_tp_stream,
    void * p_data,
    opj_stream_free_user_data_fn p_function 
    )
    -
    - -

    Sets the given data to be used as a user data for the stream.

    -
    Parameters
    - - - - -
    p_streamthe stream to modify
    p_datathe data to set.
    p_functionthe function to free p_data when opj_stream_destroy() is called.
    -
    -
    - -

    References opj_stream_private::m_free_user_data_fn, and opj_stream_private::m_user_data.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_user_data_length()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length (opj_stream_tp_stream,
    OPJ_UINT64 data_length 
    )
    -
    - -

    Sets the length of the user data for the stream.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    data_lengthlength of the user_data.
    -
    -
    - -

    References opj_stream_private::m_user_data_length.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_stream_set_write_function()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function (opj_stream_tp_stream,
    opj_stream_write_fn p_function 
    )
    -
    - -

    Sets the given function to be used as a write function.

    -
    Parameters
    - - - -
    p_streamthe stream to modify
    p_functionthe function to use a write function.
    -
    -
    - -

    References opj_stream_private::m_status, opj_stream_private::m_write_fn, and OPJ_STREAM_STATUS_OUTPUT.

    - -

    Referenced by opj_stream_create_file_stream().

    - -
    -
    - -

    ◆ opj_version()

    - -
    -
    - - - - - - - - -
    const OPJ_API char* OPJ_CALLCONV opj_version (void )
    -
    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ opj_write_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile (opj_codec_tp_codec,
    OPJ_UINT32 p_tile_index,
    OPJ_BYTEp_data,
    OPJ_UINT32 p_data_size,
    opj_stream_tp_stream 
    )
    -
    - -

    Writes a tile with the given data.

    -
    Parameters
    - - - - - - -
    p_codecthe jpeg2000 codec.
    p_tile_indexthe index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
    p_datapointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
    p_data_sizethis value os used to make sure the data being written is correct. The size must be equal to the sum for each component of tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
    p_streamthe stream to write data to.
    -
    -
    -
    Returns
    true if the data could be written.
    - -

    References opj_codec_private::is_decompressor, opj_codec_private::m_codec, opj_codec_private::m_codec_data, opj_codec_private::m_compression, opj_codec_private::m_event_mgr, and OPJ_FALSE.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/openjpeg_8h_source.html b/build/doc/html/openjpeg_8h_source.html deleted file mode 100644 index a4cc089fc..000000000 --- a/build/doc/html/openjpeg_8h_source.html +++ /dev/null @@ -1,1535 +0,0 @@ - - - - - - - -OpenJPEG: openjpeg.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    openjpeg.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2 * The copyright in this software is being made available under the 2-clauses
    -
    3 * BSD License, included below. This software may be subject to other third
    -
    4 * party and contributor rights, including patent rights, and no such rights
    -
    5 * are granted under this license.
    -
    6 *
    -
    7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8 * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9 * Copyright (c) 2001-2003, David Janssens
    -
    10 * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11 * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12 * Copyright (c) 2003-2014, Antonin Descampe
    -
    13 * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14 * Copyright (c) 2006-2007, Parvatha Elangovan
    -
    15 * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    16 * Copyright (c) 2010-2011, Kaori Hagihara
    -
    17 * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    -
    18 * Copyright (c) 2012, CS Systemes d'Information, France
    -
    19 * All rights reserved.
    -
    20 *
    -
    21 * Redistribution and use in source and binary forms, with or without
    -
    22 * modification, are permitted provided that the following conditions
    -
    23 * are met:
    -
    24 * 1. Redistributions of source code must retain the above copyright
    -
    25 * notice, this list of conditions and the following disclaimer.
    -
    26 * 2. Redistributions in binary form must reproduce the above copyright
    -
    27 * notice, this list of conditions and the following disclaimer in the
    -
    28 * documentation and/or other materials provided with the distribution.
    -
    29 *
    -
    30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    31 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    32 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    33 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    34 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    35 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    36 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    37 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    38 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    39 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    40 * POSSIBILITY OF SUCH DAMAGE.
    -
    41 */
    -
    42 #ifndef OPENJPEG_H
    -
    43 #define OPENJPEG_H
    -
    44 
    -
    45 
    -
    46 /*
    -
    47 ==========================================================
    -
    48  Compiler directives
    -
    49 ==========================================================
    -
    50 */
    -
    51 
    -
    52 /*
    -
    53 The inline keyword is supported by C99 but not by C90.
    -
    54 Most compilers implement their own version of this keyword ...
    -
    55 */
    -
    56 #ifndef INLINE
    -
    57 #if defined(_MSC_VER)
    -
    58 #define INLINE __forceinline
    -
    59 #elif defined(__GNUC__)
    -
    60 #define INLINE __inline__
    -
    61 #elif defined(__MWERKS__)
    -
    62 #define INLINE inline
    -
    63 #else
    -
    64 /* add other compilers here ... */
    -
    65 #define INLINE
    -
    66 #endif /* defined(<Compiler>) */
    -
    67 #endif /* INLINE */
    -
    68 
    -
    69 /* deprecated attribute */
    -
    70 #ifdef __GNUC__
    -
    71 #define OPJ_DEPRECATED(func) func __attribute__ ((deprecated))
    -
    72 #elif defined(_MSC_VER)
    -
    73 #define OPJ_DEPRECATED(func) __declspec(deprecated) func
    -
    74 #else
    -
    75 #pragma message("WARNING: You need to implement DEPRECATED for this compiler")
    -
    76 #define OPJ_DEPRECATED(func) func
    -
    77 #endif
    -
    78 
    -
    79 #if defined(OPJ_STATIC) || !defined(_WIN32)
    -
    80 /* http://gcc.gnu.org/wiki/Visibility */
    -
    81 # if __GNUC__ >= 4
    -
    82 # if defined(OPJ_STATIC) /* static library uses "hidden" */
    -
    83 # define OPJ_API __attribute__ ((visibility ("hidden")))
    -
    84 # else
    -
    85 # define OPJ_API __attribute__ ((visibility ("default")))
    -
    86 # endif
    -
    87 # define OPJ_LOCAL __attribute__ ((visibility ("hidden")))
    -
    88 # else
    -
    89 # define OPJ_API
    -
    90 # define OPJ_LOCAL
    -
    91 # endif
    -
    92 # define OPJ_CALLCONV
    -
    93 #else
    -
    94 # define OPJ_CALLCONV __stdcall
    -
    95 /*
    -
    96 The following ifdef block is the standard way of creating macros which make exporting
    -
    97 from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
    -
    98 symbol defined on the command line. this symbol should not be defined on any project
    -
    99 that uses this DLL. This way any other project whose source files include this file see
    -
    100 OPJ_API functions as being imported from a DLL, whereas this DLL sees symbols
    -
    101 defined with this macro as being exported.
    -
    102 */
    -
    103 # if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
    -
    104 # define OPJ_API __declspec(dllexport)
    -
    105 # else
    -
    106 # define OPJ_API __declspec(dllimport)
    -
    107 # endif /* OPJ_EXPORTS */
    -
    108 #endif /* !OPJ_STATIC || !_WIN32 */
    -
    109 
    -
    110 typedef int OPJ_BOOL;
    -
    111 #define OPJ_TRUE 1
    -
    112 #define OPJ_FALSE 0
    -
    113 
    -
    114 typedef char OPJ_CHAR;
    -
    115 typedef float OPJ_FLOAT32;
    -
    116 typedef double OPJ_FLOAT64;
    -
    117 typedef unsigned char OPJ_BYTE;
    -
    118 
    -
    119 #include "opj_stdint.h"
    -
    120 
    -
    121 typedef int8_t OPJ_INT8;
    -
    122 typedef uint8_t OPJ_UINT8;
    -
    123 typedef int16_t OPJ_INT16;
    -
    124 typedef uint16_t OPJ_UINT16;
    -
    125 typedef int32_t OPJ_INT32;
    -
    126 typedef uint32_t OPJ_UINT32;
    -
    127 typedef int64_t OPJ_INT64;
    -
    128 typedef uint64_t OPJ_UINT64;
    -
    129 
    -
    130 typedef int64_t OPJ_OFF_T; /* 64-bit file offset type */
    -
    131 
    -
    132 #include <stdio.h>
    -
    133 typedef size_t OPJ_SIZE_T;
    -
    134 
    -
    135 /* Avoid compile-time warning because parameter is not used */
    -
    136 #define OPJ_ARG_NOT_USED(x) (void)(x)
    -
    137 
    -
    138 /*
    -
    139 ==========================================================
    -
    140  Useful constant definitions
    -
    141 ==========================================================
    -
    142 */
    -
    143 
    -
    144 #define OPJ_PATH_LEN 4096
    -
    146 #define OPJ_J2K_MAXRLVLS 33
    -
    147 #define OPJ_J2K_MAXBANDS (3*OPJ_J2K_MAXRLVLS-2)
    -
    149 #define OPJ_J2K_DEFAULT_NB_SEGS 10
    -
    150 #define OPJ_J2K_STREAM_CHUNK_SIZE 0x100000
    -
    151 #define OPJ_J2K_DEFAULT_HEADER_SIZE 1000
    -
    152 #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS 10
    -
    153 #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS 10
    -
    154 
    -
    155 /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    -
    156 #define JPWL_MAX_NO_TILESPECS 16
    -
    157 #define JPWL_MAX_NO_PACKSPECS 16
    -
    158 #define JPWL_MAX_NO_MARKERS 512
    -
    159 #define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename"
    -
    160 #define JPWL_EXPECTED_COMPONENTS 3
    -
    161 #define JPWL_MAXIMUM_TILES 8192
    -
    162 #define JPWL_MAXIMUM_HAMMING 2
    -
    163 #define JPWL_MAXIMUM_EPB_ROOM 65450
    -
    164 /* <<UniPG */
    -
    165 
    -
    170 #define OPJ_IMG_INFO 1
    -
    171 #define OPJ_J2K_MH_INFO 2
    -
    172 #define OPJ_J2K_TH_INFO 4
    -
    173 #define OPJ_J2K_TCH_INFO 8
    -
    174 #define OPJ_J2K_MH_IND 16
    -
    175 #define OPJ_J2K_TH_IND 32
    -
    176 /*FIXME #define OPJ_J2K_CSTR_IND 48*/
    -
    177 #define OPJ_JP2_INFO 128
    -
    178 #define OPJ_JP2_IND 256
    -
    194 #define OPJ_PROFILE_NONE 0x0000
    -
    195 #define OPJ_PROFILE_0 0x0001
    -
    196 #define OPJ_PROFILE_1 0x0002
    -
    197 #define OPJ_PROFILE_PART2 0x8000
    -
    198 #define OPJ_PROFILE_CINEMA_2K 0x0003
    -
    199 #define OPJ_PROFILE_CINEMA_4K 0x0004
    -
    200 #define OPJ_PROFILE_CINEMA_S2K 0x0005
    -
    201 #define OPJ_PROFILE_CINEMA_S4K 0x0006
    -
    202 #define OPJ_PROFILE_CINEMA_LTS 0x0007
    -
    203 #define OPJ_PROFILE_BC_SINGLE 0x0100
    -
    204 #define OPJ_PROFILE_BC_MULTI 0x0200
    -
    205 #define OPJ_PROFILE_BC_MULTI_R 0x0300
    -
    206 #define OPJ_PROFILE_IMF_2K 0x0400
    -
    207 #define OPJ_PROFILE_IMF_4K 0x0500
    -
    208 #define OPJ_PROFILE_IMF_8K 0x0600
    -
    209 #define OPJ_PROFILE_IMF_2K_R 0x0700
    -
    210 #define OPJ_PROFILE_IMF_4K_R 0x0800
    -
    211 #define OPJ_PROFILE_IMF_8K_R 0x0900
    -
    216 #define OPJ_EXTENSION_NONE 0x0000
    -
    217 #define OPJ_EXTENSION_MCT 0x0100
    -
    222 #define OPJ_IS_CINEMA(v) (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_PROFILE_CINEMA_S4K))
    -
    223 #define OPJ_IS_STORAGE(v) ((v) == OPJ_PROFILE_CINEMA_LTS)
    -
    224 #define OPJ_IS_BROADCAST(v) (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ_PROFILE_BC_MULTI_R) | (0x000b))))
    -
    225 #define OPJ_IS_IMF(v) (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PROFILE_IMF_8K_R) | (0x009b))))
    -
    226 #define OPJ_IS_PART2(v) ((v) & OPJ_PROFILE_PART2)
    -
    227 
    -
    228 #define OPJ_GET_IMF_PROFILE(v) ((v) & 0xff00)
    -
    229 #define OPJ_GET_IMF_MAINLEVEL(v) ((v) & 0xf)
    -
    230 #define OPJ_GET_IMF_SUBLEVEL(v) (((v) >> 4) & 0xf)
    -
    232 #define OPJ_IMF_MAINLEVEL_MAX 11
    -
    235 #define OPJ_IMF_MAINLEVEL_1_MSAMPLESEC 65
    -
    236 #define OPJ_IMF_MAINLEVEL_2_MSAMPLESEC 130
    -
    237 #define OPJ_IMF_MAINLEVEL_3_MSAMPLESEC 195
    -
    238 #define OPJ_IMF_MAINLEVEL_4_MSAMPLESEC 260
    -
    239 #define OPJ_IMF_MAINLEVEL_5_MSAMPLESEC 520
    -
    240 #define OPJ_IMF_MAINLEVEL_6_MSAMPLESEC 1200
    -
    241 #define OPJ_IMF_MAINLEVEL_7_MSAMPLESEC 2400
    -
    242 #define OPJ_IMF_MAINLEVEL_8_MSAMPLESEC 4800
    -
    243 #define OPJ_IMF_MAINLEVEL_9_MSAMPLESEC 9600
    -
    244 #define OPJ_IMF_MAINLEVEL_10_MSAMPLESEC 19200
    -
    245 #define OPJ_IMF_MAINLEVEL_11_MSAMPLESEC 38400
    -
    248 #define OPJ_IMF_SUBLEVEL_1_MBITSSEC 200
    -
    249 #define OPJ_IMF_SUBLEVEL_2_MBITSSEC 400
    -
    250 #define OPJ_IMF_SUBLEVEL_3_MBITSSEC 800
    -
    251 #define OPJ_IMF_SUBLEVEL_4_MBITSSEC 1600
    -
    252 #define OPJ_IMF_SUBLEVEL_5_MBITSSEC 3200
    -
    253 #define OPJ_IMF_SUBLEVEL_6_MBITSSEC 6400
    -
    254 #define OPJ_IMF_SUBLEVEL_7_MBITSSEC 12800
    -
    255 #define OPJ_IMF_SUBLEVEL_8_MBITSSEC 25600
    -
    256 #define OPJ_IMF_SUBLEVEL_9_MBITSSEC 51200
    -
    261 #define OPJ_CINEMA_24_CS 1302083
    -
    262 #define OPJ_CINEMA_48_CS 651041
    -
    263 #define OPJ_CINEMA_24_COMP 1041666
    -
    264 #define OPJ_CINEMA_48_COMP 520833
    -
    266 /*
    -
    267 ==========================================================
    -
    268  enum definitions
    -
    269 ==========================================================
    -
    270 */
    -
    271 
    -
    276 typedef enum RSIZ_CAPABILITIES {
    - - - -
    280  OPJ_MCT = 0x8100
    - -
    282 
    -
    287 typedef enum CINEMA_MODE {
    -
    288  OPJ_OFF = 0,
    - - - - -
    293 
    -
    297 typedef enum PROG_ORDER {
    - -
    299  OPJ_LRCP = 0,
    -
    300  OPJ_RLCP = 1,
    -
    301  OPJ_RPCL = 2,
    -
    302  OPJ_PCRL = 3,
    -
    303  OPJ_CPRL = 4
    - -
    305 
    -
    309 typedef enum COLOR_SPACE {
    - - - - - - - - -
    318 
    -
    322 typedef enum CODEC_FORMAT {
    - - - - - - - -
    330 
    -
    331 
    -
    332 /*
    -
    333 ==========================================================
    -
    334  event manager typedef definitions
    -
    335 ==========================================================
    -
    336 */
    -
    337 
    -
    343 typedef void (*opj_msg_callback)(const char *msg, void *client_data);
    -
    344 
    -
    345 /*
    -
    346 ==========================================================
    -
    347  codec typedef definitions
    -
    348 ==========================================================
    -
    349 */
    -
    350 
    -
    351 #ifndef OPJ_UINT32_SEMANTICALLY_BUT_INT32
    -
    352 #define OPJ_UINT32_SEMANTICALLY_BUT_INT32 OPJ_INT32
    -
    353 #endif
    -
    354 
    -
    359 typedef struct opj_poc {
    - - - - - - - - - - - -
    382 } opj_poc_t;
    -
    383 
    -
    387 typedef struct opj_cparameters {
    - -
    391  int cp_tx0;
    -
    393  int cp_ty0;
    -
    395  int cp_tdx;
    -
    397  int cp_tdy;
    - - - - -
    407  char *cp_comment;
    -
    409  int csty;
    - - - - -
    421  float tcp_rates[100];
    -
    424  float tcp_distoratio[100];
    - - - -
    432  int mode;
    - - - -
    439  /* number of precinct size specifications */
    -
    440  int res_spec;
    - - -
    445 
    - - -
    453  int index_on;
    - - - - - - - -
    470  /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    - - - - - - - - - - - - - -
    500  /* <<UniPG */
    -
    501 
    - - - -
    518  char tp_on;
    -
    520  char tp_flag;
    -
    522  char tcp_mct;
    - -
    527  void * mct_data;
    - - - -
    539 
    -
    540 #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG 0x0001
    -
    541 #define OPJ_DPARAMETERS_DUMP_FLAG 0x0002
    -
    542 
    -
    546 typedef struct opj_dparameters {
    - - -
    562 
    - - - - -
    573 
    - - - - - -
    584 
    - - -
    589 
    -
    592  /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
    - - - -
    602  /* <<UniPG */
    -
    603 
    -
    604  unsigned int flags;
    -
    605 
    - -
    607 
    -
    608 
    -
    612 typedef void * opj_codec_t;
    -
    613 
    -
    614 /*
    -
    615 ==========================================================
    -
    616  I/O stream typedef definitions
    -
    617 ==========================================================
    -
    618 */
    -
    619 
    -
    624 #define OPJ_STREAM_READ OPJ_TRUE
    -
    625 
    -
    626 #define OPJ_STREAM_WRITE OPJ_FALSE
    -
    627 
    -
    628 /*
    -
    629  * Callback function prototype for read function
    -
    630  */
    -
    631 typedef OPJ_SIZE_T(* opj_stream_read_fn)(void * p_buffer, OPJ_SIZE_T p_nb_bytes,
    -
    632  void * p_user_data) ;
    -
    633 
    -
    634 /*
    -
    635  * Callback function prototype for write function
    -
    636  */
    -
    637 typedef OPJ_SIZE_T(* opj_stream_write_fn)(void * p_buffer,
    -
    638  OPJ_SIZE_T p_nb_bytes, void * p_user_data) ;
    -
    639 
    -
    640 /*
    -
    641  * Callback function prototype for skip function
    -
    642  */
    -
    643 typedef OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes,
    -
    644  void * p_user_data) ;
    -
    645 
    -
    646 /*
    -
    647  * Callback function prototype for seek function
    -
    648  */
    -
    649 typedef OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes,
    -
    650  void * p_user_data) ;
    -
    651 
    -
    652 /*
    -
    653  * Callback function prototype for free user data function
    -
    654  */
    -
    655 typedef void (* opj_stream_free_user_data_fn)(void * p_user_data) ;
    -
    656 
    -
    657 /*
    -
    658  * JPEG2000 Stream.
    -
    659  */
    -
    660 typedef void * opj_stream_t;
    -
    661 
    -
    662 /*
    -
    663 ==========================================================
    -
    664  image typedef definitions
    -
    665 ==========================================================
    -
    666 */
    -
    667 
    -
    671 typedef struct opj_image_comp {
    - - - - - - - - - - - - - - -
    699 
    -
    703 typedef struct opj_image {
    - - - - - - - - - -
    722 } opj_image_t;
    -
    723 
    -
    724 
    -
    728 typedef struct opj_image_comptparm {
    - - - - - - - - - - -
    748 
    -
    749 
    -
    750 /*
    -
    751 ==========================================================
    -
    752  Information on the JPEG 2000 codestream
    -
    753 ==========================================================
    -
    754 */
    -
    755 /* QUITE EXPERIMENTAL FOR THE MOMENT */
    -
    756 
    -
    760 typedef struct opj_packet_info {
    - - - -
    768  double disto;
    - -
    770 
    -
    771 
    -
    772 /* UniPG>> */
    -
    776 typedef struct opj_marker_info {
    -
    778  unsigned short int type;
    - -
    782  int len;
    - -
    784 /* <<UniPG */
    -
    785 
    -
    789 typedef struct opj_tp_info {
    - - - - - -
    800 } opj_tp_info_t;
    -
    801 
    -
    805 typedef struct opj_tile_info {
    -
    807  double *thresh;
    -
    809  int tileno;
    - - -
    815  int end_pos;
    -
    817  int pw[33];
    -
    819  int ph[33];
    -
    821  int pdx[33];
    -
    823  int pdy[33];
    - -
    827  int numpix;
    -
    829  double distotile;
    -
    831  int marknum;
    - - -
    837  int num_tps;
    - - -
    841 
    -
    845 typedef struct opj_codestream_info {
    -
    847  double D_max;
    -
    849  int packno;
    - -
    853  int image_w;
    -
    855  int image_h;
    - -
    859  int tile_x;
    -
    861  int tile_y;
    -
    863  int tile_Ox;
    -
    865  int tile_Oy;
    -
    867  int tw;
    -
    869  int th;
    -
    871  int numcomps;
    - - -
    876  /* UniPG>> */
    -
    878  int marknum;
    - - -
    883  /* <<UniPG */
    - - - - - -
    893 
    -
    894 /* <----------------------------------------------------------- */
    -
    895 /* new output management of the codestream information and index */
    -
    896 
    -
    900 typedef struct opj_tccp_info {
    - - - - - - - - - - - - - - -
    929 }
    - -
    931 
    -
    935 typedef struct opj_tile_v2_info {
    -
    936 
    -
    938  int tileno;
    - - - - -
    947 
    - -
    950 
    - -
    952 
    -
    956 typedef struct opj_codestream_info_v2 {
    -
    957  /* Tile info */
    - - - - - - -
    970 
    - -
    973 
    - -
    976 
    -
    978  opj_tile_info_v2_t *tile_info; /* FIXME not used for the moment */
    -
    979 
    - -
    981 
    -
    982 
    -
    986 typedef struct opj_tp_index {
    - - - -
    993 
    - -
    995 
    -
    999 typedef struct opj_tile_index {
    - -
    1002 
    - - - - -
    1011 
    -
    1012  /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
    - - - -
    1019  /* <<UniPG */
    -
    1020 
    - - -
    1025 
    - -
    1027 
    -
    1031 typedef struct opj_codestream_index {
    - - -
    1036 
    - -
    1039 
    -
    1040  /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
    - - - -
    1047  /* <<UniPG */
    -
    1048 
    - -
    1052  opj_tile_index_t *tile_index; /* FIXME not used for the moment */
    -
    1053 
    - -
    1055 /* -----------------------------------------------------------> */
    -
    1056 
    -
    1057 /*
    -
    1058 ==========================================================
    -
    1059  Metadata from the JP2file
    -
    1060 ==========================================================
    -
    1061 */
    -
    1062 
    -
    1067 typedef struct opj_jp2_metadata {
    - -
    1070 
    - -
    1072 
    -
    1077 typedef struct opj_jp2_index {
    - -
    1080 
    -
    1081 } opj_jp2_index_t;
    -
    1082 
    -
    1083 
    -
    1084 #ifdef __cplusplus
    -
    1085 extern "C" {
    -
    1086 #endif
    -
    1087 
    -
    1088 
    -
    1089 /*
    -
    1090 ==========================================================
    -
    1091  openjpeg version
    -
    1092 ==========================================================
    -
    1093 */
    -
    1094 
    -
    1095 /* Get the version of the openjpeg library*/
    -
    1096 OPJ_API const char * OPJ_CALLCONV opj_version(void);
    -
    1097 
    -
    1098 /*
    -
    1099 ==========================================================
    -
    1100  image functions definitions
    -
    1101 ==========================================================
    -
    1102 */
    -
    1103 
    - -
    1113  opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
    -
    1114 
    - -
    1121 
    - -
    1132  opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
    -
    1133 
    - -
    1144 
    -
    1153 OPJ_API void OPJ_CALLCONV opj_image_data_free(void* ptr);
    -
    1154 
    -
    1155 /*
    -
    1156 ==========================================================
    -
    1157  stream functions definitions
    -
    1158 ==========================================================
    -
    1159 */
    -
    1160 
    - -
    1169  OPJ_BOOL p_is_input);
    -
    1170 
    - -
    1180  OPJ_BOOL p_is_input);
    -
    1181 
    - -
    1189 
    - -
    1196  opj_stream_read_fn p_function);
    -
    1197 
    - -
    1204  opj_stream_write_fn p_function);
    -
    1205 
    - -
    1212  opj_stream_skip_fn p_function);
    -
    1213 
    - -
    1221  opj_stream_seek_fn p_function);
    -
    1222 
    - -
    1230  void * p_data, opj_stream_free_user_data_fn p_function);
    -
    1231 
    - -
    1239  opj_stream_t* p_stream, OPJ_UINT64 data_length);
    -
    1240 
    - -
    1247  const char *fname, OPJ_BOOL p_is_read_stream);
    -
    1248 
    - -
    1255  const char *fname,
    -
    1256  OPJ_SIZE_T p_buffer_size,
    -
    1257  OPJ_BOOL p_is_read_stream);
    -
    1258 
    -
    1259 /*
    -
    1260 ==========================================================
    -
    1261  event manager functions definitions
    -
    1262 ==========================================================
    -
    1263 */
    - -
    1271  opj_msg_callback p_callback,
    -
    1272  void * p_user_data);
    - -
    1280  opj_msg_callback p_callback,
    -
    1281  void * p_user_data);
    - -
    1289  opj_msg_callback p_callback,
    -
    1290  void * p_user_data);
    -
    1291 
    -
    1292 /*
    -
    1293 ==========================================================
    -
    1294  codec functions definitions
    -
    1295 ==========================================================
    -
    1296 */
    -
    1297 
    - -
    1305  OPJ_CODEC_FORMAT format);
    -
    1306 
    - -
    1313 
    - -
    1320  opj_stream_t *p_stream);
    -
    1321 
    -
    1322 
    - -
    1328  opj_dparameters_t *parameters);
    -
    1329 
    - -
    1340  opj_dparameters_t *parameters);
    -
    1341 
    - -
    1362  int num_threads);
    -
    1363 
    - -
    1374  opj_codec_t *p_codec,
    -
    1375  opj_image_t **p_image);
    -
    1376 
    -
    1377 
    - -
    1404  OPJ_UINT32 numcomps,
    -
    1405  const OPJ_UINT32* comps_indices,
    -
    1406  OPJ_BOOL apply_color_transforms);
    -
    1407 
    - -
    1431  opj_image_t* p_image,
    -
    1432  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
    -
    1433  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y);
    -
    1434 
    - -
    1444  opj_stream_t *p_stream,
    -
    1445  opj_image_t *p_image);
    -
    1446 
    - -
    1458  opj_stream_t *p_stream,
    -
    1459  opj_image_t *p_image,
    -
    1460  OPJ_UINT32 tile_index);
    -
    1461 
    - -
    1470  opj_codec_t *p_codec, OPJ_UINT32 res_factor);
    -
    1471 
    - -
    1485  OPJ_UINT32 p_tile_index,
    -
    1486  OPJ_BYTE * p_data,
    -
    1487  OPJ_UINT32 p_data_size,
    -
    1488  opj_stream_t *p_stream);
    -
    1489 
    - -
    1512  opj_stream_t * p_stream,
    -
    1513  OPJ_UINT32 * p_tile_index,
    -
    1514  OPJ_UINT32 * p_data_size,
    -
    1515  OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
    -
    1516  OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
    -
    1517  OPJ_UINT32 * p_nb_comps,
    -
    1518  OPJ_BOOL * p_should_go_on);
    -
    1519 
    - -
    1535  OPJ_UINT32 p_tile_index,
    -
    1536  OPJ_BYTE * p_data,
    -
    1537  OPJ_UINT32 p_data_size,
    -
    1538  opj_stream_t *p_stream);
    -
    1539 
    -
    1540 /* COMPRESSION FUNCTIONS*/
    -
    1541 
    - -
    1548 
    - -
    1571  opj_cparameters_t *parameters);
    -
    1572 
    - -
    1580  opj_cparameters_t *parameters,
    -
    1581  opj_image_t *image);
    -
    1582 
    -
    1583 
    - -
    1607  opj_codec_t *p_codec,
    -
    1608  const char* const* p_options);
    -
    1609 
    - -
    1617  opj_image_t * p_image,
    -
    1618  opj_stream_t *p_stream);
    -
    1619 
    - -
    1626  opj_stream_t *p_stream);
    -
    1627 
    - -
    1636  opj_stream_t *p_stream);
    -
    1637 /*
    -
    1638 ==========================================================
    -
    1639  codec output functions definitions
    -
    1640 ==========================================================
    -
    1641 */
    -
    1642 /* EXPERIMENTAL FUNCTIONS FOR NOW, USED ONLY IN J2K_DUMP*/
    -
    1643 
    - -
    1649  **cstr_info);
    -
    1650 
    -
    1651 
    - -
    1661  OPJ_INT32 info_flag,
    -
    1662  FILE* output_stream);
    -
    1663 
    - -
    1673  opj_codec_t *p_codec);
    -
    1674 
    - -
    1684  opj_codec_t *p_codec);
    -
    1685 
    - -
    1687  **p_cstr_index);
    -
    1688 
    -
    1689 
    - -
    1699  opj_codec_t *p_codec);
    -
    1700 
    - -
    1710 
    -
    1711 
    -
    1712 /*
    -
    1713 ==========================================================
    -
    1714  MCT functions
    -
    1715 ==========================================================
    -
    1716 */
    -
    1717 
    - -
    1729  OPJ_FLOAT32 * pEncodingMatrix,
    -
    1730  OPJ_INT32 * p_dc_shift,
    -
    1731  OPJ_UINT32 pNbComp);
    -
    1732 
    -
    1733 /*
    -
    1734 ==========================================================
    -
    1735  Thread functions
    -
    1736 ==========================================================
    -
    1737 */
    -
    1738 
    - -
    1743 
    - -
    1746 
    -
    1747 
    -
    1748 #ifdef __cplusplus
    -
    1749 }
    -
    1750 #endif
    -
    1751 
    -
    1752 #endif /* OPENJPEG_H */
    -
    -
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    -
    struct opj_codestream_index opj_codestream_index_t
    Index structure of the codestream (FIXME should be expand and enhance)
    -
    struct opj_dparameters opj_dparameters_t
    Decompression parameters.
    -
    OPJ_UINT32 cblkw
    log2 of code-blocks width
    Definition: openjpeg.h:908
    -
    struct opj_image_comptparm opj_image_cmptparm_t
    Component parameters structure used by the opj_image_create function.
    -
    opj_msg_callback warning_handler
    Warning message callback if available, NULL otherwise.
    Definition: event.h:60
    -
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    -
    OPJ_SIZE_T(* opj_stream_read_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:631
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    End to compress the current image.
    Definition: openjpeg.c:858
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    -
    void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    struct opj_jp2_index opj_jp2_index_t
    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
    Definition: openjpeg.h:373
    -
    OPJ_BOOL jpwl_correct
    activates the JPWL correction capabilities
    Definition: openjpeg.h:596
    -
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER
    Definition: opj_common.h:44
    -
    OPJ_UINT32 compS
    Definition: openjpeg.h:375
    -
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    -
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    enum CODEC_FORMAT OPJ_CODEC_FORMAT
    Supported codec.
    -
    OPJ_API opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
    Get the codestream index from the codec.
    Definition: openjpeg.c:1014
    -
    OPJ_BOOL opj_jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: jp2.c:1913
    -
    enum PROG_ORDER OPJ_PROG_ORDER
    Progression order.
    -
    void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters)
    Set encoding parameters to default values, that means :
    Definition: openjpeg.c:722
    -
    opj_codestream_info_v2_t *(* opj_get_codec_info)(void *p_codec)
    Definition: opj_codec.h:166
    -
    #define JPWL_MAXIMUM_TILES
    Expect this maximum number of tiles, to avoid some crashes.
    Definition: openjpeg.h:161
    -
    float tcp_rates[100]
    rates of layers - might be subsequently limited by the max_cs_size field.
    Definition: openjpeg.h:421
    -
    @ OPJ_CLRSPC_EYCC
    e-YCC
    Definition: openjpeg.h:315
    -
    OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:649
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:833
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    OPJ_UINT32 nb_of_tiles
    Definition: openjpeg.h:1050
    -
    struct opj_image opj_image_t
    Defines image data and characteristics.
    -
    OPJ_API int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    -
    int decod_format
    input file format 0: PGX, 1: PxM, 2: BMP 3:TIF
    Definition: openjpeg.h:465
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec, OPJ_UINT32 res_factor)
    Set the resolution factor of the decoded image.
    Definition: openjpeg.c:596
    -
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    -
    struct opj_codec_private::@2::opj_decompression m_decompression
    -
    OPJ_UINT32 precno0
    Definition: openjpeg.h:365
    -
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL p_is_input)
    Creates an abstract stream.
    Definition: cio.c:194
    -
    OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
    Get the decoded tile from the codec.
    Definition: openjpeg.c:572
    -
    int image_w
    image width
    Definition: openjpeg.h:853
    -
    OPJ_OFF_T main_head_start
    main header start position (SOC position)
    Definition: openjpeg.h:1033
    -
    double distotile
    add fixed_quality
    Definition: openjpeg.h:829
    -
    struct opj_image_comp opj_image_comp_t
    Defines a single image component.
    -
    OPJ_API opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec)
    Get the codestream information from the codec.
    Definition: openjpeg.c:986
    -
    OPJ_UINT32 tyS
    Definition: openjpeg.h:379
    -
    void opj_j2k_destroy(opj_j2k_t *p_j2k)
    Destroys a jpeg2000 codec.
    Definition: j2k.c:9030
    -
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    -
    OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: jp2.c:3090
    -
    OPJ_UINT32 res_t
    Definition: openjpeg.h:381
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    -
    double D_max
    maximum distortion reduction on the whole image (add for Marcela)
    Definition: openjpeg.h:847
    -
    @ OPJ_CINEMA2K_48
    2K Digital Cinema at 24 fps
    Definition: openjpeg.h:290
    -
    char index[OPJ_PATH_LEN]
    DEPRECATED.
    Definition: openjpeg.h:455
    -
    OPJ_UINT32 lay_t
    Temporary values for Tile parts, initialised in pi_create_encode.
    Definition: openjpeg.h:381
    -
    int cp_tx0
    XTOsiz.
    Definition: openjpeg.h:391
    -
    OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *p_jp2, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: jp2.c:3080
    -
    int tp_end_header
    end position of tile part header
    Definition: openjpeg.h:793
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    int tcp_numlayers
    number of layers
    Definition: openjpeg.h:417
    -
    OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:8231
    -
    #define OPJ_PROFILE_NONE
    JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) These values help choosing t...
    Definition: openjpeg.h:194
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_MCT(opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
    Sets the MCT matrix to use.
    Definition: openjpeg.c:895
    -
    OPJ_UINT32 DA_y1
    Decoding area bottom boundary.
    Definition: openjpeg.h:581
    -
    OPJ_UINT32 qntsty
    quantisation style
    Definition: openjpeg.h:916
    -
    OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
    Definition: j2k.c:6588
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    void(* opj_dump_codec)(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Definition: opj_codec.h:164
    -
    OPJ_UINT32 current_nb_tps
    current nb of tile part (allocated)
    Definition: openjpeg.h:1006
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    - -
    OPJ_OFF_T end_pos
    end position
    Definition: openjpeg.h:992
    -
    int subsampling_dy
    subsampling value for dy
    Definition: openjpeg.h:463
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL l_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    -
    OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    -
    float tcp_distoratio[100]
    different psnr for successive layers.
    Definition: openjpeg.h:424
    -
    OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: j2k.c:12144
    -
    OPJ_INT32 * data
    image component data
    Definition: openjpeg.h:695
    -
    @ OPJ_CODEC_JPX
    JPX file format (JPEG 2000 Part-2) : to be coded.
    Definition: openjpeg.h:328
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    int image_h
    image height
    Definition: openjpeg.h:855
    -
    int maxmarknum
    actual size of markers array
    Definition: openjpeg.h:882
    -
    OPJ_BOOL opj_jp2_encode(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_event_mgr_t *p_manager)
    Encode an image into a JPEG-2000 file stream.
    Definition: jp2.c:2100
    -
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    -
    struct opj_poc opj_poc_t
    Progression order changes.
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    opj_codestream_info_v2_t *OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec)
    Get the codestream information from the codec.
    Definition: openjpeg.c:986
    -
    void opj_jp2_destroy(opj_jp2_t *jp2)
    Destroy a JP2 decompressor handle.
    Definition: jp2.c:3012
    -
    OPJ_UINT32 compno
    component index
    Definition: openjpeg.h:902
    -
    #define OPJ_API
    Definition: openjpeg.h:89
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    -
    int cblockh_init
    initial code block height, default to 64
    Definition: openjpeg.h:430
    -
    OPJ_UINT32 txE
    Definition: openjpeg.h:379
    -
    OPJ_BOOL opj_jp2_read_tile_header(opj_jp2_t *p_jp2, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: jp2.c:2963
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options(opj_codec_t *p_codec, const char *const *p_options)
    Specify extra options for the encoder.
    Definition: openjpeg.c:803
    -
    int cod_format
    output file format 0: J2K, 1: JP2, 2: JPT
    Definition: openjpeg.h:467
    -
    @ OPJ_CINEMA4K
    Profile name for a 2K image.
    Definition: openjpeg.h:279
    -
    OPJ_UINT16 rsiz
    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.
    Definition: openjpeg.h:537
    -
    double disto
    packet distorsion
    Definition: openjpeg.h:768
    -
    OPJ_BOOL jpip_on
    Enable JPIP indexing.
    Definition: openjpeg.h:524
    -
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1018
    -
    OPJ_INT32 not_used
    Definition: openjpeg.h:1079
    -
    void(* opj_stream_free_user_data_fn)(void *p_user_data)
    Definition: openjpeg.h:655
    -
    int res_spec
    Definition: openjpeg.h:440
    -
    OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *p_image)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: openjpeg.c:783
    -
    @ OPJ_CINEMA2K
    Standard JPEG2000 profile.
    Definition: openjpeg.h:278
    -
    OPJ_BOOL opj_jp2_end_decompress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the decompression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2107
    -
    OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: j2k.c:11854
    -
    int cp_fixed_quality
    add fixed_quality
    Definition: openjpeg.h:403
    -
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    #define OPJ_FTELL(stream)
    Definition: opj_includes.h:87
    -
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    -
    OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
    Reads a tile header.
    Definition: openjpeg.c:515
    -
    opj_codestream_info_v2_t * jp2_get_cstr_info(opj_jp2_t *p_jp2)
    Get the codestream info from a JPEG2000 codec.
    Definition: jp2.c:3231
    -
    Component parameters structure used by the opj_image_create function.
    Definition: openjpeg.h:728
    -
    OPJ_UINT32 layno0
    Layer num start,Precinct num start, Precinct num end.
    Definition: openjpeg.h:365
    -
    OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 file stream.
    Definition: jp2.c:1597
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the info handler use by openjpeg.
    Definition: openjpeg.c:44
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_CHAR progorder[5]
    Progression order string.
    Definition: openjpeg.h:369
    -
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index)
    Definition: openjpeg.c:1025
    -
    int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of sensitivity specification (>=0)
    Definition: openjpeg.h:496
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    int main_head_start
    main header position
    Definition: openjpeg.h:885
    -
    Message handler object used for.
    Definition: event.h:50
    -
    opj_tccp_info_t * tccp_info
    information concerning tile component parameters
    Definition: openjpeg.h:949
    -
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:744
    -
    int pdy[33]
    precinct size (in power of 2), in Y for each resolution level
    Definition: openjpeg.h:823
    -
    OPJ_COLOR_SPACE color_space
    color space: sRGB, Greyscale or YUV
    Definition: openjpeg.h:715
    -
    OPJ_UINT32 nb_tile_to_decode
    Nb of tile to decode.
    Definition: openjpeg.h:588
    -
    @ OPJ_STD_RSIZ
    Definition: openjpeg.h:277
    -
    OPJ_UINT32 cp_layer
    Set the maximum number of quality layers to decode.
    Definition: openjpeg.h:561
    -
    void * opj_stream_t
    Definition: openjpeg.h:660
    -
    opj_packet_info_t * packet_index
    information concerning packets inside tile
    Definition: openjpeg.h:1024
    -
    OPJ_UINT32 ty0_t
    Definition: openjpeg.h:381
    -
    char * cp_comment
    comment for coding
    Definition: openjpeg.h:407
    -
    struct opj_tccp_info opj_tccp_info_t
    Tile-component coding parameters information.
    -
    int jpwl_sens_size
    enables writing of ESD, (0=no/1/2 bytes)
    Definition: openjpeg.h:488
    -
    OPJ_PROG_ORDER prog_order
    progression order (default OPJ_LRCP)
    Definition: openjpeg.h:411
    -
    OPJ_INT32 not_used
    Definition: openjpeg.h:1069
    -
    void * opj_codec_t
    JPEG2000 codec V2.
    Definition: openjpeg.h:612
    -
    int tileno
    number (index) of tile
    Definition: openjpeg.h:938
    -
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:740
    -
    OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Encodes an image into a JPEG-2000 codestream.
    Definition: j2k.c:12036
    -
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    int start_pos
    start position
    Definition: openjpeg.h:811
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    -
    char infile[OPJ_PATH_LEN]
    input file name
    Definition: openjpeg.h:449
    -
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format)
    Creates a J2K/JP2 compression structure.
    Definition: openjpeg.c:614
    -
    OPJ_BOOL opj_jp2_encoder_set_extra_options(opj_jp2_t *p_jp2, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: jp2.c:3245
    -
    OPJ_OFF_T main_head_end
    main header end position (first SOT position)
    Definition: openjpeg.h:1035
    -
    opj_codec_t *OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 compression structure.
    Definition: openjpeg.c:614
    -
    @ OPJ_CLRSPC_GRAY
    grayscale
    Definition: openjpeg.h:313
    -
    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    Definition: openjpeg.h:1067
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components(opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
    Restrict the number of components to decode.
    Definition: openjpeg.c:442
    -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW
    Definition: opj_common.h:42
    -
    #define OPJ_J2K_MAXBANDS
    Number of maximum sub-band linked to number of resolution level.
    Definition: openjpeg.h:147
    -
    OPJ_OFF_T end_header
    end position of the header
    Definition: openjpeg.h:990
    -
    @ OPJ_CLRSPC_CMYK
    CMYK.
    Definition: openjpeg.h:316
    -
    int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    tile number of packet protection specification (>=0)
    Definition: openjpeg.h:482
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible
    Definition: openjpeg.h:914
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    OPJ_UINT32 nb_packet
    packet number
    Definition: openjpeg.h:1022
    -
    Index structure about a tile.
    Definition: openjpeg.h:999
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: openjpeg.h:912
    -
    int maxmarknum
    actual size of markers array
    Definition: openjpeg.h:835
    -
    int numresolution
    number of resolutions
    Definition: openjpeg.h:426
    -
    OPJ_BOOL opj_jp2_write_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: jp2.c:2987
    -
    int jpwl_exp_comps
    expected number of components
    Definition: openjpeg.h:598
    -
    Compression parameters.
    Definition: openjpeg.h:387
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec, OPJ_UINT32 res_factor)
    Set the resolution factor of the decoded image.
    Definition: openjpeg.c:596
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_decompressor, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    -
    OPJ_PROG_ORDER prg
    progression order
    Definition: openjpeg.h:942
    -
    void OPJ_CALLCONV opj_dump_codec(opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Dump the codec information into the output stream.
    Definition: openjpeg.c:970
    -
    OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec, int num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: openjpeg.c:387
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, opj_dparameters_t *parameters)
    Setup the decoder with decompression parameters provided by the user and with the message handler pro...
    Definition: openjpeg.c:398
    -
    void(* opj_msg_callback)(const char *msg, void *client_data)
    Callback function prototype for events.
    Definition: openjpeg.h:343
    -
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    -
    @ OPJ_CINEMA2K_24
    Not Digital Cinema.
    Definition: openjpeg.h:289
    -
    @ OPJ_CLRSPC_UNKNOWN
    not supported by the library
    Definition: openjpeg.h:310
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    -
    int cp_tdx
    XTsiz.
    Definition: openjpeg.h:395
    -
    struct opj_codestream_info opj_codestream_info_t
    Index structure of the codestream.
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1016
    -
    int irreversible
    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
    Definition: openjpeg.h:434
    -
    int index_on
    DEPRECATED.
    Definition: openjpeg.h:453
    -
    OPJ_BYTE * icc_profile_buf
    'restricted' ICC profile
    Definition: openjpeg.h:719
    -
    OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: j2k.c:11969
    -
    OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info)
    Destroy Codestream information after compression or decompression.
    Definition: openjpeg.c:997
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT(opj_cparameters_t *parameters, OPJ_FLOAT32 *pEncodingMatrix, OPJ_INT32 *p_dc_shift, OPJ_UINT32 pNbComp)
    Sets the MCT matrix to use.
    Definition: openjpeg.c:895
    -
    OPJ_UINT32 precno1
    Definition: openjpeg.h:365
    -
    CODEC_FORMAT
    Supported codec.
    Definition: openjpeg.h:322
    -
    @ OPJ_CLRSPC_SRGB
    sRGB
    Definition: openjpeg.h:312
    -
    OPJ_BOOL opj_jp2_end_compress(opj_jp2_t *jp2, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Ends the compression procedures and possibiliy add data to be read after the codestream.
    Definition: jp2.c:2130
    -
    enum RSIZ_CAPABILITIES OPJ_RSIZ_CAPABILITIES
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.
    -
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: openjpeg.h:926
    -
    struct opj_packet_info opj_packet_info_t
    Index structure : Information concerning a packet inside tile.
    -
    OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
    Sets the given area to be decoded.
    Definition: j2k.c:10094
    -
    int cp_ty0
    YTOsiz.
    Definition: openjpeg.h:393
    -
    OPJ_CINEMA_MODE cp_cinema
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not complia...
    Definition: openjpeg.h:506
    -
    OPJ_UINT32 maxmarknum
    actual size of markers array
    Definition: openjpeg.h:1046
    -
    int end_header
    end position of the header
    Definition: openjpeg.h:813
    -
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: openjpeg.h:922
    -
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1042
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    OPJ_UINT32 cp_reduce
    Set the number of highest resolution levels to be discarded.
    Definition: openjpeg.h:554
    -
    OPJ_UINT32 ty0
    tile origin in y = YTOsiz
    Definition: openjpeg.h:961
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    unsigned int flags
    Definition: openjpeg.h:604
    -
    static OPJ_SIZE_T opj_read_from_file(void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
    Definition: openjpeg.c:91
    -
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    -
    OPJ_UINT32 dy
    Definition: openjpeg.h:379
    -
    void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    -
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:904
    -
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    - -
    opj_codestream_index_t * jp2_get_cstr_index(opj_jp2_t *p_jp2)
    Get the codestream index from a JPEG2000 codec.
    Definition: jp2.c:3226
    -
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    -
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    -
    OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, opj_jp2_t *jp2, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 file header structure.
    Definition: jp2.c:2835
    -
    OPJ_BOOL(* opj_set_threads)(void *p_codec, OPJ_UINT32 num_threads)
    Set number of threads.
    Definition: opj_codec.h:170
    -
    OPJ_API void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Writes a tile with the given data.
    Definition: openjpeg.c:925
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:880
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y)
    Sets the given area to be decoded.
    Definition: openjpeg.c:492
    -
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Creates an image without allocating memory for the image (used in the new version of the library).
    Definition: image.c:228
    -
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:681
    -
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    -
    OPJ_BOOL opj_jp2_set_decoded_resolution_factor(opj_jp2_t *p_jp2, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Definition: jp2.c:3236
    -
    OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: j2k.c:9665
    -
    #define OPJ_PROFILE_PART2
    Definition: openjpeg.h:197
    -
    opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
    Get the codestream info from a JPEG2000 codec.
    Definition: j2k.c:11215
    -
    #define OPJ_FSEEK(stream, offset, whence)
    Definition: opj_includes.h:85
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
    Definition: openjpeg.h:373
    -
    const OPJ_API char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image, OPJ_UINT32 tile_index)
    Get the decoded tile from the codec.
    Definition: openjpeg.c:572
    -
    char OPJ_CHAR
    Definition: openjpeg.h:114
    -
    OPJ_UINT32 x0
    x component offset compared to the whole image
    Definition: openjpeg.h:738
    -
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    -
    OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_info, opj_stream_t *p_stream)
    Encode an image into a JPEG-2000 codestream.
    Definition: openjpeg.c:841
    -
    #define OPJ_PATH_LEN
    Maximum allowed size for filenames.
    Definition: openjpeg.h:144
    -
    int len
    length, marker val included
    Definition: openjpeg.h:782
    -
    OPJ_UINT32 tw
    number of tiles in X
    Definition: openjpeg.h:967
    -
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    -
    opj_msg_callback info_handler
    Debug message callback if available, NULL otherwise.
    Definition: event.h:62
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    OPJ_UINT32 DA_x0
    Decoding area left boundary.
    Definition: openjpeg.h:575
    -
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    -
    OPJ_API opj_image_t *OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc)
    Create an image.
    Definition: image.c:40
    -
    OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: j2k.c:12160
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
    Definition: jp2.c:3101
    -
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    -
    void * m_info_data
    Data to call the event manager upon.
    Definition: event.h:56
    -
    struct opj_codec_private::@2::opj_compression m_compression
    -
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: openjpeg.h:928
    -
    opj_j2k_t * opj_j2k_create_compress(void)
    Creates a J2K compression structure.
    Definition: j2k.c:6636
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the error handler use by openjpeg.
    Definition: openjpeg.c:74
    -
    OPJ_UINT32 nb_tps
    number of tile parts
    Definition: openjpeg.h:1004
    -
    OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:918
    -
    OPJ_API void OPJ_CALLCONV opj_dump_codec(opj_codec_t *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Dump the codec information into the output stream.
    Definition: openjpeg.c:970
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:679
    -
    OPJ_BOOL tile_size_on
    size of tile: tile_size_on = false (not in argument) or = true (in argument)
    Definition: openjpeg.h:389
    -
    static OPJ_OFF_T opj_skip_from_file(OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
    Definition: openjpeg.c:115
    -
    opj_tile_info_v2_t * tile_info
    information regarding tiles inside image
    Definition: openjpeg.h:978
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    -
    char tp_flag
    Flag for Tile part generation.
    Definition: openjpeg.h:520
    -
    void opj_jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: jp2.c:1893
    -
    OPJ_BOOL m_verbose
    Verbose mode.
    Definition: openjpeg.h:583
    -
    #define OPJ_IS_PART2(v)
    Definition: openjpeg.h:226
    -
    const char *OPJ_CALLCONV opj_version(void)
    Definition: openjpeg.c:160
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Reads a tile data.
    Definition: openjpeg.c:546
    -
    int jpwl_sens_range
    sensitivity range (0-3)
    Definition: openjpeg.h:492
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    int image_offset_y0
    subimage encoding: origin image offset in y direction
    Definition: openjpeg.h:459
    -
    int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    sensitivity methods for TPHs (-1=no,0-7)
    Definition: openjpeg.h:498
    -
    opj_jp2_t * opj_jp2_create(OPJ_BOOL p_is_decoder)
    Creates a jpeg2000 file decompressor.
    Definition: jp2.c:3174
    -
    OPJ_OFF_T pos
    position in codestream
    Definition: openjpeg.h:780
    -
    int pdx[33]
    precinct size (in power of 2), in X for each resolution level
    Definition: openjpeg.h:821
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec, opj_cparameters_t *parameters, opj_image_t *image)
    Setup the encoder parameters using the current image and using user parameters.
    Definition: openjpeg.c:783
    -
    static OPJ_UINT64 opj_get_data_length_from_file(FILE *p_file)
    Definition: openjpeg.c:98
    -
    OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Reads a tile data.
    Definition: openjpeg.c:546
    -
    int jpwl_sens_MH
    sensitivity method for MH (-1=no,0-7)
    Definition: openjpeg.h:494
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    struct opj_tp_info opj_tp_info_t
    Index structure : Information concerning tile-parts.
    -
    int tileno
    number of tile
    Definition: openjpeg.h:809
    -
    int subsampling_dx
    subsampling value for dx
    Definition: openjpeg.h:461
    -
    OPJ_UINT32 current_tpsno
    current tile-part index
    Definition: openjpeg.h:1008
    -
    void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
    Setup the decoder decoding parameters using user parameters.
    Definition: j2k.c:6573
    -
    OPJ_UINT32 y0
    y component offset compared to the whole image
    Definition: openjpeg.h:683
    -
    int num_tps
    number of tile parts
    Definition: openjpeg.h:837
    -
    @ OPJ_CLRSPC_SYCC
    YUV.
    Definition: openjpeg.h:314
    -
    void * m_codec
    FIXME DOC.
    Definition: opj_codec.h:159
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    -
    Tile-component coding parameters information.
    Definition: openjpeg.h:900
    -
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_input)
    Creates an abstract stream.
    Definition: cio.c:158
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec, int num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: openjpeg.c:387
    -
    int packno
    packet number
    Definition: openjpeg.h:849
    -
    int tile_Ox
    Definition: openjpeg.h:863
    -
    OPJ_UINT32 tx0
    tile origin in x = XTOsiz
    Definition: openjpeg.h:959
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    -
    int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    error protection methods for packets (0,1,16,32,37-128)
    Definition: openjpeg.h:486
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    int jpwl_sens_addr
    sensitivity addressing size (0=auto/2/4 bytes)
    Definition: openjpeg.h:490
    -
    OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Sets the indices of the components to decode.
    Definition: j2k.c:10034
    -
    int roi_compno
    region of interest: affected component in [0..3], -1 means no ROI
    Definition: openjpeg.h:436
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_components(opj_codec_t *p_codec, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, OPJ_BOOL apply_color_transforms)
    Restrict the number of components to decode.
    Definition: openjpeg.c:442
    -
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: openjpeg.h:924
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_UINT32 nbcomps
    number of components
    Definition: openjpeg.h:972
    -
    OPJ_BOOL OPJ_CALLCONV opj_encoder_set_extra_options(opj_codec_t *p_codec, const char *const *options)
    Specify extra options for the encoder.
    Definition: openjpeg.c:803
    -
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    -
    opj_poc_t POC[32]
    progression order changes
    Definition: openjpeg.h:413
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t *p_stream, OPJ_UINT64 data_length)
    Sets the length of the user data for the stream.
    Definition: cio.c:271
    -
    Tile coding parameters information.
    Definition: openjpeg.h:935
    -
    OPJ_API void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:746
    -
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    -
    OPJ_API void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    OPJ_UINT32 prcS
    Definition: openjpeg.h:375
    -
    int cod_format
    output file format 0: PGX, 1: PxM, 2: BMP
    Definition: openjpeg.h:572
    -
    char tcp_mct
    MCT (multiple component transform)
    Definition: openjpeg.h:522
    -
    void * m_error_data
    Data to call the event manager upon.
    Definition: event.h:52
    -
    Main codec handler used for compression or decompression.
    Definition: opj_codec.h:42
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    int cp_fixed_alloc
    allocation by fixed layer
    Definition: openjpeg.h:401
    -
    OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    -
    char outfile[OPJ_PATH_LEN]
    output file name
    Definition: openjpeg.h:568
    -
    OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_codec, opj_stream_t *p_stream, opj_image_t *p_image)
    Decode an image from a JPEG-2000 codestream.
    Definition: openjpeg.c:471
    -
    int max_cs_size
    Maximum size (in bytes) for the whole codestream.
    Definition: openjpeg.h:534
    -
    void * mct_data
    Naive implementation of MCT restricted to a single reversible array based encoding without offset con...
    Definition: openjpeg.h:527
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    tile number of header protection specification (>=0)
    Definition: openjpeg.h:478
    -
    COLOR_SPACE
    Supported image color spaces.
    Definition: openjpeg.h:309
    -
    OPJ_BOOL is_decompressor
    Flag to indicate if the codec is used to decode or encode.
    Definition: opj_codec.h:163
    -
    OPJ_BOOL opj_jp2_start_compress(opj_jp2_t *jp2, opj_stream_private_t *stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Starts a compression scheme, i.e.
    Definition: jp2.c:2458
    -
    OPJ_UINT16 alpha
    alpha channel
    Definition: openjpeg.h:697
    -
    int prch_init[OPJ_J2K_MAXRLVLS]
    initial precinct height
    Definition: openjpeg.h:444
    -
    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    Definition: openjpeg.h:1077
    -
    OPJ_API opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    -
    opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
    Get the codestream index from a JPEG2000 codec.
    Definition: j2k.c:11291
    -
    OPJ_BOOL OPJ_CALLCONV opj_end_compress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    End to compress the current image.
    Definition: openjpeg.c:858
    -
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    -
    int numpix
    add fixed_quality
    Definition: openjpeg.h:827
    -
    @ OPJ_CODEC_UNKNOWN
    place-holder
    Definition: openjpeg.h:323
    -
    OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image)
    Deallocate any resources associated with an image.
    Definition: image.c:92
    -
    opj_j2k_t * opj_j2k_create_decompress(void)
    Creates a J2K decompression structure.
    Definition: j2k.c:10249
    -
    char infile[OPJ_PATH_LEN]
    input file name
    Definition: openjpeg.h:566
    -
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
    Definition: openjpeg.h:373
    -
    OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: openjpeg.h:920
    -
    int main_head_end
    main header position
    Definition: openjpeg.h:887
    -
    RSIZ_CAPABILITIES
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Rsiz Capabilities.
    Definition: openjpeg.h:276
    -
    struct opj_tile_index opj_tile_index_t
    Index structure about a tile.
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:734
    -
    void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index)
    Definition: openjpeg.c:1025
    -
    OPJ_UINT32 comp_t
    Definition: openjpeg.h:381
    -
    OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t *p_codec, opj_msg_callback p_callback, void *p_user_data)
    Set the warning handler use by openjpeg.
    Definition: openjpeg.c:59
    -
    uint16_t OPJ_UINT16
    Definition: openjpeg.h:124
    -
    OPJ_UINT32 tdy
    tile size in y = YTsiz
    Definition: openjpeg.h:965
    -
    unsigned short int type
    marker type
    Definition: openjpeg.h:778
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    -
    struct opj_tile_v2_info opj_tile_info_v2_t
    Tile coding parameters information.
    -
    @ OPJ_OFF
    Definition: openjpeg.h:288
    -
    int8_t OPJ_INT8
    Definition: openjpeg.h:121
    -
    int cp_disto_alloc
    allocation by rate/distortion
    Definition: openjpeg.h:399
    -
    OPJ_UINT32 txS
    Start and end values of Tile width and height, initialised in pi_initialise_encode.
    Definition: openjpeg.h:379
    -
    @ OPJ_CINEMA4K_24
    2K Digital Cinema at 48 fps
    Definition: openjpeg.h:291
    -
    void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t *p_stream, opj_stream_write_fn p_function)
    Sets the given function to be used as a write function.
    Definition: cio.c:236
    -
    enum CINEMA_MODE OPJ_CINEMA_MODE
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.
    -
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    -
    void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    -
    OPJ_UINT32 w
    data width
    Definition: openjpeg.h:677
    -
    OPJ_OFF_T start_pos
    start position
    Definition: openjpeg.h:988
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters)
    Set decoding parameters to default values.
    Definition: openjpeg.c:364
    -
    int roi_shift
    region of interest: upshift value
    Definition: openjpeg.h:438
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(opj_codec_t *p_codec, opj_stream_t *p_stream, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on)
    Reads a tile header.
    Definition: openjpeg.c:515
    -
    struct opj_tp_index opj_tp_index_t
    Index structure about a tile part.
    -
    int cblockw_init
    initial code block width, default to 64
    Definition: openjpeg.h:428
    -
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream(const char *fname, OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with a specific buffer size.
    Definition: openjpeg.c:1040
    -
    int marknum
    number of markers
    Definition: openjpeg.h:831
    -
    enum COLOR_SPACE OPJ_COLOR_SPACE
    Supported image color spaces.
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    @ OPJ_CODEC_JPP
    JPP-stream (JPEG 2000, JPIP) : to be coded.
    Definition: openjpeg.h:327
    -
    @ OPJ_MCT
    Profile name for a 4K image.
    Definition: openjpeg.h:280
    -
    OPJ_BOOL OPJ_CALLCONV opj_write_tile(opj_codec_t *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_t *p_stream)
    Writes a tile with the given data.
    Definition: openjpeg.c:925
    -
    Decompression parameters.
    Definition: openjpeg.h:546
    -
    void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
    Destroys a codestream index structure.
    Definition: j2k.c:9100
    -
    OPJ_API opj_stream_t *OPJ_CALLCONV opj_stream_create_default_file_stream(const char *fname, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with default parameters (helper function)
    Definition: openjpeg.c:1033
    -
    struct opj_codestream_info_v2 opj_codestream_info_v2_t
    Information structure about the codestream (FIXME should be expand and enhance)
    -
    opj_tile_info_v2_t m_default_tile_info
    Default information regarding tiles inside image.
    Definition: openjpeg.h:975
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    OPJ_UINT32 icc_profile_len
    size of ICC profile
    Definition: openjpeg.h:721
    -
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:1044
    -
    PROG_ORDER
    Progression order.
    Definition: openjpeg.h:297
    -
    double * thresh
    value of thresh for each layer by tile cfr.
    Definition: openjpeg.h:807
    -
    OPJ_UINT32 tyE
    Definition: openjpeg.h:379
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    -
    static OPJ_BOOL opj_seek_from_file(OPJ_OFF_T p_nb_bytes, FILE *p_user_data)
    Definition: openjpeg.c:124
    -
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    -
    OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:643
    -
    #define JPWL_MAX_NO_PACKSPECS
    Maximum number of packet parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:157
    -
    CINEMA_MODE
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Digital cinema operation mode.
    Definition: openjpeg.h:287
    -
    @ OPJ_CLRSPC_UNSPECIFIED
    not specified in the codestream
    Definition: openjpeg.h:311
    -
    #define JPWL_MAX_NO_TILESPECS
    Maximum number of tile parts expected by JPWL: increase at your will.
    Definition: openjpeg.h:156
    -
    int tile_Oy
    Definition: openjpeg.h:865
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    void OPJ_CALLCONV opj_destroy_codec(opj_codec_t *p_codec)
    Destroy a decompressor handle.
    Definition: openjpeg.c:952
    -
    OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
    Specify extra options for the encoder.
    Definition: j2k.c:12002
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
    Start and end values for Tile width and height.
    Definition: openjpeg.h:373
    -
    OPJ_UINT32 numlayers
    number of layers
    Definition: openjpeg.h:944
    -
    static OPJ_SIZE_T opj_write_from_file(void *p_buffer, OPJ_SIZE_T p_nb_bytes, FILE *p_file)
    Definition: openjpeg.c:109
    -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH
    Definition: opj_common.h:43
    -
    OPJ_UINT32 bpp
    image depth in bits
    Definition: openjpeg.h:687
    -
    OPJ_UINT32 tileno
    tile index
    Definition: openjpeg.h:1001
    -
    union opj_codec_private::@2 m_codec_data
    FIXME DOC.
    -
    int jpwl_max_tiles
    maximum number of tiles
    Definition: openjpeg.h:600
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    struct opj_marker_info opj_marker_info_t
    Marker structure.
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 factor
    number of division by 2 of the out image compared to the original size of image
    Definition: openjpeg.h:693
    -
    opj_codec_t *OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT p_format)
    Creates a J2K/JP2 decompression structure.
    Definition: openjpeg.c:168
    -
    int image_offset_x0
    subimage encoding: origin image offset in x direction
    Definition: openjpeg.h:457
    -
    OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t *p_stream)
    Destroys a stream created by opj_create_stream.
    Definition: cio.c:199
    -
    void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the J2K decompression structure .
    Definition: j2k.c:11024
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    char tp_on
    Tile part generation.
    Definition: openjpeg.h:518
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Encode an image into a JPEG-2000 codestream.
    Definition: openjpeg.c:841
    -
    int mode
    mode switch (cblk_style)
    Definition: openjpeg.h:432
    -
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    OPJ_BOOL OPJ_CALLCONV opj_start_compress(opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
    Start to compress the current image.
    Definition: openjpeg.c:822
    -
    OPJ_UINT32 tile_index
    tile number of the decoded tile
    Definition: openjpeg.h:586
    -
    OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
    Definition: j2k.c:7496
    -
    int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    packet number of packet protection specification (>=0)
    Definition: openjpeg.h:484
    -
    OPJ_BOOL opj_j2k_decode(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
    Decode an image from a JPEG-2000 codestream.
    Definition: j2k.c:11796
    -
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION
    Definition: opj_common.h:45
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:730
    -
    #define OPJ_J2K_STREAM_CHUNK_SIZE
    Definition: openjpeg.h:150
    -
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32
    Definition: openjpeg.h:352
    -
    OPJ_UINT64 codestream_size
    codestream's size
    Definition: openjpeg.h:1038
    -
    opj_stream_t *OPJ_CALLCONV opj_stream_create_file_stream(const char *fname, OPJ_SIZE_T p_size, OPJ_BOOL p_is_read_stream)
    Create a stream from a file identified with its filename with a specific buffer size.
    Definition: openjpeg.c:1040
    -
    OPJ_UINT32 csty
    coding style
    Definition: openjpeg.h:940
    -
    int cp_tdy
    YTsiz.
    Definition: openjpeg.h:397
    -
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: openjpeg.h:946
    -
    opj_tp_index_t * tp_index
    information concerning tile parts
    Definition: openjpeg.h:1010
    -
    OPJ_UINT32 prc_t
    Definition: openjpeg.h:381
    -
    int csty
    csty : coding style
    Definition: openjpeg.h:409
    -
    OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Writes a tile.
    Definition: j2k.c:12950
    -
    OPJ_UINT32 h
    data height
    Definition: openjpeg.h:736
    -
    OPJ_SIZE_T(* opj_stream_write_fn)(void *p_buffer, OPJ_SIZE_T p_nb_bytes, void *p_user_data)
    Definition: openjpeg.h:637
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_UINT32 th
    number of tiles in Y
    Definition: openjpeg.h:969
    -
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    -
    Index structure about a tile part.
    Definition: openjpeg.h:986
    -
    int tile_y
    tile size in y
    Definition: openjpeg.h:861
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress(opj_codec_t *p_codec, opj_image_t *p_image, opj_stream_t *p_stream)
    Start to compress the current image.
    Definition: openjpeg.c:822
    -
    opj_codestream_index_t *OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
    Get the codestream index from the codec.
    Definition: openjpeg.c:1014
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    int decod_format
    input file format 0: J2K, 1: JP2, 2: JPT
    Definition: openjpeg.h:570
    -
    OPJ_RSIZ_CAPABILITIES cp_rsiz
    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.
    Definition: openjpeg.h:516
    -
    @ OPJ_CODEC_JPT
    JPT-stream (JPEG 2000, JPIP) : read only.
    Definition: openjpeg.h:325
    -
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    -
    struct opj_jp2_metadata opj_jp2_metadata_t
    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.
    -
    opj_codestream_index_t *(* opj_get_codec_index)(void *p_codec)
    Definition: opj_codec.h:167
    -
    OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
    Reads a jpeg2000 codestream header structure.
    Definition: j2k.c:8242
    -
    OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Reads a tile header.
    Definition: j2k.c:9370
    -
    OPJ_UINT32 tx0_t
    Definition: openjpeg.h:381
    -
    OPJ_UINT32 resS
    Definition: openjpeg.h:375
    -
    OPJ_API opj_jp2_index_t *OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_codec)
    Get the JP2 file index from the codec FIXME.
    -
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    -
    void jp2_dump(opj_jp2_t *p_jp2, OPJ_INT32 flag, FILE *out_stream)
    Dump some elements from the JP2 decompression structure .
    Definition: jp2.c:3216
    -
    #define OPJ_EXTENSION_MCT
    Definition: openjpeg.h:217
    -
    OPJ_UINT32 tile
    Tile number (starting at 1)
    Definition: openjpeg.h:371
    -
    #define JPWL_EXPECTED_COMPONENTS
    Expect this number of components, so you'll find better the first EPB.
    Definition: openjpeg.h:160
    -
    OPJ_UINT32 DA_y0
    Decoding area up boundary.
    Definition: openjpeg.h:579
    -
    void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t *p_stream, opj_stream_seek_fn p_function)
    Sets the given function to be used as a seek function, the stream is then seekable,...
    Definition: cio.c:225
    -
    OPJ_UINT32 cblkh
    log2 of code-blocks height
    Definition: openjpeg.h:910
    -
    OPJ_API opj_jp2_metadata_t *OPJ_CALLCONV opj_get_jp2_metadata(opj_codec_t *p_codec)
    Get the JP2 file information from the codec FIXME.
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:742
    -
    OPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t *p_stream, opj_stream_read_fn p_function)
    Sets the given function to be used as a read function.
    Definition: cio.c:213
    -
    opj_event_mgr_t m_event_mgr
    Event handler.
    Definition: opj_codec.h:161
    -
    @ OPJ_CODEC_JP2
    JP2 file format : read/write.
    Definition: openjpeg.h:326
    -
    OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters)
    Set encoding parameters to default values, that means :
    Definition: openjpeg.c:722
    -
    int prcw_init[OPJ_J2K_MAXRLVLS]
    initial precinct width
    Definition: openjpeg.h:442
    -
    OPJ_UINT32 numpocs
    number of progression order changes (POC), default to 0
    Definition: openjpeg.h:415
    -
    OPJ_BOOL opj_jp2_set_threads(opj_jp2_t *jp2, OPJ_UINT32 num_threads)
    Allocates worker threads for the compressor/decompressor.
    Definition: jp2.c:1904
    -
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream, opj_codec_t *p_codec, opj_image_t **p_image)
    Decodes an image header.
    Definition: openjpeg.c:418
    -
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    -
    void * m_warning_data
    Data to call the event manager upon.
    Definition: event.h:54
    -
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:732
    -
    char outfile[OPJ_PATH_LEN]
    output file name
    Definition: openjpeg.h:451
    -
    OPJ_UINT32 DA_x1
    Decoding area right boundary.
    Definition: openjpeg.h:577
    -
    OPJ_UINT32 marknum
    number of markers
    Definition: openjpeg.h:1014
    -
    int tp_end_pos
    end position of tile part
    Definition: openjpeg.h:795
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    error protection methods for TPHs (0,1,16,32,37-128)
    Definition: openjpeg.h:480
    -
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    -
    OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec, opj_stream_t *p_stream)
    Read after the codestream if necessary.
    Definition: openjpeg.c:875
    -
    @ OPJ_CODEC_J2K
    JPEG-2000 codestream : read/write.
    Definition: openjpeg.h:324
    -
    OPJ_BOOL jpwl_epc_on
    enables writing of EPC in MH, thus activating JPWL
    Definition: openjpeg.h:474
    -
    int jpwl_hprot_MH
    error protection method for MH (0,1,16,32,37-128)
    Definition: openjpeg.h:476
    -
    Progression order changes.
    Definition: openjpeg.h:359
    -
    void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t *p_stream, void *p_data, opj_stream_free_user_data_fn p_function)
    Sets the given data to be used as a user data for the stream.
    Definition: cio.c:260
    -
    Marker structure.
    Definition: openjpeg.h:776
    -
    int tp_numpacks
    number of packets of tile part
    Definition: openjpeg.h:799
    -
    struct opj_tile_info opj_tile_info_t
    Index structure : information regarding tiles.
    -
    int tile_x
    tile size in x
    Definition: openjpeg.h:859
    -
    int * cp_matrice
    fixed layer
    Definition: openjpeg.h:405
    -
    OPJ_UINT32 tdx
    tile size in x = XTsiz
    Definition: openjpeg.h:963
    -
    OPJ_UINT32 layS
    Start value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:375
    -
    OPJ_UINT32 dx
    Definition: openjpeg.h:379
    -
    void opj_set_default_event_handler(opj_event_mgr_t *p_manager)
    Set the event manager with the default callback function for the 3 levels.
    Definition: event.c:142
    -
    opj_msg_callback error_handler
    Error message callback if available, NULL otherwise.
    Definition: event.h:58
    -
    int marknum
    number of markers
    Definition: openjpeg.h:878
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: openjpeg.h:906
    -
    OPJ_BOOL opj_jp2_decode_tile(opj_jp2_t *p_jp2, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
    Decode tile data.
    Definition: jp2.c:3000
    -
    int max_comp_size
    Maximum size (in bytes) for each component.
    Definition: openjpeg.h:511
    -
    int tp_start_pack
    start packet of tile part
    Definition: openjpeg.h:797
    -
    void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t *p_stream, opj_stream_skip_fn p_function)
    Sets the given function to be used as a skip function.
    Definition: cio.c:248
    -
    int end_pos
    end position
    Definition: openjpeg.h:815
    -
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    -
    struct opj_cparameters opj_cparameters_t
    Compression parameters.
    -
    int codestream_size
    codestream's size
    Definition: openjpeg.h:889
    - - - - diff --git a/build/doc/html/openjpip_8c.html b/build/doc/html/openjpip_8c.html deleted file mode 100644 index f9916e9a9..000000000 --- a/build/doc/html/openjpip_8c.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - - -OpenJPEG: openjpip.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    openjpip.c File Reference
    -
    -
    -
    #include <stdlib.h>
    -#include "openjpip.h"
    -#include "jpip_parser.h"
    -#include "channel_manager.h"
    -#include "byte_manager.h"
    -#include <unistd.h>
    -#include <stdio.h>
    -#include "dec_clientmsg_handler.h"
    -#include "jpipstream_manager.h"
    -#include <string.h>
    -#include <sys/types.h>
    -#include <sys/stat.h>
    -#include <fcntl.h>
    -#include "jp2k_encoder.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    dec_server_record_t *OPJ_CALLCONV init_dec_server (int port)
     Initialize the image decoding server. More...
     
    void OPJ_CALLCONV terminate_dec_server (dec_server_record_t **rec)
     Terminate the image decoding server. More...
     
    client_t OPJ_CALLCONV accept_connection (dec_server_record_t *rec)
     Accept client connection. More...
     
    OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client, dec_server_record_t *rec)
     Handle client request. More...
     
    jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
     Initialize jpip decoder. More...
     
    OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[], jpip_dec_param_t *dec)
     Read jpip codestream from a file. More...
     
    void OPJ_CALLCONV decode_jpip (jpip_dec_param_t *dec)
     Decode jpip codestream. More...
     
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[], jpip_dec_param_t *dec)
     Write J2K/JP2 codestream to a file. More...
     
    void OPJ_CALLCONV output_log (OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
     Option; print out parameter values to stderr. More...
     
    void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t **dec)
     Destroy jpip decoding parameters. More...
     
    index_t *OPJ_CALLCONV get_index_from_JP2file (int fd)
     Parse JP2 file and get index information from cidx box inside. More...
     
    void OPJ_CALLCONV destroy_index (index_t **idx)
     Destroy index parameters. More...
     
    void OPJ_CALLCONV output_index (index_t *index)
     print index parameters More...
     
    -

    Function Documentation

    - -

    ◆ accept_connection()

    - -
    -
    - - - - - - - - -
    client_t OPJ_CALLCONV accept_connection (dec_server_record_trec)
    -
    - -

    Accept client connection.

    -
    Parameters
    - - -
    [in]recdecoding server static record pointer
    -
    -
    -
    Returns
    client socket ID, -1 if failed
    - -

    References accept_socket(), and dec_server_record::listening_socket.

    - -
    -
    - -

    ◆ decode_jpip()

    - - - -

    ◆ destroy_index()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV destroy_index (index_t ** idx)
    -
    - -

    Destroy index parameters.

    -
    Parameters
    - - -
    [in,out]idxaddressof the index pointer
    -
    -
    - -

    References delete_index().

    - -
    -
    - -

    ◆ destroy_jpipdecoder()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t ** dec)
    -
    - -

    Destroy jpip decoding parameters.

    -
    Parameters
    - - -
    [in]decaddress of JPIP decoding parameters pointer
    -
    -
    - -

    References delete_metadatalist(), delete_msgqueue(), and opj_free().

    - -
    -
    - -

    ◆ fread_jpip()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[],
    jpip_dec_param_tdec 
    )
    -
    - -

    Read jpip codestream from a file.

    -
    Parameters
    - - - -
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    -
    -
    -
    Returns
    true if succeed
    - -

    References get_filesize(), jpip_dec_param::jpiplen, jpip_dec_param::jpipstream, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ fwrite_jp2k()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[],
    jpip_dec_param_tdec 
    )
    -
    - -

    Write J2K/JP2 codestream to a file.

    -
    Parameters
    - - - -
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    -
    -
    -
    Returns
    true if succeed
    - -

    References jpip_dec_param::jp2klen, jpip_dec_param::jp2kstream, OPJ_FALSE, and OPJ_TRUE.

    - -
    -
    - -

    ◆ get_index_from_JP2file()

    - -
    -
    - - - - - - - - -
    index_t* OPJ_CALLCONV get_index_from_JP2file (int fd)
    -
    - -

    Parse JP2 file and get index information from cidx box inside.

    -
    Parameters
    - - -
    [in]fdfile descriptor of the JP2 file
    -
    -
    -
    Returns
    pointer to the generated structure of index parameters
    - -

    References opj_free(), opj_malloc(), and parse_jp2file().

    - -
    -
    - -

    ◆ handle_clientreq()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client,
    dec_server_record_trec 
    )
    -
    -
    - -

    ◆ init_dec_server()

    - -
    -
    - - - - - - - - -
    dec_server_record_t* OPJ_CALLCONV init_dec_server (int port)
    -
    - -

    Initialize the image decoding server.

    -
    Parameters
    - - -
    [in]portopening tcp port (valid No. 49152-65535)
    -
    -
    -
    Returns
    initialized decoding server record pointer
    - -

    References dec_server_record::cachelist, gene_cachelist(), gene_msgqueue(), dec_server_record::jpipstream, dec_server_record::jpipstreamlen, dec_server_record::listening_socket, dec_server_record::msgqueue, open_listeningsocket(), opj_malloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ init_jpipdecoder()

    - -
    -
    - - - - - - - - -
    jpip_dec_param_t* OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
    -
    - -

    Initialize jpip decoder.

    -
    Parameters
    - - -
    [in]jp2true in case of jp2 file encoding, else j2k file encoding
    -
    -
    -
    Returns
    JPIP decoding parameters pointer
    - -

    References gene_metadatalist(), gene_msgqueue(), jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, opj_calloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ output_index()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV output_index (index_tindex)
    -
    - -

    print index parameters

    -
    Parameters
    - - -
    [in]indexindex parameters
    -
    -
    - -

    References print_index().

    - -
    -
    - -

    ◆ output_log()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void OPJ_CALLCONV output_log (OPJ_BOOL messages,
    OPJ_BOOL metadata,
    OPJ_BOOL ihdrbox,
    jpip_dec_param_tdec 
    )
    -
    - -

    Option; print out parameter values to stderr.

    -
    Parameters
    - - - - - -
    [in]messagestrue if queue of messages is to be printed out
    [in]metadatatrue if metadata is to be printed out
    [in]ihdrboxtrue if image header data is to be printed out
    [in]decJPIP decoding parameters pointer
    -
    -
    - -

    References ihdrbox_param::bpc, ihdrbox_param::height, jpip_dec_param::ihdrbox, jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, ihdrbox_param::nc, print_allmetadata(), print_msgqueue(), and ihdrbox_param::width.

    - -
    -
    - -

    ◆ terminate_dec_server()

    - -
    -
    - - - - - - - - -
    void OPJ_CALLCONV terminate_dec_server (dec_server_record_t ** rec)
    -
    - -

    Terminate the image decoding server.

    -
    Parameters
    - - -
    [in]recaddress of deleting decoding server static record pointer
    -
    -
    - -

    References close_socket(), delete_cachelist(), delete_msgqueue(), and opj_free().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/openjpip_8dox.html b/build/doc/html/openjpip_8dox.html deleted file mode 100644 index 15ed228a6..000000000 --- a/build/doc/html/openjpip_8dox.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - -OpenJPEG: openjpip.dox File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    openjpip.dox File Reference
    -
    -
    -
    - - - - diff --git a/build/doc/html/openjpip_8h.html b/build/doc/html/openjpip_8h.html deleted file mode 100644 index bad0e7388..000000000 --- a/build/doc/html/openjpip_8h.html +++ /dev/null @@ -1,691 +0,0 @@ - - - - - - - -OpenJPEG: openjpip.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    openjpip.h File Reference
    -
    -
    -
    #include "session_manager.h"
    -#include "target_manager.h"
    -#include "query_parser.h"
    -#include "msgqueue_manager.h"
    -#include "sock_manager.h"
    -#include "auxtrans_manager.h"
    -#include "cache_manager.h"
    -#include "byte_manager.h"
    -#include "imgsock_manager.h"
    -#include "metadata_manager.h"
    -#include "ihdrbox_manager.h"
    -#include "index_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  dec_server_record
     Decoding server static records. More...
     
    struct  jpip_dec_param
     JPIP decoding parameters. More...
     
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - -

    -Typedefs

    typedef struct dec_server_record dec_server_record_t
     Decoding server static records. More...
     
    typedef SOCKET client_t
     Client socket identifier. More...
     
    typedef struct jpip_dec_param jpip_dec_param_t
     JPIP decoding parameters. More...
     
    typedef index_param_t index_t
     Redefinition of index parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_API dec_server_record_t *OPJ_CALLCONV init_dec_server (int port)
     Initialize the image decoding server. More...
     
    OPJ_API void OPJ_CALLCONV terminate_dec_server (dec_server_record_t **rec)
     Terminate the image decoding server. More...
     
    OPJ_API client_t OPJ_CALLCONV accept_connection (dec_server_record_t *rec)
     Accept client connection. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client, dec_server_record_t *rec)
     Handle client request. More...
     
    OPJ_API jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
     Initialize jpip decoder. More...
     
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t **dec)
     Destroy jpip decoding parameters. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[], jpip_dec_param_t *dec)
     Read jpip codestream from a file. More...
     
    OPJ_API void OPJ_CALLCONV decode_jpip (jpip_dec_param_t *dec)
     Decode jpip codestream. More...
     
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[], jpip_dec_param_t *dec)
     Write J2K/JP2 codestream to a file. More...
     
    OPJ_API void OPJ_CALLCONV output_log (OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
     Option; print out parameter values to stderr. More...
     
    OPJ_API index_t *OPJ_CALLCONV get_index_from_JP2file (int fd)
     Parse JP2 file and get index information from cidx box inside. More...
     
    OPJ_API void OPJ_CALLCONV destroy_index (index_t **idx)
     Destroy index parameters. More...
     
    OPJ_API void OPJ_CALLCONV output_index (index_t *index)
     print index parameters More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ client_t

    - -
    -
    - - - - -
    typedef SOCKET client_t
    -
    - -

    Client socket identifier.

    - -
    -
    - -

    ◆ dec_server_record_t

    - -
    -
    - - - - -
    typedef struct dec_server_record dec_server_record_t
    -
    - -

    Decoding server static records.

    - -
    -
    - -

    ◆ index_t

    - -
    -
    - - - - -
    typedef index_param_t index_t
    -
    - -

    Redefinition of index parameters.

    - -
    -
    - -

    ◆ jpip_dec_param_t

    - -
    -
    - - - - -
    typedef struct jpip_dec_param jpip_dec_param_t
    -
    - -

    JPIP decoding parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ accept_connection()

    - -
    -
    - - - - - - - - -
    OPJ_API client_t OPJ_CALLCONV accept_connection (dec_server_record_trec)
    -
    - -

    Accept client connection.

    -
    Parameters
    - - -
    [in]recdecoding server static record pointer
    -
    -
    -
    Returns
    client socket ID, -1 if failed
    - -

    References accept_socket(), and dec_server_record::listening_socket.

    - -
    -
    - -

    ◆ decode_jpip()

    - - - -

    ◆ destroy_index()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV destroy_index (index_t ** idx)
    -
    - -

    Destroy index parameters.

    -
    Parameters
    - - -
    [in,out]idxaddressof the index pointer
    -
    -
    - -

    References delete_index().

    - -
    -
    - -

    ◆ destroy_jpipdecoder()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder (jpip_dec_param_t ** dec)
    -
    - -

    Destroy jpip decoding parameters.

    -
    Parameters
    - - -
    [in]decaddress of JPIP decoding parameters pointer
    -
    -
    - -

    References delete_metadatalist(), delete_msgqueue(), and opj_free().

    - -
    -
    - -

    ◆ fread_jpip()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip (const char fname[],
    jpip_dec_param_tdec 
    )
    -
    - -

    Read jpip codestream from a file.

    -
    Parameters
    - - - -
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    -
    -
    -
    Returns
    true if succeed
    - -

    References get_filesize(), jpip_dec_param::jpiplen, jpip_dec_param::jpipstream, OPJ_FALSE, opj_free(), opj_malloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ fwrite_jp2k()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k (const char fname[],
    jpip_dec_param_tdec 
    )
    -
    - -

    Write J2K/JP2 codestream to a file.

    -
    Parameters
    - - - -
    [in]fnamefile name
    [in]decJPIP decoding parameters pointer
    -
    -
    -
    Returns
    true if succeed
    - -

    References jpip_dec_param::jp2klen, jpip_dec_param::jp2kstream, OPJ_FALSE, and OPJ_TRUE.

    - -
    -
    - -

    ◆ get_index_from_JP2file()

    - -
    -
    - - - - - - - - -
    OPJ_API index_t* OPJ_CALLCONV get_index_from_JP2file (int fd)
    -
    - -

    Parse JP2 file and get index information from cidx box inside.

    -
    Parameters
    - - -
    [in]fdfile descriptor of the JP2 file
    -
    -
    -
    Returns
    pointer to the generated structure of index parameters
    - -

    References opj_free(), opj_malloc(), and parse_jp2file().

    - -
    -
    - -

    ◆ handle_clientreq()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq (client_t client,
    dec_server_record_trec 
    )
    -
    -
    - -

    ◆ init_dec_server()

    - -
    -
    - - - - - - - - -
    OPJ_API dec_server_record_t* OPJ_CALLCONV init_dec_server (int port)
    -
    - -

    Initialize the image decoding server.

    -
    Parameters
    - - -
    [in]portopening tcp port (valid No. 49152-65535)
    -
    -
    -
    Returns
    initialized decoding server record pointer
    - -

    References dec_server_record::cachelist, gene_cachelist(), gene_msgqueue(), dec_server_record::jpipstream, dec_server_record::jpipstreamlen, dec_server_record::listening_socket, dec_server_record::msgqueue, open_listeningsocket(), opj_malloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ init_jpipdecoder()

    - -
    -
    - - - - - - - - -
    OPJ_API jpip_dec_param_t* OPJ_CALLCONV init_jpipdecoder (OPJ_BOOL jp2)
    -
    - -

    Initialize jpip decoder.

    -
    Parameters
    - - -
    [in]jp2true in case of jp2 file encoding, else j2k file encoding
    -
    -
    -
    Returns
    JPIP decoding parameters pointer
    - -

    References gene_metadatalist(), gene_msgqueue(), jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, opj_calloc(), and OPJ_TRUE.

    - -
    -
    - -

    ◆ output_index()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV output_index (index_tindex)
    -
    - -

    print index parameters

    -
    Parameters
    - - -
    [in]indexindex parameters
    -
    -
    - -

    References print_index().

    - -
    -
    - -

    ◆ output_log()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_API void OPJ_CALLCONV output_log (OPJ_BOOL messages,
    OPJ_BOOL metadata,
    OPJ_BOOL ihdrbox,
    jpip_dec_param_tdec 
    )
    -
    - -

    Option; print out parameter values to stderr.

    -
    Parameters
    - - - - - -
    [in]messagestrue if queue of messages is to be printed out
    [in]metadatatrue if metadata is to be printed out
    [in]ihdrboxtrue if image header data is to be printed out
    [in]decJPIP decoding parameters pointer
    -
    -
    - -

    References ihdrbox_param::bpc, ihdrbox_param::height, jpip_dec_param::ihdrbox, jpip_dec_param::metadatalist, jpip_dec_param::msgqueue, ihdrbox_param::nc, print_allmetadata(), print_msgqueue(), and ihdrbox_param::width.

    - -
    -
    - -

    ◆ terminate_dec_server()

    - -
    -
    - - - - - - - - -
    OPJ_API void OPJ_CALLCONV terminate_dec_server (dec_server_record_t ** rec)
    -
    - -

    Terminate the image decoding server.

    -
    Parameters
    - - -
    [in]recaddress of deleting decoding server static record pointer
    -
    -
    - -

    References close_socket(), delete_cachelist(), delete_msgqueue(), and opj_free().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/openjpip_8h_source.html b/build/doc/html/openjpip_8h_source.html deleted file mode 100644 index 2fb1e67d8..000000000 --- a/build/doc/html/openjpip_8h_source.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - -OpenJPEG: openjpip.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    openjpip.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef OPENJPIP_H_
    -
    32 # define OPENJPIP_H_
    -
    33 
    -
    34 #include "session_manager.h"
    -
    35 #include "target_manager.h"
    -
    36 #include "query_parser.h"
    -
    37 #include "msgqueue_manager.h"
    -
    38 #include "sock_manager.h"
    -
    39 #include "auxtrans_manager.h"
    -
    40 
    -
    41 #ifdef SERVER
    -
    42 
    -
    43 #include "fcgi_stdio.h"
    -
    44 #define logstream FCGI_stdout
    -
    45 
    -
    46 #else
    -
    47 
    -
    48 #define FCGI_stdout stdout
    -
    49 #define FCGI_stderr stderr
    -
    50 #define logstream stderr
    -
    51 
    -
    52 #include "cache_manager.h"
    -
    53 #include "byte_manager.h"
    -
    54 #include "imgsock_manager.h"
    -
    55 
    -
    56 #include "metadata_manager.h"
    -
    57 #include "ihdrbox_manager.h"
    -
    58 #include "index_manager.h"
    -
    59 
    -
    60 #endif /*SERVER*/
    -
    61 
    -
    62 /*
    -
    63  *==========================================================
    -
    64  * JPIP server API
    -
    65  *==========================================================
    -
    66  */
    -
    67 
    -
    68 #ifdef SERVER
    -
    69 
    -
    71 typedef struct server_record {
    -
    72  sessionlist_param_t *sessionlist;
    -
    73  targetlist_param_t *targetlist;
    -
    74  auxtrans_param_t auxtrans;
    -
    75 } server_record_t;
    -
    76 
    -
    78 typedef struct QR {
    -
    79  query_param_t *query;
    -
    80  msgqueue_param_t *msgqueue;
    -
    81  channel_param_t *channel;
    -
    82 } QR_t;
    -
    83 
    -
    91 server_record_t * init_JPIPserver(int tcp_auxport, int udp_auxport);
    -
    92 
    -
    98 void terminate_JPIPserver(server_record_t **rec);
    -
    99 
    -
    106 QR_t * parse_querystring(const char *query_string);
    -
    107 
    -
    115 OPJ_BOOL process_JPIPrequest(server_record_t *rec, QR_t *qr);
    -
    116 
    -
    123 void send_responsedata(server_record_t *rec, QR_t *qr);
    -
    124 
    -
    131 void end_QRprocess(server_record_t *rec, QR_t **qr);
    -
    132 
    -
    143 void local_log(OPJ_BOOL query, OPJ_BOOL messages, OPJ_BOOL sessions,
    -
    144  OPJ_BOOL targets, QR_t *qr, server_record_t *rec);
    -
    145 
    -
    146 #endif /*SERVER*/
    -
    147 
    -
    148 /*
    -
    149  *==========================================================
    -
    150  * JPIP decoding server API
    -
    151  *==========================================================
    -
    152  */
    -
    153 
    -
    154 #ifndef SERVER
    -
    155 
    -
    157 typedef struct dec_server_record {
    - - - - - - -
    164 
    -
    165 
    -
    167 typedef SOCKET client_t;
    -
    168 
    - -
    176 
    - -
    183 
    - -
    191 
    - -
    200  dec_server_record_t *rec);
    -
    201 
    -
    202 #endif /*SERVER*/
    -
    203 
    -
    204 /*
    -
    205  *==========================================================
    -
    206  * JPIP tool API
    -
    207  *==========================================================
    -
    208  */
    -
    209 
    -
    210 #ifndef SERVER
    -
    211 
    -
    212 /*
    -
    213  * jpip to JP2 or J2K
    -
    214  */
    -
    215 
    -
    217 typedef struct jpip_dec_param {
    - - - - - - - - -
    226 
    - -
    234 
    - -
    241 
    -
    249 OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[],
    -
    250  jpip_dec_param_t *dec);
    -
    251 
    - -
    258 
    -
    266 OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[],
    -
    267  jpip_dec_param_t *dec);
    -
    268 
    -
    277 OPJ_API void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata,
    -
    278  OPJ_BOOL ihdrbox, jpip_dec_param_t *dec);
    -
    279 
    -
    280 /*
    -
    281  * test the format of index (cidx) box in JP2 file
    -
    282  */
    -
    283 
    - -
    286 
    - -
    294 
    - -
    301 
    -
    302 
    - -
    309 
    -
    310 #endif /*SERVER*/
    -
    311 
    -
    312 #endif /* !OPENJPIP_H_ */
    -
    -
    OPJ_OFF_T get_filesize(int fd)
    Get file size.
    Definition: byte_manager.c:167
    -
    OPJ_API void OPJ_CALLCONV output_index(index_t *index)
    print index parameters
    Definition: openjpip.c:481
    -
    @ CIDDST
    Definition: imgsock_manager.h:39
    -
    index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
    Parse JP2 file and get index information from cidx box inside.
    Definition: openjpip.c:448
    -
    @ CIDREQ
    Definition: imgsock_manager.h:39
    -
    Session parameters.
    Definition: session_manager.h:38
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    auxiliary transport setting parameters
    Definition: auxtrans_manager.h:38
    -
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    -
    ihdrbox_param_t * ihdrbox
    ihdr box going into JP2 file
    Definition: openjpip.h:222
    -
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    -
    void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
    reconstruct JPT/JPP-stream from message queue
    Definition: msgqueue_manager.c:443
    -
    SOCKET listening_socket
    listenning socket
    Definition: openjpip.h:162
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
    Write J2K/JP2 codestream to a file.
    Definition: openjpip.c:396
    -
    @ SIZREQ
    Definition: imgsock_manager.h:39
    - -
    OPJ_API dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
    Initialize the image decoding server.
    Definition: openjpip.c:230
    -
    cachelist_param_t * gene_cachelist(void)
    generate a cache list
    Definition: cache_manager.c:36
    -
    dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
    Initialize the image decoding server.
    Definition: openjpip.c:230
    -
    void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
    Decode jpip codestream.
    Definition: openjpip.c:378
    -
    SOCKET client_t
    Client socket identifier.
    Definition: openjpip.h:167
    -
    OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel close (cclose)
    Definition: jpip_parser.c:131
    -
    void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
    Definition: jpipstream_manager.c:58
    - -
    Byte_t * jpipstream
    JPT/JPP stream.
    Definition: openjpip.h:159
    -
    void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
    Terminate the image decoding server.
    Definition: openjpip.c:244
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    - -
    #define OPJ_API
    Definition: openjpeg.h:89
    - -
    #define FCGI_stdout
    Definition: auxtrans_manager.c:46
    -
    Session list parameters.
    Definition: session_manager.h:45
    -
    Byte8_t jp2klen
    length of j2kstream or JP2 file
    Definition: openjpip.h:224
    -
    OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
    REQUEST: view-window (fsiz)
    Definition: jpip_parser.c:204
    -
    void print_msgqueue(msgqueue_param_t *msgqueue)
    print message queue
    Definition: msgqueue_manager.c:97
    -
    @ tcp
    Definition: query_parser.h:41
    - - -
    OPJ_API jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
    Initialize jpip decoder.
    Definition: openjpip.c:334
    -
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    -
    void OPJ_CALLCONV destroy_index(index_t **idx)
    Destroy index parameters.
    Definition: openjpip.c:476
    -
    OPJ_API void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
    Option; print out parameter values to stderr.
    Definition: openjpip.c:418
    -
    index parameters
    Definition: index_manager.h:86
    -
    msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
    generate message queue
    Definition: msgqueue_manager.c:59
    -
    void delete_cachelist(cachelist_param_t **cachelist)
    delete cache list
    Definition: cache_manager.c:48
    -
    #define FCGI_stderr
    Definition: auxtrans_manager.c:47
    -
    void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle ChannelID request message
    Definition: dec_clientmsg_handler.c:183
    -
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    -
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    -
    struct dec_server_record dec_server_record_t
    Decoding server static records.
    -
    OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: new channel (cnew) assignment.
    Definition: jpip_parser.c:100
    -
    void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
    Option; print out parameter values to stderr.
    Definition: openjpip.c:418
    -
    Byte_t bpc
    bits per component
    Definition: ihdrbox_manager.h:43
    -
    metadata-bin list parameters
    Definition: metadata_manager.h:54
    -
    Byte_t * jp2kstream
    J2K codestream or JP2 file codestream.
    Definition: openjpip.h:223
    -
    void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
    Destroy jpip decoding parameters.
    Definition: openjpip.c:435
    -
    OPJ_API client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
    Accept client connection.
    Definition: openjpip.c:260
    -
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    -
    @ QUIT
    Definition: imgsock_manager.h:39
    -
    int SOCKET
    Definition: sock_manager.h:40
    -
    Byte_t * jpipstream
    JPT/JPP-stream.
    Definition: openjpip.h:218
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    void print_index(index_param_t index)
    print index parameters
    Definition: index_manager.c:122
    -
    void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
    handle JPT- JPP- stream message
    Definition: dec_clientmsg_handler.c:42
    -
    @ JP2SAVE
    Definition: imgsock_manager.h:39
    -
    @ non
    Definition: query_parser.h:41
    -
    void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle distroy ChannelID message
    Definition: dec_clientmsg_handler.c:203
    -
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    -
    auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
    Initialize auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:51
    -
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    - -
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    -
    OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
    check if all data has been sent
    Definition: cachemodel_manager.c:211
    -
    Byte4_t width
    Definition: ihdrbox_manager.h:41
    -
    OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
    Write J2K/JP2 codestream to a file.
    Definition: openjpip.c:396
    - -
    void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
    handle TargetID request message
    Definition: dec_clientmsg_handler.c:165
    -
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    -
    Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
    fetch bytes of data in file stream
    Definition: byte_manager.c:52
    -
    OPJ_API void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
    Decode jpip codestream.
    Definition: openjpip.c:378
    -
    Decoding server static records.
    Definition: openjpip.h:157
    -
    void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:687
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
    generate ihdr box
    Definition: ihdrbox_manager.c:36
    -
    @ udp
    Definition: query_parser.h:41
    - -
    client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
    Accept client connection.
    Definition: openjpip.c:260
    -
    @ TIDREQ
    Definition: imgsock_manager.h:39
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void delete_metadatalist(metadatalist_param_t **list)
    delete metadata list
    Definition: metadata_manager.c:114
    - -
    Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
    reconstruct jp2 file codestream from message queue
    Definition: jp2k_encoder.c:98
    -
    OPJ_API void OPJ_CALLCONV destroy_index(index_t **idx)
    Destroy index parameters.
    Definition: openjpip.c:476
    -
    metadatalist_param_t * gene_metadatalist(void)
    generate a metadata list
    Definition: metadata_manager.c:49
    - -
    msgqueue_param_t * msgqueue
    message queue
    Definition: openjpip.h:220
    -
    struct jpip_dec_param jpip_dec_param_t
    JPIP decoding parameters.
    -
    void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
    parse JPT- JPP- stream to message queue
    Definition: msgqueue_manager.c:631
    -
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    -
    OPJ_API index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
    Parse JP2 file and get index information from cidx box inside.
    Definition: openjpip.c:448
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
    Handle client request.
    Definition: openjpip.c:272
    -
    void print_allmetadata(metadatalist_param_t *list)
    print all metadata parameters
    Definition: metadata_manager.c:182
    -
    Byte8_t csn
    index of the codestream
    Definition: msgqueue_manager.h:53
    -
    cachelist_param_t * cachelist
    cache list
    Definition: openjpip.h:158
    -
    OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
    Handle client request.
    Definition: openjpip.c:272
    -
    @ XMLREQ
    Definition: imgsock_manager.h:39
    -
    void OPJ_CALLCONV output_index(index_t *index)
    print index parameters
    Definition: openjpip.c:481
    -
    OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
    Read jpip codestream from a file.
    Definition: openjpip.c:350
    -
    void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
    Send response data on aux transport.
    Definition: auxtrans_manager.c:109
    -
    void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
    handle saving JP2 file request message
    Definition: dec_clientmsg_handler.c:250
    -
    Target list parameters.
    Definition: target_manager.h:59
    - -
    void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle PNM request message
    Definition: dec_clientmsg_handler.c:102
    -
    OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
    Read jpip codestream from a file.
    Definition: openjpip.c:350
    -
    void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
    handle XML request message
    Definition: dec_clientmsg_handler.c:141
    -
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    -
    JPIP decoding parameters.
    Definition: openjpip.h:217
    -
    @ PNMREQ
    Definition: imgsock_manager.h:39
    -
    OPJ_API void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
    Terminate the image decoding server.
    Definition: openjpip.c:244
    -
    target parameters
    Definition: target_manager.h:40
    -
    Query parameters.
    Definition: query_parser.h:47
    -
    OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
    REQUEST: channel association this must be processed before any process.
    Definition: jpip_parser.c:82
    -
    message queue parameters
    Definition: msgqueue_manager.h:63
    -
    void close_aux_transport(auxtrans_param_t auxtrans)
    Close auxiliary transport server of JPIP server.
    Definition: auxtrans_manager.c:70
    -
    OPJ_API void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
    Destroy jpip decoding parameters.
    Definition: openjpip.c:435
    -
    Byte4_t height
    Definition: ihdrbox_manager.h:40
    -
    Definition: cache_manager.h:50
    -
    void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
    handle SIZ request message
    Definition: dec_clientmsg_handler.c:214
    -
    OPJ_SIZE_T jpipstreamlen
    length of jpipstream
    Definition: openjpip.h:160
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
    reconstruct j2k codestream from message queue
    Definition: jp2k_encoder.c:79
    -
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    -
    I.5.3.1 Image Header box.
    Definition: ihdrbox_manager.h:39
    -
    index_param_t index_t
    Redefinition of index parameters.
    Definition: openjpip.h:285
    -
    msgtype_t identify_clientmsg(SOCKET connected_socket)
    indeitify client message type
    Definition: imgsock_manager.c:39
    - -
    Byte8_t jpiplen
    length of jpipstream
    Definition: openjpip.h:219
    -
    Channel parameters.
    Definition: channel_manager.h:43
    -
    enum eMSGTYPE msgtype_t
    - -
    @ MSGERROR
    Definition: imgsock_manager.h:39
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    -
    msgqueue_param_t * msgqueue
    parsed message queue of jpipstream
    Definition: openjpip.h:161
    -
    OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
    REQUEST: target identification by target or tid request.
    Definition: jpip_parser.c:49
    -
    metadatalist_param_t * metadatalist
    metadata list going into JP2 file
    Definition: openjpip.h:221
    - -
    message_param_t * first
    first message pointer of the list
    Definition: msgqueue_manager.h:64
    -
    @ JPIPSTREAM
    Definition: imgsock_manager.h:39
    - -
    void delete_msgqueue(msgqueue_param_t **msgqueue)
    delete message queue
    Definition: msgqueue_manager.c:75
    -
    jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
    Initialize jpip decoder.
    Definition: openjpip.c:334
    -
    Byte2_t nc
    number of components
    Definition: ihdrbox_manager.h:42
    - -
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    - - - - diff --git a/build/doc/html/openjpippage.html b/build/doc/html/openjpippage.html deleted file mode 100644 index 6ec0133ce..000000000 --- a/build/doc/html/openjpippage.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -OpenJPEG: OpenJPIP v2.3.1 Documentation - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    OpenJPIP v2.3.1 Documentation
    -
    -
    -

    -Introduction

    -

    This manual documents the low-level OpenJPIP C API.
    -OpenJPIP software is an implementation of JPEG 2000 Part9: Interactivity tools, APIs and protocols (JPIP).
    -( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html)
    - This whole documents covers the following six programs.
    -

      -
    • opj_server.c JPIP server supporting HTTP connection and JPT/JPP-stream
    • -
    • opj_dec_server.c Server to decode JPT/JPP-stream and communicate locally with JPIP client, which is coded in java
    • -
    • opj_jpip_addxml.c To Embed metadata into JP2 file
    • -
    • opj_jpip_transcode.c To Convert JPT/JPP-stream to JP2 or J2K
    • -
    • opj_jpip_test.c To test index code format of a JP2 file
    • -
    -

    -License

    -

    This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.
    -The only restriction is to retain the copyright in the sources or the binaries documentation.
    -Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage.

    -

    -Required libraries

    -
      -
    • OpenJPEG library
    • -
    • FastCGI development kit (C libraries) at server (http://www.fastcgi.com)
    • -
    • libcURL library
    • -
    -

    We tested this software with a virtual server running on the same Linux machine as the clients.

    -

    -Compiling Notes

    -

    When you are making opj_server, set anything (e.g. yes) to the parameter jpipserver to define itself in the Makefile, which enables to make it in server mode.
    -Otherwise do not define (or do not set to) the parameter jpipserver.
    -Be sure that any object files and library file libopenjpip.a are not reused to compile in the two different mode (server mode and non server mode).
    -In other words, do make clean before making new targets which are in different modes as previous make.
    -

    -

    -System Architecture

    -

    JPIP protocol is implemented between the JPIP server program (opj_server) and the JPIP client java program (opj_viewer).
    -Figure below represents the overview of our system architecture.
    -The JPIP server parses JPIP query and sends corresponding JPT/JPP-stream. The JPIP client viewer is an image viewer with GUI to publish JPIP requests and receive JPT/JPP-stream.
    -Particularly, our system has the image decoding module implemented on a server (opj_dec_server, Image decoding Server). Image decoding Server and JPIP client viewer communicate closely. This specific architecture enables sharing cache of image codestream data among all viewers connected to the same Image decoding Server not only locally but also remotely.

    -
    - -
    -OpenJPIP system architecture
    -

    JPIP server follows up the client cache during a session.
    -Concretely, the JPIP server models cache in each session, to which Channel IDs are associated. A Channel ID identifies a JPIP client viewer. And, new viewers can belong to a session by referring to one of its channel ID. The Image decoding Server maintains the association between channel IDs and targets, and provides a reference channel ID to a Viewer on demand.
    - Typical requests and replies among JPIP server, JPIP client, and Image decoding server is presented below.
    -The JPIP server parses HTTP query and sends corresponding JPT/JPP-stream back to the JPIP client (Viewer). JPT/JPP-stream is unreadable by JPIP client, and it is directly passed to Image decoding Server, and which provides the image in raw format (PGM or PPM) to the JPIP client. The Image decoding Server handles the decoding and caching of JPT/JPP-stream. JPIP client can read PGM and PPM images natively. Before connecting to the JPIP server, every JPIP client checks local cache data of the requesting image with the image decoding server. If its cache exists, the image decoding server provides ChannelID (CID), which identifies the image and its cache model on the JPIP server, and the whole system can continue the session using the CID.

    -
    - -
    -Message Sequence Chart of OpenJPIP implementation
    -
    Author
    Kaori Hagihara UCL/SST/ICTM/ELEN
    -
    -
    - - - - diff --git a/build/doc/html/opj__clock_8c.html b/build/doc/html/opj__clock_8c.html deleted file mode 100644 index 5200e9237..000000000 --- a/build/doc/html/opj__clock_8c.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -OpenJPEG: opj_clock.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    opj_clock.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include <sys/time.h>
    -#include <sys/resource.h>
    -#include <sys/times.h>
    -
    - - - - -

    -Functions

    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    -

    Function Documentation

    - -

    ◆ opj_clock()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_clock (void )
    -
    - -

    Difference in successive opj_clock() calls tells you the elapsed time.

    -
    Returns
    Returns time in seconds
    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__clock_8h.html b/build/doc/html/opj__clock_8h.html deleted file mode 100644 index a010b5efa..000000000 --- a/build/doc/html/opj__clock_8h.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -OpenJPEG: opj_clock.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_clock.h File Reference
    -
    -
    - -

    Internal function for timing. -More...

    - -

    Go to the source code of this file.

    - - - - - - -

    -Functions

    Exported functions
    OPJ_FLOAT64 opj_clock (void)
     Difference in successive opj_clock() calls tells you the elapsed time. More...
     
    -

    Detailed Description

    -

    Internal function for timing.

    -

    The functions in OPJ_CLOCK.C are internal utilities mainly used for timing.

    -

    Function Documentation

    - -

    ◆ opj_clock()

    - -
    -
    - - - - - - - - -
    OPJ_FLOAT64 opj_clock (void )
    -
    - -

    Difference in successive opj_clock() calls tells you the elapsed time.

    -
    Returns
    Returns time in seconds
    - -

    Referenced by main().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__clock_8h_source.html b/build/doc/html/opj__clock_8h_source.html deleted file mode 100644 index b42a2b6bc..000000000 --- a/build/doc/html/opj__clock_8h_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -OpenJPEG: opj_clock.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_clock.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 #ifndef OPJ_CLOCK_H
    -
    32 #define OPJ_CLOCK_H
    -
    33 
    -
    42 
    -
    45 /* ----------------------------------------------------------------------- */
    -
    46 
    - -
    52 
    -
    53 /* ----------------------------------------------------------------------- */
    -
    57 
    -
    58 #endif /* OPJ_CLOCK_H */
    -
    59 
    -
    -
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: opj_clock.c:42
    -
    OPJ_FLOAT64 opj_clock(void)
    Difference in successive opj_clock() calls tells you the elapsed time.
    Definition: bench_dwt.c:108
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    - - - - - diff --git a/build/doc/html/opj__codec_8h.html b/build/doc/html/opj__codec_8h.html deleted file mode 100644 index 6059d725e..000000000 --- a/build/doc/html/opj__codec_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -OpenJPEG: opj_codec.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    opj_codec.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_codec_private
     Main codec handler used for compression or decompression. More...
     
    - - - - -

    -Typedefs

    typedef struct opj_codec_private opj_codec_private_t
     Main codec handler used for compression or decompression. More...
     
    -

    Typedef Documentation

    - -

    ◆ opj_codec_private_t

    - -
    -
    - - - - -
    typedef struct opj_codec_private opj_codec_private_t
    -
    - -

    Main codec handler used for compression or decompression.

    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__codec_8h_source.html b/build/doc/html/opj__codec_8h_source.html deleted file mode 100644 index b96bffe72..000000000 --- a/build/doc/html/opj__codec_8h_source.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -OpenJPEG: opj_codec.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_codec.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * All rights reserved.
    -
    10  *
    -
    11  * Redistribution and use in source and binary forms, with or without
    -
    12  * modification, are permitted provided that the following conditions
    -
    13  * are met:
    -
    14  * 1. Redistributions of source code must retain the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer.
    -
    16  * 2. Redistributions in binary form must reproduce the above copyright
    -
    17  * notice, this list of conditions and the following disclaimer in the
    -
    18  * documentation and/or other materials provided with the distribution.
    -
    19  *
    -
    20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    30  * POSSIBILITY OF SUCH DAMAGE.
    -
    31  */
    -
    32 #ifndef OPJ_CODEC_H
    -
    33 #define OPJ_CODEC_H
    -
    34 
    -
    42 typedef struct opj_codec_private {
    -
    44  union {
    -
    48  struct opj_decompression {
    - -
    51  void * p_codec,
    -
    52  opj_image_t **p_image,
    -
    53  struct opj_event_mgr * p_manager);
    -
    54 
    -
    56  OPJ_BOOL(*opj_decode)(void * p_codec,
    -
    57  struct opj_stream_private * p_cio,
    -
    58  opj_image_t * p_image,
    -
    59  struct opj_event_mgr * p_manager);
    -
    60 
    -
    62  OPJ_BOOL(*opj_read_tile_header)(void * p_codec,
    -
    63  OPJ_UINT32 * p_tile_index,
    -
    64  OPJ_UINT32 * p_data_size,
    -
    65  OPJ_INT32 * p_tile_x0,
    -
    66  OPJ_INT32 * p_tile_y0,
    -
    67  OPJ_INT32 * p_tile_x1,
    -
    68  OPJ_INT32 * p_tile_y1,
    -
    69  OPJ_UINT32 * p_nb_comps,
    -
    70  OPJ_BOOL * p_should_go_on,
    -
    71  struct opj_stream_private * p_cio,
    -
    72  struct opj_event_mgr * p_manager);
    -
    73 
    -
    75  OPJ_BOOL(*opj_decode_tile_data)(void * p_codec,
    -
    76  OPJ_UINT32 p_tile_index,
    -
    77  OPJ_BYTE * p_data,
    -
    78  OPJ_UINT32 p_data_size,
    -
    79  struct opj_stream_private * p_cio,
    -
    80  struct opj_event_mgr * p_manager);
    -
    81 
    -
    83  OPJ_BOOL(* opj_end_decompress)(void *p_codec,
    -
    84  struct opj_stream_private * cio,
    -
    85  struct opj_event_mgr * p_manager);
    -
    86 
    -
    88  void (*opj_destroy)(void * p_codec);
    -
    89 
    -
    91  void (*opj_setup_decoder)(void * p_codec, opj_dparameters_t * p_param);
    -
    92 
    -
    94  OPJ_BOOL(*opj_set_decode_area)(void * p_codec,
    -
    95  opj_image_t * p_image,
    -
    96  OPJ_INT32 p_start_x,
    -
    97  OPJ_INT32 p_end_x,
    -
    98  OPJ_INT32 p_start_y,
    -
    99  OPJ_INT32 p_end_y,
    -
    100  struct opj_event_mgr * p_manager);
    -
    101 
    - -
    104  opj_stream_private_t * p_cio,
    -
    105  opj_image_t *p_image,
    -
    106  struct opj_event_mgr * p_manager,
    -
    107  OPJ_UINT32 tile_index);
    -
    108 
    - -
    111  OPJ_UINT32 res_factor,
    -
    112  opj_event_mgr_t * p_manager);
    -
    113 
    - -
    116  OPJ_UINT32 num_comps,
    -
    117  const OPJ_UINT32* comps_indices,
    -
    118  opj_event_mgr_t * p_manager);
    -
    119  } m_decompression;
    -
    120 
    -
    124  struct opj_compression {
    -
    125  OPJ_BOOL(* opj_start_compress)(void *p_codec,
    -
    126  struct opj_stream_private * cio,
    -
    127  struct opj_image * p_image,
    -
    128  struct opj_event_mgr * p_manager);
    -
    129 
    -
    130  OPJ_BOOL(* opj_encode)(void * p_codec,
    -
    131  struct opj_stream_private *p_cio,
    -
    132  struct opj_event_mgr * p_manager);
    -
    133 
    -
    134  OPJ_BOOL(* opj_write_tile)(void * p_codec,
    -
    135  OPJ_UINT32 p_tile_index,
    -
    136  OPJ_BYTE * p_data,
    -
    137  OPJ_UINT32 p_data_size,
    -
    138  struct opj_stream_private * p_cio,
    -
    139  struct opj_event_mgr * p_manager);
    -
    140 
    -
    141  OPJ_BOOL(* opj_end_compress)(void * p_codec,
    -
    142  struct opj_stream_private * p_cio,
    -
    143  struct opj_event_mgr * p_manager);
    -
    144 
    -
    145  void (* opj_destroy)(void * p_codec);
    -
    146 
    -
    147  OPJ_BOOL(* opj_setup_encoder)(void * p_codec,
    -
    148  opj_cparameters_t * p_param,
    -
    149  struct opj_image * p_image,
    -
    150  struct opj_event_mgr * p_manager);
    -
    151 
    - -
    153  const char* const* p_options,
    -
    154  struct opj_event_mgr * p_manager);
    -
    155 
    -
    156  } m_compression;
    -
    157  } m_codec_data;
    -
    159  void * m_codec;
    - - -
    164  void (*opj_dump_codec)(void * p_codec, OPJ_INT32 info_flag,
    -
    165  FILE* output_stream);
    -
    166  opj_codestream_info_v2_t* (*opj_get_codec_info)(void* p_codec);
    -
    167  opj_codestream_index_t* (*opj_get_codec_index)(void* p_codec);
    -
    168 
    -
    170  OPJ_BOOL(*opj_set_threads)(void * p_codec, OPJ_UINT32 num_threads);
    -
    171 }
    - -
    173 
    -
    174 
    -
    175 #endif /* OPJ_CODEC_H */
    -
    176 
    -
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    OPJ_BOOL(* opj_set_decode_area)(void *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_end_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_y, struct opj_event_mgr *p_manager)
    Set decode area function handler.
    Definition: opj_codec.h:94
    -
    struct opj_codec_private::@2::opj_decompression m_decompression
    -
    OPJ_BOOL(* opj_decode_tile_data)(void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    FIXME DOC.
    Definition: opj_codec.h:75
    -
    void(* opj_dump_codec)(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    Definition: opj_codec.h:164
    -
    OPJ_BOOL(* opj_read_tile_header)(void *p_codec, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    FIXME DOC.
    Definition: opj_codec.h:62
    -
    OPJ_BOOL(* opj_set_decoded_resolution_factor)(void *p_codec, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    Set the decoded resolution factor.
    Definition: opj_codec.h:110
    -
    OPJ_BOOL(* opj_end_decompress)(void *p_codec, struct opj_stream_private *cio, struct opj_event_mgr *p_manager)
    Reading function used after codestream if necessary.
    Definition: opj_codec.h:83
    -
    Message handler object used for.
    Definition: event.h:50
    -
    OPJ_BOOL(* opj_set_decoded_components)(void *p_codec, OPJ_UINT32 num_comps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    Set the decoded components.
    Definition: opj_codec.h:115
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    Compression parameters.
    Definition: openjpeg.h:387
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    OPJ_BOOL(* opj_set_threads)(void *p_codec, OPJ_UINT32 num_threads)
    Set number of threads.
    Definition: opj_codec.h:170
    -
    void(* opj_setup_decoder)(void *p_codec, opj_dparameters_t *p_param)
    Setup decoder function handler.
    Definition: opj_codec.h:91
    -
    Information structure about the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:956
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    struct opj_codec_private::@2::opj_compression m_compression
    -
    void * m_codec
    FIXME DOC.
    Definition: opj_codec.h:159
    -
    OPJ_BOOL(* opj_decode)(void *p_codec, struct opj_stream_private *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager)
    Decoding function.
    Definition: opj_codec.h:56
    -
    OPJ_BOOL(* opj_get_decoded_tile)(void *p_codec, opj_stream_private_t *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager, OPJ_UINT32 tile_index)
    Get tile function.
    Definition: opj_codec.h:103
    -
    OPJ_BOOL(* opj_read_header)(struct opj_stream_private *cio, void *p_codec, opj_image_t **p_image, struct opj_event_mgr *p_manager)
    Main header reading function handler.
    Definition: opj_codec.h:50
    -
    Main codec handler used for compression or decompression.
    Definition: opj_codec.h:42
    -
    OPJ_BOOL(* opj_encoder_set_extra_options)(void *p_codec, const char *const *p_options, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:152
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    OPJ_BOOL is_decompressor
    Flag to indicate if the codec is used to decode or encode.
    Definition: opj_codec.h:163
    -
    Decompression parameters.
    Definition: openjpeg.h:546
    -
    OPJ_BOOL(* opj_encode)(void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:130
    -
    union opj_codec_private::@2 m_codec_data
    FIXME DOC.
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    void(* opj_destroy)(void *p_codec)
    Codec destroy function handler.
    Definition: opj_codec.h:88
    -
    opj_event_mgr_t m_event_mgr
    Event handler.
    Definition: opj_codec.h:161
    -
    struct opj_codec_private opj_codec_private_t
    Main codec handler used for compression or decompression.
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    OPJ_BOOL(* opj_start_compress)(void *p_codec, struct opj_stream_private *cio, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:125
    -
    OPJ_BOOL(* opj_setup_encoder)(void *p_codec, opj_cparameters_t *p_param, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:147
    -
    OPJ_BOOL(* opj_write_tile)(void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:134
    -
    OPJ_BOOL(* opj_end_compress)(void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    Definition: opj_codec.h:141
    - - - - diff --git a/build/doc/html/opj__common_8h.html b/build/doc/html/opj__common_8h.html deleted file mode 100644 index b3bc8bebf..000000000 --- a/build/doc/html/opj__common_8h.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -OpenJPEG: opj_common.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    opj_common.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - -

    -Macros

    #define OPJ_COMMON_CBLK_DATA_EXTRA   2
     Margin for a fake FFFF marker. More...
     
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW   64
     
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH   64
     
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER   OPJ_LRCP
     
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION   6
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_COMMON_CBLK_DATA_EXTRA

    - -
    -
    - - - - -
    #define OPJ_COMMON_CBLK_DATA_EXTRA   2
    -
    - -

    Margin for a fake FFFF marker.

    - -
    -
    - -

    ◆ OPJ_COMP_PARAM_DEFAULT_CBLOCKH

    - -
    -
    - - - - -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH   64
    -
    - -
    -
    - -

    ◆ OPJ_COMP_PARAM_DEFAULT_CBLOCKW

    - -
    -
    - - - - -
    #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW   64
    -
    - -
    -
    - -

    ◆ OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION

    - -
    -
    - - - - -
    #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION   6
    -
    - -
    -
    - -

    ◆ OPJ_COMP_PARAM_DEFAULT_PROG_ORDER

    - -
    -
    - - - - -
    #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER   OPJ_LRCP
    -
    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__common_8h_source.html b/build/doc/html/opj__common_8h_source.html deleted file mode 100644 index d83951c25..000000000 --- a/build/doc/html/opj__common_8h_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -OpenJPEG: opj_common.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_common.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 #ifndef OPJ_COMMMON_H
    -
    32 #define OPJ_COMMMON_H
    -
    33 
    -
    34 /*
    -
    35  ==========================================================
    -
    36  Common constants shared among several modules
    -
    37  ==========================================================
    -
    38 */
    -
    39 #define OPJ_COMMON_CBLK_DATA_EXTRA 2
    -
    42 #define OPJ_COMP_PARAM_DEFAULT_CBLOCKW 64
    -
    43 #define OPJ_COMP_PARAM_DEFAULT_CBLOCKH 64
    -
    44 #define OPJ_COMP_PARAM_DEFAULT_PROG_ORDER OPJ_LRCP
    -
    45 #define OPJ_COMP_PARAM_DEFAULT_NUMRESOLUTION 6
    -
    46 
    -
    47 #endif /* OPJ_COMMMON_H */
    -
    - - - - diff --git a/build/doc/html/opj__includes_8h.html b/build/doc/html/opj__includes_8h.html deleted file mode 100644 index 3d93537ef..000000000 --- a/build/doc/html/opj__includes_8h.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - -OpenJPEG: opj_includes.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    opj_includes.h File Reference
    -
    -
    -
    #include "opj_config_private.h"
    -#include <memory.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <math.h>
    -#include <float.h>
    -#include <time.h>
    -#include <stdio.h>
    -#include <stdarg.h>
    -#include <ctype.h>
    -#include <assert.h>
    -#include <limits.h>
    -#include "openjpeg.h"
    -#include "opj_inttypes.h"
    -#include "opj_clock.h"
    -#include "opj_malloc.h"
    -#include "event.h"
    -#include "function_list.h"
    -#include "bio.h"
    -#include "cio.h"
    -#include "thread.h"
    -#include "tls_keys.h"
    -#include "image.h"
    -#include "invert.h"
    -#include "j2k.h"
    -#include "jp2.h"
    -#include "mqc.h"
    -#include "pi.h"
    -#include "tgt.h"
    -#include "tcd.h"
    -#include "t1.h"
    -#include "dwt.h"
    -#include "t2.h"
    -#include "mct.h"
    -#include "opj_intmath.h"
    -#include "sparse_array.h"
    -#include "openjpwl/jpwl.h"
    -#include "opj_codec.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - -

    -Macros

    #define OPJ_FSEEK(stream, offset, whence)   fseek(stream,offset,whence)
     
    #define OPJ_FSTAT(fildes, stat_buff)   fstat(fildes,stat_buff)
     
    #define OPJ_FTELL(stream)   ftell(stream)
     
    #define OPJ_STAT_STRUCT_T   struct stat
     
    #define OPJ_STAT(path, stat_buff)   stat(path,stat_buff)
     
    #define OPJ_RESTRICT   /* restrict */
     
    #define OPJ_NOSANITIZE(kind)
     
    #define OPJ_UNUSED(x)   (void)x
     
    - - - -

    -Typedefs

    typedef unsigned int OPJ_BITFIELD
     
    - - - -

    -Functions

    static INLINE long opj_lrintf (float f)
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_FSEEK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define OPJ_FSEEK( stream,
     offset,
     whence 
    )   fseek(stream,offset,whence)
    -
    - -
    -
    - -

    ◆ OPJ_FSTAT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_FSTAT( fildes,
     stat_buff 
    )   fstat(fildes,stat_buff)
    -
    - -
    -
    - -

    ◆ OPJ_FTELL

    - -
    -
    - - - - - - - - -
    #define OPJ_FTELL( stream)   ftell(stream)
    -
    - -
    -
    - -

    ◆ OPJ_NOSANITIZE

    - -
    -
    - - - - - - - - -
    #define OPJ_NOSANITIZE( kind)
    -
    - -
    -
    - -

    ◆ OPJ_RESTRICT

    - -
    -
    - - - - -
    #define OPJ_RESTRICT   /* restrict */
    -
    - -
    -
    - -

    ◆ OPJ_STAT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define OPJ_STAT( path,
     stat_buff 
    )   stat(path,stat_buff)
    -
    - -
    -
    - -

    ◆ OPJ_STAT_STRUCT_T

    - -
    -
    - - - - -
    #define OPJ_STAT_STRUCT_T   struct stat
    -
    - -
    -
    - -

    ◆ OPJ_UNUSED

    - -
    -
    - - - - - - - - -
    #define OPJ_UNUSED( x)   (void)x
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ OPJ_BITFIELD

    - -
    -
    - - - - -
    typedef unsigned int OPJ_BITFIELD
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_lrintf()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE long opj_lrintf (float f)
    -
    -static
    -
    - -

    Referenced by opj_tcd_dc_level_shift_decode().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__includes_8h_source.html b/build/doc/html/opj__includes_8h_source.html deleted file mode 100644 index 1dfb3999f..000000000 --- a/build/doc/html/opj__includes_8h_source.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - -OpenJPEG: opj_includes.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_includes.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    8  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    9  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    10  * All rights reserved.
    -
    11  *
    -
    12  * Redistribution and use in source and binary forms, with or without
    -
    13  * modification, are permitted provided that the following conditions
    -
    14  * are met:
    -
    15  * 1. Redistributions of source code must retain the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer.
    -
    17  * 2. Redistributions in binary form must reproduce the above copyright
    -
    18  * notice, this list of conditions and the following disclaimer in the
    -
    19  * documentation and/or other materials provided with the distribution.
    -
    20  *
    -
    21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    31  * POSSIBILITY OF SUCH DAMAGE.
    -
    32  */
    -
    33 #ifndef OPJ_INCLUDES_H
    -
    34 #define OPJ_INCLUDES_H
    -
    35 
    -
    36 /*
    -
    37  * This must be included before any system headers,
    -
    38  * since they can react to macro defined there
    -
    39  */
    -
    40 #include "opj_config_private.h"
    -
    41 
    -
    42 /*
    -
    43  ==========================================================
    -
    44  Standard includes used by the library
    -
    45  ==========================================================
    -
    46 */
    -
    47 #include <memory.h>
    -
    48 #include <stdlib.h>
    -
    49 #include <string.h>
    -
    50 #include <math.h>
    -
    51 #include <float.h>
    -
    52 #include <time.h>
    -
    53 #include <stdio.h>
    -
    54 #include <stdarg.h>
    -
    55 #include <ctype.h>
    -
    56 #include <assert.h>
    -
    57 #include <limits.h>
    -
    58 
    -
    59 /*
    -
    60  Use fseeko() and ftello() if they are available since they use
    -
    61  'off_t' rather than 'long'. It is wrong to use fseeko() and
    -
    62  ftello() only on systems with special LFS support since some systems
    -
    63  (e.g. FreeBSD) support a 64-bit off_t by default.
    -
    64 */
    -
    65 #if defined(OPJ_HAVE_FSEEKO) && !defined(fseek)
    -
    66 # define fseek fseeko
    -
    67 # define ftell ftello
    -
    68 #endif
    -
    69 
    -
    70 
    -
    71 #if defined(WIN32) && !defined(Windows95) && !defined(__BORLANDC__) && \
    -
    72  !(defined(_MSC_VER) && _MSC_VER < 1400) && \
    -
    73  !(defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x800)
    -
    74 /*
    -
    75  Windows '95 and Borland C do not support _lseeki64
    -
    76  Visual Studio does not support _fseeki64 and _ftelli64 until the 2005 release.
    -
    77  Without these interfaces, files over 2GB in size are not supported for Windows.
    -
    78 */
    -
    79 # define OPJ_FSEEK(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence)
    -
    80 # define OPJ_FSTAT(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff)
    -
    81 # define OPJ_FTELL(stream) /* __int64 */ _ftelli64(stream)
    -
    82 # define OPJ_STAT_STRUCT_T struct _stati64
    -
    83 # define OPJ_STAT(path,stat_buff) _stati64(path,/* struct _stati64 */ stat_buff)
    -
    84 #else
    -
    85 # define OPJ_FSEEK(stream,offset,whence) fseek(stream,offset,whence)
    -
    86 # define OPJ_FSTAT(fildes,stat_buff) fstat(fildes,stat_buff)
    -
    87 # define OPJ_FTELL(stream) ftell(stream)
    -
    88 # define OPJ_STAT_STRUCT_T struct stat
    -
    89 # define OPJ_STAT(path,stat_buff) stat(path,stat_buff)
    -
    90 #endif
    -
    91 
    -
    92 
    -
    93 /*
    -
    94  ==========================================================
    -
    95  OpenJPEG interface
    -
    96  ==========================================================
    -
    97  */
    -
    98 #include "openjpeg.h"
    -
    99 
    -
    100 /*
    -
    101  ==========================================================
    -
    102  OpenJPEG modules
    -
    103  ==========================================================
    -
    104 */
    -
    105 
    -
    106 /* Are restricted pointers available? (C99) */
    -
    107 #if (__STDC_VERSION__ >= 199901L)
    -
    108 #define OPJ_RESTRICT restrict
    -
    109 #else
    -
    110 /* Not a C99 compiler */
    -
    111 #if defined(__GNUC__)
    -
    112 #define OPJ_RESTRICT __restrict__
    -
    113 
    -
    114 /*
    -
    115  vc14 (2015) outputs wrong results.
    -
    116  Need to check OPJ_RESTRICT usage (or a bug in vc14)
    -
    117  #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
    -
    118  #define OPJ_RESTRICT __restrict
    -
    119 */
    -
    120 #else
    -
    121 #define OPJ_RESTRICT /* restrict */
    -
    122 #endif
    -
    123 #endif
    -
    124 
    -
    125 #ifdef __has_attribute
    -
    126 #if __has_attribute(no_sanitize)
    -
    127 #define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind)))
    -
    128 #endif
    -
    129 #endif
    -
    130 #ifndef OPJ_NOSANITIZE
    -
    131 #define OPJ_NOSANITIZE(kind)
    -
    132 #endif
    -
    133 
    -
    134 
    -
    135 /* MSVC before 2013 and Borland C do not have lrintf */
    -
    136 #if defined(_MSC_VER)
    -
    137 #include <intrin.h>
    -
    138 static INLINE long opj_lrintf(float f)
    -
    139 {
    -
    140 #ifdef _M_X64
    -
    141  return _mm_cvt_ss2si(_mm_load_ss(&f));
    -
    142 
    -
    143  /* commented out line breaks many tests */
    -
    144  /* return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f)); */
    -
    145 #elif defined(_M_IX86)
    -
    146  int i;
    -
    147  _asm{
    -
    148  fld f
    -
    149  fistp i
    -
    150  };
    -
    151 
    -
    152  return i;
    -
    153 #else
    -
    154  return (long)((f>0.0f) ? (f + 0.5f) : (f - 0.5f));
    -
    155 #endif
    -
    156 }
    -
    157 #elif defined(__BORLANDC__)
    -
    158 static INLINE long opj_lrintf(float f)
    -
    159 {
    -
    160 #ifdef _M_X64
    -
    161  return (long)((f > 0.0f) ? (f + 0.5f) : (f - 0.5f));
    -
    162 #else
    -
    163  int i;
    -
    164 
    -
    165  _asm {
    -
    166  fld f
    -
    167  fistp i
    -
    168  };
    -
    169 
    -
    170  return i;
    -
    171 #endif
    -
    172 }
    -
    173 #else
    -
    174 static INLINE long opj_lrintf(float f)
    -
    175 {
    -
    176  return lrintf(f);
    -
    177 }
    -
    178 #endif
    -
    179 
    -
    180 #if defined(_MSC_VER) && (_MSC_VER < 1400)
    -
    181 #define vsnprintf _vsnprintf
    -
    182 #endif
    -
    183 
    -
    184 /* MSVC x86 is really bad at doing int64 = int32 * int32 on its own. Use intrinsic. */
    -
    185 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    -
    186 # include <intrin.h>
    -
    187 # pragma intrinsic(__emul)
    -
    188 #endif
    -
    189 
    -
    190 /* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */
    -
    191 #if defined(_M_X64)
    -
    192 /* Intel 64bit support SSE and SSE2 */
    -
    193 # ifndef __SSE__
    -
    194 # define __SSE__ 1
    -
    195 # endif
    -
    196 # ifndef __SSE2__
    -
    197 # define __SSE2__ 1
    -
    198 # endif
    -
    199 #endif
    -
    200 
    -
    201 /* For x86, test the value of the _M_IX86_FP macro. */
    -
    202 /* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */
    -
    203 #if defined(_M_IX86_FP)
    -
    204 # if _M_IX86_FP >= 1
    -
    205 # ifndef __SSE__
    -
    206 # define __SSE__ 1
    -
    207 # endif
    -
    208 # endif
    -
    209 # if _M_IX86_FP >= 2
    -
    210 # ifndef __SSE2__
    -
    211 # define __SSE2__ 1
    -
    212 # endif
    -
    213 # endif
    -
    214 #endif
    -
    215 
    -
    216 /* Type to use for bit-fields in internal headers */
    -
    217 typedef unsigned int OPJ_BITFIELD;
    -
    218 
    -
    219 #define OPJ_UNUSED(x) (void)x
    -
    220 
    -
    221 #include "opj_inttypes.h"
    -
    222 #include "opj_clock.h"
    -
    223 #include "opj_malloc.h"
    -
    224 #include "event.h"
    -
    225 #include "function_list.h"
    -
    226 #include "bio.h"
    -
    227 #include "cio.h"
    -
    228 
    -
    229 #include "thread.h"
    -
    230 #include "tls_keys.h"
    -
    231 
    -
    232 #include "image.h"
    -
    233 #include "invert.h"
    -
    234 #include "j2k.h"
    -
    235 #include "jp2.h"
    -
    236 
    -
    237 #include "mqc.h"
    -
    238 #include "bio.h"
    -
    239 
    -
    240 #include "pi.h"
    -
    241 #include "tgt.h"
    -
    242 #include "tcd.h"
    -
    243 #include "t1.h"
    -
    244 #include "dwt.h"
    -
    245 #include "t2.h"
    -
    246 #include "mct.h"
    -
    247 #include "opj_intmath.h"
    -
    248 #include "sparse_array.h"
    -
    249 
    -
    250 #ifdef USE_JPIP
    -
    251 #include "cidx_manager.h"
    -
    252 #include "indexbox_manager.h"
    -
    253 #endif
    -
    254 
    -
    255 /* JPWL>> */
    -
    256 #ifdef USE_JPWL
    -
    257 #include "openjpwl/jpwl.h"
    -
    258 #endif /* USE_JPWL */
    -
    259 /* <<JPWL */
    -
    260 
    -
    261 /* V2 */
    -
    262 #include "opj_codec.h"
    -
    263 
    -
    264 
    -
    265 #endif /* OPJ_INCLUDES_H */
    -
    -
    Implementation of an MQ-Coder (MQC)
    -
    Implementation of a packet iterator (PI)
    -
    static INLINE long opj_lrintf(float f)
    Definition: opj_includes.h:174
    -
    Modification of jpip.c from 2KAN indexer.
    -
    Implementation of a discrete wavelet transform (DWT)
    -
    Implementation of an individual bit input-output (BIO)
    -
    The JPEG-2000 Codestream Reader/Writer (J2K)
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    The JPEG-2000 file format Reader/Writer (JP2)
    -
    Implementation of a multi-component transforms (MCT)
    - -
    Implementation of operations on images (IMAGE)
    -
    Implementation of a tier-2 coding (packetization of code-block data) (T2)
    -
    Implementation of a event callback system.
    - -
    Sparse array management.
    -
    Internal functions.
    -
    Modification of jpip.h from 2KAN indexer.
    - -
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    -
    Implementation of a tag-tree coder (TGT)
    -
    Implementation of the matrix inversion.
    -
    Implementation of a list of procedures.
    -
    Implementation of a byte input-output process (CIO)
    -
    Implementation of a tile coder/decoder (TCD)
    -
    Implementation of the tier-1 coding (coding of code-block coefficients) (T1)
    - -
    Internal function for timing.
    -
    Thread API.
    -
    Implementation of operations on integers (INT)
    - - - - diff --git a/build/doc/html/opj__intmath_8h.html b/build/doc/html/opj__intmath_8h.html deleted file mode 100644 index c222303d1..000000000 --- a/build/doc/html/opj__intmath_8h.html +++ /dev/null @@ -1,956 +0,0 @@ - - - - - - - -OpenJPEG: opj_intmath.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_intmath.h File Reference
    -
    -
    - -

    Implementation of operations on integers (INT) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions (see also openjpeg.h)
    static INLINE OPJ_INT32 opj_int_min (OPJ_INT32 a, OPJ_INT32 b)
     Get the minimum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_min (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the minimum of two integers. More...
     
    static INLINE OPJ_INT32 opj_int_max (OPJ_INT32 a, OPJ_INT32 b)
     Get the maximum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_max (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the maximum of two integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_adds (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the saturated sum of two unsigned integers. More...
     
    static INLINE OPJ_UINT32 opj_uint_subs (OPJ_UINT32 a, OPJ_UINT32 b)
     Get the saturated difference of two unsigned integers. More...
     
    static INLINE OPJ_INT32 opj_int_clamp (OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
     Clamp an integer inside an interval. More...
     
    static INLINE OPJ_INT64 opj_int64_clamp (OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
     Clamp an integer inside an interval. More...
     
    static INLINE OPJ_INT32 opj_int_abs (OPJ_INT32 a)
     
    static INLINE OPJ_INT32 opj_int_ceildiv (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer and round upwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_ceildiv (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int_ceildivpow2 (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int64_ceildivpow2 (OPJ_INT64 a, OPJ_INT32 b)
     Divide a 64bits integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2 (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer by a power of 2 and round upwards. More...
     
    static INLINE OPJ_INT32 opj_int_floordivpow2 (OPJ_INT32 a, OPJ_INT32 b)
     Divide an integer by a power of 2 and round downwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_floordivpow2 (OPJ_UINT32 a, OPJ_UINT32 b)
     Divide an integer by a power of 2 and round downwards. More...
     
    static INLINE OPJ_INT32 opj_int_floorlog2 (OPJ_INT32 a)
     Get logarithm of an integer and round downwards. More...
     
    static INLINE OPJ_UINT32 opj_uint_floorlog2 (OPJ_UINT32 a)
     Get logarithm of an integer and round downwards. More...
     
    static INLINE OPJ_INT32 opj_int_fix_mul (OPJ_INT32 a, OPJ_INT32 b)
     Multiply two fixed-precision rational numbers. More...
     
    static INLINE OPJ_INT32 opj_int_fix_mul_t1 (OPJ_INT32 a, OPJ_INT32 b)
     
    -

    Detailed Description

    -

    Implementation of operations on integers (INT)

    -

    The functions in OPJ_INTMATH.H have for goal to realize operations on integers.

    -

    Function Documentation

    - -

    ◆ opj_int64_ceildivpow2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int64_ceildivpow2 (OPJ_INT64 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Divide a 64bits integer by a power of 2 and round upwards.

    -
    Returns
    Returns a divided by 2^b
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_int64_clamp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT64 opj_int64_clamp (OPJ_INT64 a,
    OPJ_INT64 min,
    OPJ_INT64 max 
    )
    -
    -static
    -
    - -

    Clamp an integer inside an interval.

    -
    Returns
      -
    • -Returns a if (min < a < max)
    • -
    • -Returns max if (a > max)
    • -
    • -Returns min if (a < min)
    • -
    -
    - -

    References max(), and min().

    - -

    Referenced by opj_tcd_dc_level_shift_decode().

    - -
    -
    - -

    ◆ opj_int_abs()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_abs (OPJ_INT32 a)
    -
    -static
    -
    -
    Returns
    Get absolute value of integer
    - -

    Referenced by opj_t1_enc_clnpass(), opj_t1_enc_clnpass_step(), opj_t1_enc_refpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_int_ceildiv()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_ceildiv (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Divide an integer and round upwards.

    -
    Returns
    Returns a divided by b
    - -

    Referenced by opj_get_tile_dimensions(), opj_j2k_get_tile(), opj_j2k_read_siz(), opj_j2k_set_decode_area(), opj_j2k_setup_encoder(), opj_j2k_update_image_dimensions(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_int_ceildivpow2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_ceildivpow2 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Divide an integer by a power of 2 and round upwards.

    -
    Returns
    Returns a divided by 2^b
    - -

    Referenced by init_tilec(), opj_j2k_get_tile(), opj_j2k_update_image_dimensions(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_int_clamp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_clamp (OPJ_INT32 a,
    OPJ_INT32 min,
    OPJ_INT32 max 
    )
    -
    -static
    -
    - -

    Clamp an integer inside an interval.

    -
    Returns
      -
    • -Returns a if (min < a < max)
    • -
    • -Returns max if (a > max)
    • -
    • -Returns min if (a < min)
    • -
    -
    - -

    References max(), and min().

    - -

    Referenced by opj_tcd_dc_level_shift_decode().

    - -
    -
    - -

    ◆ opj_int_fix_mul()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_fix_mul (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Multiply two fixed-precision rational numbers.

    -
    Parameters
    - - - -
    a
    b
    -
    -
    -
    Returns
    Returns a * b
    - -

    Referenced by opj_dwt_encode_1_real(), opj_mct_encode_custom(), and opj_mct_encode_real().

    - -
    -
    - -

    ◆ opj_int_fix_mul_t1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_fix_mul_t1 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    References T1_NMSEDEC_FRACBITS.

    - -

    Referenced by opj_t1_encode_cblks().

    - -
    -
    - -

    ◆ opj_int_floordivpow2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_floordivpow2 (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Divide an integer by a power of 2 and round downwards.

    -
    Returns
    Returns a divided by 2^b
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_int_floorlog2()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_floorlog2 (OPJ_INT32 a)
    -
    -static
    -
    - -

    Get logarithm of an integer and round downwards.

    -
    Returns
    Returns log2(a)
    - -

    Referenced by opj_dwt_encode_stepsize(), opj_j2k_setup_encoder(), opj_t1_encode_cblk(), and opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_int_max()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_max (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Get the maximum of two integers.

    -
    Returns
    Returns a if a > b else b
    - -

    Referenced by main(), opj_j2k_update_rates(), opj_t1_encode_cblk(), opj_t2_encode_packet(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_int_min()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_INT32 opj_int_min (OPJ_INT32 a,
    OPJ_INT32 b 
    )
    -
    -static
    -
    - -

    Get the minimum of two integers.

    -
    Returns
    Returns a if a < b else b
    - -

    Referenced by opj_j2k_update_rates(), opj_j2k_write_poc_in_memory(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_v4dwt_decode(), t1_init_ctxno_sc(), and t1_init_spb().

    - -
    -
    - -

    ◆ opj_uint_adds()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_UINT32 opj_uint_adds (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    -
    -static
    -
    - -

    Get the saturated sum of two unsigned integers.

    -
    Returns
    Returns saturated sum of a+b
    - -

    Referenced by opj_dwt_segment_grow(), opj_get_all_encoding_parameters(), opj_get_encoding_parameters(), opj_image_comp_header_update(), opj_j2k_read_siz(), opj_tcd_init_tile(), and opj_tcd_is_subband_area_of_interest().

    - -
    -
    - -

    ◆ opj_uint_ceildiv()

    - - - -

    ◆ opj_uint_ceildivpow2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2 (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_uint_floordivpow2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_UINT32 opj_uint_floordivpow2 (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    -
    -static
    -
    - -

    Divide an integer by a power of 2 and round downwards.

    -
    Returns
    Returns a divided by 2^b
    - -

    Referenced by opj_get_all_encoding_parameters(), opj_get_encoding_parameters(), opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ opj_uint_floorlog2()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_UINT32 opj_uint_floorlog2 (OPJ_UINT32 a)
    -
    -static
    -
    - -

    Get logarithm of an integer and round downwards.

    -
    Returns
    Returns log2(a)
    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_uint_max()

    - - - -

    ◆ opj_uint_min()

    - - - -

    ◆ opj_uint_subs()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_UINT32 opj_uint_subs (OPJ_UINT32 a,
    OPJ_UINT32 b 
    )
    -
    -static
    -
    - -

    Get the saturated difference of two unsigned integers.

    -
    Returns
    Returns saturated sum of a-b
    - -

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_segment_grow().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/opj__intmath_8h_source.html b/build/doc/html/opj__intmath_8h_source.html deleted file mode 100644 index 762a302cd..000000000 --- a/build/doc/html/opj__intmath_8h_source.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - -OpenJPEG: opj_intmath.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_intmath.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * All rights reserved.
    -
    15  *
    -
    16  * Redistribution and use in source and binary forms, with or without
    -
    17  * modification, are permitted provided that the following conditions
    -
    18  * are met:
    -
    19  * 1. Redistributions of source code must retain the above copyright
    -
    20  * notice, this list of conditions and the following disclaimer.
    -
    21  * 2. Redistributions in binary form must reproduce the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer in the
    -
    23  * documentation and/or other materials provided with the distribution.
    -
    24  *
    -
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    35  * POSSIBILITY OF SUCH DAMAGE.
    -
    36  */
    -
    37 #ifndef OPJ_INTMATH_H
    -
    38 #define OPJ_INTMATH_H
    -
    39 
    -
    48 
    -
    51 /* ----------------------------------------------------------------------- */
    - -
    57 {
    -
    58  return a < b ? a : b;
    -
    59 }
    -
    60 
    - -
    66 {
    -
    67  return a < b ? a : b;
    -
    68 }
    -
    69 
    - -
    75 {
    -
    76  return (a > b) ? a : b;
    -
    77 }
    -
    78 
    - -
    84 {
    -
    85  return (a > b) ? a : b;
    -
    86 }
    -
    87 
    - -
    93 {
    -
    94  OPJ_UINT64 sum = (OPJ_UINT64)a + (OPJ_UINT64)b;
    -
    95  return (OPJ_UINT32)(-(OPJ_INT32)(sum >> 32)) | (OPJ_UINT32)sum;
    -
    96 }
    -
    97 
    - -
    103 {
    -
    104  return (a >= b) ? a - b : 0;
    -
    105 }
    -
    106 
    - -
    117  OPJ_INT32 max)
    -
    118 {
    -
    119  if (a < min) {
    -
    120  return min;
    -
    121  }
    -
    122  if (a > max) {
    -
    123  return max;
    -
    124  }
    -
    125  return a;
    -
    126 }
    -
    127 
    - -
    138  OPJ_INT64 max)
    -
    139 {
    -
    140  if (a < min) {
    -
    141  return min;
    -
    142  }
    -
    143  if (a > max) {
    -
    144  return max;
    -
    145  }
    -
    146  return a;
    -
    147 }
    -
    148 
    - -
    153 {
    -
    154  return a < 0 ? -a : a;
    -
    155 }
    - -
    161 {
    -
    162  assert(b);
    -
    163  return (OPJ_INT32)(((OPJ_INT64)a + b - 1) / b);
    -
    164 }
    -
    165 
    - -
    171 {
    -
    172  assert(b);
    -
    173  return (OPJ_UINT32)(((OPJ_UINT64)a + b - 1) / b);
    -
    174 }
    -
    175 
    - -
    181 {
    -
    182  return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
    -
    183 }
    -
    184 
    - -
    190 {
    -
    191  return (OPJ_INT32)((a + ((OPJ_INT64)1 << b) - 1) >> b);
    -
    192 }
    -
    193 
    - -
    199 {
    -
    200  return (OPJ_UINT32)((a + ((OPJ_UINT64)1U << b) - 1U) >> b);
    -
    201 }
    -
    202 
    - -
    208 {
    -
    209  return a >> b;
    -
    210 }
    -
    211 
    - -
    217 {
    -
    218  return a >> b;
    -
    219 }
    -
    220 
    - -
    226 {
    -
    227  OPJ_INT32 l;
    -
    228  for (l = 0; a > 1; l++) {
    -
    229  a >>= 1;
    -
    230  }
    -
    231  return l;
    -
    232 }
    - -
    238 {
    -
    239  OPJ_UINT32 l;
    -
    240  for (l = 0; a > 1; ++l) {
    -
    241  a >>= 1;
    -
    242  }
    -
    243  return l;
    -
    244 }
    -
    245 
    - -
    253 {
    -
    254 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    -
    255  OPJ_INT64 temp = __emul(a, b);
    -
    256 #else
    -
    257  OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
    -
    258 #endif
    -
    259  temp += 4096;
    -
    260  assert((temp >> 13) <= (OPJ_INT64)0x7FFFFFFF);
    -
    261  assert((temp >> 13) >= (-(OPJ_INT64)0x7FFFFFFF - (OPJ_INT64)1));
    -
    262  return (OPJ_INT32)(temp >> 13);
    -
    263 }
    -
    264 
    - -
    266 {
    -
    267 #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
    -
    268  OPJ_INT64 temp = __emul(a, b);
    -
    269 #else
    -
    270  OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
    -
    271 #endif
    -
    272  temp += 4096;
    -
    273  assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) <= (OPJ_INT64)0x7FFFFFFF);
    -
    274  assert((temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) >= (-(OPJ_INT64)0x7FFFFFFF -
    -
    275  (OPJ_INT64)1));
    -
    276  return (OPJ_INT32)(temp >> (13 + 11 - T1_NMSEDEC_FRACBITS)) ;
    -
    277 }
    -
    278 
    -
    279 /* ----------------------------------------------------------------------- */
    -
    283 
    -
    284 #endif /* OPJ_INTMATH_H */
    -
    -
    static INLINE OPJ_INT32 opj_int64_ceildivpow2(OPJ_INT64 a, OPJ_INT32 b)
    Divide a 64bits integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:189
    -
    static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a)
    Definition: opj_intmath.h:152
    -
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    -
    static INLINE OPJ_UINT32 opj_uint_floordivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:216
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b)
    Multiply two fixed-precision rational numbers.
    Definition: opj_intmath.h:252
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    static INLINE OPJ_INT32 opj_int_fix_mul_t1(OPJ_INT32 a, OPJ_INT32 b)
    Definition: opj_intmath.h:265
    -
    uint64_t OPJ_UINT64
    Definition: openjpeg.h:128
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    static INLINE OPJ_UINT32 opj_uint_floorlog2(OPJ_UINT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:237
    -
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    -
    static INLINE OPJ_INT64 opj_int64_clamp(OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:137
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    static INLINE OPJ_UINT32 opj_uint_subs(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated difference of two unsigned integers.
    Definition: opj_intmath.h:102
    -
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    -
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:116
    -
    static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:207
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    - - - - diff --git a/build/doc/html/opj__inttypes_8h.html b/build/doc/html/opj__inttypes_8h.html deleted file mode 100644 index 69291ef5e..000000000 --- a/build/doc/html/opj__inttypes_8h.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - -OpenJPEG: opj_inttypes.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_inttypes.h File Reference
    -
    -
    -
    #include "opj_config_private.h"
    -
    -

    Go to the source code of this file.

    -
    - - - - diff --git a/build/doc/html/opj__inttypes_8h_source.html b/build/doc/html/opj__inttypes_8h_source.html deleted file mode 100644 index 4c8aaee28..000000000 --- a/build/doc/html/opj__inttypes_8h_source.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -OpenJPEG: opj_inttypes.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_inttypes.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2012, Mathieu Malaterre <mathieu.malaterre@gmail.com>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 #ifndef OPJ_INTTYPES_H
    -
    32 #define OPJ_INTTYPES_H
    -
    33 
    -
    34 #include "opj_config_private.h"
    -
    35 #ifdef OPJ_HAVE_INTTYPES_H
    -
    36 #include <inttypes.h>
    -
    37 #else
    -
    38 #if defined(_WIN32)
    -
    39 #define PRId64 "I64d"
    -
    40 #define PRIi64 "I64i"
    -
    41 #define PRIu64 "I64u"
    -
    42 #define PRIx64 "I64x"
    -
    43 #else
    -
    44 #error unsupported platform
    -
    45 #endif
    -
    46 #endif
    -
    47 
    -
    48 #endif /* OPJ_INTTYPES_H */
    -
    - - - - diff --git a/build/doc/html/opj__malloc_8c.html b/build/doc/html/opj__malloc_8c.html deleted file mode 100644 index 9240585f7..000000000 --- a/build/doc/html/opj__malloc_8c.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - - - - -OpenJPEG: opj_malloc.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    opj_malloc.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Macros

    #define OPJ_SKIP_POISON
     
    #define SIZE_MAX   ((size_t) -1)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    static INLINE void * opj_aligned_alloc_n (size_t alignment, size_t size)
     
    static INLINE void * opj_aligned_realloc_n (void *ptr, size_t alignment, size_t new_size)
     
    void * opj_malloc (size_t size)
     Allocate an uninitialized memory block. More...
     
    void * opj_calloc (size_t num, size_t size)
     Allocate a memory block with elements initialized to 0. More...
     
    void * opj_aligned_malloc (size_t size)
     Allocate memory aligned to a 16 byte boundary. More...
     
    void * opj_aligned_realloc (void *ptr, size_t size)
     
    void * opj_aligned_32_malloc (size_t size)
     Allocate memory aligned to a 32 byte boundary. More...
     
    void * opj_aligned_32_realloc (void *ptr, size_t size)
     
    void opj_aligned_free (void *ptr)
     
    void * opj_realloc (void *ptr, size_t new_size)
     Reallocate memory blocks. More...
     
    void opj_free (void *ptr)
     Deallocates or frees a memory block. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_SKIP_POISON

    - -
    -
    - - - - -
    #define OPJ_SKIP_POISON
    -
    - -
    -
    - -

    ◆ SIZE_MAX

    - -
    -
    - - - - -
    #define SIZE_MAX   ((size_t) -1)
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_aligned_32_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_aligned_32_malloc (size_t size)
    -
    - -

    Allocate memory aligned to a 32 byte boundary.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    References opj_aligned_alloc_n().

    - -

    Referenced by opj_dwt_decode_partial_tile(), and opj_dwt_decode_tile().

    - -
    -
    - -

    ◆ opj_aligned_32_realloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_aligned_32_realloc (void * ptr,
    size_t size 
    )
    -
    - -

    References opj_aligned_realloc_n().

    - -
    -
    - -

    ◆ opj_aligned_alloc_n()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE void* opj_aligned_alloc_n (size_t alignment,
    size_t size 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_aligned_free()

    - - - -

    ◆ opj_aligned_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_aligned_malloc (size_t size)
    -
    - -

    Allocate memory aligned to a 16 byte boundary.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    References opj_aligned_alloc_n().

    - -

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), opj_image_data_alloc(), opj_t1_allocate_buffers(), and opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_aligned_realloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_aligned_realloc (void * ptr,
    size_t size 
    )
    -
    - -

    References opj_aligned_realloc_n().

    - -
    -
    - -

    ◆ opj_aligned_realloc_n()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void* opj_aligned_realloc_n (void * ptr,
    size_t alignment,
    size_t new_size 
    )
    -
    -static
    -
    - -

    References opj_aligned_alloc_n(), and SIZE_MAX.

    - -

    Referenced by opj_aligned_32_realloc(), and opj_aligned_realloc().

    - -
    -
    - -

    ◆ opj_calloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_calloc (size_t numOfElements,
    size_t sizeOfElements 
    )
    -
    - -

    Allocate a memory block with elements initialized to 0.

    -
    Parameters
    - - - -
    numOfElementsBlocks to allocate
    sizeOfElementsBytes per block to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    Referenced by gene_cachemodel(), init_jpipdecoder(), init_tilec(), j2k_get_cstr_index(), j2k_get_cstr_info(), opj_create_compress(), opj_create_decompress(), opj_image_create(), opj_image_create0(), opj_image_tile_create(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_check_poc_val(), opj_j2k_create_compress(), opj_j2k_create_cstr_index(), opj_j2k_create_decompress(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_siz(), opj_j2k_read_sot(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_jp2_check_color(), opj_jp2_create(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_write_bpcc(), opj_jp2_write_colr(), opj_jp2_write_ftyp(), opj_jp2_write_ihdr(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_procedure_list_create(), opj_sparse_array_int32_create(), opj_sparse_array_int32_read_or_write(), opj_stream_create(), opj_t1_create(), opj_t1_decode_cblks(), opj_t2_create(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), opj_tcd_init(), opj_tcd_marker_info_create(), opj_tgt_create(), opj_thread_pool_create(), opj_thread_pool_setup(), opj_tls_new(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), and parse_comps().

    - -
    -
    - -

    ◆ opj_free()

    - -
    -
    - - - - - - - - -
    void opj_free (void * m)
    -
    - -

    Deallocates or frees a memory block.

    -
    Parameters
    - - -
    mPreviously allocated memory block to be freed
    -
    -
    - -

    Referenced by add_body_stream(), add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), check_JP2boxidx(), delete_auxresponse(), delete_cachemodel(), delete_cachemodellist(), delete_channel(), delete_channellist(), delete_COD(), delete_index(), delete_message_in_msgqueue(), delete_msgqueue(), delete_query(), delete_session(), delete_sessionlist(), delete_target(), delete_targetlist(), destroy_jpipdecoder(), fread_jpip(), free_tilec(), get_index_from_JP2file(), get_SIZ_from_jpipstream(), handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_JPIPstreamMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), identify_cid(), j2k_destroy_cstr_index(), j2k_get_cstr_index(), jpipstream_to_pnm(), open_jp2file(), opj_bio_destroy(), opj_copy_image_header(), opj_create_compress(), opj_create_decompress(), opj_destroy_codec(), opj_destroy_cstr_info(), opj_dwt_decode_h_func(), opj_dwt_decode_tile(), opj_dwt_decode_v_func(), opj_dwt_encode_procedure(), opj_image_destroy(), opj_j2k_add_mct(), opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_check_poc_val(), opj_j2k_cp_destroy(), opj_j2k_create_cstr_index(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_encode(), opj_j2k_end_encoding(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_tile_header(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_tcp_data_destroy(), opj_j2k_tcp_destroy(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_destroy(), opj_jp2_free_pclr(), opj_jp2_read_cdef(), opj_jp2_read_header_procedure(), opj_jp2_read_pclr(), opj_jp2_write_ftyp(), opj_jp2_write_jp2h(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_procedure_list_add_procedure(), opj_procedure_list_create(), opj_procedure_list_destroy(), opj_sparse_array_int32_create(), opj_sparse_array_int32_free(), opj_stream_create(), opj_stream_destroy(), opj_t1_clbl_decode_processor(), opj_t1_destroy(), opj_t2_decode_packets(), opj_t2_destroy(), opj_tcd_code_block_dec_deallocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_code_block_enc_deallocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_destroy(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_marker_info_destroy(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tgt_create(), opj_tgt_destroy(), opj_thread_pool_create(), opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), opj_tls_destroy(), opj_worker_thread_function(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), parse_jp2file(), recons_jp2(), recv_ack(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), set_tpixdata(), terminate_dec_server(), and update_JPIPstream().

    - -
    -
    - -

    ◆ opj_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_malloc (size_t size)
    -
    - -

    Allocate an uninitialized memory block.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    Referenced by add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), enqueue_mainheader(), enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), fread_jpip(), gene_auxresponse(), gene_cachemodel(), gene_cachemodellist(), gene_channel(), gene_channellist(), gene_emptytilestream(), gene_metamsg(), gene_msgqueue(), gene_msgstream(), gene_session(), gene_sessionlist(), gene_target(), gene_targetlist(), get_CODmkrdata_from_j2kstream(), get_index_from_JP2file(), get_initquery(), get_SIZ_from_jpipstream(), handle_XMLreqMSG(), init_dec_server(), init_tilec(), j2k_get_cstr_index(), open_jp2file(), opj_bio_create(), opj_copy_image_header(), opj_dwt_decode_tile(), opj_dwt_encode_procedure(), opj_j2k_add_mct(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_compress(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cod(), opj_j2k_read_mct(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_sod(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_update_rates(), opj_j2k_write_sod(), opj_jp2_apply_pclr(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_cdef(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_set_MCT(), opj_stream_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tcd_rateallocate(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), parse_jp2file(), parse_JPIPstream(), parse_phld(), set_CODmkrdata(), set_ppixdata(), set_thixdata(), and update_JPIPstream().

    - -
    -
    - -

    ◆ opj_realloc()

    - - -
    - - - - diff --git a/build/doc/html/opj__malloc_8h.html b/build/doc/html/opj__malloc_8h.html deleted file mode 100644 index 13932217c..000000000 --- a/build/doc/html/opj__malloc_8h.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - - - - -OpenJPEG: opj_malloc.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_malloc.h File Reference
    -
    -
    - -

    Internal functions. -More...

    -
    #include <stddef.h>
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    void * opj_malloc (size_t size)
     Allocate an uninitialized memory block. More...
     
    void * opj_calloc (size_t numOfElements, size_t sizeOfElements)
     Allocate a memory block with elements initialized to 0. More...
     
    void * opj_aligned_malloc (size_t size)
     Allocate memory aligned to a 16 byte boundary. More...
     
    void * opj_aligned_realloc (void *ptr, size_t size)
     
    void opj_aligned_free (void *ptr)
     
    void * opj_aligned_32_malloc (size_t size)
     Allocate memory aligned to a 32 byte boundary. More...
     
    void * opj_aligned_32_realloc (void *ptr, size_t size)
     
    void * opj_realloc (void *m, size_t s)
     Reallocate memory blocks. More...
     
    void opj_free (void *m)
     Deallocates or frees a memory block. More...
     
    -

    Detailed Description

    -

    Internal functions.

    -

    The functions in opj_malloc.h are internal utilities used for memory management.

    -

    Function Documentation

    - -

    ◆ opj_aligned_32_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_aligned_32_malloc (size_t size)
    -
    - -

    Allocate memory aligned to a 32 byte boundary.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    References opj_aligned_alloc_n().

    - -

    Referenced by opj_dwt_decode_partial_tile(), and opj_dwt_decode_tile().

    - -
    -
    - -

    ◆ opj_aligned_32_realloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_aligned_32_realloc (void * ptr,
    size_t size 
    )
    -
    - -

    References opj_aligned_realloc_n().

    - -
    -
    - -

    ◆ opj_aligned_free()

    - - - -

    ◆ opj_aligned_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_aligned_malloc (size_t size)
    -
    - -

    Allocate memory aligned to a 16 byte boundary.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    References opj_aligned_alloc_n().

    - -

    Referenced by opj_dwt_decode_partial_97(), opj_dwt_decode_tile_97(), opj_image_data_alloc(), opj_t1_allocate_buffers(), and opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_aligned_realloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_aligned_realloc (void * ptr,
    size_t size 
    )
    -
    - -

    References opj_aligned_realloc_n().

    - -
    -
    - -

    ◆ opj_calloc()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_calloc (size_t numOfElements,
    size_t sizeOfElements 
    )
    -
    - -

    Allocate a memory block with elements initialized to 0.

    -
    Parameters
    - - - -
    numOfElementsBlocks to allocate
    sizeOfElementsBytes per block to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    Referenced by gene_cachemodel(), init_jpipdecoder(), init_tilec(), j2k_get_cstr_index(), j2k_get_cstr_info(), opj_create_compress(), opj_create_decompress(), opj_image_create(), opj_image_create0(), opj_image_tile_create(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_check_poc_val(), opj_j2k_create_compress(), opj_j2k_create_cstr_index(), opj_j2k_create_decompress(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_siz(), opj_j2k_read_sot(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_jp2_check_color(), opj_jp2_create(), opj_jp2_read_colr(), opj_jp2_read_ftyp(), opj_jp2_read_header_procedure(), opj_jp2_read_ihdr(), opj_jp2_write_bpcc(), opj_jp2_write_colr(), opj_jp2_write_ftyp(), opj_jp2_write_ihdr(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_procedure_list_create(), opj_sparse_array_int32_create(), opj_sparse_array_int32_read_or_write(), opj_stream_create(), opj_t1_create(), opj_t1_decode_cblks(), opj_t2_create(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), opj_tcd_init(), opj_tcd_marker_info_create(), opj_tgt_create(), opj_thread_pool_create(), opj_thread_pool_setup(), opj_tls_new(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), and parse_comps().

    - -
    -
    - -

    ◆ opj_free()

    - -
    -
    - - - - - - - - -
    void opj_free (void * m)
    -
    - -

    Deallocates or frees a memory block.

    -
    Parameters
    - - -
    mPreviously allocated memory block to be freed
    -
    -
    - -

    Referenced by add_body_stream(), add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), check_JP2boxidx(), delete_auxresponse(), delete_cachemodel(), delete_cachemodellist(), delete_channel(), delete_channellist(), delete_COD(), delete_index(), delete_message_in_msgqueue(), delete_msgqueue(), delete_query(), delete_session(), delete_sessionlist(), delete_target(), delete_targetlist(), destroy_jpipdecoder(), fread_jpip(), free_tilec(), get_index_from_JP2file(), get_SIZ_from_jpipstream(), handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_JPIPstreamMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), identify_cid(), j2k_destroy_cstr_index(), j2k_get_cstr_index(), jpipstream_to_pnm(), open_jp2file(), opj_bio_destroy(), opj_copy_image_header(), opj_create_compress(), opj_create_decompress(), opj_destroy_codec(), opj_destroy_cstr_info(), opj_dwt_decode_h_func(), opj_dwt_decode_tile(), opj_dwt_decode_v_func(), opj_dwt_encode_procedure(), opj_image_destroy(), opj_j2k_add_mct(), opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_check_poc_val(), opj_j2k_cp_destroy(), opj_j2k_create_cstr_index(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_encode(), opj_j2k_end_encoding(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_tile_header(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_tcp_data_destroy(), opj_j2k_tcp_destroy(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_siz(), opj_j2k_write_sod(), opj_j2k_write_tlm(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_destroy(), opj_jp2_free_pclr(), opj_jp2_read_cdef(), opj_jp2_read_header_procedure(), opj_jp2_read_pclr(), opj_jp2_write_ftyp(), opj_jp2_write_jp2h(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_procedure_list_add_procedure(), opj_procedure_list_create(), opj_procedure_list_destroy(), opj_sparse_array_int32_create(), opj_sparse_array_int32_free(), opj_stream_create(), opj_stream_destroy(), opj_t1_clbl_decode_processor(), opj_t1_destroy(), opj_t2_decode_packets(), opj_t2_destroy(), opj_tcd_code_block_dec_deallocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_code_block_enc_deallocate(), opj_tcd_create(), opj_tcd_decode_tile(), opj_tcd_destroy(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_marker_info_destroy(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tgt_create(), opj_tgt_destroy(), opj_thread_pool_create(), opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), opj_tls_destroy(), opj_worker_thread_function(), opj_write_cidx(), opj_write_phix(), opj_write_ppix(), opj_write_thix(), parse_jp2file(), recons_jp2(), recv_ack(), set_cidxdata(), set_cptrdata(), set_mainmhixdata(), set_ppixdata(), set_thixdata(), set_tpixdata(), terminate_dec_server(), and update_JPIPstream().

    - -
    -
    - -

    ◆ opj_malloc()

    - -
    -
    - - - - - - - - -
    void* opj_malloc (size_t size)
    -
    - -

    Allocate an uninitialized memory block.

    -
    Parameters
    - - -
    sizeBytes to allocate
    -
    -
    -
    Returns
    Returns a void pointer to the allocated space, or NULL if there is insufficient memory available
    - -

    Referenced by add_emptyboxstream(), add_emptytilestream(), add_EOC(), add_msgstream(), add_padding(), add_SOTmkr(), aux_streaming(), enqueue_mainheader(), enqueue_precinct(), enqueue_tile(), enqueue_tileheader(), fread_jpip(), gene_auxresponse(), gene_cachemodel(), gene_cachemodellist(), gene_channel(), gene_channellist(), gene_emptytilestream(), gene_metamsg(), gene_msgqueue(), gene_msgstream(), gene_session(), gene_sessionlist(), gene_target(), gene_targetlist(), get_CODmkrdata_from_j2kstream(), get_index_from_JP2file(), get_initquery(), get_SIZ_from_jpipstream(), handle_XMLreqMSG(), init_dec_server(), init_tilec(), j2k_get_cstr_index(), open_jp2file(), opj_bio_create(), opj_copy_image_header(), opj_dwt_decode_tile(), opj_dwt_encode_procedure(), opj_j2k_add_mct(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_compress(), opj_j2k_merge_ppm(), opj_j2k_merge_ppt(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cod(), opj_j2k_read_mct(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_sod(), opj_j2k_set_decoded_components(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_update_rates(), opj_j2k_write_sod(), opj_jp2_apply_pclr(), opj_jp2_read_cdef(), opj_jp2_read_cmap(), opj_jp2_read_colr(), opj_jp2_read_pclr(), opj_jp2_setup_encoder(), opj_jp2_write_cdef(), opj_matrix_inversion_f(), opj_mct_decode_custom(), opj_mct_encode_custom(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_set_MCT(), opj_stream_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_decode_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), opj_tcd_mct_encode(), opj_tcd_rateallocate(), opj_thread_pool_get_next_job(), opj_thread_pool_submit_job(), parse_jp2file(), parse_JPIPstream(), parse_phld(), set_CODmkrdata(), set_ppixdata(), set_thixdata(), and update_JPIPstream().

    - -
    -
    - -

    ◆ opj_realloc()

    - - -
    - - - - diff --git a/build/doc/html/opj__malloc_8h_source.html b/build/doc/html/opj__malloc_8h_source.html deleted file mode 100644 index 88e49b4da..000000000 --- a/build/doc/html/opj__malloc_8h_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: opj_malloc.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_malloc.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    8  * Copyright (c) 2007, Callum Lerwick <seg@haxxed.com>
    -
    9  * All rights reserved.
    -
    10  *
    -
    11  * Redistribution and use in source and binary forms, with or without
    -
    12  * modification, are permitted provided that the following conditions
    -
    13  * are met:
    -
    14  * 1. Redistributions of source code must retain the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer.
    -
    16  * 2. Redistributions in binary form must reproduce the above copyright
    -
    17  * notice, this list of conditions and the following disclaimer in the
    -
    18  * documentation and/or other materials provided with the distribution.
    -
    19  *
    -
    20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    30  * POSSIBILITY OF SUCH DAMAGE.
    -
    31  */
    -
    32 #ifndef OPJ_MALLOC_H
    -
    33 #define OPJ_MALLOC_H
    -
    34 
    -
    35 #include <stddef.h>
    -
    45 
    -
    48 /* ----------------------------------------------------------------------- */
    -
    49 
    -
    55 void * opj_malloc(size_t size);
    -
    56 
    -
    63 void * opj_calloc(size_t numOfElements, size_t sizeOfElements);
    -
    64 
    -
    70 void * opj_aligned_malloc(size_t size);
    -
    71 void * opj_aligned_realloc(void *ptr, size_t size);
    -
    72 void opj_aligned_free(void* ptr);
    -
    73 
    -
    79 void * opj_aligned_32_malloc(size_t size);
    -
    80 void * opj_aligned_32_realloc(void *ptr, size_t size);
    -
    81 
    -
    88 void * opj_realloc(void * m, size_t s);
    -
    89 
    -
    94 void opj_free(void * m);
    -
    95 
    -
    96 #if defined(__GNUC__) && !defined(OPJ_SKIP_POISON)
    -
    97 #pragma GCC poison malloc calloc realloc free
    -
    98 #endif
    -
    99 
    -
    100 /* ----------------------------------------------------------------------- */
    -
    104 
    -
    105 #endif /* OPJ_MALLOC_H */
    -
    106 
    -
    -
    void opj_free(void *m)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    -
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    void * opj_aligned_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:211
    -
    uint8_t OPJ_UINT8
    Definition: openjpeg.h:122
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    void * opj_aligned_32_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:220
    -
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    - -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void * opj_aligned_32_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:220
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void * opj_calloc(size_t numOfElements, size_t sizeOfElements)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    static INLINE void * opj_aligned_realloc_n(void *ptr, size_t alignment, size_t new_size)
    Definition: opj_malloc.c:107
    -
    void * opj_aligned_32_malloc(size_t size)
    Allocate memory aligned to a 32 byte boundary.
    Definition: opj_malloc.c:216
    -
    void * opj_aligned_realloc(void *ptr, size_t size)
    Definition: opj_malloc.c:211
    -
    static INLINE void * opj_aligned_alloc_n(size_t alignment, size_t size)
    Definition: opj_malloc.c:43
    -
    void * opj_realloc(void *m, size_t s)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    - - - - diff --git a/build/doc/html/opj__stdint_8h.html b/build/doc/html/opj__stdint_8h.html deleted file mode 100644 index 61c5b6a9b..000000000 --- a/build/doc/html/opj__stdint_8h.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - -OpenJPEG: opj_stdint.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_stdint.h File Reference
    -
    -
    -
    #include "opj_config.h"
    -
    -

    Go to the source code of this file.

    -
    - - - - diff --git a/build/doc/html/opj__stdint_8h_source.html b/build/doc/html/opj__stdint_8h_source.html deleted file mode 100644 index 805f34d88..000000000 --- a/build/doc/html/opj__stdint_8h_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -OpenJPEG: opj_stdint.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    opj_stdint.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2012, Mathieu Malaterre <mathieu.malaterre@gmail.com>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 #ifndef OPJ_STDINT_H
    -
    32 #define OPJ_STDINT_H
    -
    33 
    -
    34 #include "opj_config.h"
    -
    35 #ifdef OPJ_HAVE_STDINT_H
    -
    36 #include <stdint.h>
    -
    37 #else
    -
    38 #if defined(_WIN32)
    -
    39 typedef signed __int8 int8_t;
    -
    40 typedef unsigned __int8 uint8_t;
    -
    41 typedef signed __int16 int16_t;
    -
    42 typedef unsigned __int16 uint16_t;
    -
    43 typedef signed __int32 int32_t;
    -
    44 typedef unsigned __int32 uint32_t;
    -
    45 typedef signed __int64 int64_t;
    -
    46 typedef unsigned __int64 uint64_t;
    -
    47 #else
    -
    48 #error unsupported platform
    -
    49 #endif
    -
    50 #endif
    -
    51 
    -
    52 #endif /* OPJ_STDINT_H */
    -
    - - - - diff --git a/build/doc/html/pages.html b/build/doc/html/pages.html deleted file mode 100644 index 9560ce910..000000000 --- a/build/doc/html/pages.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - -OpenJPEG: Related Pages - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    -
    -
    Related Pages
    -
    -
    -
    Here is a list of all related documentation pages:
    -
    - - - - diff --git a/build/doc/html/phix__manager_8c.html b/build/doc/html/phix__manager_8c.html deleted file mode 100644 index eeb9066a3..000000000 --- a/build/doc/html/phix__manager_8c.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -OpenJPEG: phix_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    phix_manager.c File Reference
    -
    -
    - -

    Modification of jpip.c from 2KAN indexer. -More...

    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Functions

    int opj_write_phix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_phixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.c from 2KAN indexer.

    -

    Function Documentation

    - -

    ◆ opj_write_phix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_phix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_phixfaix()

    - - -
    - - - - diff --git a/build/doc/html/pi_8c.html b/build/doc/html/pi_8c.html deleted file mode 100644 index bacc8b396..000000000 --- a/build/doc/html/pi_8c.html +++ /dev/null @@ -1,1406 +0,0 @@ - - - - - - - -OpenJPEG: pi.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    pi.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - -

    -Macros

    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_UINT32
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Local static functions
    static OPJ_BOOL opj_pi_next_lrcp (opj_pi_iterator_t *pi)
     Get next packet in layer-resolution-component-precinct order. More...
     
    static OPJ_BOOL opj_pi_next_rlcp (opj_pi_iterator_t *pi)
     Get next packet in resolution-layer-component-precinct order. More...
     
    static OPJ_BOOL opj_pi_next_rpcl (opj_pi_iterator_t *pi)
     Get next packet in resolution-precinct-component-layer order. More...
     
    static OPJ_BOOL opj_pi_next_pcrl (opj_pi_iterator_t *pi)
     Get next packet in precinct-component-resolution-layer order. More...
     
    static OPJ_BOOL opj_pi_next_cprl (opj_pi_iterator_t *pi)
     Get next packet in component-precinct-resolution-layer order. More...
     
    static void opj_pi_update_encode_poc_and_final (opj_cp_t *p_cp, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
     Updates the coding parameters if the encoding is used with Progression order changes and final (or cinema parameters are used). More...
     
    static void opj_pi_update_encode_not_poc (opj_cp_t *p_cp, OPJ_UINT32 p_num_comps, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
     Updates the coding parameters if the encoding is not used with Progression order changes and final (and cinema parameters are used). More...
     
    static void opj_get_encoding_parameters (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res)
     Gets the encoding parameters needed to update the coding parameters and all the pocs. More...
     
    static void opj_get_all_encoding_parameters (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res, OPJ_UINT32 **p_resolutions)
     Gets the encoding parameters needed to update the coding parameters and all the pocs. More...
     
    static opj_pi_iterator_topj_pi_create (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno)
     Allocates memory for a packet iterator. More...
     
    static void opj_pi_update_decode_not_poc (opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
     FIXME DOC. More...
     
    static void opj_pi_update_decode_poc (opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
     FIXME DOC. More...
     
    static OPJ_BOOL opj_pi_check_next_level (OPJ_INT32 pos, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, const OPJ_CHAR *prog)
     FIXME DOC. More...
     
    static void opj_pi_emit_error (opj_pi_iterator_t *pi, const char *msg)
     
    opj_pi_iterator_topj_pi_create_decode (opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Create a packet iterator for Decoder. More...
     
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Return the number of packets in the tile. More...
     
    opj_pi_iterator_topj_pi_initialise_encode (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
     Creates a packet iterator for encoding. More...
     
    void opj_pi_create_encode (opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
     Modify the packet iterator for enabling tile part generation. More...
     
    void opj_pi_destroy (opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
     Destroys a packet iterator array. More...
     
    void opj_pi_update_encoding_parameters (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Updates the encoding parameters of the codec. More...
     
    OPJ_BOOL opj_pi_next (opj_pi_iterator_t *pi)
     Modify the packet iterator to point to the next packet. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_UINT32_SEMANTICALLY_BUT_INT32

    - -
    -
    - - - - -
    #define OPJ_UINT32_SEMANTICALLY_BUT_INT32   OPJ_UINT32
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_get_all_encoding_parameters()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_get_all_encoding_parameters (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno,
    OPJ_UINT32p_tx0,
    OPJ_UINT32p_tx1,
    OPJ_UINT32p_ty0,
    OPJ_UINT32p_ty1,
    OPJ_UINT32p_dx_min,
    OPJ_UINT32p_dy_min,
    OPJ_UINT32p_max_prec,
    OPJ_UINT32p_max_res,
    OPJ_UINT32 ** p_resolutions 
    )
    -
    -static
    -
    - -

    Gets the encoding parameters needed to update the coding parameters and all the pocs.

    -

    The precinct widths, heights, dx and dy for each component at each resolution will be stored as well. the last parameter of the function should be an array of pointers of size nb components, each pointer leading to an area of size 4 * max_res. The data is stored inside this area with the following pattern : dx_compi_res0 , dy_compi_res0 , w_compi_res0, h_compi_res0 , dx_compi_res1 , dy_compi_res1 , w_compi_res1, h_compi_res1 , ...

    -
    Parameters
    - - - - - - - - - - - - - -
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    tilenothe tile index of the tile being encoded.
    p_tx0pointer that will hold the X0 parameter for the tile
    p_tx1pointer that will hold the X1 parameter for the tile
    p_ty0pointer that will hold the Y0 parameter for the tile
    p_ty1pointer that will hold the Y1 parameter for the tile
    p_max_precpointer that will hold the maximum precision for all the bands of the tile
    p_max_respointer that will hold the maximum number of resolutions for all the poc inside the tile.
    p_dx_minpointer that will hold the minimum dx of all the components of all the resolutions for the tile.
    p_dy_minpointer that will hold the minimum dy of all the components of all the resolutions for the tile.
    p_resolutionspointer to an area corresponding to the one described above.
    -
    -
    - -

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image::numcomps, opj_tccp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_floordivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::prch, opj_tccp::prcw, tcp, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_get_encoding_packet_count(), opj_pi_create_decode(), and opj_pi_initialise_encode().

    - -
    -
    - -

    ◆ opj_get_encoding_packet_count()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    -
    - -

    Return the number of packets in the tile.

    -
    Parameters
    - - - - -
    imagethe image being encoded.
    cpCoding parameters
    tilenoNumber that identifies the tile.
    -
    -
    - -

    References opj_image::numcomps, opj_tcp::numlayers, opj_get_all_encoding_parameters(), opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_get_specific_header_sizes(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_get_encoding_parameters()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_get_encoding_parameters (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno,
    OPJ_UINT32p_tx0,
    OPJ_UINT32p_tx1,
    OPJ_UINT32p_ty0,
    OPJ_UINT32p_ty1,
    OPJ_UINT32p_dx_min,
    OPJ_UINT32p_dy_min,
    OPJ_UINT32p_max_prec,
    OPJ_UINT32p_max_res 
    )
    -
    -static
    -
    - -

    Gets the encoding parameters needed to update the coding parameters and all the pocs.

    -
    Parameters
    - - - - - - - - - - - - -
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    tilenothe tile index of the tile being encoded.
    p_tx0pointer that will hold the X0 parameter for the tile
    p_tx1pointer that will hold the X1 parameter for the tile
    p_ty0pointer that will hold the Y0 parameter for the tile
    p_ty1pointer that will hold the Y1 parameter for the tile
    p_max_precpointer that will hold the maximum precision for all the bands of the tile
    p_max_respointer that will hold the maximum number of resolutions for all the poc inside the tile.
    p_dx_minpointer that will hold the minimum dx of all the components of all the resolutions for the tile.
    p_dy_minpointer that will hold the minimum dy of all the components of all the resolutions for the tile.
    -
    -
    - -

    References opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_image::numcomps, opj_tccp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_floordivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::prch, opj_tccp::prcw, opj_tcp::tccps, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_cp::th, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_image::x0, opj_image::x1, opj_image::y0, and opj_image::y1.

    - -

    Referenced by opj_pi_update_encoding_parameters().

    - -
    -
    - -

    ◆ opj_pi_check_next_level()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_pi_check_next_level (OPJ_INT32 pos,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    const OPJ_CHARprog 
    )
    -
    -static
    -
    - -

    FIXME DOC.

    - -

    References OPJ_FALSE, OPJ_LRCP, OPJ_RLCP, OPJ_TRUE, opj_tcp::pocs, tcp, and opj_cp::tcps.

    - -

    Referenced by opj_pi_create_encode().

    - -
    -
    - -

    ◆ opj_pi_create()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static opj_pi_iterator_t * opj_pi_create (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 tileno 
    )
    -
    -static
    -
    - -

    Allocates memory for a packet iterator.

    -

    Data and data sizes are set by this operation. No other data is set. The include section of the packet iterator is not allocated.

    -
    Parameters
    - - - - -
    p_imagethe image used to initialize the packet iterator (in fact only the number of components is relevant.
    p_cpthe coding parameters.
    tilenothe index of the tile from which creating the packet iterator.
    -
    -
    - -

    References opj_pi_iterator::comps, opj_pi_iterator::numcomps, opj_image::numcomps, opj_pi_comp::numresolutions, opj_tccp::numresolutions, opj_calloc(), opj_pi_destroy(), opj_pi_comp::resolutions, tcp, opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_pi_create_decode(), and opj_pi_initialise_encode().

    - -
    -
    - -

    ◆ opj_pi_create_decode()

    - - - -

    ◆ opj_pi_create_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_pi_create_encode (opj_pi_iterator_tpi,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    J2K_T2_MODE t2_mode 
    )
    -
    - -

    Modify the packet iterator for enabling tile part generation.

    -
    Parameters
    - - - - - - - - -
    piHandle to the packet iterator generated in pi_initialise_encode
    cpCoding parameters
    tilenoNumber that identifies the tile for which to list the packets
    pinoFIXME DOC
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    t2_modeFIXME DOC
    -
    -
    - -

    References opj_poc::compno0, opj_poc::compno1, FINAL_PASS, opj_pi_iterator::first, opj_poc::layno0, opj_poc::layno1, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_convert_progression_order(), OPJ_LRCP, opj_pi_check_next_level(), OPJ_RLCP, opj_pi_iterator::poc, opj_tcp::pocs, opj_poc::precno0, opj_poc::precno1, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_cp::rsiz, tcp, opj_cp::tcps, opj_poc::tx0, opj_pi_iterator::tx1, opj_poc::tx1, opj_poc::ty0, opj_pi_iterator::ty1, and opj_poc::ty1.

    - -

    Referenced by opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_destroy()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_pi_destroy (opj_pi_iterator_tp_pi,
    OPJ_UINT32 p_nb_elements 
    )
    -
    - -

    Destroys a packet iterator array.

    -
    Parameters
    - - - -
    p_pithe packet iterator array to destroy.
    p_nb_elementsthe number of elements in the array.
    -
    -
    - -

    References opj_pi_iterator::comps, opj_pi_iterator::include, opj_pi_iterator::numcomps, opj_free(), and opj_pi_comp::resolutions.

    - -

    Referenced by opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_emit_error()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_pi_emit_error (opj_pi_iterator_tpi,
    const char * msg 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_pi_initialise_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_pi_iterator_t* opj_pi_initialise_encode (const opj_image_timage,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    J2K_T2_MODE t2_mode 
    )
    -
    -
    - -

    ◆ opj_pi_next()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_pi_next (opj_pi_iterator_tpi)
    -
    - -

    Modify the packet iterator to point to the next packet.

    -
    Parameters
    - - -
    piPacket iterator to modify
    -
    -
    -
    Returns
    Returns false if pi pointed to the last packet or else returns true
    - -

    References OPJ_CPRL, OPJ_FALSE, OPJ_LRCP, OPJ_PCRL, opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), opj_pi_next_rpcl(), OPJ_PROG_UNKNOWN, OPJ_RLCP, OPJ_RPCL, opj_pi_iterator::poc, and opj_poc::prg.

    - -

    Referenced by opj_t2_decode_packets(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_next_cprl()

    - - - -

    ◆ opj_pi_next_lrcp()

    - - - -

    ◆ opj_pi_next_pcrl()

    - - - -

    ◆ opj_pi_next_rlcp()

    - - - -

    ◆ opj_pi_next_rpcl()

    - - - -

    ◆ opj_pi_update_decode_not_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_pi_update_decode_not_poc (opj_pi_iterator_tp_pi,
    opj_tcp_tp_tcp,
    OPJ_UINT32 p_max_precision,
    OPJ_UINT32 p_max_res 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_pi_update_decode_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_pi_update_decode_poc (opj_pi_iterator_tp_pi,
    opj_tcp_tp_tcp,
    OPJ_UINT32 p_max_precision,
    OPJ_UINT32 p_max_res 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_pi_update_encode_not_poc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_pi_update_encode_not_poc (opj_cp_tp_cp,
    OPJ_UINT32 p_num_comps,
    OPJ_UINT32 p_tileno,
    OPJ_UINT32 p_tx0,
    OPJ_UINT32 p_tx1,
    OPJ_UINT32 p_ty0,
    OPJ_UINT32 p_ty1,
    OPJ_UINT32 p_max_prec,
    OPJ_UINT32 p_max_res,
    OPJ_UINT32 p_dx_min,
    OPJ_UINT32 p_dy_min 
    )
    -
    -static
    -
    - -

    Updates the coding parameters if the encoding is not used with Progression order changes and final (and cinema parameters are used).

    -
    Parameters
    - - - - - - - - - - - - -
    p_cpthe coding parameters to modify
    p_num_compsthe number of components
    p_tilenothe tile index being concerned.
    p_tx0X0 parameter for the tile
    p_tx1X1 parameter for the tile
    p_ty0Y0 parameter for the tile
    p_ty1Y1 parameter for the tile
    p_max_precthe maximum precision for all the bands of the tile
    p_max_resthe maximum number of resolutions for all the poc inside the tile.
    p_dx_minthe minimum dx of all the components of all the resolutions for the tile.
    p_dy_minthe minimum dy of all the components of all the resolutions for the tile.
    -
    -
    - -

    References opj_poc::compE, opj_poc::compS, opj_poc::dx, opj_poc::dy, opj_poc::layE, opj_poc::layS, opj_tcp::numlayers, opj_tcp::numpocs, opj_tcp::pocs, opj_poc::prcE, opj_poc::prcS, opj_tcp::prg, opj_poc::prg, opj_poc::resE, opj_poc::resS, opj_cp::tcps, opj_cp::th, opj_poc::txE, opj_poc::txS, opj_poc::tyE, and opj_poc::tyS.

    - -

    Referenced by opj_pi_initialise_encode(), and opj_pi_update_encoding_parameters().

    - -
    -
    - -

    ◆ opj_pi_update_encode_poc_and_final()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_pi_update_encode_poc_and_final (opj_cp_tp_cp,
    OPJ_UINT32 p_tileno,
    OPJ_UINT32 p_tx0,
    OPJ_UINT32 p_tx1,
    OPJ_UINT32 p_ty0,
    OPJ_UINT32 p_ty1,
    OPJ_UINT32 p_max_prec,
    OPJ_UINT32 p_max_res,
    OPJ_UINT32 p_dx_min,
    OPJ_UINT32 p_dy_min 
    )
    -
    -static
    -
    - -

    Updates the coding parameters if the encoding is used with Progression order changes and final (or cinema parameters are used).

    -
    Parameters
    - - - - - - - - - - - -
    p_cpthe coding parameters to modify
    p_tilenothe tile index being concerned.
    p_tx0X0 parameter for the tile
    p_tx1X1 parameter for the tile
    p_ty0Y0 parameter for the tile
    p_ty1Y1 parameter for the tile
    p_max_precthe maximum precision for all the bands of the tile
    p_max_resthe maximum number of resolutions for all the poc inside the tile.
    p_dx_minthe minimum dx of all the components of all the resolutions for the tile.
    p_dy_minthe minimum dy of all the components of all the resolutions for the tile.
    -
    -
    - -

    References opj_poc::compE, opj_poc::compno0, opj_poc::compno1, opj_poc::compS, opj_poc::dx, opj_poc::dy, opj_poc::layE, opj_poc::layno1, opj_poc::layS, opj_tcp::numpocs, OPJ_ARG_NOT_USED, opj_tcp::pocs, opj_poc::prcE, opj_poc::prcS, opj_poc::prg, opj_poc::prg1, opj_poc::resE, opj_poc::resno0, opj_poc::resno1, opj_poc::resS, opj_cp::tcps, opj_cp::th, opj_poc::txE, opj_poc::txS, opj_poc::tyE, and opj_poc::tyS.

    - -

    Referenced by opj_pi_initialise_encode(), and opj_pi_update_encoding_parameters().

    - -
    -
    - -

    ◆ opj_pi_update_encoding_parameters()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_pi_update_encoding_parameters (const opj_image_tp_image,
    opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    -
    - -

    Updates the encoding parameters of the codec.

    -
    Parameters
    - - - - -
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    p_tile_noindex of the tile being encoded.
    -
    -
    - -

    References opj_image::numcomps, opj_get_encoding_parameters(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_tcp::POC, opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_calculate_tp().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/pi_8h.html b/build/doc/html/pi_8h.html deleted file mode 100644 index 8eab27d1a..000000000 --- a/build/doc/html/pi_8h.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - - - - -OpenJPEG: pi.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    pi.h File Reference
    -
    -
    - -

    Implementation of a packet iterator (PI) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Data Structures

    struct  opj_pi_resolution
     FIXME DOC. More...
     
    struct  opj_pi_comp
     FIXME DOC. More...
     
    struct  opj_pi_iterator
     Packet iterator. More...
     
    - - - - - - - - - - -

    -Typedefs

    typedef struct opj_pi_resolution opj_pi_resolution_t
     FIXME DOC. More...
     
    typedef struct opj_pi_comp opj_pi_comp_t
     FIXME DOC. More...
     
    typedef struct opj_pi_iterator opj_pi_iterator_t
     Packet iterator. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    opj_pi_iterator_topj_pi_initialise_encode (const opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno, J2K_T2_MODE t2_mode)
     Creates a packet iterator for encoding. More...
     
    void opj_pi_update_encoding_parameters (const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Updates the encoding parameters of the codec. More...
     
    void opj_pi_create_encode (opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
     Modify the packet iterator for enabling tile part generation. More...
     
    opj_pi_iterator_topj_pi_create_decode (opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno)
     Create a packet iterator for Decoder. More...
     
    void opj_pi_destroy (opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
     Destroys a packet iterator array. More...
     
    OPJ_BOOL opj_pi_next (opj_pi_iterator_t *pi)
     Modify the packet iterator to point to the next packet. More...
     
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
     Return the number of packets in the tile. More...
     
    -

    Detailed Description

    -

    Implementation of a packet iterator (PI)

    -

    The functions in PI.C have for goal to realize a packet iterator that permits to get the next packet following the progression order and change of it. The functions in PI.C are used by some function in T2.C.

    -

    Typedef Documentation

    - -

    ◆ opj_pi_comp_t

    - -
    -
    - - - - -
    typedef struct opj_pi_comp opj_pi_comp_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_pi_iterator_t

    - -
    -
    - - - - -
    typedef struct opj_pi_iterator opj_pi_iterator_t
    -
    - -

    Packet iterator.

    - -
    -
    - -

    ◆ opj_pi_resolution_t

    - -
    -
    - - - - -
    typedef struct opj_pi_resolution opj_pi_resolution_t
    -
    - -

    FIXME DOC.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_get_encoding_packet_count()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_get_encoding_packet_count (const opj_image_tp_image,
    const opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    -
    - -

    Return the number of packets in the tile.

    -
    Parameters
    - - - - -
    imagethe image being encoded.
    cpCoding parameters
    tilenoNumber that identifies the tile.
    -
    -
    - -

    References opj_image::numcomps, opj_tcp::numlayers, opj_get_all_encoding_parameters(), opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_get_specific_header_sizes(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_create_decode()

    - - - -

    ◆ opj_pi_create_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_pi_create_encode (opj_pi_iterator_tpi,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    OPJ_UINT32 pino,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    J2K_T2_MODE t2_mode 
    )
    -
    - -

    Modify the packet iterator for enabling tile part generation.

    -
    Parameters
    - - - - - - - - -
    piHandle to the packet iterator generated in pi_initialise_encode
    cpCoding parameters
    tilenoNumber that identifies the tile for which to list the packets
    pinoFIXME DOC
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    t2_modeFIXME DOC
    -
    -
    - -

    References opj_poc::compno0, opj_poc::compno1, FINAL_PASS, opj_pi_iterator::first, opj_poc::layno0, opj_poc::layno1, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, OPJ_IS_CINEMA, OPJ_IS_IMF, opj_j2k_convert_progression_order(), OPJ_LRCP, opj_pi_check_next_level(), OPJ_RLCP, opj_pi_iterator::poc, opj_tcp::pocs, opj_poc::precno0, opj_poc::precno1, opj_poc::prg, opj_poc::resno0, opj_poc::resno1, opj_cp::rsiz, tcp, opj_cp::tcps, opj_poc::tx0, opj_pi_iterator::tx1, opj_poc::tx1, opj_poc::ty0, opj_pi_iterator::ty1, and opj_poc::ty1.

    - -

    Referenced by opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_destroy()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_pi_destroy (opj_pi_iterator_tp_pi,
    OPJ_UINT32 p_nb_elements 
    )
    -
    - -

    Destroys a packet iterator array.

    -
    Parameters
    - - - -
    p_pithe packet iterator array to destroy.
    p_nb_elementsthe number of elements in the array.
    -
    -
    - -

    References opj_pi_iterator::comps, opj_pi_iterator::include, opj_pi_iterator::numcomps, opj_free(), and opj_pi_comp::resolutions.

    - -

    Referenced by opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_initialise_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_pi_iterator_t* opj_pi_initialise_encode (const opj_image_timage,
    opj_cp_tcp,
    OPJ_UINT32 tileno,
    J2K_T2_MODE t2_mode 
    )
    -
    -
    - -

    ◆ opj_pi_next()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_pi_next (opj_pi_iterator_tpi)
    -
    - -

    Modify the packet iterator to point to the next packet.

    -
    Parameters
    - - -
    piPacket iterator to modify
    -
    -
    -
    Returns
    Returns false if pi pointed to the last packet or else returns true
    - -

    References OPJ_CPRL, OPJ_FALSE, OPJ_LRCP, OPJ_PCRL, opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), opj_pi_next_rpcl(), OPJ_PROG_UNKNOWN, OPJ_RLCP, OPJ_RPCL, opj_pi_iterator::poc, and opj_poc::prg.

    - -

    Referenced by opj_t2_decode_packets(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_pi_update_encoding_parameters()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_pi_update_encoding_parameters (const opj_image_tp_image,
    opj_cp_tp_cp,
    OPJ_UINT32 p_tile_no 
    )
    -
    - -

    Updates the encoding parameters of the codec.

    -
    Parameters
    - - - - -
    p_imagethe image being encoded.
    p_cpthe coding parameters.
    p_tile_noindex of the tile being encoded.
    -
    -
    - -

    References opj_image::numcomps, opj_get_encoding_parameters(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_tcp::POC, opj_cp::tcps, and opj_cp::th.

    - -

    Referenced by opj_j2k_calculate_tp().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/pi_8h_source.html b/build/doc/html/pi_8h_source.html deleted file mode 100644 index 9229c549f..000000000 --- a/build/doc/html/pi_8h_source.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - -OpenJPEG: pi.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    pi.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * All rights reserved.
    -
    15  *
    -
    16  * Redistribution and use in source and binary forms, with or without
    -
    17  * modification, are permitted provided that the following conditions
    -
    18  * are met:
    -
    19  * 1. Redistributions of source code must retain the above copyright
    -
    20  * notice, this list of conditions and the following disclaimer.
    -
    21  * 2. Redistributions in binary form must reproduce the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer in the
    -
    23  * documentation and/or other materials provided with the distribution.
    -
    24  *
    -
    25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    26  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    28  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    29  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    35  * POSSIBILITY OF SUCH DAMAGE.
    -
    36  */
    -
    37 
    -
    38 #ifndef OPJ_PI_H
    -
    39 #define OPJ_PI_H
    -
    40 
    -
    51 
    -
    55 typedef struct opj_pi_resolution {
    - - - -
    59 
    -
    63 typedef struct opj_pi_comp {
    - - - - -
    69 
    -
    73 typedef struct opj_pi_iterator {
    - - - - - - - - - - - - - - - - - - - -
    111 
    -
    114 /* ----------------------------------------------------------------------- */
    - -
    126  opj_cp_t *cp,
    -
    127  OPJ_UINT32 tileno,
    -
    128  J2K_T2_MODE t2_mode);
    -
    129 
    - -
    138  opj_cp_t *p_cp,
    -
    139  OPJ_UINT32 p_tile_no);
    -
    140 
    - -
    152  opj_cp_t *cp,
    -
    153  OPJ_UINT32 tileno,
    -
    154  OPJ_UINT32 pino,
    -
    155  OPJ_UINT32 tpnum,
    -
    156  OPJ_INT32 tppos,
    -
    157  J2K_T2_MODE t2_mode);
    -
    158 
    - -
    168  opj_cp_t * cp,
    -
    169  OPJ_UINT32 tileno);
    - -
    177  OPJ_UINT32 p_nb_elements);
    -
    178 
    - -
    185 
    - -
    193  const opj_cp_t *p_cp,
    -
    194  OPJ_UINT32 p_tile_no);
    -
    195 
    -
    196 /* ----------------------------------------------------------------------- */
    -
    200 
    -
    201 #endif /* OPJ_PI_H */
    -
    -
    #define OPJ_J2K_MAXRLVLS
    Number of maximum resolution level authorized.
    Definition: openjpeg.h:146
    -
    FIXME DOC.
    Definition: pi.h:55
    -
    OPJ_UINT32 compE
    Definition: openjpeg.h:377
    -
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
    Definition: openjpeg.h:373
    -
    OPJ_UINT32 compS
    Definition: openjpeg.h:375
    -
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    -
    Packet iterator.
    Definition: pi.h:73
    -
    struct opj_pi_comp opj_pi_comp_t
    FIXME DOC.
    -
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_INT16 * include
    precise if the packet has been already used (useful for progression order change)
    Definition: pi.h:77
    -
    OPJ_PROG_ORDER prg
    progression order
    Definition: j2k.h:245
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    OPJ_UINT32 step_l
    layer step used to localize the packet in the include vector
    Definition: pi.h:81
    -
    opj_poc_t pocs[J2K_MAX_POCS]
    progression order changes
    Definition: j2k.h:256
    -
    static OPJ_BOOL opj_pi_next_cprl(opj_pi_iterator_t *pi)
    Get next packet in component-precinct-resolution-layer order.
    Definition: pi.c:603
    -
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    -
    OPJ_UINT32 precno0
    Definition: openjpeg.h:365
    -
    OPJ_UINT32 compno
    component that identify the packet
    Definition: pi.h:89
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    -
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    -
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    -
    static OPJ_BOOL opj_pi_next_pcrl(opj_pi_iterator_t *pi)
    Get next packet in precinct-component-resolution-layer order.
    Definition: pi.c:472
    -
    OPJ_UINT32 tyS
    Definition: openjpeg.h:379
    -
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    -
    OPJ_UINT32 include_size
    Number of elements in include array.
    Definition: pi.h:79
    -
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    opj_pi_comp_t * comps
    Components.
    Definition: pi.h:103
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    static OPJ_BOOL opj_pi_check_next_level(OPJ_INT32 pos, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, const OPJ_CHAR *prog)
    FIXME DOC.
    Definition: pi.c:1270
    -
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    -
    FIXME DOC.
    Definition: pi.h:63
    -
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    -
    OPJ_BOOL first
    0 if the first packet
    Definition: pi.h:97
    -
    OPJ_UINT32 x
    FIXME DOC.
    Definition: pi.h:107
    -
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno, J2K_T2_MODE t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    static void opj_get_all_encoding_parameters(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res, OPJ_UINT32 **p_resolutions)
    Gets the encoding parameters needed to update the coding parameters and all the pocs.
    Definition: pi.c:852
    -
    OPJ_UINT32 txE
    Definition: openjpeg.h:379
    -
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    -
    OPJ_UINT32 pdy
    Definition: pi.h:56
    -
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    -
    @ tcp
    Definition: query_parser.h:41
    -
    OPJ_UINT32 ty0
    Definition: pi.h:105
    -
    #define JPIP_PHIX
    Definition: indexbox_manager.h:51
    -
    OPJ_UINT32 layno0
    Layer num start,Precinct num start, Precinct num end.
    Definition: openjpeg.h:365
    -
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    static INLINE OPJ_UINT32 opj_uint_floordivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:216
    -
    Message handler object used for.
    Definition: event.h:50
    -
    OPJ_UINT32 dx
    Definition: pi.h:64
    -
    OPJ_UINT32 y
    Definition: pi.h:107
    -
    struct opj_pi_resolution opj_pi_resolution_t
    FIXME DOC.
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_UINT32 step_p
    precinct step used to localize the packet in the include vector
    Definition: pi.h:87
    -
    OPJ_UINT32 tx1
    Definition: pi.h:105
    -
    OPJ_UINT32 type
    Definition: jp2.h:200
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    static void opj_pi_update_decode_poc(opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
    FIXME DOC.
    Definition: pi.c:1186
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    -
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *image, opj_cp_t *cp, OPJ_UINT32 tileno)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    -
    Coding parameters.
    Definition: j2k.h:347
    -
    OPJ_UINT32 dx
    FIXME DOC.
    Definition: pi.h:109
    -
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    -
    OPJ_UINT32 ty1
    Definition: pi.h:105
    -
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    -
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    -
    OPJ_UINT32 precno1
    Definition: openjpeg.h:365
    -
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    -
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    -
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    -
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    -
    static void opj_pi_emit_error(opj_pi_iterator_t *pi, const char *msg)
    Definition: pi.c:235
    -
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    -
    OPJ_UINT32 pdx
    Definition: pi.h:56
    -
    OPJ_UINT32 dy
    Definition: openjpeg.h:379
    -
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    -
    OPJ_UINT32 precno
    precinct that identify the packet
    Definition: pi.h:93
    - -
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    -
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    -
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
    Definition: openjpeg.h:373
    -
    char OPJ_CHAR
    Definition: openjpeg.h:114
    -
    OPJ_UINT32 dy
    Definition: pi.h:109
    -
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    -
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_UINT32 th
    number of tiles in height
    Definition: j2k.h:365
    -
    OPJ_UINT32 resE
    Definition: openjpeg.h:377
    -
    static OPJ_BOOL opj_pi_next_rpcl(opj_pi_iterator_t *pi)
    Get next packet in resolution-precinct-component-layer order.
    Definition: pi.c:340
    -
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    -
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    OPJ_BYTE tp_on
    Enabling Tile part generation.
    Definition: pi.h:75
    -
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    -
    opj_pi_resolution_t * resolutions
    Definition: pi.h:67
    -
    OPJ_UINT32 dy
    Definition: pi.h:64
    -
    static OPJ_BOOL opj_pi_next_lrcp(opj_pi_iterator_t *pi)
    Get next packet in layer-resolution-component-precinct order.
    Definition: pi.c:241
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_UINT32 layE
    End value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:377
    -
    OPJ_UINT32 compno0
    Definition: openjpeg.h:361
    -
    OPJ_UINT32 prcS
    Definition: openjpeg.h:375
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    OPJ_UINT32 tx0
    FIXME DOC.
    Definition: pi.h:105
    -
    OPJ_UINT32 ph
    Definition: pi.h:57
    -
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    -
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    -
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    -
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    -
    static void opj_pi_update_encode_not_poc(opj_cp_t *p_cp, OPJ_UINT32 p_num_comps, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
    Updates the coding parameters if the encoding is not used with Progression order changes and final (a...
    Definition: pi.c:1131
    -
    OPJ_UINT32 compno1
    Definition: openjpeg.h:363
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
    Definition: openjpeg.h:373
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: pi.h:101
    -
    OPJ_UINT32 step_r
    resolution step used to localize the packet in the include vector
    Definition: pi.h:83
    -
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    -
    OPJ_UINT32 resno
    resolution that identify the packet
    Definition: pi.h:91
    -
    OPJ_UINT32 txS
    Start and end values of Tile width and height, initialised in pi_initialise_encode.
    Definition: openjpeg.h:379
    -
    Tile-component coding parameters.
    Definition: j2k.h:175
    -
    OPJ_UINT32 prcE
    Definition: openjpeg.h:377
    -
    struct opj_pi_iterator opj_pi_iterator_t
    Packet iterator.
    -
    OPJ_UINT32 step_c
    component step used to localize the packet in the include vector
    Definition: pi.h:85
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    OPJ_UINT32 length
    Definition: jp2.h:199
    -
    OPJ_UINT32 pw
    Definition: pi.h:57
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    -
    OPJ_UINT32 tyE
    Definition: openjpeg.h:379
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    int opj_write_phixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:96
    -
    static void opj_get_encoding_parameters(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno, OPJ_UINT32 *p_tx0, OPJ_UINT32 *p_tx1, OPJ_UINT32 *p_ty0, OPJ_UINT32 *p_ty1, OPJ_UINT32 *p_dx_min, OPJ_UINT32 *p_dy_min, OPJ_UINT32 *p_max_prec, OPJ_UINT32 *p_max_res)
    Gets the encoding parameters needed to update the coding parameters and all the pocs.
    Definition: pi.c:731
    -
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
    Start and end values for Tile width and height.
    Definition: openjpeg.h:373
    -
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    static void opj_pi_update_encode_poc_and_final(opj_cp_t *p_cp, OPJ_UINT32 p_tileno, OPJ_UINT32 p_tx0, OPJ_UINT32 p_tx1, OPJ_UINT32 p_ty0, OPJ_UINT32 p_ty1, OPJ_UINT32 p_max_prec, OPJ_UINT32 p_max_res, OPJ_UINT32 p_dx_min, OPJ_UINT32 p_dy_min)
    Updates the coding parameters if the encoding is used with Progression order changes and final (or ci...
    Definition: pi.c:1052
    -
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    OPJ_UINT32 numresolutions
    number of resolution levels
    Definition: pi.h:66
    -
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    -
    static OPJ_BOOL opj_pi_next_rlcp(opj_pi_iterator_t *pi)
    Get next packet in resolution-layer-component-precinct order.
    Definition: pi.c:294
    -
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    -
    OPJ_UINT32 resS
    Definition: openjpeg.h:375
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    OPJ_UINT32 layno1
    Layer num end,Resolution num end, Component num end, given by POC.
    Definition: openjpeg.h:363
    -
    static opj_pi_iterator_t * opj_pi_create(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 tileno)
    Allocates memory for a packet iterator.
    Definition: pi.c:988
    -
    void opj_pi_update_encoding_parameters(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Updates the encoding parameters of the codec.
    Definition: pi.c:2067
    -
    static void opj_pi_update_decode_not_poc(opj_pi_iterator_t *p_pi, opj_tcp_t *p_tcp, OPJ_UINT32 p_max_precision, OPJ_UINT32 p_max_res)
    FIXME DOC.
    Definition: pi.c:1233
    -
    OPJ_UINT32 resno1
    Definition: openjpeg.h:363
    -
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    -
    int opj_write_phix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: phix_manager.c:51
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    OPJ_UINT32 resno0
    Resolution num start, Component num start, given by POC.
    Definition: openjpeg.h:361
    -
    Progression order changes.
    Definition: openjpeg.h:359
    -
    const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
    Converts an enum type progression order to string type.
    Definition: j2k.c:1617
    -
    OPJ_UINT32 layS
    Start value, initialised in pi_initialise_encode.
    Definition: openjpeg.h:375
    -
    OPJ_UINT32 dx
    Definition: openjpeg.h:379
    -
    opj_poc_t poc
    progression order change information
    Definition: pi.h:99
    -
    union opj_cp::@0 m_specific_param
    -
    OPJ_UINT32 layno
    layer that identify the packet
    Definition: pi.h:95
    -
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    - - - - diff --git a/build/doc/html/placeholder__manager_8c.html b/build/doc/html/placeholder__manager_8c.html deleted file mode 100644 index 9f94a3e86..000000000 --- a/build/doc/html/placeholder__manager_8c.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - -OpenJPEG: placeholder_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    placeholder_manager.c File Reference
    -
    -
    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include "placeholder_manager.h"
    -#include "opj_inttypes.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    placeholderlist_param_tgene_placeholderlist (void)
     generate a placeholder list More...
     
    void delete_placeholderlist (placeholderlist_param_t **list)
     delete placeholder list More...
     
    placeholder_param_tgene_placeholder (box_param_t *box, Byte8_t origID)
     generate a placeholder of a box More...
     
    void delete_placeholder (placeholder_param_t **placeholder)
     delete a placeholder More...
     
    void insert_placeholder_into_list (placeholder_param_t *phld, placeholderlist_param_t *phldlist)
     
    void print_placeholder (placeholder_param_t *phld)
     print placeholder parameters More...
     
    void print_allplaceholder (placeholderlist_param_t *list)
     print all placeholder parameters More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_placeholder()

    - -
    -
    - - - - - - - - -
    void delete_placeholder (placeholder_param_t ** placeholder)
    -
    - -

    delete a placeholder

    -
    Parameters
    - - -
    [in,out]placeholderaddress of the placeholder pointer
    -
    -
    - -

    Referenced by delete_placeholderlist().

    - -
    -
    - -

    ◆ delete_placeholderlist()

    - -
    -
    - - - - - - - - -
    void delete_placeholderlist (placeholderlist_param_t ** list)
    -
    - -

    delete placeholder list

    -
    Parameters
    - - -
    [in,out]listaddress of the placeholder list pointer
    -
    -
    - -

    References delete_placeholder(), and placeholder_param::next.

    - -

    Referenced by delete_metadata().

    - -
    -
    - -

    ◆ gene_placeholder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    placeholder_param_t* gene_placeholder (box_param_tbox,
    Byte8_t origID 
    )
    -
    - -

    generate a placeholder of a box

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]origIDmetadata-bin ID of the bin containing the contents of the original box
    -
    -
    -
    Returns
    pointer to the generated placeholder
    - -

    References fetch_headbytes(), placeholder_param::Flags, box_param::headlen, placeholder_param::LBox, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    - -

    Referenced by const_metadatalist().

    - -
    -
    - -

    ◆ gene_placeholderlist()

    - -
    -
    - - - - - - - - -
    placeholderlist_param_t* gene_placeholderlist (void )
    -
    - -

    generate a placeholder list

    -
    Returns
    pointer to the generated placeholder list
    - -

    References placeholderlist_param::first, and placeholderlist_param::last.

    - -

    Referenced by const_metadatalist(), and parse_metadata().

    - -
    -
    - -

    ◆ insert_placeholder_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_placeholder_into_list (placeholder_param_tphld,
    placeholderlist_param_tphldlist 
    )
    -
    -
    - -

    ◆ print_allplaceholder()

    - -
    -
    - - - - - - - - -
    void print_allplaceholder (placeholderlist_param_tlist)
    -
    - -

    print all placeholder parameters

    -
    Parameters
    - - -
    [in]listplaceholder list pointer
    -
    -
    - -

    References placeholderlist_param::first, logstream, placeholder_param::next, and print_placeholder().

    - -

    Referenced by print_metadata().

    - -
    -
    - -

    ◆ print_placeholder()

    - -
    -
    - - - - - - - - -
    void print_placeholder (placeholder_param_tphld)
    -
    - -

    print placeholder parameters

    -
    Parameters
    - - -
    [in]phldplaceholder pointer
    -
    -
    - -

    References placeholder_param::Flags, placeholder_param::LBox, logstream, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    - -

    Referenced by print_allplaceholder(), and print_msgqueue().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/placeholder__manager_8h.html b/build/doc/html/placeholder__manager_8h.html deleted file mode 100644 index fc0ba97d9..000000000 --- a/build/doc/html/placeholder__manager_8h.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - -OpenJPEG: placeholder_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    placeholder_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "box_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  placeholder_param
     A.3.6.3 Placeholder box format. More...
     
    struct  placeholderlist_param
     placeholder box list parameters More...
     
    - - - - - - - -

    -Typedefs

    typedef struct placeholder_param placeholder_param_t
     A.3.6.3 Placeholder box format. More...
     
    typedef struct placeholderlist_param placeholderlist_param_t
     placeholder box list parameters More...
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    placeholderlist_param_tgene_placeholderlist (void)
     generate a placeholder list More...
     
    void delete_placeholderlist (placeholderlist_param_t **list)
     delete placeholder list More...
     
    placeholder_param_tgene_placeholder (box_param_t *box, Byte8_t origID)
     generate a placeholder of a box More...
     
    void delete_placeholder (placeholder_param_t **placeholder)
     delete a placeholder More...
     
    void insert_placeholder_into_list (placeholder_param_t *phld, placeholderlist_param_t *phldlist)
     
    void print_placeholder (placeholder_param_t *phld)
     print placeholder parameters More...
     
    void print_allplaceholder (placeholderlist_param_t *list)
     print all placeholder parameters More...
     
    -

    Typedef Documentation

    - -

    ◆ placeholder_param_t

    - -
    -
    - - - - -
    typedef struct placeholder_param placeholder_param_t
    -
    - -

    A.3.6.3 Placeholder box format.

    -

    placeholder box parameters

    - -
    -
    - -

    ◆ placeholderlist_param_t

    - -
    -
    - -

    placeholder box list parameters

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_placeholder()

    - -
    -
    - - - - - - - - -
    void delete_placeholder (placeholder_param_t ** placeholder)
    -
    - -

    delete a placeholder

    -
    Parameters
    - - -
    [in,out]placeholderaddress of the placeholder pointer
    -
    -
    - -

    Referenced by delete_placeholderlist().

    - -
    -
    - -

    ◆ delete_placeholderlist()

    - -
    -
    - - - - - - - - -
    void delete_placeholderlist (placeholderlist_param_t ** list)
    -
    - -

    delete placeholder list

    -
    Parameters
    - - -
    [in,out]listaddress of the placeholder list pointer
    -
    -
    - -

    References delete_placeholder(), and placeholder_param::next.

    - -

    Referenced by delete_metadata().

    - -
    -
    - -

    ◆ gene_placeholder()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    placeholder_param_t* gene_placeholder (box_param_tbox,
    Byte8_t origID 
    )
    -
    - -

    generate a placeholder of a box

    -
    Parameters
    - - - -
    [in]boxbox pointer
    [in]origIDmetadata-bin ID of the bin containing the contents of the original box
    -
    -
    -
    Returns
    pointer to the generated placeholder
    - -

    References fetch_headbytes(), placeholder_param::Flags, box_param::headlen, placeholder_param::LBox, placeholder_param::next, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    - -

    Referenced by const_metadatalist().

    - -
    -
    - -

    ◆ gene_placeholderlist()

    - -
    -
    - - - - - - - - -
    placeholderlist_param_t* gene_placeholderlist (void )
    -
    - -

    generate a placeholder list

    -
    Returns
    pointer to the generated placeholder list
    - -

    References placeholderlist_param::first, and placeholderlist_param::last.

    - -

    Referenced by const_metadatalist(), and parse_metadata().

    - -
    -
    - -

    ◆ insert_placeholder_into_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_placeholder_into_list (placeholder_param_tphld,
    placeholderlist_param_tphldlist 
    )
    -
    -
    - -

    ◆ print_allplaceholder()

    - -
    -
    - - - - - - - - -
    void print_allplaceholder (placeholderlist_param_tlist)
    -
    - -

    print all placeholder parameters

    -
    Parameters
    - - -
    [in]listplaceholder list pointer
    -
    -
    - -

    References placeholderlist_param::first, logstream, placeholder_param::next, and print_placeholder().

    - -

    Referenced by print_metadata().

    - -
    -
    - -

    ◆ print_placeholder()

    - -
    -
    - - - - - - - - -
    void print_placeholder (placeholder_param_tphld)
    -
    - -

    print placeholder parameters

    -
    Parameters
    - - -
    [in]phldplaceholder pointer
    -
    -
    - -

    References placeholder_param::Flags, placeholder_param::LBox, logstream, placeholder_param::OrigBH, placeholder_param::OrigBHlen, placeholder_param::OrigID, and placeholder_param::TBox.

    - -

    Referenced by print_allplaceholder(), and print_msgqueue().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/placeholder__manager_8h_source.html b/build/doc/html/placeholder__manager_8h_source.html deleted file mode 100644 index c284c299a..000000000 --- a/build/doc/html/placeholder__manager_8h_source.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -OpenJPEG: placeholder_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    placeholder_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef PLACEHOLDER_MANAGER_H_
    -
    32 # define PLACEHOLDER_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "box_manager.h"
    -
    36 
    -
    39 typedef struct placeholder_param {
    - -
    41  char TBox[4];
    - - - - -
    46 #ifdef AAA
    -
    47  Byte8_t EquivID;
    -
    48  Byte_t *EquivBH;
    -
    49  Byte_t EquivBHlen;
    -
    50  Byte8_t CSID;
    -
    51  Byte4_t NCS;
    -
    52 #endif /*AAA*/
    - - -
    55 
    -
    56 
    -
    58 typedef struct placeholderlist_param {
    - - - -
    62 
    -
    63 
    - -
    70 
    -
    71 
    - -
    78 
    -
    79 
    - -
    88 
    -
    89 
    -
    95 void delete_placeholder(placeholder_param_t **placeholder);
    -
    96 
    - -
    98  placeholderlist_param_t *phldlist);
    -
    99 
    -
    100 
    - -
    107 
    -
    108 
    - -
    115 
    -
    116 #endif /* !PLACEHOLDER_MANAGER_H_ */
    -
    -
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    -
    Byte_t OrigBHlen
    length of OrigBH
    Definition: placeholder_manager.h:45
    -
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    -
    void delete_placeholder(placeholder_param_t **placeholder)
    delete a placeholder
    Definition: placeholder_manager.c:96
    -
    Byte_t headlen
    header length 8 or 16
    Definition: box_manager.h:40
    -
    A.3.6.3 Placeholder box format.
    Definition: placeholder_manager.h:39
    -
    uint8_t Byte_t
    Definition: byte_manager.h:37
    -
    void delete_placeholder(placeholder_param_t **placeholder)
    delete a placeholder
    Definition: placeholder_manager.c:96
    -
    box parameters
    Definition: box_manager.h:37
    -
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    -
    Byte8_t OrigID
    Definition: placeholder_manager.h:43
    -
    #define logstream
    Definition: placeholder_manager.c:43
    -
    void print_placeholder(placeholder_param_t *phld)
    print placeholder parameters
    Definition: placeholder_manager.c:115
    -
    struct placeholderlist_param placeholderlist_param_t
    placeholder box list parameters
    -
    placeholder_param_t * last
    last placeholder pointer of the list
    Definition: placeholder_manager.h:60
    - -
    struct placeholder_param * next
    pointer to the next placeholder
    Definition: placeholder_manager.h:53
    -
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    -
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    -
    placeholder_param_t * first
    first placeholder pointer of the list
    Definition: placeholder_manager.h:59
    -
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    -
    uint32_t Byte4_t
    Definition: byte_manager.h:39
    -
    struct placeholder_param placeholder_param_t
    A.3.6.3 Placeholder box format.
    -
    char TBox[4]
    Definition: placeholder_manager.h:41
    -
    Byte_t * fetch_headbytes(box_param_t *box)
    fetch header bytes in file stream
    Definition: box_manager.c:316
    -
    void insert_placeholder_into_list(placeholder_param_t *phld, placeholderlist_param_t *phldlist)
    Definition: placeholder_manager.c:104
    -
    Byte4_t LBox
    Definition: placeholder_manager.h:40
    - -
    placeholderlist_param_t * gene_placeholderlist(void)
    generate a placeholder list
    Definition: placeholder_manager.c:48
    -
    void print_allplaceholder(placeholderlist_param_t *list)
    print all placeholder parameters
    Definition: placeholder_manager.c:137
    -
    placeholder box list parameters
    Definition: placeholder_manager.h:58
    - - -
    void delete_placeholderlist(placeholderlist_param_t **list)
    delete placeholder list
    Definition: placeholder_manager.c:60
    -
    uint64_t Byte8_t
    Definition: byte_manager.h:40
    -
    Byte4_t Flags
    Definition: placeholder_manager.h:42
    -
    Byte_t * OrigBH
    dynamic memory pointer
    Definition: placeholder_manager.h:44
    -
    placeholder_param_t * gene_placeholder(box_param_t *box, Byte8_t origID)
    generate a placeholder of a box
    Definition: placeholder_manager.c:78
    - - - - diff --git a/build/doc/html/ppix__manager_8c.html b/build/doc/html/ppix__manager_8c.html deleted file mode 100644 index 9b9fe12f8..000000000 --- a/build/doc/html/ppix__manager_8c.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -OpenJPEG: ppix_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    ppix_manager.c File Reference
    -
    -
    - -

    Modification of jpip.c from 2KAN indexer. -More...

    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Functions

    int opj_write_ppix (int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_ppixfaix (int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.c from 2KAN indexer.

    -

    Function Documentation

    - -

    ◆ opj_write_ppix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_ppix (int coff,
    opj_codestream_info_t cstr_info,
    OPJ_BOOL EPHused,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_ppixfaix()

    - - -
    - - - - diff --git a/build/doc/html/query__parser_8c.html b/build/doc/html/query__parser_8c.html deleted file mode 100644 index 33e67768c..000000000 --- a/build/doc/html/query__parser_8c.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - -OpenJPEG: query_parser.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    query_parser.c File Reference
    -
    -
    -
    #include <strings.h>
    -#include <stdio.h>
    -#include <assert.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include "query_parser.h"
    -#include "opj_stdint.h"
    -
    - - - - - - - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    #define MAX_LENOFFIELDNAME   10
     maximum length of field name More...
     
    #define MAX_LENOFFIELDVAL   128
     maximum length of field value More...
     
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    query_param_tget_initquery (void)
     Get initialized query parameters. More...
     
    char * get_fieldparam (const char *stringptr, char *fieldname, char *fieldval)
     
    void parse_cclose (char *src, query_param_t *query_param)
     
    void parse_metareq (char *field, query_param_t *query_param)
     
    void parse_comps (char *field, query_param_t *query_param)
     
    query_param_tparse_query (const char *query_string)
     parse query More...
     
    void print_queryparam (query_param_t query_param)
     print query parameters More...
     
    void parse_req_box_prop (char *req_box_prop, int idx, query_param_t *query_param)
     
    void delete_query (query_param_t **query)
     delete query More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    - -

    ◆ MAX_LENOFFIELDNAME

    - -
    -
    - - - - -
    #define MAX_LENOFFIELDNAME   10
    -
    - -

    maximum length of field name

    - -
    -
    - -

    ◆ MAX_LENOFFIELDVAL

    - -
    -
    - - - - -
    #define MAX_LENOFFIELDVAL   128
    -
    - -

    maximum length of field value

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_query()

    - -
    -
    - - - - - - - - -
    void delete_query (query_param_t ** query)
    -
    - -

    delete query

    -
    Parameters
    - - -
    [in]queryaddress of the deleting query pointer
    -
    -
    - -

    References opj_free().

    - -
    -
    - -

    ◆ get_fieldparam()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    char * get_fieldparam (const char * stringptr,
    char * fieldname,
    char * fieldval 
    )
    -
    - -

    Referenced by parse_query().

    - -
    -
    - -

    ◆ get_initquery()

    - - - -

    ◆ parse_cclose()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void parse_cclose (char * src,
    query_param_tquery_param 
    )
    -
    - -

    References query_param::cclose, and query_param::numOfcclose.

    - -

    Referenced by parse_query().

    - -
    -
    - -

    ◆ parse_comps()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void parse_comps (char * field,
    query_param_tquery_param 
    )
    -
    - -

    References query_param::comps, query_param::lastcomp, opj_calloc(), and OPJ_TRUE.

    - -

    Referenced by parse_query().

    - -
    -
    - -

    ◆ parse_metareq()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void parse_metareq (char * field,
    query_param_tquery_param 
    )
    -
    -
    - -

    ◆ parse_query()

    - - - -

    ◆ parse_req_box_prop()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void parse_req_box_prop (char * req_box_prop,
    int idx,
    query_param_tquery_param 
    )
    -
    -
    - -

    ◆ print_queryparam()

    - - -
    - - - - diff --git a/build/doc/html/query__parser_8h.html b/build/doc/html/query__parser_8h.html deleted file mode 100644 index 4cae22731..000000000 --- a/build/doc/html/query__parser_8h.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -OpenJPEG: query_parser.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    query_parser.h File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  query_param
     Query parameters. More...
     
    - - - - -

    -Macros

    #define MAX_NUMOFBOX   10
     maximum number of meta request box More...
     
    - - - - - - - - - - -

    -Typedefs

    typedef enum cnew_transport cnew_transport_t
     cnew aux transport name More...
     
    typedef enum image_return image_return_t
     image return type More...
     
    typedef struct query_param query_param_t
     Query parameters. More...
     
    - - - - - - - -

    -Enumerations

    enum  cnew_transport { non, -http, -tcp, -udp - }
     cnew aux transport name More...
     
    enum  image_return { JPPstream, -JPTstream, -UNKNOWN = -1 - }
     image return type More...
     
    - - - - - - - - - - -

    -Functions

    query_param_tparse_query (const char *query_string)
     parse query More...
     
    void print_queryparam (query_param_t query_param)
     print query parameters More...
     
    void delete_query (query_param_t **query)
     delete query More...
     
    -

    Macro Definition Documentation

    - -

    ◆ MAX_NUMOFBOX

    - -
    -
    - - - - -
    #define MAX_NUMOFBOX   10
    -
    - -

    maximum number of meta request box

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ cnew_transport_t

    - -
    -
    - - - - -
    typedef enum cnew_transport cnew_transport_t
    -
    - -

    cnew aux transport name

    - -
    -
    - -

    ◆ image_return_t

    - -
    -
    - - - - -
    typedef enum image_return image_return_t
    -
    - -

    image return type

    - -
    -
    - -

    ◆ query_param_t

    - -
    -
    - - - - -
    typedef struct query_param query_param_t
    -
    - -

    Query parameters.

    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ cnew_transport

    - -
    -
    - - - - -
    enum cnew_transport
    -
    - -

    cnew aux transport name

    - - - - - -
    Enumerator
    non 
    http 
    tcp 
    udp 
    - -
    -
    - -

    ◆ image_return

    - -
    -
    - - - - -
    enum image_return
    -
    - -

    image return type

    - - - - -
    Enumerator
    JPPstream 
    JPTstream 
    UNKNOWN 
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_query()

    - -
    -
    - - - - - - - - -
    void delete_query (query_param_t ** query)
    -
    - -

    delete query

    -
    Parameters
    - - -
    [in]queryaddress of the deleting query pointer
    -
    -
    - -

    References opj_free().

    - -
    -
    - -

    ◆ parse_query()

    - - - -

    ◆ print_queryparam()

    - - -
    - - - - diff --git a/build/doc/html/query__parser_8h_source.html b/build/doc/html/query__parser_8h_source.html deleted file mode 100644 index acef347c7..000000000 --- a/build/doc/html/query__parser_8h_source.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - -OpenJPEG: query_parser.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    query_parser.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * Copyright (c) 2011, Lucian Corlaciu, GSoC
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef QUERY_PARSER_H_
    -
    33 # define QUERY_PARSER_H_
    -
    34 
    -
    35 #include "opj_includes.h"
    -
    36 
    -
    38 #define MAX_NUMOFBOX 10
    -
    39 
    - -
    42 
    - -
    45 
    -
    47 typedef struct query_param {
    -
    48  char *target;
    -
    49  char *tid;
    -
    50  int fx, fy;
    -
    51  int rx, ry, rw, rh;
    -
    52  int layers;
    -
    53  int lastcomp;
    - -
    55  char *cid;
    - -
    57  cnew;
    -
    58  char *cclose;
    - - - - - - - - -
    67  int root_bin;
    -
    68  int max_depth;
    - - -
    71  int len;
    - -
    73 
    -
    74 
    -
    81 query_param_t * parse_query(const char *query_string);
    -
    82 
    - -
    89 
    -
    90 
    -
    96 void delete_query(query_param_t **query);
    -
    97 
    -
    98 #endif /* !QUERY_PARSER_H_ */
    -
    -
    struct opj_jp2_box opj_jp2_box_t
    JP2 Box.
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    int limit[MAX_NUMOFBOX]
    limit value, -1: skeleton request "r", 0: entire contents
    Definition: query_parser.h:61
    -
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    -
    int ry
    Definition: query_parser.h:51
    -
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    -
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    -
    OPJ_BOOL metadata_only
    metadata-only request
    Definition: query_parser.h:69
    -
    int root_bin
    root-bin
    Definition: query_parser.h:67
    -
    #define MAX_LENOFFIELDVAL
    maximum length of field value
    Definition: query_parser.c:86
    -
    enum image_return image_return_t
    image return type
    -
    int opj_write_ppix(int coff, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:51
    -
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    -
    int max_depth
    max-depth
    Definition: query_parser.h:68
    -
    int len
    maximum response length
    Definition: query_parser.h:71
    -
    void parse_cclose(char *src, query_param_t *query_param)
    Definition: query_parser.c:301
    - -
    int fy
    frame size (fx,fy)
    Definition: query_parser.h:50
    -
    #define MAX_LENOFFIELDNAME
    maximum length of field name
    Definition: query_parser.c:83
    -
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    -
    @ tcp
    Definition: query_parser.h:41
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    @ OPJ_RLCP
    resolution-layer-component-precinct order
    Definition: openjpeg.h:300
    -
    Message handler object used for.
    Definition: event.h:50
    -
    image_return_t return_type
    image return type
    Definition: query_parser.h:70
    -
    char * cclose
    list of closing channel identifiers, separated by '\0'
    Definition: query_parser.h:58
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    OPJ_UINT32 type
    Definition: jp2.h:200
    -
    #define logstream
    Definition: query_parser.c:54
    -
    int lastcomp
    last component number
    Definition: query_parser.h:53
    -
    struct query_param query_param_t
    Query parameters.
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    @ OPJ_CPRL
    component-precinct-resolution-layer order
    Definition: openjpeg.h:303
    -
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    -
    @ http
    Definition: query_parser.h:41
    -
    int rw
    Definition: query_parser.h:51
    -
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    -
    int opj_write_ppixfaix(int coff, int compno, opj_codestream_info_t cstr_info, OPJ_BOOL EPHused, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: ppix_manager.c:104
    -
    query_param_t * get_initquery(void)
    Get initialized query parameters.
    Definition: query_parser.c:170
    -
    OPJ_BOOL * comps
    components (dynamic array) for jpp-stream, null means all components
    Definition: query_parser.h:54
    -
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    -
    int rh
    roi region
    Definition: query_parser.h:51
    -
    char * target
    target name
    Definition: query_parser.h:48
    -
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    -
    void print_queryparam(query_param_t query_param)
    print query parameters
    Definition: query_parser.c:238
    -
    @ OPJ_PCRL
    precinct-component-resolution-layer order
    Definition: openjpeg.h:302
    -
    #define MAX_NUMOFBOX
    maximum number of meta request box
    Definition: query_parser.h:38
    -
    char box_type[MAX_NUMOFBOX][4]
    interested box-types
    Definition: query_parser.h:60
    -
    query_param_t * parse_query(const char *query_string)
    parse query
    Definition: query_parser.c:88
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    @ non
    Definition: query_parser.h:41
    -
    int layers
    quality layers
    Definition: query_parser.h:52
    -
    @ UNKNOWN
    Definition: query_parser.h:44
    -
    char * cid
    channel identifier
    Definition: query_parser.h:55
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    @ udp
    Definition: query_parser.h:41
    -
    cnew_transport_t cnew
    transport name if there is new channel request, else non
    Definition: query_parser.h:57
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void parse_comps(char *field, query_param_t *query_param)
    Definition: query_parser.c:412
    -
    image_return
    image return type
    Definition: query_parser.h:44
    -
    @ OPJ_RPCL
    resolution-precinct-component-layer order
    Definition: openjpeg.h:301
    -
    cnew_transport
    cnew aux transport name
    Definition: query_parser.h:41
    -
    void delete_query(query_param_t **query)
    delete query
    Definition: query_parser.c:449
    -
    #define JPIP_PPIX
    Definition: indexbox_manager.h:50
    -
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    -
    void parse_metareq(char *field, query_param_t *query_param)
    Definition: query_parser.c:321
    -
    OPJ_BOOL a[MAX_NUMOFBOX]
    Definition: query_parser.h:65
    -
    OPJ_BOOL w[MAX_NUMOFBOX]
    Metadata request qualifier flags.
    Definition: query_parser.h:62
    -
    char * tid
    target identifier
    Definition: query_parser.h:49
    -
    OPJ_UINT32 length
    Definition: jp2.h:199
    -
    OPJ_PROG_ORDER prog
    progression order
    Definition: openjpeg.h:857
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    void parse_req_box_prop(char *req_box_prop, int idx, query_param_t *query_param)
    Definition: query_parser.c:362
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    int numOfcclose
    number of closing channels
    Definition: query_parser.h:59
    -
    Query parameters.
    Definition: query_parser.h:47
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_BOOL s[MAX_NUMOFBOX]
    Definition: query_parser.h:63
    -
    @ OPJ_LRCP
    layer-resolution-component-precinct order
    Definition: openjpeg.h:299
    -
    OPJ_BOOL g[MAX_NUMOFBOX]
    Definition: query_parser.h:64
    -
    @ JPPstream
    Definition: query_parser.h:44
    -
    #define JPIP_FAIX
    Definition: indexbox_manager.h:46
    -
    int * numdecompos
    number of decomposition for each component
    Definition: openjpeg.h:875
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    @ JPTstream
    Definition: query_parser.h:44
    -
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    -
    int rx
    Definition: query_parser.h:51
    -
    OPJ_BOOL priority[MAX_NUMOFBOX]
    priority flag
    Definition: query_parser.h:66
    -
    int fx
    Definition: query_parser.h:50
    - -
    char * get_fieldparam(const char *stringptr, char *fieldname, char *fieldval)
    Definition: query_parser.c:211
    -
    enum cnew_transport cnew_transport_t
    cnew aux transport name
    -
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    - - - - diff --git a/build/doc/html/session__manager_8c.html b/build/doc/html/session__manager_8c.html deleted file mode 100644 index e051dc39b..000000000 --- a/build/doc/html/session__manager_8c.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -OpenJPEG: session_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    session_manager.c File Reference
    -
    -
    -
    #include <stdlib.h>
    -#include <string.h>
    -#include <stdio.h>
    -#include "session_manager.h"
    -#include "target_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    sessionlist_param_tgene_sessionlist (void)
     generate a session list More...
     
    session_param_tgene_session (sessionlist_param_t *sessionlist)
     generate a session under the sesion list More...
     
    OPJ_BOOL search_session_and_channel (char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
     search a channel and its belonging session by channel ID More...
     
    void insert_cachemodel_into_session (session_param_t *session, cachemodel_param_t *cachemodel)
     insert a cache model into a session More...
     
    OPJ_BOOL delete_session (session_param_t **session, sessionlist_param_t *sessionlist)
     delete a session More...
     
    void delete_sessionlist (sessionlist_param_t **sessionlist)
     delete session list More...
     
    void print_allsession (sessionlist_param_t *sessionlist)
     print all sessions More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_session()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL delete_session (session_param_t ** session,
    sessionlist_param_tsessionlist 
    )
    -
    - -

    delete a session

    -
    Parameters
    - - - -
    [in]sessionaddress of the session pointer
    [in]sessionlistsession list pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References delete_cachemodellist(), delete_channellist(), sessionlist_param::first, sessionlist_param::last, logstream, session_param::next, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ delete_sessionlist()

    - -
    -
    - - - - - - - - -
    void delete_sessionlist (sessionlist_param_t ** sessionlist)
    -
    - -

    delete session list

    -
    Parameters
    - - -
    [in,out]sessionlistaddress of the session list pointer
    -
    -
    - -

    References session_param::cachemodellist, session_param::channellist, delete_cachemodellist(), delete_channellist(), logstream, session_param::next, and opj_free().

    - -
    -
    - -

    ◆ gene_session()

    - -
    -
    - - - - - - - - -
    session_param_t* gene_session (sessionlist_param_tsessionlist)
    -
    - -

    generate a session under the sesion list

    -
    Parameters
    - - -
    [in]sessionlistsession list to insert the new session
    -
    -
    -
    Returns
    pointer to the generated session
    - -

    References session_param::cachemodellist, session_param::channellist, sessionlist_param::first, gene_cachemodellist(), gene_channellist(), sessionlist_param::last, session_param::next, and opj_malloc().

    - -

    Referenced by open_channel().

    - -
    -
    - -

    ◆ gene_sessionlist()

    - -
    -
    - - - - - - - - -
    sessionlist_param_t* gene_sessionlist (void )
    -
    - -

    generate a session list

    -
    Returns
    pointer to the generated session list
    - -

    References sessionlist_param::first, sessionlist_param::last, and opj_malloc().

    - -
    -
    - -

    ◆ insert_cachemodel_into_session()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_cachemodel_into_session (session_param_tsession,
    cachemodel_param_tcachemodel 
    )
    -
    - -

    insert a cache model into a session

    -
    Parameters
    - - - -
    [in]sessionsession pointer
    [in]cachemodelcachemodel pointer
    -
    -
    - -

    References session_param::cachemodellist, cachemodellist_param::first, cachemodellist_param::last, logstream, and cachemodel_param::next.

    - -
    -
    - -

    ◆ print_allsession()

    - -
    -
    - - - - - - - - -
    void print_allsession (sessionlist_param_tsessionlist)
    -
    -
    - -

    ◆ search_session_and_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL search_session_and_channel (char cid[],
    sessionlist_param_tsessionlist,
    session_param_t ** foundsession,
    channel_param_t ** foundchannel 
    )
    -
    - -

    search a channel and its belonging session by channel ID

    -
    Parameters
    - - - - - -
    [in]cidchannel identifier
    [in]sessionlistsession list pointer
    [in,out]foundsessionaddress of the found session pointer
    [in,out]foundchanneladdress of the found channel pointer
    -
    -
    -
    Returns
    if the channel is found (true) or not (false)
    - -

    References FCGI_stdout, sessionlist_param::first, session_param::next, channel_param::next, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by associate_channel(), and close_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/session__manager_8h.html b/build/doc/html/session__manager_8h.html deleted file mode 100644 index d111f135a..000000000 --- a/build/doc/html/session__manager_8h.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - -OpenJPEG: session_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    session_manager.h File Reference
    -
    -
    -
    #include "channel_manager.h"
    -#include "cachemodel_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  session_param
     Session parameters. More...
     
    struct  sessionlist_param
     Session list parameters. More...
     
    - - - - - - - -

    -Typedefs

    typedef struct session_param session_param_t
     Session parameters. More...
     
    typedef struct sessionlist_param sessionlist_param_t
     Session list parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    sessionlist_param_tgene_sessionlist (void)
     generate a session list More...
     
    session_param_tgene_session (sessionlist_param_t *sessionlist)
     generate a session under the sesion list More...
     
    OPJ_BOOL search_session_and_channel (char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
     search a channel and its belonging session by channel ID More...
     
    void insert_cachemodel_into_session (session_param_t *session, cachemodel_param_t *cachemodel)
     insert a cache model into a session More...
     
    OPJ_BOOL delete_session (session_param_t **session, sessionlist_param_t *sessionlist)
     delete a session More...
     
    void delete_sessionlist (sessionlist_param_t **sessionlist)
     delete session list More...
     
    void print_allsession (sessionlist_param_t *sessionlist)
     print all sessions More...
     
    -

    Typedef Documentation

    - -

    ◆ session_param_t

    - -
    -
    - - - - -
    typedef struct session_param session_param_t
    -
    - -

    Session parameters.

    - -
    -
    - -

    ◆ sessionlist_param_t

    - -
    -
    - - - - -
    typedef struct sessionlist_param sessionlist_param_t
    -
    - -

    Session list parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_session()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL delete_session (session_param_t ** session,
    sessionlist_param_tsessionlist 
    )
    -
    - -

    delete a session

    -
    Parameters
    - - - -
    [in]sessionaddress of the session pointer
    [in]sessionlistsession list pointer
    -
    -
    -
    Returns
    if succeeded (true) or failed (false)
    - -

    References delete_cachemodellist(), delete_channellist(), sessionlist_param::first, sessionlist_param::last, logstream, session_param::next, OPJ_FALSE, opj_free(), and OPJ_TRUE.

    - -

    Referenced by close_channel().

    - -
    -
    - -

    ◆ delete_sessionlist()

    - -
    -
    - - - - - - - - -
    void delete_sessionlist (sessionlist_param_t ** sessionlist)
    -
    - -

    delete session list

    -
    Parameters
    - - -
    [in,out]sessionlistaddress of the session list pointer
    -
    -
    - -

    References session_param::cachemodellist, session_param::channellist, delete_cachemodellist(), delete_channellist(), logstream, session_param::next, and opj_free().

    - -
    -
    - -

    ◆ gene_session()

    - -
    -
    - - - - - - - - -
    session_param_t* gene_session (sessionlist_param_tsessionlist)
    -
    - -

    generate a session under the sesion list

    -
    Parameters
    - - -
    [in]sessionlistsession list to insert the new session
    -
    -
    -
    Returns
    pointer to the generated session
    - -

    References session_param::cachemodellist, session_param::channellist, sessionlist_param::first, gene_cachemodellist(), gene_channellist(), sessionlist_param::last, session_param::next, and opj_malloc().

    - -

    Referenced by open_channel().

    - -
    -
    - -

    ◆ gene_sessionlist()

    - -
    -
    - - - - - - - - -
    sessionlist_param_t* gene_sessionlist (void )
    -
    - -

    generate a session list

    -
    Returns
    pointer to the generated session list
    - -

    References sessionlist_param::first, sessionlist_param::last, and opj_malloc().

    - -
    -
    - -

    ◆ insert_cachemodel_into_session()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void insert_cachemodel_into_session (session_param_tsession,
    cachemodel_param_tcachemodel 
    )
    -
    - -

    insert a cache model into a session

    -
    Parameters
    - - - -
    [in]sessionsession pointer
    [in]cachemodelcachemodel pointer
    -
    -
    - -

    References session_param::cachemodellist, cachemodellist_param::first, cachemodellist_param::last, logstream, and cachemodel_param::next.

    - -
    -
    - -

    ◆ print_allsession()

    - -
    -
    - - - - - - - - -
    void print_allsession (sessionlist_param_tsessionlist)
    -
    -
    - -

    ◆ search_session_and_channel()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL search_session_and_channel (char cid[],
    sessionlist_param_tsessionlist,
    session_param_t ** foundsession,
    channel_param_t ** foundchannel 
    )
    -
    - -

    search a channel and its belonging session by channel ID

    -
    Parameters
    - - - - - -
    [in]cidchannel identifier
    [in]sessionlistsession list pointer
    [in,out]foundsessionaddress of the found session pointer
    [in,out]foundchanneladdress of the found channel pointer
    -
    -
    -
    Returns
    if the channel is found (true) or not (false)
    - -

    References FCGI_stdout, sessionlist_param::first, session_param::next, channel_param::next, OPJ_FALSE, and OPJ_TRUE.

    - -

    Referenced by associate_channel(), and close_channel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/session__manager_8h_source.html b/build/doc/html/session__manager_8h_source.html deleted file mode 100644 index 845a5b7a3..000000000 --- a/build/doc/html/session__manager_8h_source.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -OpenJPEG: session_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    session_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef SESSION_MANAGER_H_
    -
    32 # define SESSION_MANAGER_H_
    -
    33 
    -
    34 #include "channel_manager.h"
    -
    35 #include "cachemodel_manager.h"
    -
    36 
    -
    38 typedef struct session_param {
    - - -
    41  struct session_param *next;
    - -
    43 
    -
    45 typedef struct sessionlist_param {
    - - - -
    49 
    -
    50 
    - -
    57 
    -
    58 
    - -
    66 
    - -
    77  sessionlist_param_t *sessionlist,
    -
    78  session_param_t **foundsession,
    -
    79  channel_param_t **foundchannel);
    -
    80 
    - -
    88  cachemodel_param_t *cachemodel);
    -
    89 
    -
    90 
    - -
    99  sessionlist_param_t *sessionlist);
    -
    100 
    -
    101 
    -
    107 void delete_sessionlist(sessionlist_param_t **sessionlist);
    -
    108 
    -
    114 void print_allsession(sessionlist_param_t *sessionlist);
    -
    115 
    -
    116 
    -
    117 #endif /* !SESSION_MANAGER_H_ */
    -
    -
    Cache model parameters.
    Definition: cachemodel_manager.h:37
    -
    void insert_cachemodel_into_session(session_param_t *session, cachemodel_param_t *cachemodel)
    insert a cache model into a session
    Definition: session_manager.c:108
    -
    Session parameters.
    Definition: session_manager.h:38
    -
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    -
    void print_allchannel(channellist_param_t *channellist)
    print all channel parameters
    Definition: channel_manager.c:161
    -
    OPJ_BOOL delete_session(session_param_t **session, sessionlist_param_t *sessionlist)
    delete a session
    Definition: session_manager.c:126
    - -
    Session list parameters.
    Definition: session_manager.h:45
    -
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    - -
    void insert_cachemodel_into_session(session_param_t *session, cachemodel_param_t *cachemodel)
    insert a cache model into a session
    Definition: session_manager.c:108
    -
    #define FCGI_stdout
    Definition: session_manager.c:41
    -
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    -
    OPJ_BOOL search_session_and_channel(char cid[], sessionlist_param_t *sessionlist, session_param_t **foundsession, channel_param_t **foundchannel)
    search a channel and its belonging session by channel ID
    Definition: session_manager.c:80
    -
    channellist_param_t * channellist
    channel list pointer
    Definition: session_manager.h:39
    -
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    - -
    session_param_t * gene_session(sessionlist_param_t *sessionlist)
    generate a session under the sesion list
    Definition: session_manager.c:59
    -
    sessionlist_param_t * gene_sessionlist(void)
    generate a session list
    Definition: session_manager.c:47
    -
    session_param_t * last
    last session pointer of the list
    Definition: session_manager.h:47
    -
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    -
    void print_allsession(sessionlist_param_t *sessionlist)
    print all sessions
    Definition: session_manager.c:186
    -
    void delete_channellist(channellist_param_t **channellist)
    delete channel list
    Definition: channel_manager.c:145
    -
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    target_param_t * target
    reference pointer to the target
    Definition: cachemodel_manager.h:38
    -
    channellist_param_t * gene_channellist(void)
    generate a channel list
    Definition: channel_manager.c:48
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    struct session_param session_param_t
    Session parameters.
    -
    struct channel_param * next
    pointer to the next channel
    Definition: channel_manager.h:49
    -
    Cache model list parameters.
    Definition: cachemodel_manager.h:48
    -
    void delete_cachemodellist(cachemodellist_param_t **cachemodellist)
    delete cachemodel list
    Definition: cachemodel_manager.c:178
    -
    session_param_t * first
    first session pointer of the list
    Definition: session_manager.h:46
    -
    struct cachemodel_param * next
    pointer to the next cache model
    Definition: cachemodel_manager.h:44
    -
    void delete_sessionlist(sessionlist_param_t **sessionlist)
    delete session list
    Definition: session_manager.c:161
    -
    Channel list parameters.
    Definition: channel_manager.h:54
    -
    cachemodellist_param_t * gene_cachemodellist(void)
    generate a cache model list
    Definition: cachemodel_manager.c:47
    -
    #define logstream
    Definition: session_manager.c:43
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    cachemodel_param_t * first
    first cache model pointer of the list
    Definition: cachemodel_manager.h:49
    - -
    cachemodel_param_t * last
    last cache model pointer of the list
    Definition: cachemodel_manager.h:50
    -
    struct session_param * next
    pointer to the next session
    Definition: session_manager.h:41
    -
    Channel parameters.
    Definition: channel_manager.h:43
    -
    struct sessionlist_param sessionlist_param_t
    Session list parameters.
    -
    cachemodellist_param_t * cachemodellist
    cache list pointer
    Definition: session_manager.h:40
    - - - - diff --git a/build/doc/html/sock__manager_8c.html b/build/doc/html/sock__manager_8c.html deleted file mode 100644 index e354fbbc2..000000000 --- a/build/doc/html/sock__manager_8c.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - -OpenJPEG: sock_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    sock_manager.c File Reference
    -
    -
    -
    #include <sys/types.h>
    -#include <sys/socket.h>
    -#include <arpa/inet.h>
    -#include <unistd.h>
    -#include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include "sock_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    SOCKET open_listeningsocket (uint16_t port)
     open listening socket More...
     
    SOCKET accept_socket (SOCKET listening_socket)
     accept a new connection to the listenning socket More...
     
    void send_stream (SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
     send data stream to client More...
     
    void * receive_stream (SOCKET connected_socket, OPJ_SIZE_T length)
     receive data stream to client More...
     
    OPJ_SIZE_T receive_line (SOCKET connected_socket, char *p)
     receive a string line (ending with '
    -') from client More...
     
    char * receive_string (SOCKET connected_socket)
     receive a string line (ending with '
    -') from client, return malloc string More...
     
    int close_socket (SOCKET sock)
     close socket More...
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ accept_socket()

    - -
    -
    - - - - - - - - -
    SOCKET accept_socket (SOCKET listening_socket)
    -
    - -

    accept a new connection to the listenning socket

    -
    Parameters
    - - -
    listening_socketlistenning socket
    -
    -
    -
    Returns
    connected socket (-1 if error occurs)
    - -

    Referenced by accept_connection(), and aux_streaming().

    - -
    -
    - -

    ◆ close_socket()

    - -
    -
    - - - - - - - - -
    int close_socket (SOCKET sock)
    -
    - -

    close socket

    -
    Parameters
    - - -
    [in]sockclosing socket
    -
    -
    -
    Returns
    0 if succeed, -1 if failed
    - -

    Referenced by aux_streaming(), close_aux_transport(), handle_clientreq(), open_listeningsocket(), and terminate_dec_server().

    - -
    -
    - -

    ◆ open_listeningsocket()

    - -
    -
    - - - - - - - - -
    SOCKET open_listeningsocket (uint16_t port)
    -
    - -

    open listening socket

    -
    Parameters
    - - -
    portopening port number
    -
    -
    -
    Returns
    new socket
    - -

    References close_socket(), and FCGI_stderr.

    - -

    Referenced by init_aux_transport(), and init_dec_server().

    - -
    -
    - -

    ◆ receive_line()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T receive_line (SOCKET connected_socket,
    char * buf 
    )
    -
    - -

    receive a string line (ending with '
    -') from client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [out]bufstring to be stored
    -
    -
    -
    Returns
    red size
    - -

    References FCGI_stderr.

    - -

    Referenced by handle_PNMreqMSG(), identify_clientmsg(), receive_JPIPstream(), and receive_string().

    - -
    -
    - -

    ◆ receive_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* receive_stream (SOCKET connected_socket,
    OPJ_SIZE_T length 
    )
    -
    - -

    receive data stream to client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]lengthlength of the receiving stream
    -
    -
    -
    Returns
    pointer to the data stream (memory allocated), NULL if failed
    - -

    References FCGI_stderr.

    - -

    Referenced by receive_JPIPstream(), and recv_ack().

    - -
    -
    - -

    ◆ receive_string()

    - -
    -
    - - - - - - - - -
    char* receive_string (SOCKET connected_socket)
    -
    - -

    receive a string line (ending with '
    -') from client, return malloc string

    -
    Parameters
    - - -
    [in]connected_socketfile descriptor of the connected socket
    -
    -
    -
    Returns
    pointer to the string (memory allocated)
    - -

    References BUF_LEN, and receive_line().

    - -

    Referenced by handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), and identify_cid().

    - -
    -
    - -

    ◆ send_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_stream (SOCKET connected_socket,
    const void * stream,
    OPJ_SIZE_T length 
    )
    -
    - -

    send data stream to client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]streamdata stream
    [in]lengthlength of data stream
    -
    -
    - -

    References FCGI_stderr.

    - -

    Referenced by aux_streaming(), response_signal(), send_IDstream(), send_PNMstream(), send_SIZstream(), and send_XMLstream().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/sock__manager_8h.html b/build/doc/html/sock__manager_8h.html deleted file mode 100644 index 66afe294d..000000000 --- a/build/doc/html/sock__manager_8h.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - -OpenJPEG: sock_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    sock_manager.h File Reference
    -
    -
    -
    #include "byte_manager.h"
    -#include "opj_stdint.h"
    -
    -

    Go to the source code of this file.

    - - - - -

    -Macros

    #define BUF_LEN   256
     
    - - - -

    -Typedefs

    typedef int SOCKET
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    SOCKET open_listeningsocket (uint16_t port)
     open listening socket More...
     
    SOCKET accept_socket (SOCKET listening_socket)
     accept a new connection to the listenning socket More...
     
    OPJ_SIZE_T receive_line (SOCKET connected_socket, char *buf)
     receive a string line (ending with '
    -') from client More...
     
    char * receive_string (SOCKET connected_socket)
     receive a string line (ending with '
    -') from client, return malloc string More...
     
    void * receive_stream (SOCKET connected_socket, OPJ_SIZE_T length)
     receive data stream to client More...
     
    void send_stream (SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
     send data stream to client More...
     
    int close_socket (SOCKET sock)
     close socket More...
     
    -

    Macro Definition Documentation

    - -

    ◆ BUF_LEN

    - -
    -
    - - - - -
    #define BUF_LEN   256
    -
    - -
    -
    -

    Typedef Documentation

    - -

    ◆ SOCKET

    - -
    -
    - - - - -
    typedef int SOCKET
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ accept_socket()

    - -
    -
    - - - - - - - - -
    SOCKET accept_socket (SOCKET listening_socket)
    -
    - -

    accept a new connection to the listenning socket

    -
    Parameters
    - - -
    listening_socketlistenning socket
    -
    -
    -
    Returns
    connected socket (-1 if error occurs)
    - -

    Referenced by accept_connection(), and aux_streaming().

    - -
    -
    - -

    ◆ close_socket()

    - -
    -
    - - - - - - - - -
    int close_socket (SOCKET sock)
    -
    - -

    close socket

    -
    Parameters
    - - -
    [in]sockclosing socket
    -
    -
    -
    Returns
    0 if succeed, -1 if failed
    - -

    Referenced by aux_streaming(), close_aux_transport(), handle_clientreq(), open_listeningsocket(), and terminate_dec_server().

    - -
    -
    - -

    ◆ open_listeningsocket()

    - -
    -
    - - - - - - - - -
    SOCKET open_listeningsocket (uint16_t port)
    -
    - -

    open listening socket

    -
    Parameters
    - - -
    portopening port number
    -
    -
    -
    Returns
    new socket
    - -

    References close_socket(), and FCGI_stderr.

    - -

    Referenced by init_aux_transport(), and init_dec_server().

    - -
    -
    - -

    ◆ receive_line()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    OPJ_SIZE_T receive_line (SOCKET connected_socket,
    char * buf 
    )
    -
    - -

    receive a string line (ending with '
    -') from client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [out]bufstring to be stored
    -
    -
    -
    Returns
    red size
    - -

    References FCGI_stderr.

    - -

    Referenced by handle_PNMreqMSG(), identify_clientmsg(), receive_JPIPstream(), and receive_string().

    - -
    -
    - -

    ◆ receive_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* receive_stream (SOCKET connected_socket,
    OPJ_SIZE_T length 
    )
    -
    - -

    receive data stream to client

    -
    Parameters
    - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]lengthlength of the receiving stream
    -
    -
    -
    Returns
    pointer to the data stream (memory allocated), NULL if failed
    - -

    References FCGI_stderr.

    - -

    Referenced by receive_JPIPstream(), and recv_ack().

    - -
    -
    - -

    ◆ receive_string()

    - -
    -
    - - - - - - - - -
    char* receive_string (SOCKET connected_socket)
    -
    - -

    receive a string line (ending with '
    -') from client, return malloc string

    -
    Parameters
    - - -
    [in]connected_socketfile descriptor of the connected socket
    -
    -
    -
    Returns
    pointer to the string (memory allocated)
    - -

    References BUF_LEN, and receive_line().

    - -

    Referenced by handle_CIDreqMSG(), handle_dstCIDreqMSG(), handle_JP2saveMSG(), handle_PNMreqMSG(), handle_SIZreqMSG(), handle_TIDreqMSG(), handle_XMLreqMSG(), and identify_cid().

    - -
    -
    - -

    ◆ send_stream()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void send_stream (SOCKET connected_socket,
    const void * stream,
    OPJ_SIZE_T length 
    )
    -
    - -

    send data stream to client

    -
    Parameters
    - - - - -
    [in]connected_socketfile descriptor of the connected socket
    [in]streamdata stream
    [in]lengthlength of data stream
    -
    -
    - -

    References FCGI_stderr.

    - -

    Referenced by aux_streaming(), response_signal(), send_IDstream(), send_PNMstream(), send_SIZstream(), and send_XMLstream().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/sock__manager_8h_source.html b/build/doc/html/sock__manager_8h_source.html deleted file mode 100644 index 0c6fc451d..000000000 --- a/build/doc/html/sock__manager_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -OpenJPEG: sock_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    sock_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef SOCK_MANAGER_H_
    -
    32 # define SOCK_MANAGER_H_
    -
    33 
    -
    34 #include "byte_manager.h"
    -
    35 #include "opj_stdint.h"
    -
    36 
    -
    37 #ifdef _WIN32
    -
    38 #include <winsock.h>
    -
    39 #else
    -
    40 typedef int SOCKET;
    -
    41 #endif /*_WIN32*/
    -
    42 
    -
    43 #define BUF_LEN 256
    -
    44 
    -
    51 SOCKET open_listeningsocket(uint16_t port);
    -
    52 
    -
    59 SOCKET accept_socket(SOCKET listening_socket);
    -
    60 
    -
    61 
    -
    69 OPJ_SIZE_T receive_line(SOCKET connected_socket, char *buf);
    -
    70 
    -
    77 char * receive_string(SOCKET connected_socket);
    -
    78 
    -
    86 void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length);
    -
    87 
    -
    95 void send_stream(SOCKET connected_socket, const void *stream,
    -
    96  OPJ_SIZE_T length);
    -
    97 
    -
    104 int close_socket(SOCKET sock);
    -
    105 
    -
    106 #endif /* !SOCK_MANAGER_H_ */
    -
    -
    #define FCGI_stderr
    Definition: sock_manager.c:53
    -
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    -
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    -
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    - -
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    -
    void * receive_stream(SOCKET connected_socket, OPJ_SIZE_T length)
    receive data stream to client
    Definition: sock_manager.c:120
    -
    int SOCKET
    Definition: sock_manager.h:40
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    -
    void send_stream(SOCKET connected_socket, const void *stream, OPJ_SIZE_T length)
    send data stream to client
    Definition: sock_manager.c:104
    -
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    -
    SOCKET open_listeningsocket(uint16_t port)
    open listening socket
    Definition: sock_manager.c:57
    -
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *p)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    -
    #define BUF_LEN
    Definition: sock_manager.h:43
    -
    OPJ_SIZE_T receive_line(SOCKET connected_socket, char *buf)
    receive a string line (ending with ' ') from client
    Definition: sock_manager.c:142
    -
    int close_socket(SOCKET sock)
    close socket
    Definition: sock_manager.c:180
    -
    char * receive_string(SOCKET connected_socket)
    receive a string line (ending with ' ') from client, return malloc string
    Definition: sock_manager.c:169
    - -
    SOCKET accept_socket(SOCKET listening_socket)
    accept a new connection to the listenning socket
    Definition: sock_manager.c:96
    - - - - - diff --git a/build/doc/html/sparse__array_8c.html b/build/doc/html/sparse__array_8c.html deleted file mode 100644 index 0c0dbbf07..000000000 --- a/build/doc/html/sparse__array_8c.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - - - - -OpenJPEG: sparse_array.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    sparse_array.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - -

    -Data Structures

    struct  opj_sparse_array_int32
     
    - - - - - - - - - - - - - - - - - - -

    -Functions

    opj_sparse_array_int32_topj_sparse_array_int32_create (OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
     Creates a new sparse array. More...
     
    void opj_sparse_array_int32_free (opj_sparse_array_int32_t *sa)
     Frees a sparse array. More...
     
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether region bounds are valid (non empty and within array bounds) More...
     
    static OPJ_BOOL opj_sparse_array_int32_read_or_write (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *buf, OPJ_UINT32 buf_col_stride, OPJ_UINT32 buf_line_stride, OPJ_BOOL forgiving, OPJ_BOOL is_read_op)
     
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
     Read the content of a rectangular region of the sparse array into a user buffer. More...
     
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
     Write the content of a rectangular region into the sparse array from a user buffer. More...
     
    -

    Function Documentation

    - -

    ◆ opj_sparse_array_int32_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_sparse_array_int32_t* opj_sparse_array_int32_create (OPJ_UINT32 width,
    OPJ_UINT32 height,
    OPJ_UINT32 block_width,
    OPJ_UINT32 block_height 
    )
    -
    - -

    Creates a new sparse array.

    -
    Parameters
    - - - - - -
    widthtotal width of the array.
    heighttotal height of the array
    block_widthwidth of a block.
    block_heightheight of a block.
    -
    -
    -
    Returns
    a new sparse array instance, or NULL in case of failure.
    - -

    References opj_sparse_array_int32::block_count_hor, opj_sparse_array_int32::block_count_ver, opj_sparse_array_int32::block_height, opj_sparse_array_int32::block_width, opj_sparse_array_int32::data_blocks, opj_sparse_array_int32::height, opj_calloc(), opj_free(), opj_uint_ceildiv(), and opj_sparse_array_int32::width.

    - -

    Referenced by main(), and opj_dwt_init_sparse_array().

    - -
    -
    - -

    ◆ opj_sparse_array_int32_free()

    - -
    -
    - - - - - - - - -
    void opj_sparse_array_int32_free (opj_sparse_array_int32_tsa)
    -
    -
    - -

    ◆ opj_sparse_array_int32_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32dest,
    OPJ_UINT32 dest_col_stride,
    OPJ_UINT32 dest_line_stride,
    OPJ_BOOL forgiving 
    )
    -
    - -

    Read the content of a rectangular region of the sparse array into a user buffer.

    -

    Regions not written with opj_sparse_array_int32_write() are read as 0.

    -
    Parameters
    - - - - - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region to read in the sparse array.
    y0top x coordinate of the region to read in the sparse array.
    x1right x coordinate (not included) of the region to read in the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to read in the sparse array. Must be greater than y0.
    destuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * dest_line_stride + (x1 - x0 - 1) * dest_col_stride + 1) bytes large.
    dest_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    dest_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_sparse_array_int32_read_or_write(), and OPJ_TRUE.

    - -

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), opj_dwt_interleave_partial_h(), opj_dwt_interleave_partial_v(), opj_v4dwt_interleave_partial_h(), and opj_v4dwt_interleave_partial_v().

    - -
    -
    - -

    ◆ opj_sparse_array_int32_read_or_write()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_sparse_array_int32_read_or_write (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32buf,
    OPJ_UINT32 buf_col_stride,
    OPJ_UINT32 buf_line_stride,
    OPJ_BOOL forgiving,
    OPJ_BOOL is_read_op 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_sparse_array_int32_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    const OPJ_INT32src,
    OPJ_UINT32 src_col_stride,
    OPJ_UINT32 src_line_stride,
    OPJ_BOOL forgiving 
    )
    -
    - -

    Write the content of a rectangular region into the sparse array from a user buffer.

    -

    Blocks intersecting the region are allocated, if not already done.

    -
    Parameters
    - - - - - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region to write into the sparse array.
    y0top x coordinate of the region to write into the sparse array.
    x1right x coordinate (not included) of the region to write into the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to write into the sparse array. Must be greater than y0.
    srcuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * src_line_stride + (x1 - x0 - 1) * src_col_stride + 1) bytes large.
    src_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    src_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References OPJ_FALSE, and opj_sparse_array_int32_read_or_write().

    - -

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_init_sparse_array().

    - -
    -
    - -

    ◆ opj_sparse_array_is_region_valid()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    -
    - -

    Returns whether region bounds are valid (non empty and within array bounds)

    -
    Parameters
    - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region.
    y0top x coordinate of the region.
    x1right x coordinate (not included) of the region. Must be greater than x0.
    y1bottom y coordinate (not included) of the region. Must be greater than y0.
    -
    -
    -
    Returns
    OPJ_TRUE or OPJ_FALSE.
    - -

    References opj_sparse_array_int32::height, and opj_sparse_array_int32::width.

    - -

    Referenced by opj_sparse_array_int32_read_or_write().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/sparse__array_8h.html b/build/doc/html/sparse__array_8h.html deleted file mode 100644 index c3042f606..000000000 --- a/build/doc/html/sparse__array_8h.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - -OpenJPEG: sparse_array.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    sparse_array.h File Reference
    -
    -
    - -

    Sparse array management. -More...

    -
    #include "opj_includes.h"
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Typedefs

    typedef struct opj_sparse_array_int32 opj_sparse_array_int32_t
     Opaque type for sparse arrays that contain int32 values. More...
     
    - - - - - - - - - - - - - - - - -

    -Functions

    opj_sparse_array_int32_topj_sparse_array_int32_create (OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
     Creates a new sparse array. More...
     
    void opj_sparse_array_int32_free (opj_sparse_array_int32_t *sa)
     Frees a sparse array. More...
     
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether region bounds are valid (non empty and within array bounds) More...
     
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
     Read the content of a rectangular region of the sparse array into a user buffer. More...
     
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
     Write the content of a rectangular region into the sparse array from a user buffer. More...
     
    -

    Detailed Description

    -

    Sparse array management.

    -

    The functions in this file manage sparse arrays. Sparse arrays are arrays with potential big dimensions, but with very few samples actually set. Such sparse arrays require allocating a low amount of memory, by just allocating memory for blocks of the array that are set. The minimum memory allocation unit is a a block. There is a trade-off to pick up an appropriate dimension for blocks. If it is too big, and pixels set are far from each other, too much memory will be used. If blocks are too small, the book-keeping costs of blocks will raise.

    -

    Typedef Documentation

    - -

    ◆ opj_sparse_array_int32_t

    - -
    -
    - -

    Opaque type for sparse arrays that contain int32 values.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_sparse_array_int32_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_sparse_array_int32_t* opj_sparse_array_int32_create (OPJ_UINT32 width,
    OPJ_UINT32 height,
    OPJ_UINT32 block_width,
    OPJ_UINT32 block_height 
    )
    -
    - -

    Creates a new sparse array.

    -
    Parameters
    - - - - - -
    widthtotal width of the array.
    heighttotal height of the array
    block_widthwidth of a block.
    block_heightheight of a block.
    -
    -
    -
    Returns
    a new sparse array instance, or NULL in case of failure.
    - -

    References opj_sparse_array_int32::block_count_hor, opj_sparse_array_int32::block_count_ver, opj_sparse_array_int32::block_height, opj_sparse_array_int32::block_width, opj_sparse_array_int32::data_blocks, opj_sparse_array_int32::height, opj_calloc(), opj_free(), opj_uint_ceildiv(), and opj_sparse_array_int32::width.

    - -

    Referenced by main(), and opj_dwt_init_sparse_array().

    - -
    -
    - -

    ◆ opj_sparse_array_int32_free()

    - -
    -
    - - - - - - - - -
    void opj_sparse_array_int32_free (opj_sparse_array_int32_tsa)
    -
    -
    - -

    ◆ opj_sparse_array_int32_read()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_int32_read (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    OPJ_INT32dest,
    OPJ_UINT32 dest_col_stride,
    OPJ_UINT32 dest_line_stride,
    OPJ_BOOL forgiving 
    )
    -
    - -

    Read the content of a rectangular region of the sparse array into a user buffer.

    -

    Regions not written with opj_sparse_array_int32_write() are read as 0.

    -
    Parameters
    - - - - - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region to read in the sparse array.
    y0top x coordinate of the region to read in the sparse array.
    x1right x coordinate (not included) of the region to read in the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to read in the sparse array. Must be greater than y0.
    destuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * dest_line_stride + (x1 - x0 - 1) * dest_col_stride + 1) bytes large.
    dest_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    dest_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References opj_sparse_array_int32_read_or_write(), and OPJ_TRUE.

    - -

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), opj_dwt_interleave_partial_h(), opj_dwt_interleave_partial_v(), opj_v4dwt_interleave_partial_h(), and opj_v4dwt_interleave_partial_v().

    - -
    -
    - -

    ◆ opj_sparse_array_int32_write()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_int32_write (opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1,
    const OPJ_INT32src,
    OPJ_UINT32 src_col_stride,
    OPJ_UINT32 src_line_stride,
    OPJ_BOOL forgiving 
    )
    -
    - -

    Write the content of a rectangular region into the sparse array from a user buffer.

    -

    Blocks intersecting the region are allocated, if not already done.

    -
    Parameters
    - - - - - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region to write into the sparse array.
    y0top x coordinate of the region to write into the sparse array.
    x1right x coordinate (not included) of the region to write into the sparse array. Must be greater than x0.
    y1bottom y coordinate (not included) of the region to write into the sparse array. Must be greater than y0.
    srcuser buffer to fill. Must be at least sizeof(int32) * ( (y1 - y0 - 1) * src_line_stride + (x1 - x0 - 1) * src_col_stride + 1) bytes large.
    src_col_stridespacing (in elements, not in bytes) in x dimension between consecutive elements of the user buffer.
    src_line_stridespacing (in elements, not in bytes) in y dimension between consecutive elements of the user buffer.
    forgivingif set to TRUE and the region is invalid, OPJ_TRUE will still be returned.
    -
    -
    -
    Returns
    OPJ_TRUE in case of success.
    - -

    References OPJ_FALSE, and opj_sparse_array_int32_read_or_write().

    - -

    Referenced by main(), opj_dwt_decode_partial_97(), opj_dwt_decode_partial_tile(), and opj_dwt_init_sparse_array().

    - -
    -
    - -

    ◆ opj_sparse_array_is_region_valid()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_sparse_array_is_region_valid (const opj_sparse_array_int32_tsa,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    -
    - -

    Returns whether region bounds are valid (non empty and within array bounds)

    -
    Parameters
    - - - - - - -
    sasparse array instance.
    x0left x coordinate of the region.
    y0top x coordinate of the region.
    x1right x coordinate (not included) of the region. Must be greater than x0.
    y1bottom y coordinate (not included) of the region. Must be greater than y0.
    -
    -
    -
    Returns
    OPJ_TRUE or OPJ_FALSE.
    - -

    References opj_sparse_array_int32::height, and opj_sparse_array_int32::width.

    - -

    Referenced by opj_sparse_array_int32_read_or_write().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/sparse__array_8h_source.html b/build/doc/html/sparse__array_8h_source.html deleted file mode 100644 index 28358a5f8..000000000 --- a/build/doc/html/sparse__array_8h_source.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -OpenJPEG: sparse_array.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    sparse_array.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2017, IntoPix SA <contact@intopix.com>
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #include "opj_includes.h"
    -
    33 
    -
    34 #ifndef OPJ_SPARSE_ARRAY_H
    -
    35 #define OPJ_SPARSE_ARRAY_H
    -
    36 
    -
    51 
    - -
    54 
    - - - - -
    66 
    - -
    71 
    - -
    81  OPJ_UINT32 x0,
    -
    82  OPJ_UINT32 y0,
    -
    83  OPJ_UINT32 x1,
    -
    84  OPJ_UINT32 y1);
    -
    85 
    - -
    103  OPJ_UINT32 x0,
    -
    104  OPJ_UINT32 y0,
    -
    105  OPJ_UINT32 x1,
    -
    106  OPJ_UINT32 y1,
    -
    107  OPJ_INT32* dest,
    -
    108  OPJ_UINT32 dest_col_stride,
    -
    109  OPJ_UINT32 dest_line_stride,
    -
    110  OPJ_BOOL forgiving);
    -
    111 
    -
    112 
    - -
    130  OPJ_UINT32 x0,
    -
    131  OPJ_UINT32 y0,
    -
    132  OPJ_UINT32 x1,
    -
    133  OPJ_UINT32 y1,
    -
    134  const OPJ_INT32* src,
    -
    135  OPJ_UINT32 src_col_stride,
    -
    136  OPJ_UINT32 src_line_stride,
    -
    137  OPJ_BOOL forgiving);
    -
    138 
    -
    141 #endif /* OPJ_SPARSE_ARRAY_H */
    -
    -
    OPJ_UINT32 block_count_hor
    Definition: sparse_array.c:40
    -
    OPJ_BOOL opj_sparse_array_is_region_valid(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether region bounds are valid (non empty and within array bounds)
    Definition: sparse_array.c:95
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    OPJ_UINT32 block_height
    Definition: sparse_array.c:39
    -
    OPJ_BOOL opj_sparse_array_is_region_valid(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether region bounds are valid (non empty and within array bounds)
    Definition: sparse_array.c:95
    -
    OPJ_INT32 ** data_blocks
    Definition: sparse_array.c:42
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    - -
    OPJ_UINT32 block_width
    Definition: sparse_array.c:38
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_UINT32 height
    Definition: sparse_array.c:37
    -
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    Definition: sparse_array.c:35
    -
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    -
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    -
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    -
    OPJ_UINT32 block_count_ver
    Definition: sparse_array.c:41
    -
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    -
    OPJ_UINT32 width
    Definition: sparse_array.c:36
    -
    static OPJ_BOOL opj_sparse_array_int32_read_or_write(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *buf, OPJ_UINT32 buf_col_stride, OPJ_UINT32 buf_line_stride, OPJ_BOOL forgiving, OPJ_BOOL is_read_op)
    Definition: sparse_array.c:105
    - - - - diff --git a/build/doc/html/splitbar.png b/build/doc/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/build/doc/html/struct_c_o_dmarker__param.html b/build/doc/html/struct_c_o_dmarker__param.html deleted file mode 100644 index d20257754..000000000 --- a/build/doc/html/struct_c_o_dmarker__param.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - -OpenJPEG: CODmarker_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    CODmarker_param Struct Reference
    -
    -
    - -

    A.6.1 Coding style default (COD) - More...

    - -

    #include <index_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte2_t Lcod
     length of marker segment excluding the marker More...
     
    Byte_t Scod
     Coding style for all components. More...
     
    OPJ_PROG_ORDER prog_order
     progression order More...
     
    Byte2_t numOflayers
     number of layers More...
     
    Byte_t numOfdecomp
     number of decompositions levels More...
     
    Byte4_tXPsiz
     dynamic array of precinct width at successive resolution level in order More...
     
    Byte4_tYPsiz
     dynamic array of precinct height at successive resolution level in order More...
     
    -

    Detailed Description

    -

    A.6.1 Coding style default (COD)

    -

    Field Documentation

    - -

    ◆ Lcod

    - -
    -
    - - - - -
    Byte2_t CODmarker_param::Lcod
    -
    - -

    length of marker segment excluding the marker

    - -

    Referenced by get_CODmkrdata_from_j2kstream(), get_mainheader_from_j2kstream(), modify_CODmkrstream(), modify_mainheader(), and set_CODmkrdata().

    - -
    -
    - -

    ◆ numOfdecomp

    - - - -

    ◆ numOflayers

    - - - -

    ◆ prog_order

    - -
    -
    - - - - -
    OPJ_PROG_ORDER CODmarker_param::prog_order
    -
    - -

    progression order

    - -

    Referenced by get_CODmkrdata_from_j2kstream(), print_COD(), recons_bitstream(), and set_CODmkrdata().

    - -
    -
    - -

    ◆ Scod

    - - - -

    ◆ XPsiz

    - -
    -
    - - - - -
    Byte4_t* CODmarker_param::XPsiz
    -
    - -

    dynamic array of precinct width at successive resolution level in order

    - -

    Referenced by comp_numOfprcts(), delete_COD(), enqueue_allprecincts(), enqueue_precincts(), get_CODmkrdata_from_j2kstream(), print_COD(), and set_CODmkrdata().

    - -
    -
    - -

    ◆ YPsiz

    - -
    -
    - - - - -
    Byte4_t* CODmarker_param::YPsiz
    -
    - -

    dynamic array of precinct height at successive resolution level in order

    - -

    Referenced by comp_numOfprcts(), delete_COD(), enqueue_allprecincts(), enqueue_precincts(), get_CODmkrdata_from_j2kstream(), print_COD(), and set_CODmkrdata().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/struct_s_i_zmarker__param.html b/build/doc/html/struct_s_i_zmarker__param.html deleted file mode 100644 index 45728082a..000000000 --- a/build/doc/html/struct_s_i_zmarker__param.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - -OpenJPEG: SIZmarker_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    SIZmarker_param Struct Reference
    -
    -
    - -

    progression order - More...

    - -

    #include <index_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte2_t Lsiz
     length of marker segment excluding the marker More...
     
    Byte2_t Rsiz
     capabilities that a decoder needs More...
     
    Byte4_t Xsiz
     width of the reference grid More...
     
    Byte4_t Ysiz
     height of the reference grid More...
     
    Byte4_t XOsiz
     horizontal offset from the origin of the reference grid to the left side of the image area More...
     
    Byte4_t YOsiz
     vertical offset from the origin of the reference grid to the top side of the image area More...
     
    Byte4_t XTsiz
     width of one reference tile with respect to the reference grid More...
     
    Byte4_t YTsiz
     height of one reference tile with respect to the reference grid More...
     
    Byte4_t XTOsiz
     horizontal offset from the origin of the reference grid to the left side of the first tile More...
     
    Byte4_t YTOsiz
     vertical offset from the origin of the reference grid to the top side of the first tile More...
     
    Byte4_t XTnum
     number of tiles in horizontal direction More...
     
    Byte4_t YTnum
     number of tiles in vertical direction More...
     
    Byte2_t Csiz
     number of the components in the image More...
     
    Byte_t Ssiz [3]
     precision (depth) in bits and sign of the component samples More...
     
    Byte_t XRsiz [3]
     horizontal separation of a sample of component with respect to the reference grid More...
     
    Byte_t YRsiz [3]
     vertical separation of a sample of component with respect to the reference grid More...
     
    -

    Detailed Description

    -

    progression order

    -

    A.5.1 Image and tile size (SIZ)

    -

    Field Documentation

    - -

    ◆ Csiz

    - - - -

    ◆ Lsiz

    - -
    -
    - - - - -
    Byte2_t SIZmarker_param::Lsiz
    -
    - -

    length of marker segment excluding the marker

    - -

    Referenced by get_mainheader_from_j2kstream(), get_SIZmkrdata_from_j2kstream(), modify_mainheader(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ Rsiz

    - -
    -
    - - - - -
    Byte2_t SIZmarker_param::Rsiz
    -
    - -

    capabilities that a decoder needs

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ Ssiz

    - -
    -
    - - - - -
    Byte_t SIZmarker_param::Ssiz[3]
    -
    - -

    precision (depth) in bits and sign of the component samples

    - -

    Referenced by get_SIZ_from_jpipstream(), get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ XOsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::XOsiz
    -
    - -

    horizontal offset from the origin of the reference grid to the left side of the image area

    - -

    Referenced by enqueue_imagedata(), get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ XRsiz

    - -
    -
    - - - - -
    Byte_t SIZmarker_param::XRsiz[3]
    -
    - -

    horizontal separation of a sample of component with respect to the reference grid

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ Xsiz

    - - - -

    ◆ XTnum

    - - - -

    ◆ XTOsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::XTOsiz
    -
    - -

    horizontal offset from the origin of the reference grid to the left side of the first tile

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ XTsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::XTsiz
    -
    - -

    width of one reference tile with respect to the reference grid

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Xrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ YOsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::YOsiz
    -
    - -

    vertical offset from the origin of the reference grid to the top side of the image area

    - -

    Referenced by enqueue_imagedata(), get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ YRsiz

    - -
    -
    - - - - -
    Byte_t SIZmarker_param::YRsiz[3]
    -
    - -

    vertical separation of a sample of component with respect to the reference grid

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ Ysiz

    - - - -

    ◆ YTnum

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::YTnum
    -
    -
    - -

    ◆ YTOsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::YTOsiz
    -
    - -

    vertical offset from the origin of the reference grid to the top side of the first tile

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ YTsiz

    - -
    -
    - - - - -
    Byte4_t SIZmarker_param::YTsiz
    -
    - -

    height of one reference tile with respect to the reference grid

    - -

    Referenced by get_SIZmkrdata_from_j2kstream(), get_tile_Yrange(), modify_SIZmkrstream(), print_SIZ(), and set_SIZmkrdata().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structaux__response__param.html b/build/doc/html/structaux__response__param.html deleted file mode 100644 index 00136e4c1..000000000 --- a/build/doc/html/structaux__response__param.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -OpenJPEG: aux_response_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    aux_response_param Struct Reference
    -
    -
    - - - - - - - - - - - - -

    -Data Fields

    char * cid
     
    unsigned char * data
     
    OPJ_SIZE_T datalen
     
    OPJ_SIZE_T maxlenPerFrame
     
    SOCKET listensock
     
    -

    Field Documentation

    - -

    ◆ cid

    - -
    -
    - - - - -
    char* aux_response_param::cid
    -
    -

    channel ID

    - -

    Referenced by aux_streaming(), and gene_auxresponse().

    - -
    -
    - -

    ◆ data

    - -
    -
    - - - - -
    unsigned char* aux_response_param::data
    -
    -

    sending data

    - -

    Referenced by aux_streaming(), and gene_auxresponse().

    - -
    -
    - -

    ◆ datalen

    - -
    -
    - - - - -
    OPJ_SIZE_T aux_response_param::datalen
    -
    -

    length of data

    - -

    Referenced by aux_streaming(), and gene_auxresponse().

    - -
    -
    - -

    ◆ listensock

    - -
    -
    - - - - -
    SOCKET aux_response_param::listensock
    -
    -

    listeing socket

    - -

    Referenced by aux_streaming(), and gene_auxresponse().

    - -
    -
    - -

    ◆ maxlenPerFrame

    - -
    -
    - - - - -
    OPJ_SIZE_T aux_response_param::maxlenPerFrame
    -
    -

    maximum data length to send per frame

    - -

    Referenced by aux_streaming(), and gene_auxresponse().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structauxtrans__param.html b/build/doc/html/structauxtrans__param.html deleted file mode 100644 index 2d8fced1b..000000000 --- a/build/doc/html/structauxtrans__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: auxtrans_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    auxtrans_param Struct Reference
    -
    -
    - -

    auxiliary transport setting parameters - More...

    - -

    #include <auxtrans_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    int tcpauxport
     tcp port More...
     
    int udpauxport
     udp port More...
     
    SOCKET tcplistensock
     listenning socket for aux tcp (-1 if not open) More...
     
    SOCKET udplistensock
     listenning socket for aux udp (-1 if not open) More...
     
    -

    Detailed Description

    -

    auxiliary transport setting parameters

    -

    Field Documentation

    - -

    ◆ tcpauxport

    - -
    -
    - - - - -
    int auxtrans_param::tcpauxport
    -
    - -

    tcp port

    - -

    Referenced by gene_channel(), and init_aux_transport().

    - -
    -
    - -

    ◆ tcplistensock

    - -
    -
    - - - - -
    SOCKET auxtrans_param::tcplistensock
    -
    - -

    listenning socket for aux tcp (-1 if not open)

    - -

    Referenced by close_aux_transport(), gene_auxresponse(), init_aux_transport(), and send_responsedata_on_aux().

    - -
    -
    - -

    ◆ udpauxport

    - -
    -
    - - - - -
    int auxtrans_param::udpauxport
    -
    - -

    udp port

    - -

    Referenced by gene_channel(), and init_aux_transport().

    - -
    -
    - -

    ◆ udplistensock

    - -
    -
    - - - - -
    SOCKET auxtrans_param::udplistensock
    -
    - -

    listenning socket for aux udp (-1 if not open)

    - -

    Referenced by close_aux_transport(), gene_auxresponse(), and init_aux_transport().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structbox__param.html b/build/doc/html/structbox__param.html deleted file mode 100644 index dc0ec4a3a..000000000 --- a/build/doc/html/structbox__param.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -OpenJPEG: box_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    box_param Struct Reference
    -
    -
    - -

    box parameters - More...

    - -

    #include <box_manager.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    int fd
     file descriptor More...
     
    OPJ_OFF_T offset
     byte position of the whole Box (LBox) in the file More...
     
    Byte_t headlen
     header length 8 or 16 More...
     
    Byte8_t length
     length of the whole Box More...
     
    char type [4]
     type of information in the DBox More...
     
    struct box_paramnext
     pointer to the next box More...
     
    -

    Detailed Description

    -

    box parameters

    -

    Field Documentation

    - -

    ◆ fd

    - - - -

    ◆ headlen

    - - - -

    ◆ length

    - - - -

    ◆ next

    - - - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T box_param::offset
    -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    char box_param::type[4]
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structboxcontents__param.html b/build/doc/html/structboxcontents__param.html deleted file mode 100644 index e804d31a0..000000000 --- a/build/doc/html/structboxcontents__param.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -OpenJPEG: boxcontents_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    boxcontents_param Struct Reference
    -
    -
    - -

    #include <metadata_manager.h>

    - - - - - - - - -

    -Data Fields

    OPJ_OFF_T offset
     byte position of the box contents in the file More...
     
    Byte8_t length
     length of the box contents More...
     
    -

    Field Documentation

    - -

    ◆ length

    - -
    -
    - - - - -
    Byte8_t boxcontents_param::length
    -
    - -

    length of the box contents

    - -

    Referenced by enqueue_boxcontents(), gene_boxcontents(), handle_XMLreqMSG(), and print_metadata().

    - -
    -
    - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T boxcontents_param::offset
    -
    - -

    byte position of the box contents in the file

    - -

    Referenced by enqueue_boxcontents(), gene_boxcontents(), handle_XMLreqMSG(), and print_metadata().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structboxheader__param.html b/build/doc/html/structboxheader__param.html deleted file mode 100644 index 8dc554367..000000000 --- a/build/doc/html/structboxheader__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: boxheader_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    boxheader_param Struct Reference
    -
    -
    - -

    box header parameters - More...

    - -

    #include <boxheader_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    Byte_t headlen
     header length 8 or 16 More...
     
    Byte8_t length
     length of the reference Box More...
     
    char type [4]
     type of information in the DBox More...
     
    struct boxheader_paramnext
     pointer to the next header box More...
     
    -

    Detailed Description

    -

    box header parameters

    -

    Field Documentation

    - -

    ◆ headlen

    - -
    -
    - - - - -
    Byte_t boxheader_param::headlen
    -
    - -

    header length 8 or 16

    - -

    Referenced by check_JP2boxidx(), gene_boxheader(), and gene_manfbox().

    - -
    -
    - -

    ◆ length

    - -
    -
    - - - - -
    Byte8_t boxheader_param::length
    -
    - -

    length of the reference Box

    - -

    Referenced by check_JP2boxidx(), gene_boxheader(), and print_boxheader().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct boxheader_param* boxheader_param::next
    -
    - -

    pointer to the next header box

    - -

    Referenced by delete_manfbox(), gene_boxheader(), gene_manfbox(), print_manfbox(), search_boxheader(), set_ppixdata(), and set_thixdata().

    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    char boxheader_param::type[4]
    -
    - -

    type of information in the DBox

    - -

    Referenced by check_JP2boxidx(), gene_boxheader(), print_boxheader(), and search_boxheader().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structboxlist__param.html b/build/doc/html/structboxlist__param.html deleted file mode 100644 index 3047b0fc0..000000000 --- a/build/doc/html/structboxlist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: boxlist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    boxlist_param Struct Reference
    -
    -
    - -

    Box list parameters. - More...

    - -

    #include <box_manager.h>

    - - - - - - - - -

    -Data Fields

    box_param_tfirst
     first box pointer of the list More...
     
    box_param_tlast
     last box pointer of the list More...
     
    -

    Detailed Description

    -

    Box list parameters.

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    box_param_t* boxlist_param::first
    -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    box_param_t* boxlist_param::last
    -
    - -

    last box pointer of the list

    - -

    Referenced by delete_box_in_list(), gene_boxlist(), and insert_box_into_list().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structcache__param.html b/build/doc/html/structcache__param.html deleted file mode 100644 index a67b4e4e5..000000000 --- a/build/doc/html/structcache__param.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -OpenJPEG: cache_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    cache_param Struct Reference
    -
    -
    - -

    cache parameters - More...

    - -

    #include <cache_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    char * filename
     file name More...
     
    char * tid
     taregt identifier More...
     
    int csn
     codestream number More...
     
    char ** cid
     dynamic array of channel identifiers More...
     
    int numOfcid
     number of cids More...
     
    metadatalist_param_tmetadatalist
     metadata-bin list More...
     
    ihdrbox_param_tihdrbox
     ihdrbox More...
     
    struct cache_paramnext
     pointer to the next cache More...
     
    -

    Detailed Description

    -

    cache parameters

    -

    Field Documentation

    - -

    ◆ cid

    - -
    -
    - - - - -
    char** cache_param::cid
    -
    - -

    dynamic array of channel identifiers

    - -

    Referenced by add_cachecid(), gene_cache(), handle_CIDreqMSG(), print_cache(), remove_cidInCache(), and search_cacheBycid().

    - -
    -
    - -

    ◆ csn

    - -
    -
    - - - - -
    int cache_param::csn
    -
    -
    - -

    ◆ filename

    - -
    -
    - - - - -
    char* cache_param::filename
    -
    - -

    file name

    - -

    Referenced by gene_cache(), print_cache(), search_cache(), and update_cachetid().

    - -
    -
    - -

    ◆ ihdrbox

    - -
    -
    - - - - -
    ihdrbox_param_t* cache_param::ihdrbox
    -
    - -

    ihdrbox

    - -

    Referenced by gene_cache(), and handle_SIZreqMSG().

    - -
    -
    - -

    ◆ metadatalist

    - -
    -
    - - - - -
    metadatalist_param_t* cache_param::metadatalist
    -
    - -

    metadata-bin list

    - -

    Referenced by gene_cache(), handle_JPIPstreamMSG(), and handle_XMLreqMSG().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct cache_param* cache_param::next
    -
    -
    - -

    ◆ numOfcid

    - -
    -
    - - - - -
    int cache_param::numOfcid
    -
    -
    - -

    ◆ tid

    - -
    -
    - - - - -
    char* cache_param::tid
    -
    - -

    taregt identifier

    - -

    Referenced by gene_cache(), handle_TIDreqMSG(), print_cache(), search_cacheBytid(), and update_cachetid().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structcachelist__param.html b/build/doc/html/structcachelist__param.html deleted file mode 100644 index 31605bb45..000000000 --- a/build/doc/html/structcachelist__param.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -OpenJPEG: cachelist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    cachelist_param Struct Reference
    -
    -
    - -

    #include <cache_manager.h>

    - - - - - - - - -

    -Data Fields

    cache_param_tfirst
     first cache pointer of the list More...
     
    cache_param_tlast
     last cache pointer of the list More...
     
    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    cache_param_t* cachelist_param::first
    -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    cache_param_t* cachelist_param::last
    -
    - -

    last cache pointer of the list

    - -

    Referenced by gene_cachelist(), and insert_cache_into_list().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structcachemodel__param.html b/build/doc/html/structcachemodel__param.html deleted file mode 100644 index 7979c1674..000000000 --- a/build/doc/html/structcachemodel__param.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - -OpenJPEG: cachemodel_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    cachemodel_param Struct Reference
    -
    -
    - -

    Cache model parameters. - More...

    - -

    #include <cachemodel_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    target_param_ttarget
     reference pointer to the target More...
     
    OPJ_BOOL jppstream
     return type, true: JPP-stream, false: JPT-stream More...
     
    OPJ_BOOL mhead_model
     main header model, if sent, 1, else 0 More...
     
    OPJ_BOOLtp_model
     dynamic array pointer of tile part model, if sent, 1, else 0 More...
     
    OPJ_BOOLth_model
     dynamic array pointer of tile header model More...
     
    OPJ_BOOL ** pp_model
     dynamic array pointer of precint packet model More...
     
    struct cachemodel_paramnext
     pointer to the next cache model More...
     
    -

    Detailed Description

    -

    Cache model parameters.

    -

    Field Documentation

    - -

    ◆ jppstream

    - -
    -
    - - - - -
    OPJ_BOOL cachemodel_param::jppstream
    -
    - -

    return type, true: JPP-stream, false: JPT-stream

    - -

    Referenced by enqueue_imagedata(), gene_cachemodel(), gene_JPIPstream(), and is_allsent().

    - -
    -
    - -

    ◆ mhead_model

    - -
    -
    - - - - -
    OPJ_BOOL cachemodel_param::mhead_model
    -
    - -

    main header model, if sent, 1, else 0

    - -

    Referenced by enqueue_mainheader(), gene_cachemodel(), gene_JPIPstream(), is_allsent(), and print_cachemodel().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct cachemodel_param* cachemodel_param::next
    -
    -
    - -

    ◆ pp_model

    - -
    -
    - - - - -
    OPJ_BOOL** cachemodel_param::pp_model
    -
    - -

    dynamic array pointer of precint packet model

    - -

    Referenced by enqueue_precinct(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    - -
    -
    - -

    ◆ target

    - - - -

    ◆ th_model

    - -
    -
    - - - - -
    OPJ_BOOL* cachemodel_param::th_model
    -
    - -

    dynamic array pointer of tile header model

    - -

    Referenced by enqueue_tileheader(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    - -
    -
    - -

    ◆ tp_model

    - -
    -
    - - - - -
    OPJ_BOOL* cachemodel_param::tp_model
    -
    - -

    dynamic array pointer of tile part model, if sent, 1, else 0

    - -

    Referenced by enqueue_tile(), gene_cachemodel(), is_allsent(), and print_cachemodel().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structcachemodellist__param.html b/build/doc/html/structcachemodellist__param.html deleted file mode 100644 index 682e8f8fe..000000000 --- a/build/doc/html/structcachemodellist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: cachemodellist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    cachemodellist_param Struct Reference
    -
    -
    - -

    Cache model list parameters. - More...

    - -

    #include <cachemodel_manager.h>

    - - - - - - - - -

    -Data Fields

    cachemodel_param_tfirst
     first cache model pointer of the list More...
     
    cachemodel_param_tlast
     last cache model pointer of the list More...
     
    -

    Detailed Description

    -

    Cache model list parameters.

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    cachemodel_param_t* cachemodellist_param::first
    -
    - -

    first cache model pointer of the list

    - -

    Referenced by gene_cachemodel(), gene_cachemodellist(), insert_cachemodel_into_session(), print_allsession(), and search_cachemodel().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    cachemodel_param_t* cachemodellist_param::last
    -
    - -

    last cache model pointer of the list

    - -

    Referenced by gene_cachemodel(), gene_cachemodellist(), and insert_cachemodel_into_session().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structchannel__param.html b/build/doc/html/structchannel__param.html deleted file mode 100644 index 8a6a105d5..000000000 --- a/build/doc/html/structchannel__param.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -OpenJPEG: channel_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    channel_param Struct Reference
    -
    -
    - -

    Channel parameters. - More...

    - -

    #include <channel_manager.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    cachemodel_param_tcachemodel
     reference pointer to the cache model More...
     
    char cid [MAX_LENOFCID]
     channel identifier More...
     
    cnew_transport_t aux
     auxiliary transport More...
     
    time_t start_tm
     starting time More...
     
    struct channel_paramnext
     pointer to the next channel More...
     
    -

    Detailed Description

    -

    Channel parameters.

    -

    Field Documentation

    - -

    ◆ aux

    - -
    -
    - - - - -
    cnew_transport_t channel_param::aux
    -
    - -

    auxiliary transport

    - -

    Referenced by gene_channel().

    - -
    -
    - -

    ◆ cachemodel

    - -
    -
    - - - - -
    cachemodel_param_t* channel_param::cachemodel
    -
    - -

    reference pointer to the cache model

    - -

    Referenced by gene_channel(), gene_JPIPstream(), and print_allchannel().

    - -
    -
    - -

    ◆ cid

    - -
    -
    - - - - -
    char channel_param::cid[MAX_LENOFCID]
    -
    - -

    channel identifier

    - -

    Referenced by delete_channellist(), gene_channel(), print_allchannel(), and search_channel().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct channel_param* channel_param::next
    -
    -
    - -

    ◆ start_tm

    - -
    -
    - - - - -
    time_t channel_param::start_tm
    -
    - -

    starting time

    - -

    Referenced by gene_channel().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structchannellist__param.html b/build/doc/html/structchannellist__param.html deleted file mode 100644 index f9b31edf5..000000000 --- a/build/doc/html/structchannellist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: channellist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    channellist_param Struct Reference
    -
    -
    - -

    Channel list parameters. - More...

    - -

    #include <channel_manager.h>

    - - - - - - - - -

    -Data Fields

    channel_param_tfirst
     first channel pointer of the list More...
     
    channel_param_tlast
     last channel pointer of the list More...
     
    -

    Detailed Description

    -

    Channel list parameters.

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    channel_param_t* channellist_param::first
    -
    - -

    first channel pointer of the list

    - -

    Referenced by delete_channel(), gene_channel(), gene_channellist(), print_allchannel(), and search_channel().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    channel_param_t* channellist_param::last
    -
    - -

    last channel pointer of the list

    - -

    Referenced by delete_channel(), gene_channel(), and gene_channellist().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structcodestream__param.html b/build/doc/html/structcodestream__param.html deleted file mode 100644 index 461b401c8..000000000 --- a/build/doc/html/structcodestream__param.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: codestream_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    codestream_param Struct Reference
    -
    -
    - -

    codestream parameters - More...

    - -

    #include <codestream_manager.h>

    - - - - - - - - - - - -

    -Data Fields

    int fd
     file descriptor More...
     
    OPJ_OFF_T offset
     byte position of DBox (Box Contents) in the file More...
     
    Byte8_t length
     content length More...
     
    -

    Detailed Description

    -

    codestream parameters

    -

    Field Documentation

    - -

    ◆ fd

    - -
    -
    - - - - -
    int codestream_param::fd
    -
    -
    - -

    ◆ length

    - -
    -
    - - - - -
    Byte8_t codestream_param::length
    -
    - -

    content length

    - -

    Referenced by print_codestream(), and set_codestream().

    - -
    -
    - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T codestream_param::offset
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structdec__server__record.html b/build/doc/html/structdec__server__record.html deleted file mode 100644 index b01c0a9d3..000000000 --- a/build/doc/html/structdec__server__record.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -OpenJPEG: dec_server_record Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    dec_server_record Struct Reference
    -
    -
    - -

    Decoding server static records. - More...

    - -

    #include <openjpip.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    cachelist_param_tcachelist
     cache list More...
     
    Byte_tjpipstream
     JPT/JPP stream. More...
     
    OPJ_SIZE_T jpipstreamlen
     length of jpipstream More...
     
    msgqueue_param_tmsgqueue
     parsed message queue of jpipstream More...
     
    SOCKET listening_socket
     listenning socket More...
     
    -

    Detailed Description

    -

    Decoding server static records.

    -

    Field Documentation

    - -

    ◆ cachelist

    - -
    -
    - - - - -
    cachelist_param_t* dec_server_record::cachelist
    -
    - -

    cache list

    - -

    Referenced by handle_clientreq(), and init_dec_server().

    - -
    -
    - -

    ◆ jpipstream

    - -
    -
    - - - - -
    Byte_t* dec_server_record::jpipstream
    -
    - -

    JPT/JPP stream.

    - -

    Referenced by handle_clientreq(), and init_dec_server().

    - -
    -
    - -

    ◆ jpipstreamlen

    - -
    -
    - - - - -
    OPJ_SIZE_T dec_server_record::jpipstreamlen
    -
    - -

    length of jpipstream

    - -

    Referenced by handle_clientreq(), and init_dec_server().

    - -
    -
    - -

    ◆ listening_socket

    - -
    -
    - - - - -
    SOCKET dec_server_record::listening_socket
    -
    - -

    listenning socket

    - -

    Referenced by accept_connection(), and init_dec_server().

    - -
    -
    - -

    ◆ msgqueue

    - -
    -
    - - - - -
    msgqueue_param_t* dec_server_record::msgqueue
    -
    - -

    parsed message queue of jpipstream

    - -

    Referenced by handle_clientreq(), and init_dec_server().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structdwt__local.html b/build/doc/html/structdwt__local.html deleted file mode 100644 index 8ca70daac..000000000 --- a/build/doc/html/structdwt__local.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -OpenJPEG: dwt_local Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    dwt_local Struct Reference
    -
    -
    - - - - - - - - - - -

    -Data Fields

    OPJ_INT32mem
     
    OPJ_INT32 dn
     
    OPJ_INT32 sn
     
    OPJ_INT32 cas
     
    -

    Field Documentation

    - -

    ◆ cas

    - -
    -
    - - - - -
    OPJ_INT32 dwt_local::cas
    -
    -
    - -

    ◆ dn

    - -
    -
    - - - - -
    OPJ_INT32 dwt_local::dn
    -
    -
    - -

    ◆ mem

    - - - -

    ◆ sn

    - -
    -
    - - - - -
    OPJ_INT32 dwt_local::sn
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structfaixbox__param.html b/build/doc/html/structfaixbox__param.html deleted file mode 100644 index 0460f76b2..000000000 --- a/build/doc/html/structfaixbox__param.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -OpenJPEG: faixbox_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    faixbox_param Struct Reference
    -
    -
    - -

    fragment array index box parameters - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - -

    -Data Fields

    Byte_t version
     Refer to the Table I.3 - Version values. More...
     
    subfaixbox_param_t subfaixbox
     rest information in faixbox More...
     
    -

    Detailed Description

    -

    fragment array index box parameters

    -

    I.3.2.4.2 Fragment Array Index box

    -

    Field Documentation

    - -

    ◆ subfaixbox

    - -
    -
    - - - - -
    subfaixbox_param_t faixbox_param::subfaixbox
    -
    - -

    rest information in faixbox

    - -

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    - -
    -
    - -

    ◆ version

    - -
    -
    - - - - -
    Byte_t faixbox_param::version
    -
    - -

    Refer to the Table I.3 - Version values.

    - -

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), get_nmax(), and print_faixbox().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structfaixelem4__param.html b/build/doc/html/structfaixelem4__param.html deleted file mode 100644 index aa606c443..000000000 --- a/build/doc/html/structfaixelem4__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: faixelem4_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    faixelem4_param Struct Reference
    -
    -
    - -

    4byte parameters of a faix element - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - -

    -Data Fields

    Byte4_t off
     offset More...
     
    Byte4_t len
     length More...
     
    -

    Detailed Description

    -

    4byte parameters of a faix element

    -

    Field Documentation

    - -

    ◆ len

    - -
    -
    - - - - -
    Byte4_t faixelem4_param::len
    -
    - -

    length

    - -

    Referenced by gene_faixbox(), and get_elemLen().

    - -
    -
    - -

    ◆ off

    - -
    -
    - - - - -
    Byte4_t faixelem4_param::off
    -
    - -

    offset

    - -

    Referenced by gene_faixbox(), and get_elemOff().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structfaixelem8__param.html b/build/doc/html/structfaixelem8__param.html deleted file mode 100644 index 8cb28b644..000000000 --- a/build/doc/html/structfaixelem8__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: faixelem8_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    faixelem8_param Struct Reference
    -
    -
    - -

    8byte parameters of a faix element - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - -

    -Data Fields

    Byte8_t off
     offset More...
     
    Byte8_t len
     length More...
     
    -

    Detailed Description

    -

    8byte parameters of a faix element

    -

    Field Documentation

    - -

    ◆ len

    - -
    -
    - - - - -
    Byte8_t faixelem8_param::len
    -
    - -

    length

    - -

    Referenced by gene_faixbox(), and get_elemLen().

    - -
    -
    - -

    ◆ off

    - -
    -
    - - - - -
    Byte8_t faixelem8_param::off
    -
    - -

    offset

    - -

    Referenced by gene_faixbox(), and get_elemOff().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structihdrbox__param.html b/build/doc/html/structihdrbox__param.html deleted file mode 100644 index 3d2da51e9..000000000 --- a/build/doc/html/structihdrbox__param.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -OpenJPEG: ihdrbox_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    ihdrbox_param Struct Reference
    -
    -
    - -

    I.5.3.1 Image Header box. - More...

    - -

    #include <ihdrbox_manager.h>

    - - - - - - - - - - - - -

    -Data Fields

    Byte4_t height
     
    Byte4_t width
     
    Byte2_t nc
     number of components More...
     
    Byte_t bpc
     bits per component More...
     
    -

    Detailed Description

    -

    I.5.3.1 Image Header box.

    -

    Field Documentation

    - -

    ◆ bpc

    - -
    -
    - - - - -
    Byte_t ihdrbox_param::bpc
    -
    - -

    bits per component

    - -

    Referenced by gene_ihdrbox(), get_SIZ_from_jpipstream(), handle_PNMreqMSG(), and output_log().

    - -
    -
    - -

    ◆ height

    - -
    -
    - - - - -
    Byte4_t ihdrbox_param::height
    -
    -
    - -

    ◆ nc

    - -
    -
    - - - - -
    Byte2_t ihdrbox_param::nc
    -
    - -

    number of components

    - -

    Referenced by gene_ihdrbox(), get_SIZ_from_jpipstream(), handle_PNMreqMSG(), and output_log().

    - -
    -
    - -

    ◆ width

    - -
    -
    - - - - -
    Byte4_t ihdrbox_param::width
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structimgreg__param.html b/build/doc/html/structimgreg__param.html deleted file mode 100644 index d12d61bae..000000000 --- a/build/doc/html/structimgreg__param.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -OpenJPEG: imgreg_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    imgreg_param Struct Reference
    -
    -
    - -

    image region parameters - More...

    - -

    #include <imgreg_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    int xosiz
     
    int yosiz
     
    int fx
     offset from the origin of the reference grid at the decomposition level More...
     
    int fy
     
    int ox
     frame size (fsiz) More...
     
    int oy
     
    int sx
     offset (roff) More...
     
    int sy
     
    int level
     region size (rsiz) More...
     
    -

    Detailed Description

    -

    image region parameters

    -

    Field Documentation

    - -

    ◆ fx

    - -
    -
    - - - - -
    int imgreg_param::fx
    -
    - -

    offset from the origin of the reference grid at the decomposition level

    - -

    Referenced by map_viewin2imgreg(), and print_imgreg().

    - -
    -
    - -

    ◆ fy

    - -
    -
    - - - - -
    int imgreg_param::fy
    -
    - -

    Referenced by map_viewin2imgreg(), and print_imgreg().

    - -
    -
    - -

    ◆ level

    - -
    -
    - - - - -
    int imgreg_param::level
    -
    - -

    region size (rsiz)

    - -

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    - -
    -
    - -

    ◆ ox

    - -
    -
    - - - - -
    int imgreg_param::ox
    -
    - -

    frame size (fsiz)

    - -

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    - -
    -
    - -

    ◆ oy

    - -
    -
    - - - - -
    int imgreg_param::oy
    -
    -
    - -

    ◆ sx

    - -
    -
    - - - - -
    int imgreg_param::sx
    -
    - -

    offset (roff)

    - -

    Referenced by enqueue_imagedata(), map_viewin2imgreg(), and print_imgreg().

    - -
    -
    - -

    ◆ sy

    - -
    -
    - - - - -
    int imgreg_param::sy
    -
    -
    - -

    ◆ xosiz

    - -
    -
    - - - - -
    int imgreg_param::xosiz
    -
    - -

    Referenced by enqueue_imagedata(), and map_viewin2imgreg().

    - -
    -
    - -

    ◆ yosiz

    - -
    -
    - - - - -
    int imgreg_param::yosiz
    -
    - -

    Referenced by enqueue_imagedata(), and map_viewin2imgreg().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structindex__param.html b/build/doc/html/structindex__param.html deleted file mode 100644 index f950b364a..000000000 --- a/build/doc/html/structindex__param.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - -OpenJPEG: index_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    index_param Struct Reference
    -
    -
    - -

    index parameters - More...

    - -

    #include <index_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    metadatalist_param_tmetadatalist
     metadata-bin list More...
     
    OPJ_OFF_T offset
     codestream offset More...
     
    Byte8_t length
     codestream length More...
     
    Byte8_t mhead_length
     main header length
    - More...
     
    SIZmarker_param_t SIZ
     SIZ marker information. More...
     
    CODmarker_param_t COD
     COD marker information. More...
     
    faixbox_param_ttilepart
     tile part information from tpix box More...
     
    mhixbox_param_t ** tileheader
     dynamic array of tile header information from thix box More...
     
    faixbox_param_t ** precpacket
     dynamic array of precint packet information from ppix box More...
     
    -

    Detailed Description

    -

    index parameters

    -

    Field Documentation

    - -

    ◆ COD

    - -
    -
    - - - - -
    CODmarker_param_t index_param::COD
    -
    -
    - -

    ◆ length

    - -
    -
    - - - - -
    Byte8_t index_param::length
    -
    - -

    codestream length

    - -

    Referenced by print_index(), set_cidxdata(), and set_cptrdata().

    - -
    -
    - -

    ◆ metadatalist

    - -
    -
    - - - - -
    metadatalist_param_t* index_param::metadatalist
    -
    - -

    metadata-bin list

    - -

    Referenced by enqueue_metadata(), gene_JPIPstream(), parse_jp2file(), and print_index().

    - -
    -
    - -

    ◆ mhead_length

    - -
    -
    - - - - -
    Byte8_t index_param::mhead_length
    -
    - -

    main header length
    -

    - -

    Referenced by enqueue_mainheader(), print_index(), and set_mainmhixdata().

    - -
    -
    - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T index_param::offset
    -
    -
    - -

    ◆ precpacket

    - -
    -
    - - - - -
    faixbox_param_t** index_param::precpacket
    -
    - -

    dynamic array of precint packet information from ppix box

    - -

    Referenced by enqueue_precinct(), gene_cachemodel(), is_allsent(), print_cachemodel(), print_index(), and set_ppixdata().

    - -
    -
    - -

    ◆ SIZ

    - - - -

    ◆ tileheader

    - -
    -
    - - - - -
    mhixbox_param_t** index_param::tileheader
    -
    - -

    dynamic array of tile header information from thix box

    - -

    Referenced by enqueue_tileheader(), print_index(), and set_thixdata().

    - -
    -
    - -

    ◆ tilepart

    - -
    -
    - - - - -
    faixbox_param_t* index_param::tilepart
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structj2k__prog__order.html b/build/doc/html/structj2k__prog__order.html deleted file mode 100644 index 3c290a7fd..000000000 --- a/build/doc/html/structj2k__prog__order.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: j2k_prog_order Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    j2k_prog_order Struct Reference
    -
    -
    - - - - - - -

    -Data Fields

    OPJ_PROG_ORDER enum_prog
     
    char str_prog [5]
     
    -

    Field Documentation

    - -

    ◆ enum_prog

    - -
    -
    - - - - -
    OPJ_PROG_ORDER j2k_prog_order::enum_prog
    -
    -
    - -

    ◆ str_prog

    - -
    -
    - - - - -
    char j2k_prog_order::str_prog[5]
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structjpip__dec__param.html b/build/doc/html/structjpip__dec__param.html deleted file mode 100644 index c1d6d6172..000000000 --- a/build/doc/html/structjpip__dec__param.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - -OpenJPEG: jpip_dec_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    jpip_dec_param Struct Reference
    -
    -
    - -

    JPIP decoding parameters. - More...

    - -

    #include <openjpip.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte_tjpipstream
     JPT/JPP-stream. More...
     
    Byte8_t jpiplen
     length of jpipstream More...
     
    msgqueue_param_tmsgqueue
     message queue More...
     
    metadatalist_param_tmetadatalist
     metadata list going into JP2 file More...
     
    ihdrbox_param_tihdrbox
     ihdr box going into JP2 file More...
     
    Byte_tjp2kstream
     J2K codestream or JP2 file codestream. More...
     
    Byte8_t jp2klen
     length of j2kstream or JP2 file More...
     
    -

    Detailed Description

    -

    JPIP decoding parameters.

    -

    Field Documentation

    - -

    ◆ ihdrbox

    - -
    -
    - - - - -
    ihdrbox_param_t* jpip_dec_param::ihdrbox
    -
    - -

    ihdr box going into JP2 file

    - -

    Referenced by decode_jpip(), and output_log().

    - -
    -
    - -

    ◆ jp2klen

    - -
    -
    - - - - -
    Byte8_t jpip_dec_param::jp2klen
    -
    - -

    length of j2kstream or JP2 file

    - -

    Referenced by decode_jpip(), and fwrite_jp2k().

    - -
    -
    - -

    ◆ jp2kstream

    - -
    -
    - - - - -
    Byte_t* jpip_dec_param::jp2kstream
    -
    - -

    J2K codestream or JP2 file codestream.

    - -

    Referenced by decode_jpip(), and fwrite_jp2k().

    - -
    -
    - -

    ◆ jpiplen

    - -
    -
    - - - - -
    Byte8_t jpip_dec_param::jpiplen
    -
    - -

    length of jpipstream

    - -

    Referenced by decode_jpip(), and fread_jpip().

    - -
    -
    - -

    ◆ jpipstream

    - -
    -
    - - - - -
    Byte_t* jpip_dec_param::jpipstream
    -
    - -

    JPT/JPP-stream.

    - -

    Referenced by decode_jpip(), and fread_jpip().

    - -
    -
    - -

    ◆ metadatalist

    - -
    -
    - - - - -
    metadatalist_param_t* jpip_dec_param::metadatalist
    -
    - -

    metadata list going into JP2 file

    - -

    Referenced by decode_jpip(), init_jpipdecoder(), and output_log().

    - -
    -
    - -

    ◆ msgqueue

    - -
    -
    - - - - -
    msgqueue_param_t* jpip_dec_param::msgqueue
    -
    - -

    message queue

    - -

    Referenced by decode_jpip(), init_jpipdecoder(), and output_log().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmanfbox__param.html b/build/doc/html/structmanfbox__param.html deleted file mode 100644 index b04c1e3c1..000000000 --- a/build/doc/html/structmanfbox__param.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -OpenJPEG: manfbox_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    manfbox_param Struct Reference
    -
    -
    - -

    manifest box parameters - More...

    - -

    #include <manfbox_manager.h>

    - - - - - -

    -Data Fields

    boxheader_param_tfirst
     top of the box header list More...
     
    -

    Detailed Description

    -

    manifest box parameters

    -

    I.3.2.3 Manifest box

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    boxheader_param_t* manfbox_param::first
    -
    - -

    top of the box header list

    - -

    Referenced by gene_manfbox(), print_manfbox(), search_boxheader(), and set_thixdata().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmarker__param.html b/build/doc/html/structmarker__param.html deleted file mode 100644 index 5eb365837..000000000 --- a/build/doc/html/structmarker__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: marker_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    marker_param Struct Reference
    -
    -
    - -

    Marker parameters. - More...

    - -

    #include <marker_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    codestream_param_t cs
     corresponding codestream More...
     
    Byte2_t code
     marker code More...
     
    OPJ_OFF_T offset
     offset relative to the start of the codestream ( including the length parameter but not the marker itself) More...
     
    Byte2_t length
     marker segment length More...
     
    -

    Detailed Description

    -

    Marker parameters.

    -

    Field Documentation

    - -

    ◆ code

    - -
    -
    - - - - -
    Byte2_t marker_param::code
    -
    - -

    marker code

    - -

    Referenced by set_marker().

    - -
    -
    - -

    ◆ cs

    - -
    -
    - - - - -
    codestream_param_t marker_param::cs
    -
    - -

    corresponding codestream

    - -

    Referenced by fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), and set_marker().

    - -
    -
    - -

    ◆ length

    - -
    -
    - - - - -
    Byte2_t marker_param::length
    -
    - -

    marker segment length

    - -

    Referenced by set_marker().

    - -
    -
    - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T marker_param::offset
    -
    - -

    offset relative to the start of the codestream ( including the length parameter but not the marker itself)

    - -

    Referenced by fetch_marker1byte(), fetch_marker2bytebigendian(), fetch_marker4bytebigendian(), and set_marker().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmarkeridx__param.html b/build/doc/html/structmarkeridx__param.html deleted file mode 100644 index 43f0f63e7..000000000 --- a/build/doc/html/structmarkeridx__param.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -OpenJPEG: markeridx_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    markeridx_param Struct Reference
    -
    -
    - -

    Marker index parameters. - More...

    - -

    #include <mhixbox_manager.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte2_t code
     marker code More...
     
    Byte2_t num_remain
     remining number of the same marker index segments listed immediately More...
     
    OPJ_OFF_T offset
     offset relative to the start of the More...
     
    Byte2_t length
     codestream ( including the length More...
     
    struct markeridx_paramnext
     pointer to the next markeridx More...
     
    -

    Detailed Description

    -

    Marker index parameters.

    -

    Field Documentation

    - -

    ◆ code

    - -
    -
    - - - - -
    Byte2_t markeridx_param::code
    -
    -
    - -

    ◆ length

    - -
    -
    - - - - -
    Byte2_t markeridx_param::length
    -
    - -

    codestream ( including the length

    -

    parameter but not the marker itself) marker segment length

    - -

    Referenced by gene_mhixbox(), print_markeridx(), print_mhixbox(), set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct markeridx_param* markeridx_param::next
    -
    - -

    pointer to the next markeridx

    - -

    Referenced by delete_mhixbox(), gene_mhixbox(), print_mhixbox(), and search_markeridx().

    - -
    -
    - -

    ◆ num_remain

    - -
    -
    - - - - -
    Byte2_t markeridx_param::num_remain
    -
    - -

    remining number of the same marker index segments listed immediately

    - -

    Referenced by gene_mhixbox(), print_markeridx(), and print_mhixbox().

    - -
    -
    - -

    ◆ offset

    - -
    -
    - - - - -
    OPJ_OFF_T markeridx_param::offset
    -
    - -

    offset relative to the start of the

    - -

    Referenced by gene_mhixbox(), print_markeridx(), print_mhixbox(), set_CODmkrdata(), and set_SIZmkrdata().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmessage__param.html b/build/doc/html/structmessage__param.html deleted file mode 100644 index c957f9025..000000000 --- a/build/doc/html/structmessage__param.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - -OpenJPEG: message_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    message_param Struct Reference
    -
    -
    - -

    message parameters - More...

    - -

    #include <msgqueue_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BOOL last_byte
     if message contains the last byte of the data-bin More...
     
    Byte8_t in_class_id
     in-class identifier A.2.3 More...
     
    Byte8_t class_id
     class identifiers More...
     
    Byte8_t csn
     index of the codestream More...
     
    Byte8_t bin_offset
     offset of the data in this message from the start of the data-bin More...
     
    Byte8_t length
     message byte length More...
     
    Byte8_t aux
     
    OPJ_OFF_T res_offset
     offset in the resource More...
     
    placeholder_param_tphld
     placeholder pointer in index More...
     
    struct message_paramnext
     pointer to the next message More...
     
    -

    Detailed Description

    -

    message parameters

    -

    Field Documentation

    - -

    ◆ aux

    - - - -

    ◆ bin_offset

    - - - -

    ◆ class_id

    - - - -

    ◆ csn

    - - - -

    ◆ in_class_id

    - - - -

    ◆ last_byte

    - -
    -
    - - - - -
    OPJ_BOOL message_param::last_byte
    -
    -
    - -

    ◆ length

    - - - -

    ◆ next

    - - - -

    ◆ phld

    - - - -

    ◆ res_offset

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmetadata__param.html b/build/doc/html/structmetadata__param.html deleted file mode 100644 index 0d236f0c4..000000000 --- a/build/doc/html/structmetadata__param.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -OpenJPEG: metadata_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    metadata_param Struct Reference
    -
    -
    - -

    metadata-bin parameters - More...

    - -

    #include <metadata_manager.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte8_t idx
     index number More...
     
    boxlist_param_tboxlist
     box list More...
     
    placeholderlist_param_tplaceholderlist
     placeholder box list More...
     
    boxcontents_param_tboxcontents
     box contens in case of no boxlist and placeholderlist More...
     
    struct metadata_paramnext
     pointer to the next metadata-bin More...
     
    -

    Detailed Description

    -

    metadata-bin parameters

    -

    Field Documentation

    - -

    ◆ boxcontents

    - -
    -
    - - - - -
    boxcontents_param_t* metadata_param::boxcontents
    -
    - -

    box contens in case of no boxlist and placeholderlist

    - -

    Referenced by enqueue_metadata(), gene_metadata(), handle_XMLreqMSG(), parse_metadata(), and print_metadata().

    - -
    -
    - -

    ◆ boxlist

    - -
    -
    - - - - -
    boxlist_param_t* metadata_param::boxlist
    -
    -
    - -

    ◆ idx

    - -
    -
    - - - - -
    Byte8_t metadata_param::idx
    -
    - -

    index number

    - -

    Referenced by gene_metadata(), print_metadata(), search_metadata(), and search_metadataidx().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct metadata_param* metadata_param::next
    -
    -
    - -

    ◆ placeholderlist

    - -
    -
    - - - - -
    placeholderlist_param_t* metadata_param::placeholderlist
    -
    - -

    placeholder box list

    - -

    Referenced by enqueue_metadata(), gene_metadata(), parse_metadata(), print_metadata(), and search_metadataidx().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmetadatalist__param.html b/build/doc/html/structmetadatalist__param.html deleted file mode 100644 index f586766b7..000000000 --- a/build/doc/html/structmetadatalist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: metadatalist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    metadatalist_param Struct Reference
    -
    -
    - -

    metadata-bin list parameters - More...

    - -

    #include <metadata_manager.h>

    - - - - - - - - -

    -Data Fields

    metadata_param_tfirst
     first metadata-bin pointer of the list More...
     
    metadata_param_tlast
     last metadata-bin pointer of the list More...
     
    -

    Detailed Description

    -

    metadata-bin list parameters

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    metadata_param_t* metadatalist_param::first
    -
    - -

    first metadata-bin pointer of the list

    - -

    Referenced by gene_ihdrbox(), gene_metadatalist(), insert_metadata_into_list(), print_allmetadata(), search_metadata(), and search_metadataidx().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    metadata_param_t* metadatalist_param::last
    -
    - -

    last metadata-bin pointer of the list

    - -

    Referenced by gene_metadatalist(), handle_XMLreqMSG(), and insert_metadata_into_list().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmhixbox__param.html b/build/doc/html/structmhixbox__param.html deleted file mode 100644 index e12d3646e..000000000 --- a/build/doc/html/structmhixbox__param.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -OpenJPEG: mhixbox_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    mhixbox_param Struct Reference
    -
    -
    - -

    header index table box parameters - More...

    - -

    #include <mhixbox_manager.h>

    - - - - - - - - -

    -Data Fields

    Byte8_t tlen
     length ( total length of the main More...
     
    markeridx_param_tfirst
     header or of the first tile-part header) More...
     
    -

    Detailed Description

    -

    header index table box parameters

    -

    I.3.2.4.3 Header Index Table box

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    markeridx_param_t* mhixbox_param::first
    -
    - -

    header or of the first tile-part header)

    -

    first marker index pointer of the list

    - -

    Referenced by gene_mhixbox(), print_mhixbox(), and search_markeridx().

    - -
    -
    - -

    ◆ tlen

    - -
    -
    - - - - -
    Byte8_t mhixbox_param::tlen
    -
    - -

    length ( total length of the main

    - -

    Referenced by enqueue_tileheader(), gene_mhixbox(), and print_mhixbox().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structmsgqueue__param.html b/build/doc/html/structmsgqueue__param.html deleted file mode 100644 index f506cc0ff..000000000 --- a/build/doc/html/structmsgqueue__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: msgqueue_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    msgqueue_param Struct Reference
    -
    -
    - -

    message queue parameters - More...

    - -

    #include <msgqueue_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    message_param_tfirst
     first message pointer of the list More...
     
    message_param_tlast
     last message pointer of the list More...
     
    OPJ_BOOL stateless
     if this is a stateless message queue More...
     
    cachemodel_param_tcachemodel
     reference cachemodel pointer More...
     
    -

    Detailed Description

    -

    message queue parameters

    -

    Field Documentation

    - -

    ◆ cachemodel

    - - - -

    ◆ first

    - - - -

    ◆ last

    - -
    -
    - - - - -
    message_param_t* msgqueue_param::last
    -
    -
    - -

    ◆ stateless

    - -
    -
    - - - - -
    OPJ_BOOL msgqueue_param::stateless
    -
    - -

    if this is a stateless message queue

    - -

    Referenced by gene_msgqueue().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__bio.html b/build/doc/html/structopj__bio.html deleted file mode 100644 index 431a4e0de..000000000 --- a/build/doc/html/structopj__bio.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -OpenJPEG: opj_bio Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_bio Struct Reference
    -
    -
    - -

    Individual bit input-output stream (BIO) - More...

    - -

    #include <bio.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BYTEstart
     pointer to the start of the buffer More...
     
    OPJ_BYTEend
     pointer to the end of the buffer More...
     
    OPJ_BYTEbp
     pointer to the present position in the buffer More...
     
    OPJ_UINT32 buf
     temporary place where each byte is read or written More...
     
    OPJ_UINT32 ct
     coder : number of bits free to write. More...
     
    -

    Detailed Description

    -

    Individual bit input-output stream (BIO)

    -

    Field Documentation

    - -

    ◆ bp

    - -
    -
    - - - - -
    OPJ_BYTE* opj_bio::bp
    -
    - -

    pointer to the present position in the buffer

    - -

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_numbytes().

    - -
    -
    - -

    ◆ buf

    - -
    -
    - - - - -
    OPJ_UINT32 opj_bio::buf
    -
    - -

    temporary place where each byte is read or written

    - -

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_getbit(), opj_bio_inalign(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_putbit().

    - -
    -
    - -

    ◆ ct

    - -
    -
    - - - - -
    OPJ_UINT32 opj_bio::ct
    -
    - -

    coder : number of bits free to write.

    -

    decoder : number of bits read

    - -

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_flush(), opj_bio_getbit(), opj_bio_inalign(), opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_putbit().

    - -
    -
    - -

    ◆ end

    - -
    -
    - - - - -
    OPJ_BYTE* opj_bio::end
    -
    - -

    pointer to the end of the buffer

    - -

    Referenced by opj_bio_bytein(), opj_bio_byteout(), opj_bio_init_dec(), and opj_bio_init_enc().

    - -
    -
    - -

    ◆ start

    - -
    -
    - - - - -
    OPJ_BYTE* opj_bio::start
    -
    - -

    pointer to the start of the buffer

    - -

    Referenced by opj_bio_init_dec(), opj_bio_init_enc(), and opj_bio_numbytes().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__codec__private.html b/build/doc/html/structopj__codec__private.html deleted file mode 100644 index 769de6d3e..000000000 --- a/build/doc/html/structopj__codec__private.html +++ /dev/null @@ -1,637 +0,0 @@ - - - - - - - -OpenJPEG: opj_codec_private Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_codec_private Struct Reference
    -
    -
    - -

    Main codec handler used for compression or decompression. - More...

    - -

    #include <opj_codec.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    union {
       struct opj_decompression {
          OPJ_BOOL(*   opj_read_header )(struct opj_stream_private
    -         *cio, void *p_codec,
    -         opj_image_t **p_image, struct
    -         opj_event_mgr *p_manager)
     Main header reading function handler. More...
     
          OPJ_BOOL(*   opj_decode )(void *p_codec, struct
    -         opj_stream_private *p_cio,
    -         opj_image_t *p_image, struct
    -         opj_event_mgr *p_manager)
     Decoding function. More...
     
          OPJ_BOOL(*   opj_read_tile_header )(void *p_codec, OPJ_UINT32
    -         *p_tile_index, OPJ_UINT32
    -         *p_data_size, OPJ_INT32
    -         *p_tile_x0, OPJ_INT32
    -         *p_tile_y0, OPJ_INT32
    -         *p_tile_x1, OPJ_INT32
    -         *p_tile_y1, OPJ_UINT32
    -         *p_nb_comps, OPJ_BOOL
    -         *p_should_go_on, struct
    -         opj_stream_private *p_cio,
    -         struct opj_event_mgr
    -         *p_manager)
     FIXME DOC. More...
     
          OPJ_BOOL(*   opj_decode_tile_data )(void *p_codec, OPJ_UINT32
    -         p_tile_index, OPJ_BYTE *p_data,
    -         OPJ_UINT32 p_data_size, struct
    -         opj_stream_private *p_cio,
    -         struct opj_event_mgr
    -         *p_manager)
     FIXME DOC. More...
     
          OPJ_BOOL(*   opj_end_decompress )(void *p_codec, struct
    -         opj_stream_private *cio,
    -         struct opj_event_mgr
    -         *p_manager)
     Reading function used after codestream if necessary. More...
     
          void(*   opj_destroy )(void *p_codec)
     Codec destroy function handler. More...
     
          void(*   opj_setup_decoder )(void *p_codec,
    -         opj_dparameters_t *p_param)
     Setup decoder function handler. More...
     
          OPJ_BOOL(*   opj_set_decode_area )(void *p_codec, opj_image_t
    -         *p_image, OPJ_INT32 p_start_x,
    -         OPJ_INT32 p_end_x, OPJ_INT32
    -         p_start_y, OPJ_INT32 p_end_y,
    -         struct opj_event_mgr
    -         *p_manager)
     Set decode area function handler. More...
     
          OPJ_BOOL(*   opj_get_decoded_tile )(void *p_codec,
    -         opj_stream_private_t *p_cio,
    -         opj_image_t *p_image, struct
    -         opj_event_mgr *p_manager,
    -         OPJ_UINT32 tile_index)
     Get tile function. More...
     
          OPJ_BOOL(*   opj_set_decoded_resolution_factor )(void *p_codec, OPJ_UINT32
    -         res_factor, opj_event_mgr_t
    -         *p_manager)
     Set the decoded resolution factor. More...
     
          OPJ_BOOL(*   opj_set_decoded_components )(void *p_codec, OPJ_UINT32
    -         num_comps, const OPJ_UINT32
    -         *comps_indices,
    -         opj_event_mgr_t *p_manager)
     Set the decoded components. More...
     
       }   m_decompression
     
       struct opj_compression {
          OPJ_BOOL(*   opj_start_compress )(void *p_codec, struct
    -         opj_stream_private *cio,
    -         struct opj_image *p_image,
    -         struct opj_event_mgr
    -         *p_manager)
     
          OPJ_BOOL(*   opj_encode )(void *p_codec, struct
    -         opj_stream_private *p_cio,
    -         struct opj_event_mgr
    -         *p_manager)
     
          OPJ_BOOL(*   opj_write_tile )(void *p_codec, OPJ_UINT32
    -         p_tile_index, OPJ_BYTE *p_data,
    -         OPJ_UINT32 p_data_size, struct
    -         opj_stream_private *p_cio,
    -         struct opj_event_mgr
    -         *p_manager)
     
          OPJ_BOOL(*   opj_end_compress )(void *p_codec, struct
    -         opj_stream_private *p_cio,
    -         struct opj_event_mgr
    -         *p_manager)
     
          void(*   opj_destroy )(void *p_codec)
     
          OPJ_BOOL(*   opj_setup_encoder )(void *p_codec,
    -         opj_cparameters_t *p_param,
    -         struct opj_image *p_image,
    -         struct opj_event_mgr
    -         *p_manager)
     
          OPJ_BOOL(*   opj_encoder_set_extra_options )(void *p_codec, const char
    -         *const *p_options, struct
    -         opj_event_mgr *p_manager)
     
       }   m_compression
     
    m_codec_data
     FIXME DOC. More...
     
    void * m_codec
     FIXME DOC. More...
     
    opj_event_mgr_t m_event_mgr
     Event handler. More...
     
    OPJ_BOOL is_decompressor
     Flag to indicate if the codec is used to decode or encode. More...
     
    void(* opj_dump_codec )(void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
     
    opj_codestream_info_v2_t *(* opj_get_codec_info )(void *p_codec)
     
    opj_codestream_index_t *(* opj_get_codec_index )(void *p_codec)
     
    OPJ_BOOL(* opj_set_threads )(void *p_codec, OPJ_UINT32 num_threads)
     Set number of threads. More...
     
    -

    Detailed Description

    -

    Main codec handler used for compression or decompression.

    -

    Field Documentation

    - -

    ◆ is_decompressor

    - - - -

    ◆ m_codec

    - - - -

    ◆ m_codec_data

    - - - -

    ◆ m_compression

    - -
    -
    - - - - -
    struct { ... } ::opj_compression opj_codec_private::m_compression
    -
    -
    - -

    ◆ m_decompression

    - - - -

    ◆ m_event_mgr

    - - - -

    ◆ opj_decode

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_decode) (void *p_codec, struct opj_stream_private *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager)
    -
    - -

    Decoding function.

    - -
    -
    - -

    ◆ opj_decode_tile_data

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_decode_tile_data) (void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_destroy

    - -
    -
    - - - - -
    void(* opj_codec_private::opj_destroy) (void *p_codec)
    -
    - -

    Codec destroy function handler.

    - -
    -
    - -

    ◆ opj_dump_codec

    - -
    -
    - - - - -
    void(* opj_codec_private::opj_dump_codec) (void *p_codec, OPJ_INT32 info_flag, FILE *output_stream)
    -
    - -

    Referenced by opj_create_decompress(), and opj_dump_codec().

    - -
    -
    - -

    ◆ opj_encode

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_encode) (void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    -
    - -
    -
    - -

    ◆ opj_encoder_set_extra_options

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_encoder_set_extra_options) (void *p_codec, const char *const *p_options, struct opj_event_mgr *p_manager)
    -
    - -
    -
    - -

    ◆ opj_end_compress

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_end_compress) (void *p_codec, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    -
    - -
    -
    - -

    ◆ opj_end_decompress

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_end_decompress) (void *p_codec, struct opj_stream_private *cio, struct opj_event_mgr *p_manager)
    -
    - -

    Reading function used after codestream if necessary.

    - -
    -
    - -

    ◆ opj_get_codec_index

    - -
    -
    - - - - -
    opj_codestream_index_t*(* opj_codec_private::opj_get_codec_index) (void *p_codec)
    -
    - -

    Referenced by opj_create_decompress(), and opj_get_cstr_index().

    - -
    -
    - -

    ◆ opj_get_codec_info

    - -
    -
    - - - - -
    opj_codestream_info_v2_t*(* opj_codec_private::opj_get_codec_info) (void *p_codec)
    -
    - -

    Referenced by opj_create_decompress(), and opj_get_cstr_info().

    - -
    -
    - -

    ◆ opj_get_decoded_tile

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_get_decoded_tile) (void *p_codec, opj_stream_private_t *p_cio, opj_image_t *p_image, struct opj_event_mgr *p_manager, OPJ_UINT32 tile_index)
    -
    - -

    Get tile function.

    - -
    -
    - -

    ◆ opj_read_header

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_read_header) (struct opj_stream_private *cio, void *p_codec, opj_image_t **p_image, struct opj_event_mgr *p_manager)
    -
    - -

    Main header reading function handler.

    - -
    -
    - -

    ◆ opj_read_tile_header

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_read_tile_header) (void *p_codec, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_should_go_on, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_set_decode_area

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_set_decode_area) (void *p_codec, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_end_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_y, struct opj_event_mgr *p_manager)
    -
    - -

    Set decode area function handler.

    - -
    -
    - -

    ◆ opj_set_decoded_components

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_set_decoded_components) (void *p_codec, OPJ_UINT32 num_comps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
    -
    - -

    Set the decoded components.

    - -
    -
    - -

    ◆ opj_set_decoded_resolution_factor

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_set_decoded_resolution_factor) (void *p_codec, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
    -
    - -

    Set the decoded resolution factor.

    - -
    -
    - -

    ◆ opj_set_threads

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_set_threads) (void *p_codec, OPJ_UINT32 num_threads)
    -
    - -

    Set number of threads.

    - -

    Referenced by opj_codec_set_threads(), and opj_create_decompress().

    - -
    -
    - -

    ◆ opj_setup_decoder

    - -
    -
    - - - - -
    void(* opj_codec_private::opj_setup_decoder) (void *p_codec, opj_dparameters_t *p_param)
    -
    - -

    Setup decoder function handler.

    - -
    -
    - -

    ◆ opj_setup_encoder

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_setup_encoder) (void *p_codec, opj_cparameters_t *p_param, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    -
    - -
    -
    - -

    ◆ opj_start_compress

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_start_compress) (void *p_codec, struct opj_stream_private *cio, struct opj_image *p_image, struct opj_event_mgr *p_manager)
    -
    - -
    -
    - -

    ◆ opj_write_tile

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_codec_private::opj_write_tile) (void *p_codec, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, struct opj_stream_private *p_cio, struct opj_event_mgr *p_manager)
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__codestream__index.html b/build/doc/html/structopj__codestream__index.html deleted file mode 100644 index 5910e43d2..000000000 --- a/build/doc/html/structopj__codestream__index.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -OpenJPEG: opj_codestream_index Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_codestream_index Struct Reference
    -
    -
    - -

    Index structure of the codestream (FIXME should be expand and enhance) - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_OFF_T main_head_start
     main header start position (SOC position) More...
     
    OPJ_OFF_T main_head_end
     main header end position (first SOT position) More...
     
    OPJ_UINT64 codestream_size
     codestream's size More...
     
    OPJ_UINT32 marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    OPJ_UINT32 maxmarknum
     actual size of markers array More...
     
    OPJ_UINT32 nb_of_tiles
     
    opj_tile_index_ttile_index
     
    -

    Detailed Description

    -

    Index structure of the codestream (FIXME should be expand and enhance)

    -

    Field Documentation

    - -

    ◆ codestream_size

    - -
    -
    - - - - -
    OPJ_UINT64 opj_codestream_index::codestream_size
    -
    - -

    codestream's size

    - -

    Referenced by j2k_get_cstr_index(), and opj_j2k_write_epc().

    - -
    -
    - -

    ◆ main_head_end

    - -
    -
    - - - - -
    OPJ_OFF_T opj_codestream_index::main_head_end
    -
    - -

    main header end position (first SOT position)

    - -

    Referenced by j2k_get_cstr_index(), opj_j2k_decode_one_tile(), opj_j2k_dump_MH_index(), opj_j2k_get_end_header(), and opj_j2k_read_header_procedure().

    - -
    -
    - -

    ◆ main_head_start

    - -
    -
    - - - - -
    OPJ_OFF_T opj_codestream_index::main_head_start
    -
    - -

    main header start position (SOC position)

    - -

    Referenced by j2k_get_cstr_index(), opj_j2k_dump_MH_index(), opj_j2k_read_soc(), and opj_j2k_write_epc().

    - -
    -
    - -

    ◆ marker

    - -
    -
    - - - - -
    opj_marker_info_t* opj_codestream_index::marker
    -
    -
    - -

    ◆ marknum

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_index::marknum
    -
    -
    - -

    ◆ maxmarknum

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_index::maxmarknum
    -
    - -

    actual size of markers array

    - -

    Referenced by opj_j2k_add_mhmarker(), and opj_j2k_create_cstr_index().

    - -
    -
    - -

    ◆ nb_of_tiles

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_index::nb_of_tiles
    -
    -
    - -

    ◆ tile_index

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__codestream__info.html b/build/doc/html/structopj__codestream__info.html deleted file mode 100644 index 831b68f8b..000000000 --- a/build/doc/html/structopj__codestream__info.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - - - - -OpenJPEG: opj_codestream_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_codestream_info Struct Reference
    -
    -
    - -

    Index structure of the codestream. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    double D_max
     maximum distortion reduction on the whole image (add for Marcela) More...
     
    int packno
     packet number More...
     
    int index_write
     writing the packet in the index with t2_encode_packets More...
     
    int image_w
     image width More...
     
    int image_h
     image height More...
     
    OPJ_PROG_ORDER prog
     progression order More...
     
    int tile_x
     tile size in x More...
     
    int tile_y
     tile size in y More...
     
    int tile_Ox
     
    int tile_Oy
     
    int tw
     number of tiles in X More...
     
    int th
     number of tiles in Y More...
     
    int numcomps
     component numbers More...
     
    int numlayers
     number of layer More...
     
    int * numdecompos
     number of decomposition for each component More...
     
    int marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    int maxmarknum
     actual size of markers array More...
     
    int main_head_start
     main header position More...
     
    int main_head_end
     main header position More...
     
    int codestream_size
     codestream's size More...
     
    opj_tile_info_ttile
     information regarding tiles inside image More...
     
    -

    Detailed Description

    -

    Index structure of the codestream.

    -

    Field Documentation

    - -

    ◆ codestream_size

    - -
    -
    - - - - -
    int opj_codestream_info::codestream_size
    -
    - -

    codestream's size

    - -

    Referenced by opj_write_cidx().

    - -
    -
    - -

    ◆ D_max

    - -
    -
    - - - - -
    double opj_codestream_info::D_max
    -
    - -

    maximum distortion reduction on the whole image (add for Marcela)

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ image_h

    - -
    -
    - - - - -
    int opj_codestream_info::image_h
    -
    - -

    image height

    - -
    -
    - -

    ◆ image_w

    - -
    -
    - - - - -
    int opj_codestream_info::image_w
    -
    - -

    image width

    - -
    -
    - -

    ◆ index_write

    - -
    -
    - - - - -
    int opj_codestream_info::index_write
    -
    - -

    writing the packet in the index with t2_encode_packets

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_encode_packets(), opj_tcd_encode_tile(), and opj_tcd_rate_allocate_encode().

    - -
    -
    - -

    ◆ main_head_end

    - -
    -
    - - - - -
    int opj_codestream_info::main_head_end
    -
    - -

    main header position

    - -

    Referenced by opj_write_mainmhix().

    - -
    -
    - -

    ◆ main_head_start

    - -
    -
    - - - - -
    int opj_codestream_info::main_head_start
    -
    - -

    main header position

    - -

    Referenced by opj_write_mainmhix().

    - -
    -
    - -

    ◆ marker

    - -
    -
    - - - - -
    opj_marker_info_t* opj_codestream_info::marker
    -
    - -

    list of markers

    - -

    Referenced by opj_write_cidx(), and opj_write_mainmhix().

    - -
    -
    - -

    ◆ marknum

    - -
    -
    - - - - -
    int opj_codestream_info::marknum
    -
    - -

    number of markers

    - -

    Referenced by opj_write_cidx(), and opj_write_mainmhix().

    - -
    -
    - -

    ◆ maxmarknum

    - -
    -
    - - - - -
    int opj_codestream_info::maxmarknum
    -
    - -

    actual size of markers array

    - -
    -
    - -

    ◆ numcomps

    - -
    -
    - - - - -
    int opj_codestream_info::numcomps
    -
    -
    - -

    ◆ numdecompos

    - -
    -
    - - - - -
    int* opj_codestream_info::numdecompos
    -
    - -

    number of decomposition for each component

    - -

    Referenced by opj_write_phixfaix(), opj_write_ppixfaix(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ numlayers

    - -
    -
    - - - - -
    int opj_codestream_info::numlayers
    -
    - -

    number of layer

    - -

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ packno

    - -
    -
    - - - - -
    int opj_codestream_info::packno
    -
    - -

    packet number

    - -

    Referenced by opj_j2k_write_sod(), opj_t2_encode_packet(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ prog

    - -
    -
    - - - - -
    OPJ_PROG_ORDER opj_codestream_info::prog
    -
    - -

    progression order

    - -

    Referenced by opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ th

    - -
    -
    - - - - -
    int opj_codestream_info::th
    -
    -
    - -

    ◆ tile

    - - - -

    ◆ tile_Ox

    - -
    -
    - - - - -
    int opj_codestream_info::tile_Ox
    -
    - -
    -
    - -

    ◆ tile_Oy

    - -
    -
    - - - - -
    int opj_codestream_info::tile_Oy
    -
    - -
    -
    - -

    ◆ tile_x

    - -
    -
    - - - - -
    int opj_codestream_info::tile_x
    -
    - -

    tile size in x

    - -
    -
    - -

    ◆ tile_y

    - -
    -
    - - - - -
    int opj_codestream_info::tile_y
    -
    - -

    tile size in y

    - -
    -
    - -

    ◆ tw

    - -
    -
    - - - - -
    int opj_codestream_info::tw
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__codestream__info__v2.html b/build/doc/html/structopj__codestream__info__v2.html deleted file mode 100644 index 76816f1ff..000000000 --- a/build/doc/html/structopj__codestream__info__v2.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -OpenJPEG: opj_codestream_info_v2 Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_codestream_info_v2 Struct Reference
    -
    -
    - -

    Information structure about the codestream (FIXME should be expand and enhance) - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 tx0
     tile origin in x = XTOsiz More...
     
    OPJ_UINT32 ty0
     tile origin in y = YTOsiz More...
     
    OPJ_UINT32 tdx
     tile size in x = XTsiz More...
     
    OPJ_UINT32 tdy
     tile size in y = YTsiz More...
     
    OPJ_UINT32 tw
     number of tiles in X More...
     
    OPJ_UINT32 th
     number of tiles in Y More...
     
    OPJ_UINT32 nbcomps
     number of components More...
     
    opj_tile_info_v2_t m_default_tile_info
     Default information regarding tiles inside image. More...
     
    opj_tile_info_v2_ttile_info
     information regarding tiles inside image More...
     
    -

    Detailed Description

    -

    Information structure about the codestream (FIXME should be expand and enhance)

    -

    Field Documentation

    - -

    ◆ m_default_tile_info

    - -
    -
    - - - - -
    opj_tile_info_v2_t opj_codestream_info_v2::m_default_tile_info
    -
    - -

    Default information regarding tiles inside image.

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ nbcomps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::nbcomps
    -
    - -

    number of components

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tdx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::tdx
    -
    - -

    tile size in x = XTsiz

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tdy

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::tdy
    -
    - -

    tile size in y = YTsiz

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ th

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::th
    -
    - -

    number of tiles in Y

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tile_info

    - -
    -
    - - - - -
    opj_tile_info_v2_t* opj_codestream_info_v2::tile_info
    -
    - -

    information regarding tiles inside image

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tw

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::tw
    -
    - -

    number of tiles in X

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tx0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::tx0
    -
    - -

    tile origin in x = XTOsiz

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ ty0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_codestream_info_v2::ty0
    -
    - -

    tile origin in y = YTOsiz

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__cp.html b/build/doc/html/structopj__cp.html deleted file mode 100644 index f28307607..000000000 --- a/build/doc/html/structopj__cp.html +++ /dev/null @@ -1,1018 +0,0 @@ - - - - - - - -OpenJPEG: opj_cp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_cp Struct Reference
    -
    -
    - -

    Coding parameters. - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT16 rsiz
     Size of the image in bits. More...
     
    OPJ_UINT32 tx0
     XTOsiz. More...
     
    OPJ_UINT32 ty0
     YTOsiz. More...
     
    OPJ_UINT32 tdx
     XTsiz. More...
     
    OPJ_UINT32 tdy
     YTsiz. More...
     
    OPJ_CHARcomment
     comment More...
     
    OPJ_UINT32 tw
     number of tiles in width More...
     
    OPJ_UINT32 th
     number of tiles in height More...
     
    OPJ_UINT32 ppm_markers_count
     number of ppm markers (reserved size) More...
     
    opj_ppxppm_markers
     ppm markers data (table indexed by Zppm) More...
     
    OPJ_BYTEppm_data
     packet header store there for future use in t2_decode_packet More...
     
    OPJ_UINT32 ppm_len
     size of the ppm_data More...
     
    OPJ_UINT32 ppm_data_read
     size of the ppm_data More...
     
    OPJ_BYTEppm_data_current
     
    OPJ_BYTEppm_buffer
     packet header storage original buffer More...
     
    OPJ_BYTEppm_data_first
     pointer remaining on the first byte of the first header if ppm is used More...
     
    OPJ_UINT32 ppm_data_size
     Number of bytes actually stored inside the ppm_data. More...
     
    OPJ_INT32 ppm_store
     use in case of multiple marker PPM (number of info already store) More...
     
    OPJ_INT32 ppm_previous
     use in case of multiple marker PPM (case on non-finished previous info) More...
     
    opj_tcp_ttcps
     tile coding parameters More...
     
    union {
       opj_decoding_param_t   m_dec
     
       opj_encoding_param_t   m_enc
     
    m_specific_param
     
    OPJ_BOOL epc_on
     enables writing of EPC in MH, thus activating JPWL More...
     
    OPJ_BOOL epb_on
     enables writing of EPB, in case of activated JPWL More...
     
    OPJ_BOOL esd_on
     enables writing of ESD, in case of activated JPWL More...
     
    OPJ_BOOL info_on
     enables writing of informative techniques of ESD, in case of activated JPWL More...
     
    OPJ_BOOL red_on
     enables writing of RED, in case of activated JPWL More...
     
    int hprot_MH
     error protection method for MH (0,1,16,32,37-128) More...
     
    int hprot_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of header protection specification (>=0) More...
     
    int hprot_TPH [JPWL_MAX_NO_TILESPECS]
     error protection methods for TPHs (0,1,16,32,37-128) More...
     
    int pprot_tileno [JPWL_MAX_NO_PACKSPECS]
     tile number of packet protection specification (>=0) More...
     
    int pprot_packno [JPWL_MAX_NO_PACKSPECS]
     packet number of packet protection specification (>=0) More...
     
    int pprot [JPWL_MAX_NO_PACKSPECS]
     error protection methods for packets (0,1,16,32,37-128) More...
     
    int sens_size
     enables writing of ESD, (0/2/4 bytes) More...
     
    int sens_addr
     sensitivity addressing size (0=auto/2/4 bytes) More...
     
    int sens_range
     sensitivity range (0-3) More...
     
    int sens_MH
     sensitivity method for MH (-1,0-7) More...
     
    int sens_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of sensitivity specification (>=0) More...
     
    int sens_TPH [JPWL_MAX_NO_TILESPECS]
     sensitivity methods for TPHs (-1,0-7) More...
     
    OPJ_BOOL correct
     enables JPWL correction at the decoder More...
     
    int exp_comps
     expected number of components at the decoder More...
     
    OPJ_UINT32 max_tiles
     maximum number of tiles at the decoder More...
     
    OPJ_BITFIELD ppm: 1
     if ppm == 1 --> there was a PPM marker More...
     
    OPJ_BITFIELD m_is_decoder: 1
     tells if the parameter is a coding or decoding one More...
     
    OPJ_BITFIELD allow_different_bit_depth_sign: 1
     whether different bit depth or sign per component is allowed. More...
     
    -

    Detailed Description

    -

    Coding parameters.

    -

    Field Documentation

    - -

    ◆ allow_different_bit_depth_sign

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_cp::allow_different_bit_depth_sign
    -
    - -

    whether different bit depth or sign per component is allowed.

    -

    Decoder only for ow

    - -

    Referenced by opj_j2k_create_decompress(), opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    - -
    -
    - -

    ◆ comment

    - -
    -
    - - - - -
    OPJ_CHAR* opj_cp::comment
    -
    -
    - -

    ◆ correct

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::correct
    -
    -
    - -

    ◆ epb_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::epb_on
    -
    - -

    enables writing of EPB, in case of activated JPWL

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ epc_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::epc_on
    -
    - -

    enables writing of EPC in MH, thus activating JPWL

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ esd_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::esd_on
    -
    - -

    enables writing of ESD, in case of activated JPWL

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ exp_comps

    - -
    -
    - - - - -
    int opj_cp::exp_comps
    -
    - -

    expected number of components at the decoder

    - -

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    - -
    -
    - -

    ◆ hprot_MH

    - -
    -
    - - - - -
    int opj_cp::hprot_MH
    -
    - -

    error protection method for MH (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ hprot_TPH

    - -
    -
    - - - - -
    int opj_cp::hprot_TPH[JPWL_MAX_NO_TILESPECS]
    -
    - -

    error protection methods for TPHs (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ hprot_TPH_tileno

    - -
    -
    - - - - -
    int opj_cp::hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    -
    - -

    tile number of header protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ info_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::info_on
    -
    - -

    enables writing of informative techniques of ESD, in case of activated JPWL

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ m_dec

    - - - -

    ◆ m_enc

    - - - -

    ◆ m_is_decoder

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_cp::m_is_decoder
    -
    - -

    tells if the parameter is a coding or decoding one

    - -

    Referenced by opj_j2k_cp_destroy(), opj_j2k_create_compress(), and opj_j2k_create_decompress().

    - -
    -
    - -

    ◆ m_specific_param

    - - - -

    ◆ max_tiles

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cp::max_tiles
    -
    - -

    maximum number of tiles at the decoder

    - -

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    - -
    -
    - -

    ◆ ppm

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_cp::ppm
    -
    - -

    if ppm == 1 --> there was a PPM marker

    - -

    Referenced by opj_j2k_merge_ppm(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppm_buffer

    - -
    -
    - - - - -
    OPJ_BYTE* opj_cp::ppm_buffer
    -
    - -

    packet header storage original buffer

    - -

    Referenced by opj_j2k_cp_destroy(), and opj_j2k_merge_ppm().

    - -
    -
    - -

    ◆ ppm_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_cp::ppm_data
    -
    - -

    packet header store there for future use in t2_decode_packet

    - -

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppm_data_current

    - -
    -
    - - - - -
    OPJ_BYTE* opj_cp::ppm_data_current
    -
    - -
    -
    - -

    ◆ ppm_data_first

    - -
    -
    - - - - -
    OPJ_BYTE* opj_cp::ppm_data_first
    -
    - -

    pointer remaining on the first byte of the first header if ppm is used

    - -
    -
    - -

    ◆ ppm_data_read

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cp::ppm_data_read
    -
    - -

    size of the ppm_data

    - -
    -
    - -

    ◆ ppm_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cp::ppm_data_size
    -
    - -

    Number of bytes actually stored inside the ppm_data.

    - -

    Referenced by opj_j2k_merge_ppm().

    - -
    -
    - -

    ◆ ppm_len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cp::ppm_len
    -
    - -

    size of the ppm_data

    - -

    Referenced by opj_j2k_merge_ppm(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppm_markers

    - -
    -
    - - - - -
    opj_ppx* opj_cp::ppm_markers
    -
    - -

    ppm markers data (table indexed by Zppm)

    - -

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_j2k_read_ppm().

    - -
    -
    - -

    ◆ ppm_markers_count

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cp::ppm_markers_count
    -
    - -

    number of ppm markers (reserved size)

    - -

    Referenced by opj_j2k_cp_destroy(), opj_j2k_merge_ppm(), and opj_j2k_read_ppm().

    - -
    -
    - -

    ◆ ppm_previous

    - -
    -
    - - - - -
    OPJ_INT32 opj_cp::ppm_previous
    -
    - -

    use in case of multiple marker PPM (case on non-finished previous info)

    - -
    -
    - -

    ◆ ppm_store

    - -
    -
    - - - - -
    OPJ_INT32 opj_cp::ppm_store
    -
    - -

    use in case of multiple marker PPM (number of info already store)

    - -
    -
    - -

    ◆ pprot

    - -
    -
    - - - - -
    int opj_cp::pprot[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    error protection methods for packets (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ pprot_packno

    - -
    -
    - - - - -
    int opj_cp::pprot_packno[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    packet number of packet protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ pprot_tileno

    - -
    -
    - - - - -
    int opj_cp::pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    tile number of packet protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ red_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cp::red_on
    -
    - -

    enables writing of RED, in case of activated JPWL

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ rsiz

    - - - -

    ◆ sens_addr

    - -
    -
    - - - - -
    int opj_cp::sens_addr
    -
    - -

    sensitivity addressing size (0=auto/2/4 bytes)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ sens_MH

    - -
    -
    - - - - -
    int opj_cp::sens_MH
    -
    - -

    sensitivity method for MH (-1,0-7)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ sens_range

    - -
    -
    - - - - -
    int opj_cp::sens_range
    -
    - -

    sensitivity range (0-3)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ sens_size

    - -
    -
    - - - - -
    int opj_cp::sens_size
    -
    - -

    enables writing of ESD, (0/2/4 bytes)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ sens_TPH

    - -
    -
    - - - - -
    int opj_cp::sens_TPH[JPWL_MAX_NO_TILESPECS]
    -
    - -

    sensitivity methods for TPHs (-1,0-7)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ sens_TPH_tileno

    - -
    -
    - - - - -
    int opj_cp::sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    -
    - -

    tile number of sensitivity specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ tcps

    - -
    -
    - - - - -
    opj_tcp_t* opj_cp::tcps
    -
    - -

    tile coding parameters

    - -

    Referenced by j2k_dump(), opj_get_all_encoding_parameters(), opj_get_encoding_packet_count(), opj_get_encoding_parameters(), opj_j2k_calculate_tp(), opj_j2k_compare_coc(), opj_j2k_compare_SPCod_SPCoc(), opj_j2k_compare_SQcd_SQcc(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_cp_destroy(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_encoding_validation(), opj_j2k_get_max_poc_size(), opj_j2k_get_max_toc_size(), opj_j2k_get_num_tp(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_mct_validation(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_ppt(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_set_decode_area(), opj_j2k_setup_encoder(), opj_j2k_update_rates(), opj_j2k_write_all_tile_parts(), opj_j2k_write_coc_in_memory(), opj_j2k_write_cod(), opj_j2k_write_first_tile_part(), opj_j2k_write_mco(), opj_j2k_write_mct_data_group(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_rgn(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), opj_pi_check_next_level(), opj_pi_create(), opj_pi_create_decode(), opj_pi_create_encode(), opj_pi_initialise_encode(), opj_pi_update_encode_not_poc(), opj_pi_update_encode_poc_and_final(), opj_pi_update_encoding_parameters(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_decode_tile(), opj_tcd_encode_tile(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ tdx

    - - - -

    ◆ tdy

    - - - -

    ◆ th

    - - - -

    ◆ tw

    - - - -

    ◆ tx0

    - - - -

    ◆ ty0

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__cparameters.html b/build/doc/html/structopj__cparameters.html deleted file mode 100644 index 31433f121..000000000 --- a/build/doc/html/structopj__cparameters.html +++ /dev/null @@ -1,1328 +0,0 @@ - - - - - - - -OpenJPEG: opj_cparameters Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_cparameters Struct Reference
    -
    -
    - -

    Compression parameters. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BOOL tile_size_on
     size of tile: tile_size_on = false (not in argument) or = true (in argument) More...
     
    int cp_tx0
     XTOsiz. More...
     
    int cp_ty0
     YTOsiz. More...
     
    int cp_tdx
     XTsiz. More...
     
    int cp_tdy
     YTsiz. More...
     
    int cp_disto_alloc
     allocation by rate/distortion More...
     
    int cp_fixed_alloc
     allocation by fixed layer More...
     
    int cp_fixed_quality
     add fixed_quality More...
     
    int * cp_matrice
     fixed layer More...
     
    char * cp_comment
     comment for coding More...
     
    int csty
     csty : coding style More...
     
    OPJ_PROG_ORDER prog_order
     progression order (default OPJ_LRCP) More...
     
    opj_poc_t POC [32]
     progression order changes More...
     
    OPJ_UINT32 numpocs
     number of progression order changes (POC), default to 0 More...
     
    int tcp_numlayers
     number of layers More...
     
    float tcp_rates [100]
     rates of layers - might be subsequently limited by the max_cs_size field. More...
     
    float tcp_distoratio [100]
     different psnr for successive layers. More...
     
    int numresolution
     number of resolutions More...
     
    int cblockw_init
     initial code block width, default to 64 More...
     
    int cblockh_init
     initial code block height, default to 64 More...
     
    int mode
     mode switch (cblk_style) More...
     
    int irreversible
     1 : use the irreversible DWT 9-7, 0 : use lossless compression (default) More...
     
    int roi_compno
     region of interest: affected component in [0..3], -1 means no ROI More...
     
    int roi_shift
     region of interest: upshift value More...
     
    int res_spec
     
    int prcw_init [OPJ_J2K_MAXRLVLS]
     initial precinct width More...
     
    int prch_init [OPJ_J2K_MAXRLVLS]
     initial precinct height More...
     
    command line encoder parameters (not used inside the library)
    char infile [OPJ_PATH_LEN]
     input file name More...
     
    char outfile [OPJ_PATH_LEN]
     output file name More...
     
    int index_on
     DEPRECATED. More...
     
    char index [OPJ_PATH_LEN]
     DEPRECATED. More...
     
    int image_offset_x0
     subimage encoding: origin image offset in x direction More...
     
    int image_offset_y0
     subimage encoding: origin image offset in y direction More...
     
    int subsampling_dx
     subsampling value for dx More...
     
    int subsampling_dy
     subsampling value for dy More...
     
    int decod_format
     input file format 0: PGX, 1: PxM, 2: BMP 3:TIF More...
     
    int cod_format
     output file format 0: J2K, 1: JP2, 2: JPT More...
     
    JPWL encoding parameters
    OPJ_BOOL jpwl_epc_on
     enables writing of EPC in MH, thus activating JPWL More...
     
    int jpwl_hprot_MH
     error protection method for MH (0,1,16,32,37-128) More...
     
    int jpwl_hprot_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of header protection specification (>=0) More...
     
    int jpwl_hprot_TPH [JPWL_MAX_NO_TILESPECS]
     error protection methods for TPHs (0,1,16,32,37-128) More...
     
    int jpwl_pprot_tileno [JPWL_MAX_NO_PACKSPECS]
     tile number of packet protection specification (>=0) More...
     
    int jpwl_pprot_packno [JPWL_MAX_NO_PACKSPECS]
     packet number of packet protection specification (>=0) More...
     
    int jpwl_pprot [JPWL_MAX_NO_PACKSPECS]
     error protection methods for packets (0,1,16,32,37-128) More...
     
    int jpwl_sens_size
     enables writing of ESD, (0=no/1/2 bytes) More...
     
    int jpwl_sens_addr
     sensitivity addressing size (0=auto/2/4 bytes) More...
     
    int jpwl_sens_range
     sensitivity range (0-3) More...
     
    int jpwl_sens_MH
     sensitivity method for MH (-1=no,0-7) More...
     
    int jpwl_sens_TPH_tileno [JPWL_MAX_NO_TILESPECS]
     tile number of sensitivity specification (>=0) More...
     
    int jpwl_sens_TPH [JPWL_MAX_NO_TILESPECS]
     sensitivity methods for TPHs (-1=no,0-7) More...
     
    OPJ_CINEMA_MODE cp_cinema
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not compliant, 1-compliant. More...
     
    int max_comp_size
     Maximum size (in bytes) for each component. More...
     
    OPJ_RSIZ_CAPABILITIES cp_rsiz
     DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name. More...
     
    char tp_on
     Tile part generation. More...
     
    char tp_flag
     Flag for Tile part generation. More...
     
    char tcp_mct
     MCT (multiple component transform) More...
     
    OPJ_BOOL jpip_on
     Enable JPIP indexing. More...
     
    void * mct_data
     Naive implementation of MCT restricted to a single reversible array based encoding without offset concerning all the components. More...
     
    int max_cs_size
     Maximum size (in bytes) for the whole codestream. More...
     
    OPJ_UINT16 rsiz
     RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values. More...
     
    -

    Detailed Description

    -

    Compression parameters.

    -

    Field Documentation

    - -

    ◆ cblockh_init

    - -
    -
    - - - - -
    int opj_cparameters::cblockh_init
    -
    -
    - -

    ◆ cblockw_init

    - -
    -
    - - - - -
    int opj_cparameters::cblockw_init
    -
    -
    - -

    ◆ cod_format

    - -
    -
    - - - - -
    int opj_cparameters::cod_format
    -
    - -

    output file format 0: J2K, 1: JP2, 2: JPT

    - -

    Referenced by opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_cinema

    - -
    -
    - - - - -
    OPJ_CINEMA_MODE opj_cparameters::cp_cinema
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead Digital Cinema compliance 0-not compliant, 1-compliant.

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_comment

    - -
    -
    - - - - -
    char* opj_cparameters::cp_comment
    -
    - -

    comment for coding

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ cp_disto_alloc

    - -
    -
    - - - - -
    int opj_cparameters::cp_disto_alloc
    -
    - -

    allocation by rate/distortion

    - -

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_fixed_alloc

    - -
    -
    - - - - -
    int opj_cparameters::cp_fixed_alloc
    -
    - -

    allocation by fixed layer

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_fixed_quality

    - -
    -
    - - - - -
    int opj_cparameters::cp_fixed_quality
    -
    - -

    add fixed_quality

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_matrice

    - -
    -
    - - - - -
    int* opj_cparameters::cp_matrice
    -
    - -

    fixed layer

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ cp_rsiz

    - -
    -
    - - - - -
    OPJ_RSIZ_CAPABILITIES opj_cparameters::cp_rsiz
    -
    - -

    DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead Profile name.

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ cp_tdx

    - -
    -
    - - - - -
    int opj_cparameters::cp_tdx
    -
    -
    - -

    ◆ cp_tdy

    - -
    -
    - - - - -
    int opj_cparameters::cp_tdy
    -
    -
    - -

    ◆ cp_tx0

    - -
    -
    - - - - -
    int opj_cparameters::cp_tx0
    -
    -
    - -

    ◆ cp_ty0

    - -
    -
    - - - - -
    int opj_cparameters::cp_ty0
    -
    -
    - -

    ◆ csty

    - -
    -
    - - - - -
    int opj_cparameters::csty
    -
    -
    - -

    ◆ decod_format

    - -
    -
    - - - - -
    int opj_cparameters::decod_format
    -
    - -

    input file format 0: PGX, 1: PxM, 2: BMP 3:TIF

    - -

    Referenced by opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ image_offset_x0

    - -
    -
    - - - - -
    int opj_cparameters::image_offset_x0
    -
    - -

    subimage encoding: origin image offset in x direction

    - -

    Referenced by opj_j2k_set_cinema_parameters().

    - -
    -
    - -

    ◆ image_offset_y0

    - -
    -
    - - - - -
    int opj_cparameters::image_offset_y0
    -
    - -

    subimage encoding: origin image offset in y direction

    - -

    Referenced by opj_j2k_set_cinema_parameters().

    - -
    -
    - -

    ◆ index

    - -
    -
    - - - - -
    char opj_cparameters::index[OPJ_PATH_LEN]
    -
    - -

    DEPRECATED.

    -

    Index generation is now handeld with the opj_encode_with_info() function. Set to NULL

    - -
    -
    - -

    ◆ index_on

    - -
    -
    - - - - -
    int opj_cparameters::index_on
    -
    - -

    DEPRECATED.

    -

    Index generation is now handeld with the opj_encode_with_info() function. Set to NULL

    - -
    -
    - -

    ◆ infile

    - -
    -
    - - - - -
    char opj_cparameters::infile[OPJ_PATH_LEN]
    -
    - -

    input file name

    - -
    -
    - -

    ◆ irreversible

    - -
    -
    - - - - -
    int opj_cparameters::irreversible
    -
    - -

    1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)

    - -

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_encoder(), and opj_set_MCT().

    - -
    -
    - -

    ◆ jpip_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cparameters::jpip_on
    -
    - -

    Enable JPIP indexing.

    - -

    Referenced by opj_jp2_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_epc_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cparameters::jpwl_epc_on
    -
    - -

    enables writing of EPC in MH, thus activating JPWL

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_hprot_MH

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_hprot_MH
    -
    - -

    error protection method for MH (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_hprot_TPH

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]
    -
    - -

    error protection methods for TPHs (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_hprot_TPH_tileno

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    -
    - -

    tile number of header protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_pprot

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_pprot[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    error protection methods for packets (0,1,16,32,37-128)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_pprot_packno

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    packet number of packet protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_pprot_tileno

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]
    -
    - -

    tile number of packet protection specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_addr

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_addr
    -
    - -

    sensitivity addressing size (0=auto/2/4 bytes)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_MH

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_MH
    -
    - -

    sensitivity method for MH (-1=no,0-7)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_range

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_range
    -
    - -

    sensitivity range (0-3)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_size

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_size
    -
    - -

    enables writing of ESD, (0=no/1/2 bytes)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_TPH

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]
    -
    - -

    sensitivity methods for TPHs (-1=no,0-7)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ jpwl_sens_TPH_tileno

    - -
    -
    - - - - -
    int opj_cparameters::jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
    -
    - -

    tile number of sensitivity specification (>=0)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ max_comp_size

    - -
    -
    - - - - -
    int opj_cparameters::max_comp_size
    -
    - -

    Maximum size (in bytes) for each component.

    -

    If == 0, component size limitation is not considered

    - -

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ max_cs_size

    - -
    -
    - - - - -
    int opj_cparameters::max_cs_size
    -
    - -

    Maximum size (in bytes) for the whole codestream.

    -

    If == 0, codestream size limitation is not considered If it does not comply with tcp_rates, max_cs_size prevails and a warning is issued.

    - -

    Referenced by opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ mct_data

    - -
    -
    - - - - -
    void* opj_cparameters::mct_data
    -
    - -

    Naive implementation of MCT restricted to a single reversible array based encoding without offset concerning all the components.

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_MCT().

    - -
    -
    - -

    ◆ mode

    - -
    -
    - - - - -
    int opj_cparameters::mode
    -
    - -

    mode switch (cblk_style)

    - -

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ numpocs

    - -
    -
    - - - - -
    OPJ_UINT32 opj_cparameters::numpocs
    -
    - -

    number of progression order changes (POC), default to 0

    - -

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ numresolution

    - -
    -
    - - - - -
    int opj_cparameters::numresolution
    -
    -
    - -

    ◆ outfile

    - -
    -
    - - - - -
    char opj_cparameters::outfile[OPJ_PATH_LEN]
    -
    - -

    output file name

    - -
    -
    - -

    ◆ POC

    - -
    -
    - - - - -
    opj_poc_t opj_cparameters::POC[32]
    -
    - -

    progression order changes

    - -

    Referenced by opj_j2k_set_cinema_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ prch_init

    - -
    -
    - - - - -
    int opj_cparameters::prch_init[OPJ_J2K_MAXRLVLS]
    -
    -
    - -

    ◆ prcw_init

    - -
    -
    - - - - -
    int opj_cparameters::prcw_init[OPJ_J2K_MAXRLVLS]
    -
    -
    - -

    ◆ prog_order

    - -
    -
    - - - - -
    OPJ_PROG_ORDER opj_cparameters::prog_order
    -
    -
    - -

    ◆ res_spec

    - -
    -
    - - - - -
    int opj_cparameters::res_spec
    -
    -
    - -

    ◆ roi_compno

    - -
    -
    - - - - -
    int opj_cparameters::roi_compno
    -
    - -

    region of interest: affected component in [0..3], -1 means no ROI

    - -

    Referenced by opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ roi_shift

    - -
    -
    - - - - -
    int opj_cparameters::roi_shift
    -
    - -

    region of interest: upshift value

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ rsiz

    - -
    -
    - - - - -
    OPJ_UINT16 opj_cparameters::rsiz
    -
    - -

    RSIZ value To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)levels values.

    - -

    Referenced by opj_j2k_get_imf_max_NL(), opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), opj_j2k_setup_encoder(), opj_set_default_encoder_parameters(), and opj_set_MCT().

    - -
    -
    - -

    ◆ subsampling_dx

    - -
    -
    - - - - -
    int opj_cparameters::subsampling_dx
    -
    - -

    subsampling value for dx

    - -

    Referenced by opj_j2k_set_cinema_parameters(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ subsampling_dy

    - -
    -
    - - - - -
    int opj_cparameters::subsampling_dy
    -
    - -

    subsampling value for dy

    - -

    Referenced by opj_j2k_set_cinema_parameters(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ tcp_distoratio

    - -
    -
    - - - - -
    float opj_cparameters::tcp_distoratio[100]
    -
    - -

    different psnr for successive layers.

    -

    Should be increasing. 0 can be used as last value to indicate the last layer is lossless.

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ tcp_mct

    - -
    -
    - - - - -
    char opj_cparameters::tcp_mct
    -
    - -

    MCT (multiple component transform)

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_set_MCT().

    - -
    -
    - -

    ◆ tcp_numlayers

    - -
    -
    - - - - -
    int opj_cparameters::tcp_numlayers
    -
    -
    - -

    ◆ tcp_rates

    - -
    -
    - - - - -
    float opj_cparameters::tcp_rates[100]
    -
    - -

    rates of layers - might be subsequently limited by the max_cs_size field.

    -

    Should be decreasing. 1 can be used as last value to indicate the last layer is lossless.

    - -

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_setup_encoder(), and opj_set_default_encoder_parameters().

    - -
    -
    - -

    ◆ tile_size_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_cparameters::tile_size_on
    -
    - -

    size of tile: tile_size_on = false (not in argument) or = true (in argument)

    - -

    Referenced by opj_j2k_get_imf_max_NL(), opj_j2k_is_imf_compliant(), opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ tp_flag

    - -
    -
    - - - - -
    char opj_cparameters::tp_flag
    -
    - -

    Flag for Tile part generation.

    - -

    Referenced by opj_j2k_set_cinema_parameters(), opj_j2k_set_imf_parameters(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ tp_on

    - -
    -
    - - - - -
    char opj_cparameters::tp_on
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__dec__memory__marker__handler.html b/build/doc/html/structopj__dec__memory__marker__handler.html deleted file mode 100644 index e9a10fc42..000000000 --- a/build/doc/html/structopj__dec__memory__marker__handler.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -OpenJPEG: opj_dec_memory_marker_handler Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_dec_memory_marker_handler Struct Reference
    -
    -
    - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 id
     marker value More...
     
    OPJ_UINT32 states
     value of the state when the marker can appear More...
     
    OPJ_BOOL(* handler )(opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     action linked to the marker More...
     
    -

    Field Documentation

    - -

    ◆ handler

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_dec_memory_marker_handler::handler) (opj_j2k_t *p_j2k, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    -
    - -

    action linked to the marker

    - -

    Referenced by opj_j2k_read_header_procedure(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ id

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dec_memory_marker_handler::id
    -
    -
    - -

    ◆ states

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dec_memory_marker_handler::states
    -
    - -

    value of the state when the marker can appear

    - -

    Referenced by opj_j2k_read_header_procedure(), opj_j2k_read_tile_header(), and opj_j2k_read_unk().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__decoding__param.html b/build/doc/html/structopj__decoding__param.html deleted file mode 100644 index 0a30720ec..000000000 --- a/build/doc/html/structopj__decoding__param.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -OpenJPEG: opj_decoding_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_decoding_param Struct Reference
    -
    -
    - -

    #include <j2k.h>

    - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_reduce
     if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution More...
     
    OPJ_UINT32 m_layer
     if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded More...
     
    -

    Field Documentation

    - -

    ◆ m_layer

    - -
    -
    - - - - -
    OPJ_UINT32 opj_decoding_param::m_layer
    -
    - -

    if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded

    - -

    Referenced by opj_j2k_read_cod(), and opj_j2k_setup_decoder().

    - -
    -
    - -

    ◆ m_reduce

    - -
    -
    - - - - -
    OPJ_UINT32 opj_decoding_param::m_reduce
    -
    - -

    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution

    - -

    Referenced by opj_j2k_decode(), opj_j2k_read_siz(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_decoder(), and opj_tcd_init_tile().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__dparameters.html b/build/doc/html/structopj__dparameters.html deleted file mode 100644 index efffb06ef..000000000 --- a/build/doc/html/structopj__dparameters.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - - -OpenJPEG: opj_dparameters Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_dparameters Struct Reference
    -
    -
    - -

    Decompression parameters. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 cp_reduce
     Set the number of highest resolution levels to be discarded. More...
     
    OPJ_UINT32 cp_layer
     Set the maximum number of quality layers to decode. More...
     
    command line decoder parameters (not used inside the library)
    char infile [OPJ_PATH_LEN]
     input file name More...
     
    char outfile [OPJ_PATH_LEN]
     output file name More...
     
    int decod_format
     input file format 0: J2K, 1: JP2, 2: JPT More...
     
    int cod_format
     output file format 0: PGX, 1: PxM, 2: BMP More...
     
    OPJ_UINT32 DA_x0
     Decoding area left boundary. More...
     
    OPJ_UINT32 DA_x1
     Decoding area right boundary. More...
     
    OPJ_UINT32 DA_y0
     Decoding area up boundary. More...
     
    OPJ_UINT32 DA_y1
     Decoding area bottom boundary. More...
     
    OPJ_BOOL m_verbose
     Verbose mode. More...
     
    OPJ_UINT32 tile_index
     tile number of the decoded tile More...
     
    OPJ_UINT32 nb_tile_to_decode
     Nb of tile to decode. More...
     
    JPWL decoding parameters
    OPJ_BOOL jpwl_correct
     activates the JPWL correction capabilities More...
     
    int jpwl_exp_comps
     expected number of components More...
     
    int jpwl_max_tiles
     maximum number of tiles More...
     
    unsigned int flags
     
    -

    Detailed Description

    -

    Decompression parameters.

    -

    Field Documentation

    - -

    ◆ cod_format

    - -
    -
    - - - - -
    int opj_dparameters::cod_format
    -
    - -

    output file format 0: PGX, 1: PxM, 2: BMP

    - -

    Referenced by opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ cp_layer

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::cp_layer
    -
    - -

    Set the maximum number of quality layers to decode.

    -

    If there are less quality layers than the specified number, all the quality layers are decoded. if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded

    - -

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ cp_reduce

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::cp_reduce
    -
    - -

    Set the number of highest resolution levels to be discarded.

    -

    The image resolution is effectively divided by 2 to the power of the number of discarded levels. The reduce factor is limited by the smallest total number of decomposition levels among tiles. if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution

    - -

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ DA_x0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::DA_x0
    -
    - -

    Decoding area left boundary.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ DA_x1

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::DA_x1
    -
    - -

    Decoding area right boundary.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ DA_y0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::DA_y0
    -
    - -

    Decoding area up boundary.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ DA_y1

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::DA_y1
    -
    - -

    Decoding area bottom boundary.

    - -

    Referenced by j2k_to_pnm().

    - -
    -
    - -

    ◆ decod_format

    - -
    -
    - - - - -
    int opj_dparameters::decod_format
    -
    - -

    input file format 0: J2K, 1: JP2, 2: JPT

    - -

    Referenced by opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ flags

    - -
    -
    - - - - -
    unsigned int opj_dparameters::flags
    -
    -
    - -

    ◆ infile

    - -
    -
    - - - - -
    char opj_dparameters::infile[OPJ_PATH_LEN]
    -
    - -

    input file name

    - -
    -
    - -

    ◆ jpwl_correct

    - -
    -
    - - - - -
    OPJ_BOOL opj_dparameters::jpwl_correct
    -
    - -

    activates the JPWL correction capabilities

    - -

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ jpwl_exp_comps

    - -
    -
    - - - - -
    int opj_dparameters::jpwl_exp_comps
    -
    - -

    expected number of components

    - -

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ jpwl_max_tiles

    - -
    -
    - - - - -
    int opj_dparameters::jpwl_max_tiles
    -
    - -

    maximum number of tiles

    - -

    Referenced by opj_j2k_setup_decoder(), and opj_set_default_decoder_parameters().

    - -
    -
    - -

    ◆ m_verbose

    - -
    -
    - - - - -
    OPJ_BOOL opj_dparameters::m_verbose
    -
    - -

    Verbose mode.

    - -
    -
    - -

    ◆ nb_tile_to_decode

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::nb_tile_to_decode
    -
    - -

    Nb of tile to decode.

    - -
    -
    - -

    ◆ outfile

    - -
    -
    - - - - -
    char opj_dparameters::outfile[OPJ_PATH_LEN]
    -
    - -

    output file name

    - -
    -
    - -

    ◆ tile_index

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dparameters::tile_index
    -
    - -

    tile number of the decoded tile

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__dwd__decode__h__job__t.html b/build/doc/html/structopj__dwd__decode__h__job__t.html deleted file mode 100644 index 13708f502..000000000 --- a/build/doc/html/structopj__dwd__decode__h__job__t.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -OpenJPEG: opj_dwd_decode_h_job_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_dwd_decode_h_job_t Struct Reference
    -
    -
    - - - - - - - - - - - - - - -

    -Data Fields

    opj_dwt_t h
     
    OPJ_UINT32 rw
     
    OPJ_UINT32 w
     
    OPJ_INT32 *OPJ_RESTRICT tiledp
     
    OPJ_UINT32 min_j
     
    OPJ_UINT32 max_j
     
    -

    Field Documentation

    - -

    ◆ h

    - -
    -
    - - - - -
    opj_dwt_t opj_dwd_decode_h_job_t::h
    -
    -
    - -

    ◆ max_j

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_h_job_t::max_j
    -
    - -

    Referenced by opj_dwt_decode_tile().

    - -
    -
    - -

    ◆ min_j

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_h_job_t::min_j
    -
    -
    - -

    ◆ rw

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_h_job_t::rw
    -
    - -

    Referenced by opj_dwt_decode_tile().

    - -
    -
    - -

    ◆ tiledp

    - -
    -
    - - - - -
    OPJ_INT32* OPJ_RESTRICT opj_dwd_decode_h_job_t::tiledp
    -
    -
    - -

    ◆ w

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_h_job_t::w
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__dwd__decode__v__job__t.html b/build/doc/html/structopj__dwd__decode__v__job__t.html deleted file mode 100644 index 27e4f23e6..000000000 --- a/build/doc/html/structopj__dwd__decode__v__job__t.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -OpenJPEG: opj_dwd_decode_v_job_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_dwd_decode_v_job_t Struct Reference
    -
    -
    - - - - - - - - - - - - - - -

    -Data Fields

    opj_dwt_t v
     
    OPJ_UINT32 rh
     
    OPJ_UINT32 w
     
    OPJ_INT32 *OPJ_RESTRICT tiledp
     
    OPJ_UINT32 min_j
     
    OPJ_UINT32 max_j
     
    -

    Field Documentation

    - -

    ◆ max_j

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_v_job_t::max_j
    -
    -
    - -

    ◆ min_j

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_v_job_t::min_j
    -
    -
    - -

    ◆ rh

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_v_job_t::rh
    -
    - -

    Referenced by opj_dwt_decode_tile().

    - -
    -
    - -

    ◆ tiledp

    - -
    -
    - - - - -
    OPJ_INT32* OPJ_RESTRICT opj_dwd_decode_v_job_t::tiledp
    -
    -
    - -

    ◆ v

    - -
    -
    - - - - -
    opj_dwt_t opj_dwd_decode_v_job_t::v
    -
    -
    - -

    ◆ w

    - -
    -
    - - - - -
    OPJ_UINT32 opj_dwd_decode_v_job_t::w
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__encoding__param.html b/build/doc/html/structopj__encoding__param.html deleted file mode 100644 index 9ef4a351f..000000000 --- a/build/doc/html/structopj__encoding__param.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - -OpenJPEG: opj_encoding_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_encoding_param Struct Reference
    -
    -
    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_max_comp_size
     Maximum rate for each component. More...
     
    OPJ_INT32 m_tp_pos
     Position of tile part flag in progression order. More...
     
    OPJ_INT32m_matrice
     fixed layer More...
     
    OPJ_BYTE m_tp_flag
     Flag determining tile part generation. More...
     
    OPJ_BITFIELD m_disto_alloc: 1
     allocation by rate/distortion More...
     
    OPJ_BITFIELD m_fixed_alloc: 1
     allocation by fixed layer More...
     
    OPJ_BITFIELD m_fixed_quality: 1
     add fixed_quality More...
     
    OPJ_BITFIELD m_tp_on: 1
     Enabling Tile part generation. More...
     
    -

    Field Documentation

    - -

    ◆ m_disto_alloc

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_encoding_param::m_disto_alloc
    -
    - -

    allocation by rate/distortion

    - -

    Referenced by opj_j2k_setup_encoder(), opj_tcd_rate_allocate_encode(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ m_fixed_alloc

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_encoding_param::m_fixed_alloc
    -
    - -

    allocation by fixed layer

    - -

    Referenced by opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ m_fixed_quality

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_encoding_param::m_fixed_quality
    -
    - -

    add fixed_quality

    - -

    Referenced by opj_j2k_setup_encoder(), opj_tcd_rate_allocate_encode(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ m_matrice

    - -
    -
    - - - - -
    OPJ_INT32* opj_encoding_param::m_matrice
    -
    - -

    fixed layer

    - -

    Referenced by opj_j2k_cp_destroy(), opj_j2k_setup_encoder(), and opj_tcd_makelayer_fixed().

    - -
    -
    - -

    ◆ m_max_comp_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_encoding_param::m_max_comp_size
    -
    - -

    Maximum rate for each component.

    -

    If == 0, component size limitation is not considered

    - -

    Referenced by opj_j2k_setup_encoder(), and opj_t2_encode_packets().

    - -
    -
    - -

    ◆ m_tp_flag

    - -
    -
    - - - - -
    OPJ_BYTE opj_encoding_param::m_tp_flag
    -
    - -

    Flag determining tile part generation.

    - -

    Referenced by opj_j2k_get_num_tp(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ m_tp_on

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_encoding_param::m_tp_on
    -
    -
    - -

    ◆ m_tp_pos

    - -
    -
    - - - - -
    OPJ_INT32 opj_encoding_param::m_tp_pos
    -
    - -

    Position of tile part flag in progression order.

    - -

    Referenced by opj_j2k_get_num_tp(), and opj_tcd_init().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__event__mgr.html b/build/doc/html/structopj__event__mgr.html deleted file mode 100644 index 40e631261..000000000 --- a/build/doc/html/structopj__event__mgr.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -OpenJPEG: opj_event_mgr Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_event_mgr Struct Reference
    -
    -
    - -

    Message handler object used for. - More...

    - -

    #include <event.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    void * m_error_data
     Data to call the event manager upon. More...
     
    void * m_warning_data
     Data to call the event manager upon. More...
     
    void * m_info_data
     Data to call the event manager upon. More...
     
    opj_msg_callback error_handler
     Error message callback if available, NULL otherwise. More...
     
    opj_msg_callback warning_handler
     Warning message callback if available, NULL otherwise. More...
     
    opj_msg_callback info_handler
     Debug message callback if available, NULL otherwise. More...
     
    -

    Detailed Description

    -

    Message handler object used for.

    -
      -
    • -Error messages
    • -
    • -Warning messages
    • -
    • -Debugging messages
    • -
    -

    Field Documentation

    - -

    ◆ error_handler

    - -
    -
    - - - - -
    opj_msg_callback opj_event_mgr::error_handler
    -
    - -

    Error message callback if available, NULL otherwise.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_error_handler().

    - -
    -
    - -

    ◆ info_handler

    - -
    -
    - - - - -
    opj_msg_callback opj_event_mgr::info_handler
    -
    - -

    Debug message callback if available, NULL otherwise.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_info_handler().

    - -
    -
    - -

    ◆ m_error_data

    - -
    -
    - - - - -
    void* opj_event_mgr::m_error_data
    -
    - -

    Data to call the event manager upon.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_error_handler().

    - -
    -
    - -

    ◆ m_info_data

    - -
    -
    - - - - -
    void* opj_event_mgr::m_info_data
    -
    - -

    Data to call the event manager upon.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_info_handler().

    - -
    -
    - -

    ◆ m_warning_data

    - -
    -
    - - - - -
    void* opj_event_mgr::m_warning_data
    -
    - -

    Data to call the event manager upon.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_warning_handler().

    - -
    -
    - -

    ◆ warning_handler

    - -
    -
    - - - - -
    opj_msg_callback opj_event_mgr::warning_handler
    -
    - -

    Warning message callback if available, NULL otherwise.

    - -

    Referenced by opj_event_msg(), opj_set_default_event_handler(), and opj_set_warning_handler().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__image.html b/build/doc/html/structopj__image.html deleted file mode 100644 index bec738df8..000000000 --- a/build/doc/html/structopj__image.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -OpenJPEG: opj_image Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_image Struct Reference
    -
    -
    - -

    Defines image data and characteristics. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 x0
     XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area. More...
     
    OPJ_UINT32 y0
     YOsiz: vertical offset from the origin of the reference grid to the top side of the image area. More...
     
    OPJ_UINT32 x1
     Xsiz: width of the reference grid. More...
     
    OPJ_UINT32 y1
     Ysiz: height of the reference grid. More...
     
    OPJ_UINT32 numcomps
     number of components in the image More...
     
    OPJ_COLOR_SPACE color_space
     color space: sRGB, Greyscale or YUV More...
     
    opj_image_comp_tcomps
     image components More...
     
    OPJ_BYTEicc_profile_buf
     'restricted' ICC profile More...
     
    OPJ_UINT32 icc_profile_len
     size of ICC profile More...
     
    -

    Detailed Description

    -

    Defines image data and characteristics.

    -

    Field Documentation

    - -

    ◆ color_space

    - -
    -
    - - - - -
    OPJ_COLOR_SPACE opj_image::color_space
    -
    -
    - -

    ◆ comps

    - - - -

    ◆ icc_profile_buf

    - -
    -
    - - - - -
    OPJ_BYTE* opj_image::icc_profile_buf
    -
    - -

    'restricted' ICC profile

    - -

    Referenced by opj_copy_image_header(), opj_image_destroy(), opj_jp2_decode(), and opj_jp2_get_tile().

    - -
    -
    - -

    ◆ icc_profile_len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image::icc_profile_len
    -
    - -

    size of ICC profile

    - -

    Referenced by opj_copy_image_header(), opj_jp2_decode(), opj_jp2_get_tile(), and opj_jp2_setup_encoder().

    - -
    -
    - -

    ◆ numcomps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image::numcomps
    -
    - -

    number of components in the image

    - -

    Referenced by imagetopnm(), j2k_dump(), j2k_dump_image_header(), j2k_get_cstr_info(), main(), opj_copy_image_header(), opj_get_all_encoding_parameters(), opj_get_encoding_packet_count(), opj_get_encoding_parameters(), opj_image_comp_header_update(), opj_image_create(), opj_image_destroy(), opj_image_tile_create(), opj_j2k_add_mct(), opj_j2k_are_all_used_components_decoded(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_decode(), opj_j2k_decode_tiles(), opj_j2k_dump_MH_info(), opj_j2k_encode(), opj_j2k_get_max_coc_size(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_tile(), opj_j2k_get_tile_data(), opj_j2k_is_cinema_compliant(), opj_j2k_is_imf_compliant(), opj_j2k_mct_validation(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_read_cbd(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_crg(), opj_j2k_read_mco(), opj_j2k_read_poc(), opj_j2k_read_qcc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_set_cinema_parameters(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_encoder(), opj_j2k_setup_mct_encoding(), opj_j2k_start_compress(), opj_j2k_update_image_data(), opj_j2k_update_image_dimensions(), opj_j2k_update_rates(), opj_j2k_write_all_coc(), opj_j2k_write_all_qcc(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_coc_in_memory(), opj_j2k_write_first_tile_part(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_qcc(), opj_j2k_write_qcc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_siz(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_tile(), opj_jp2_apply_cdef(), opj_jp2_apply_pclr(), opj_jp2_check_color(), opj_jp2_setup_encoder(), opj_pi_create(), opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_update_encoding_parameters(), opj_t2_decode_packets(), opj_t2_encode_packets(), opj_tcd_copy_tile_data(), opj_tcd_decode_tile(), opj_tcd_get_decoded_tile_size(), opj_tcd_get_encoder_input_buffer_size(), opj_tcd_init(), opj_tcd_t1_encode(), and opj_tcd_update_tile_data().

    - -
    -
    - -

    ◆ x0

    - - - -

    ◆ x1

    - - - -

    ◆ y0

    - - - -

    ◆ y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__image__comp.html b/build/doc/html/structopj__image__comp.html deleted file mode 100644 index a36c5afe3..000000000 --- a/build/doc/html/structopj__image__comp.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -OpenJPEG: opj_image_comp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_image_comp Struct Reference
    -
    -
    - -

    Defines a single image component. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 dx
     XRsiz: horizontal separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 dy
     YRsiz: vertical separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 w
     data width More...
     
    OPJ_UINT32 h
     data height More...
     
    OPJ_UINT32 x0
     x component offset compared to the whole image More...
     
    OPJ_UINT32 y0
     y component offset compared to the whole image More...
     
    OPJ_UINT32 prec
     precision More...
     
    OPJ_UINT32 bpp
     image depth in bits More...
     
    OPJ_UINT32 sgnd
     signed (1) / unsigned (0) More...
     
    OPJ_UINT32 resno_decoded
     number of decoded resolution More...
     
    OPJ_UINT32 factor
     number of division by 2 of the out image compared to the original size of image More...
     
    OPJ_INT32data
     image component data More...
     
    OPJ_UINT16 alpha
     alpha channel More...
     
    -

    Detailed Description

    -

    Defines a single image component.

    -

    Field Documentation

    - -

    ◆ alpha

    - -
    -
    - - - - -
    OPJ_UINT16 opj_image_comp::alpha
    -
    - -

    alpha channel

    - -

    Referenced by opj_jp2_apply_cdef(), and opj_jp2_setup_encoder().

    - -
    -
    - -

    ◆ bpp

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comp::bpp
    -
    - -

    image depth in bits

    - -

    Referenced by opj_image_create(), opj_j2k_is_cinema_compliant(), and opj_j2k_is_imf_compliant().

    - -
    -
    - -

    ◆ data

    - - - -

    ◆ dx

    - - - -

    ◆ dy

    - - - -

    ◆ factor

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comp::factor
    -
    - -

    number of division by 2 of the out image compared to the original size of image

    - -

    Referenced by opj_image_comp_header_update(), opj_j2k_decode(), opj_j2k_get_tile(), opj_j2k_read_siz(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), and opj_j2k_update_image_dimensions().

    - -
    -
    - -

    ◆ h

    - - - -

    ◆ prec

    - - - -

    ◆ resno_decoded

    - - - -

    ◆ sgnd

    - - - -

    ◆ w

    - - - -

    ◆ x0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comp::x0
    -
    - -

    x component offset compared to the whole image

    - -

    Referenced by opj_image_comp_header_update(), opj_image_create(), opj_image_tile_create(), opj_j2k_get_tile(), and opj_j2k_update_image_dimensions().

    - -
    -
    - -

    ◆ y0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comp::y0
    -
    - -

    y component offset compared to the whole image

    - -

    Referenced by opj_image_comp_header_update(), opj_image_create(), opj_image_tile_create(), opj_j2k_get_tile(), and opj_j2k_update_image_dimensions().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__image__comptparm.html b/build/doc/html/structopj__image__comptparm.html deleted file mode 100644 index cf6b648ba..000000000 --- a/build/doc/html/structopj__image__comptparm.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -OpenJPEG: opj_image_comptparm Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_image_comptparm Struct Reference
    -
    -
    - -

    Component parameters structure used by the opj_image_create function. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 dx
     XRsiz: horizontal separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 dy
     YRsiz: vertical separation of a sample of ith component with respect to the reference grid. More...
     
    OPJ_UINT32 w
     data width More...
     
    OPJ_UINT32 h
     data height More...
     
    OPJ_UINT32 x0
     x component offset compared to the whole image More...
     
    OPJ_UINT32 y0
     y component offset compared to the whole image More...
     
    OPJ_UINT32 prec
     precision More...
     
    OPJ_UINT32 bpp
     image depth in bits More...
     
    OPJ_UINT32 sgnd
     signed (1) / unsigned (0) More...
     
    -

    Detailed Description

    -

    Component parameters structure used by the opj_image_create function.

    -

    Field Documentation

    - -

    ◆ bpp

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::bpp
    -
    - -

    image depth in bits

    - -

    Referenced by opj_image_create().

    - -
    -
    - -

    ◆ dx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::dx
    -
    - -

    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ dy

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::dy
    -
    - -

    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ h

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::h
    -
    - -

    data height

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ prec

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::prec
    -
    - -

    precision

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ sgnd

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::sgnd
    -
    - -

    signed (1) / unsigned (0)

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ w

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::w
    -
    - -

    data width

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ x0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::x0
    -
    - -

    x component offset compared to the whole image

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    - -

    ◆ y0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_image_comptparm::y0
    -
    - -

    y component offset compared to the whole image

    - -

    Referenced by opj_image_create(), and opj_image_tile_create().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__j2k.html b/build/doc/html/structopj__j2k.html deleted file mode 100644 index 9fc2b6a46..000000000 --- a/build/doc/html/structopj__j2k.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - -OpenJPEG: opj_j2k Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_j2k Struct Reference
    -
    -
    - -

    JPEG-2000 codestream reader/writer. - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BOOL m_is_decoder
     
    union {
       opj_j2k_dec_t   m_decoder
     
       opj_j2k_enc_t   m_encoder
     
    m_specific_param
     
    opj_image_tm_private_image
     pointer to the internal/private encoded / decoded image More...
     
    opj_image_tm_output_image
     
    opj_cp_t m_cp
     Coding parameters. More...
     
    opj_procedure_list_tm_procedure_list
     the list of procedures to exec More...
     
    opj_procedure_list_tm_validation_list
     the list of validation procedures to follow to make sure the code is valid More...
     
    opj_codestream_index_tcstr_index
     helper used to write the index file More...
     
    OPJ_UINT32 m_current_tile_number
     number of the tile currently concern by coding/decoding More...
     
    struct opj_tcdm_tcd
     the current tile coder/decoder More...
     
    opj_thread_pool_tm_tp
     Thread pool. More...
     
    OPJ_UINT32 ihdr_w
     Image width coming from JP2 IHDR box. More...
     
    OPJ_UINT32 ihdr_h
     Image height coming from JP2 IHDR box. More...
     
    unsigned int dump_state
     Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set. More...
     
    -

    Detailed Description

    -

    JPEG-2000 codestream reader/writer.

    -

    Field Documentation

    - -

    ◆ cstr_index

    - - - -

    ◆ dump_state

    - -
    -
    - - - - -
    unsigned int opj_j2k::dump_state
    -
    - -

    Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set.

    - -

    Referenced by opj_j2k_read_siz(), and opj_j2k_setup_decoder().

    - -
    -
    - -

    ◆ ihdr_h

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k::ihdr_h
    -
    - -

    Image height coming from JP2 IHDR box.

    -

    0 from a pure codestream

    - -

    Referenced by opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    - -
    -
    - -

    ◆ ihdr_w

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k::ihdr_w
    -
    - -

    Image width coming from JP2 IHDR box.

    -

    0 from a pure codestream

    - -

    Referenced by opj_j2k_read_siz(), and opj_jp2_read_ihdr().

    - -
    -
    - -

    ◆ m_cp

    - -
    -
    - - - - -
    opj_cp_t opj_j2k::m_cp
    -
    - -

    Coding parameters.

    - -

    Referenced by j2k_dump(), j2k_get_cstr_info(), opj_j2k_allocate_tile_element_cstr_index(), opj_j2k_compare_coc(), opj_j2k_compare_SPCod_SPCoc(), opj_j2k_compare_SQcd_SQcc(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_create_compress(), opj_j2k_create_decompress(), opj_j2k_create_tcd(), opj_j2k_decode(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_destroy(), opj_j2k_dump_MH_info(), opj_j2k_encode(), opj_j2k_encoding_validation(), opj_j2k_get_max_coc_size(), opj_j2k_get_max_poc_size(), opj_j2k_get_max_toc_size(), opj_j2k_get_SPCod_SPCoc_size(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_SQcd_SQcc_size(), opj_j2k_get_tile(), opj_j2k_init_info(), opj_j2k_mct_validation(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_ppm(), opj_j2k_read_ppt(), opj_j2k_read_qcc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_setup_decoder(), opj_j2k_setup_encoder(), opj_j2k_setup_end_compress(), opj_j2k_setup_header_writing(), opj_j2k_update_rates(), opj_j2k_write_all_tile_parts(), opj_j2k_write_coc_in_memory(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_first_tile_part(), opj_j2k_write_mco(), opj_j2k_write_mct_data_group(), opj_j2k_write_poc(), opj_j2k_write_poc_in_memory(), opj_j2k_write_regions(), opj_j2k_write_rgn(), opj_j2k_write_siz(), opj_j2k_write_sot(), opj_j2k_write_SPCod_SPCoc(), opj_j2k_write_SQcd_SQcc(), and opj_jp2_read_ihdr().

    - -
    -
    - -

    ◆ m_current_tile_number

    - - - -

    ◆ m_decoder

    - - - -

    ◆ m_encoder

    - - - -

    ◆ m_is_decoder

    - -
    -
    - - - - -
    OPJ_BOOL opj_j2k::m_is_decoder
    -
    -
    - -

    ◆ m_output_image

    - - - -

    ◆ m_private_image

    - - - -

    ◆ m_procedure_list

    - - - -

    ◆ m_specific_param

    - -
    -
    - - - - -
    union { ... } opj_j2k::m_specific_param
    -
    - -

    Referenced by j2k_get_cstr_info(), opj_j2k_are_all_used_components_decoded(), opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_copy_tile_component_parameters(), opj_j2k_copy_tile_quantization_parameters(), opj_j2k_create_compress(), opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_decode_tile(), opj_j2k_decode_tiles(), opj_j2k_decoding_validation(), opj_j2k_destroy(), opj_j2k_destroy_header_memory(), opj_j2k_dump_MH_info(), opj_j2k_encoder_set_extra_options(), opj_j2k_encoding_validation(), opj_j2k_end_encoding(), opj_j2k_get_specific_header_sizes(), opj_j2k_get_tile(), opj_j2k_init_info(), opj_j2k_move_data_from_codec_to_output_image(), opj_j2k_post_write_tile(), opj_j2k_pre_write_tile(), opj_j2k_read_coc(), opj_j2k_read_cod(), opj_j2k_read_header_procedure(), opj_j2k_read_mcc(), opj_j2k_read_mco(), opj_j2k_read_mct(), opj_j2k_read_poc(), opj_j2k_read_rgn(), opj_j2k_read_siz(), opj_j2k_read_soc(), opj_j2k_read_sod(), opj_j2k_read_sot(), opj_j2k_read_SPCod_SPCoc(), opj_j2k_read_SQcd_SQcc(), opj_j2k_read_tile_header(), opj_j2k_read_unk(), opj_j2k_set_decode_area(), opj_j2k_set_decoded_components(), opj_j2k_set_decoded_resolution_factor(), opj_j2k_update_rates(), opj_j2k_update_tlm(), opj_j2k_write_all_tile_parts(), opj_j2k_write_cbd(), opj_j2k_write_coc(), opj_j2k_write_cod(), opj_j2k_write_com(), opj_j2k_write_eoc(), opj_j2k_write_first_tile_part(), opj_j2k_write_mcc_record(), opj_j2k_write_mco(), opj_j2k_write_mct_record(), opj_j2k_write_poc(), opj_j2k_write_qcc(), opj_j2k_write_qcd(), opj_j2k_write_rgn(), opj_j2k_write_siz(), opj_j2k_write_soc(), opj_j2k_write_sod(), opj_j2k_write_sot(), opj_j2k_write_tlm(), opj_j2k_write_updated_tlm(), opj_jp2_decode(), and opj_jp2_get_tile().

    - -
    -
    - -

    ◆ m_tcd

    - - - -

    ◆ m_tp

    - - - -

    ◆ m_validation_list

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__j2k__dec.html b/build/doc/html/structopj__j2k__dec.html deleted file mode 100644 index 1dbe68514..000000000 --- a/build/doc/html/structopj__j2k__dec.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - - -OpenJPEG: opj_j2k_dec Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_j2k_dec Struct Reference
    -
    -
    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_state
     locate in which part of the codestream the decoder is (main header, tile header, end) More...
     
    opj_tcp_tm_default_tcp
     store decoding parameters common to all tiles (information like COD, COC in main header) More...
     
    OPJ_BYTEm_header_data
     
    OPJ_UINT32 m_header_data_size
     
    OPJ_UINT32 m_sot_length
     to tell the tile part length More...
     
    OPJ_UINT32 m_start_tile_x
     Only tiles index in the correct range will be decoded. More...
     
    OPJ_UINT32 m_start_tile_y
     
    OPJ_UINT32 m_end_tile_x
     
    OPJ_UINT32 m_end_tile_y
     
    OPJ_INT32 m_tile_ind_to_dec
     Index of the tile to decode (used in get_tile) More...
     
    OPJ_OFF_T m_last_sot_read_pos
     Position of the last SOT marker read. More...
     
    OPJ_BOOL m_last_tile_part
     Indicate that the current tile-part is assume as the last tile part of the codestream. More...
     
    OPJ_UINT32 m_numcomps_to_decode
     
    OPJ_UINT32m_comps_indices_to_decode
     
    OPJ_BITFIELD m_can_decode: 1
     to tell that a tile can be decoded. More...
     
    OPJ_BITFIELD m_discard_tiles: 1
     
    OPJ_BITFIELD m_skip_data: 1
     
    OPJ_BITFIELD m_nb_tile_parts_correction_checked: 1
     TNsot correction : see issue 254. More...
     
    OPJ_BITFIELD m_nb_tile_parts_correction: 1
     
    -

    Field Documentation

    - -

    ◆ m_can_decode

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_j2k_dec::m_can_decode
    -
    - -

    to tell that a tile can be decoded.

    - -

    Referenced by opj_j2k_decode_tile(), opj_j2k_read_sot(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ m_comps_indices_to_decode

    - - - -

    ◆ m_default_tcp

    - - - -

    ◆ m_discard_tiles

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_j2k_dec::m_discard_tiles
    -
    - -

    Referenced by opj_j2k_read_siz(), and opj_j2k_set_decode_area().

    - -
    -
    - -

    ◆ m_end_tile_x

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_end_tile_x
    -
    -
    - -

    ◆ m_end_tile_y

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_end_tile_y
    -
    -
    - -

    ◆ m_header_data

    - - - -

    ◆ m_header_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_header_data_size
    -
    -
    - -

    ◆ m_last_sot_read_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_j2k_dec::m_last_sot_read_pos
    -
    - -

    Position of the last SOT marker read.

    - -

    Referenced by opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ m_last_tile_part

    - -
    -
    - - - - -
    OPJ_BOOL opj_j2k_dec::m_last_tile_part
    -
    - -

    Indicate that the current tile-part is assume as the last tile part of the codestream.

    -

    It is useful in the case of PSot is equal to zero. The sot length will be compute in the SOD reader function. FIXME NOT USED for the moment

    - -

    Referenced by opj_j2k_read_sod(), and opj_j2k_read_sot().

    - -
    -
    - -

    ◆ m_nb_tile_parts_correction

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_j2k_dec::m_nb_tile_parts_correction
    -
    -
    - -

    ◆ m_nb_tile_parts_correction_checked

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_j2k_dec::m_nb_tile_parts_correction_checked
    -
    - -

    TNsot correction : see issue 254.

    - -

    Referenced by opj_j2k_create_decompress(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ m_numcomps_to_decode

    - - - -

    ◆ m_skip_data

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_j2k_dec::m_skip_data
    -
    -
    - -

    ◆ m_sot_length

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_sot_length
    -
    - -

    to tell the tile part length

    - -

    Referenced by opj_j2k_read_sod(), opj_j2k_read_sot(), and opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ m_start_tile_x

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_start_tile_x
    -
    - -

    Only tiles index in the correct range will be decoded.

    - -

    Referenced by opj_j2k_read_siz(), opj_j2k_read_sot(), and opj_j2k_set_decode_area().

    - -
    -
    - -

    ◆ m_start_tile_y

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_dec::m_start_tile_y
    -
    -
    - -

    ◆ m_state

    - - - -

    ◆ m_tile_ind_to_dec

    - -
    -
    - - - - -
    OPJ_INT32 opj_j2k_dec::m_tile_ind_to_dec
    -
    - -

    Index of the tile to decode (used in get_tile)

    - -

    Referenced by opj_j2k_create_decompress(), opj_j2k_decode_one_tile(), opj_j2k_get_tile(), and opj_j2k_read_sot().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__j2k__enc.html b/build/doc/html/structopj__j2k__enc.html deleted file mode 100644 index c88291e95..000000000 --- a/build/doc/html/structopj__j2k__enc.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - -OpenJPEG: opj_j2k_enc Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_j2k_enc Struct Reference
    -
    -
    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_current_poc_tile_part_number
     Tile part number, regardless of poc, for each new poc, tp is reset to 1. More...
     
    OPJ_UINT32 m_current_tile_part_number
     Tile part number currently coding, taking into account POC. More...
     
    OPJ_OFF_T m_tlm_start
     locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is done to the TLM marker to store the value of its length. More...
     
    OPJ_BYTEm_tlm_sot_offsets_buffer
     Stores the sizes of the tlm. More...
     
    OPJ_BYTEm_tlm_sot_offsets_current
     The current offset of the tlm buffer. More...
     
    OPJ_UINT32 m_total_tile_parts
     Total num of tile parts in whole image = num tiles* num tileparts in each tile. More...
     
    OPJ_BYTEm_encoded_tile_data
     
    OPJ_UINT32 m_encoded_tile_size
     
    OPJ_BYTEm_header_tile_data
     
    OPJ_UINT32 m_header_tile_data_size
     
    OPJ_BOOL m_PLT
     
    OPJ_UINT32 m_reserved_bytes_for_PLT
     
    -

    Field Documentation

    - -

    ◆ m_current_poc_tile_part_number

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_enc::m_current_poc_tile_part_number
    -
    - -

    Tile part number, regardless of poc, for each new poc, tp is reset to 1.

    - -

    Referenced by opj_j2k_pre_write_tile(), opj_j2k_write_all_tile_parts(), opj_j2k_write_first_tile_part(), and opj_j2k_write_sod().

    - -
    -
    - -

    ◆ m_current_tile_part_number

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_enc::m_current_tile_part_number
    -
    - -

    Tile part number currently coding, taking into account POC.

    -

    m_current_tile_part_number holds the total number of tile parts while encoding the last tile part.

    - -

    Referenced by opj_j2k_pre_write_tile(), opj_j2k_write_all_tile_parts(), opj_j2k_write_sod(), and opj_j2k_write_sot().

    - -
    -
    - -

    ◆ m_encoded_tile_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_j2k_enc::m_encoded_tile_data
    -
    -
    - -

    ◆ m_encoded_tile_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_enc::m_encoded_tile_size
    -
    -
    - -

    ◆ m_header_tile_data

    - - - -

    ◆ m_header_tile_data_size

    - - - -

    ◆ m_PLT

    - -
    -
    - - - - -
    OPJ_BOOL opj_j2k_enc::m_PLT
    -
    -
    - -

    ◆ m_reserved_bytes_for_PLT

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_enc::m_reserved_bytes_for_PLT
    -
    -
    - -

    ◆ m_tlm_sot_offsets_buffer

    - -
    -
    - - - - -
    OPJ_BYTE* opj_j2k_enc::m_tlm_sot_offsets_buffer
    -
    - -

    Stores the sizes of the tlm.

    - -

    Referenced by opj_j2k_destroy(), opj_j2k_end_encoding(), opj_j2k_update_rates(), and opj_j2k_write_updated_tlm().

    - -
    -
    - -

    ◆ m_tlm_sot_offsets_current

    - -
    -
    - - - - -
    OPJ_BYTE* opj_j2k_enc::m_tlm_sot_offsets_current
    -
    - -

    The current offset of the tlm buffer.

    - -

    Referenced by opj_j2k_destroy(), opj_j2k_end_encoding(), opj_j2k_update_rates(), and opj_j2k_update_tlm().

    - -
    -
    - -

    ◆ m_tlm_start

    - -
    -
    - - - - -
    OPJ_OFF_T opj_j2k_enc::m_tlm_start
    -
    - -

    locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) is done to the TLM marker to store the value of its length.

    - -

    Referenced by opj_j2k_write_tlm(), and opj_j2k_write_updated_tlm().

    - -
    -
    - -

    ◆ m_total_tile_parts

    - -
    -
    - - - - -
    OPJ_UINT32 opj_j2k_enc::m_total_tile_parts
    -
    - -

    Total num of tile parts in whole image = num tiles* num tileparts in each tile.

    -

    used in TLMmarker

    - -

    Referenced by opj_j2k_init_info(), opj_j2k_update_rates(), opj_j2k_write_tlm(), and opj_j2k_write_updated_tlm().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__job__list__t.html b/build/doc/html/structopj__job__list__t.html deleted file mode 100644 index 622c6f68f..000000000 --- a/build/doc/html/structopj__job__list__t.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: opj_job_list_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_job_list_t Struct Reference
    -
    -
    - - - - - - -

    -Data Fields

    opj_worker_thread_job_tjob
     
    struct opj_job_list_tnext
     
    -

    Field Documentation

    - -

    ◆ job

    - -
    -
    - - - - -
    opj_worker_thread_job_t* opj_job_list_t::job
    -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct opj_job_list_t* opj_job_list_t::next
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2.html b/build/doc/html/structopj__jp2.html deleted file mode 100644 index 8a6189091..000000000 --- a/build/doc/html/structopj__jp2.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2 Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2 Struct Reference
    -
    -
    - -

    JPEG-2000 file format reader/writer. - More...

    - -

    #include <jp2.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    opj_j2k_tj2k
     handle to the J2K codec
    - More...
     
    struct opj_procedure_listm_validation_list
     list of validation procedures More...
     
    struct opj_procedure_listm_procedure_list
     list of execution procedures More...
     
    OPJ_UINT32 w
     
    OPJ_UINT32 h
     
    OPJ_UINT32 numcomps
     
    OPJ_UINT32 bpc
     
    OPJ_UINT32 C
     
    OPJ_UINT32 UnkC
     
    OPJ_UINT32 IPR
     
    OPJ_UINT32 meth
     
    OPJ_UINT32 approx
     
    OPJ_UINT32 enumcs
     
    OPJ_UINT32 precedence
     
    OPJ_UINT32 brand
     
    OPJ_UINT32 minversion
     
    OPJ_UINT32 numcl
     
    OPJ_UINT32cl
     
    opj_jp2_comps_tcomps
     
    OPJ_OFF_T j2k_codestream_offset
     
    OPJ_OFF_T jpip_iptr_offset
     
    OPJ_BOOL jpip_on
     
    OPJ_UINT32 jp2_state
     
    OPJ_UINT32 jp2_img_state
     
    opj_jp2_color_t color
     
    OPJ_BOOL ignore_pclr_cmap_cdef
     
    OPJ_BYTE has_jp2h
     
    OPJ_BYTE has_ihdr
     
    -

    Detailed Description

    -

    JPEG-2000 file format reader/writer.

    -

    Field Documentation

    - -

    ◆ approx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::approx
    -
    -
    - -

    ◆ bpc

    - - - -

    ◆ brand

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::brand
    -
    -
    - -

    ◆ C

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::C
    -
    -
    - -

    ◆ cl

    - -
    -
    - - - - -
    OPJ_UINT32* opj_jp2::cl
    -
    -
    - -

    ◆ color

    - - - -

    ◆ comps

    - - - -

    ◆ enumcs

    - - - -

    ◆ h

    - - - -

    ◆ has_ihdr

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2::has_ihdr
    -
    - -

    Referenced by opj_jp2_read_header(), and opj_jp2_read_ihdr().

    - -
    -
    - -

    ◆ has_jp2h

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2::has_jp2h
    -
    - -

    Referenced by opj_jp2_read_header(), and opj_jp2_read_jp2h().

    - -
    -
    - -

    ◆ ignore_pclr_cmap_cdef

    - -
    -
    - - - - -
    OPJ_BOOL opj_jp2::ignore_pclr_cmap_cdef
    -
    - -

    Referenced by opj_jp2_decode(), and opj_jp2_setup_decoder().

    - -
    -
    - -

    ◆ IPR

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::IPR
    -
    -
    - -

    ◆ j2k

    - - - -

    ◆ j2k_codestream_offset

    - -
    -
    - - - - -
    OPJ_OFF_T opj_jp2::j2k_codestream_offset
    -
    - -

    Referenced by opj_jp2_skip_jp2c(), and opj_jp2_write_jp2c().

    - -
    -
    - -

    ◆ jp2_img_state

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::jp2_img_state
    -
    -
    - -

    ◆ jp2_state

    - - - -

    ◆ jpip_iptr_offset

    - -
    -
    - - - - -
    OPJ_OFF_T opj_jp2::jpip_iptr_offset
    -
    - -

    Referenced by opj_jpip_skip_iptr().

    - -
    -
    - -

    ◆ jpip_on

    - -
    -
    - - - - -
    OPJ_BOOL opj_jp2::jpip_on
    -
    -
    - -

    ◆ m_procedure_list

    - - - -

    ◆ m_validation_list

    - -
    -
    - - - - -
    struct opj_procedure_list* opj_jp2::m_validation_list
    -
    -
    - -

    ◆ meth

    - - - -

    ◆ minversion

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::minversion
    -
    -
    - -

    ◆ numcl

    - - - -

    ◆ numcomps

    - - - -

    ◆ precedence

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::precedence
    -
    -
    - -

    ◆ UnkC

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2::UnkC
    -
    -
    - -

    ◆ w

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__box.html b/build/doc/html/structopj__jp2__box.html deleted file mode 100644 index 10e8237cb..000000000 --- a/build/doc/html/structopj__jp2__box.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_box Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_box Struct Reference
    -
    -
    - -

    JP2 Box. - More...

    - -

    #include <jp2.h>

    - - - - - - - - -

    -Data Fields

    OPJ_UINT32 length
     
    OPJ_UINT32 type
     
    OPJ_INT32 init_pos
     
    -

    Detailed Description

    -

    JP2 Box.

    -

    Field Documentation

    - -

    ◆ init_pos

    - -
    -
    - - - - -
    OPJ_INT32 opj_jp2_box::init_pos
    -
    - -
    -
    - -

    ◆ length

    - - - -

    ◆ type

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__cdef.html b/build/doc/html/structopj__jp2__cdef.html deleted file mode 100644 index c3421c8bb..000000000 --- a/build/doc/html/structopj__jp2__cdef.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_cdef Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_cdef Struct Reference
    -
    -
    - -

    Channel descriptions and number of descriptions. - More...

    - -

    #include <jp2.h>

    - - - - - - -

    -Data Fields

    opj_jp2_cdef_info_tinfo
     
    OPJ_UINT16 n
     
    -

    Detailed Description

    -

    Channel descriptions and number of descriptions.

    -

    Field Documentation

    - -

    ◆ info

    - - - -

    ◆ n

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__cdef__info.html b/build/doc/html/structopj__jp2__cdef__info.html deleted file mode 100644 index 88ac36984..000000000 --- a/build/doc/html/structopj__jp2__cdef__info.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_cdef_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_cdef_info Struct Reference
    -
    -
    - -

    Channel description: channel index, type, association. - More...

    - -

    #include <jp2.h>

    - - - - - - - - -

    -Data Fields

    OPJ_UINT16 cn
     
    OPJ_UINT16 typ
     
    OPJ_UINT16 asoc
     
    -

    Detailed Description

    -

    Channel description: channel index, type, association.

    -

    Field Documentation

    - -

    ◆ asoc

    - -
    -
    - - - - -
    OPJ_UINT16 opj_jp2_cdef_info::asoc
    -
    -
    - -

    ◆ cn

    - -
    -
    - - - - -
    OPJ_UINT16 opj_jp2_cdef_info::cn
    -
    -
    - -

    ◆ typ

    - -
    -
    - - - - -
    OPJ_UINT16 opj_jp2_cdef_info::typ
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__cmap__comp.html b/build/doc/html/structopj__jp2__cmap__comp.html deleted file mode 100644 index a67a6f83e..000000000 --- a/build/doc/html/structopj__jp2__cmap__comp.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_cmap_comp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_cmap_comp Struct Reference
    -
    -
    - -

    Component mappings: channel index, mapping type, palette index. - More...

    - -

    #include <jp2.h>

    - - - - - - - - -

    -Data Fields

    OPJ_UINT16 cmp
     
    OPJ_BYTE mtyp
     
    OPJ_BYTE pcol
     
    -

    Detailed Description

    -

    Component mappings: channel index, mapping type, palette index.

    -

    Field Documentation

    - -

    ◆ cmp

    - -
    -
    - - - - -
    OPJ_UINT16 opj_jp2_cmap_comp::cmp
    -
    - -

    Referenced by opj_jp2_apply_pclr(), and opj_jp2_read_cmap().

    - -
    -
    - -

    ◆ mtyp

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2_cmap_comp::mtyp
    -
    - -

    Referenced by opj_jp2_check_color(), and opj_jp2_read_cmap().

    - -
    -
    - -

    ◆ pcol

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2_cmap_comp::pcol
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__color.html b/build/doc/html/structopj__jp2__color.html deleted file mode 100644 index 32fb15c10..000000000 --- a/build/doc/html/structopj__jp2__color.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_color Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_color Struct Reference
    -
    -
    - -

    Collector for ICC profile, palette, component mapping, channel description. - More...

    - -

    #include <jp2.h>

    - - - - - - - - - - - - -

    -Data Fields

    OPJ_BYTEicc_profile_buf
     
    OPJ_UINT32 icc_profile_len
     
    opj_jp2_cdef_tjp2_cdef
     
    opj_jp2_pclr_tjp2_pclr
     
    OPJ_BYTE jp2_has_colr
     
    -

    Detailed Description

    -

    Collector for ICC profile, palette, component mapping, channel description.

    -

    Field Documentation

    - -

    ◆ icc_profile_buf

    - -
    -
    - - - - -
    OPJ_BYTE* opj_jp2_color::icc_profile_buf
    -
    -
    - -

    ◆ icc_profile_len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_color::icc_profile_len
    -
    -
    - -

    ◆ jp2_cdef

    - - - -

    ◆ jp2_has_colr

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2_color::jp2_has_colr
    -
    -
    - -

    ◆ jp2_pclr

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__comps.html b/build/doc/html/structopj__jp2__comps.html deleted file mode 100644 index 900374c4e..000000000 --- a/build/doc/html/structopj__jp2__comps.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_comps Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_comps Struct Reference
    -
    -
    - -

    JP2 component. - More...

    - -

    #include <jp2.h>

    - - - - - - - - -

    -Data Fields

    OPJ_UINT32 depth
     
    OPJ_UINT32 sgnd
     
    OPJ_UINT32 bpcc
     
    -

    Detailed Description

    -

    JP2 component.

    -

    Field Documentation

    - -

    ◆ bpcc

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_comps::bpcc
    -
    -
    - -

    ◆ depth

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_comps::depth
    -
    - -
    -
    - -

    ◆ sgnd

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_comps::sgnd
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__header__handler.html b/build/doc/html/structopj__jp2__header__handler.html deleted file mode 100644 index a09f99e22..000000000 --- a/build/doc/html/structopj__jp2__header__handler.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_header_handler Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_header_handler Struct Reference
    -
    -
    - -

    #include <jp2.h>

    - - - - - - -

    -Data Fields

    OPJ_UINT32 id
     
    OPJ_BOOL(* handler )(opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
     
    -

    Field Documentation

    - -

    ◆ handler

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_jp2_header_handler::handler) (opj_jp2_t *jp2, OPJ_BYTE *p_header_data, OPJ_UINT32 p_header_size, opj_event_mgr_t *p_manager)
    -
    -
    - -

    ◆ id

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_header_handler::id
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__img__header__writer__handler.html b/build/doc/html/structopj__jp2__img__header__writer__handler.html deleted file mode 100644 index c9d991413..000000000 --- a/build/doc/html/structopj__jp2__img__header__writer__handler.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_img_header_writer_handler Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_img_header_writer_handler Struct Reference
    -
    -
    - -

    #include <jp2.h>

    - - - - - - - - -

    -Data Fields

    OPJ_BYTE *(* handler )(opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
     
    OPJ_BYTEm_data
     
    OPJ_UINT32 m_size
     
    -

    Field Documentation

    - -

    ◆ handler

    - -
    -
    - - - - -
    OPJ_BYTE*(* opj_jp2_img_header_writer_handler::handler) (opj_jp2_t *jp2, OPJ_UINT32 *p_data_size)
    -
    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ m_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_jp2_img_header_writer_handler::m_data
    -
    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    - -

    ◆ m_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_jp2_img_header_writer_handler::m_size
    -
    - -

    Referenced by opj_jp2_write_jp2h().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__index.html b/build/doc/html/structopj__jp2__index.html deleted file mode 100644 index 206c683bb..000000000 --- a/build/doc/html/structopj__jp2__index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_index Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_index Struct Reference
    -
    -
    - -

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. - More...

    - -

    #include <openjpeg.h>

    - - - - -

    -Data Fields

    OPJ_INT32 not_used
     
    -

    Detailed Description

    -

    Index structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    -

    Field Documentation

    - -

    ◆ not_used

    - -
    -
    - - - - -
    OPJ_INT32 opj_jp2_index::not_used
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__metadata.html b/build/doc/html/structopj__jp2__metadata.html deleted file mode 100644 index c084781da..000000000 --- a/build/doc/html/structopj__jp2__metadata.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_metadata Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_metadata Struct Reference
    -
    -
    - -

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT. - More...

    - -

    #include <openjpeg.h>

    - - - - -

    -Data Fields

    OPJ_INT32 not_used
     
    -

    Detailed Description

    -

    Info structure of the JP2 file EXPERIMENTAL FOR THE MOMENT.

    -

    Field Documentation

    - -

    ◆ not_used

    - -
    -
    - - - - -
    OPJ_INT32 opj_jp2_metadata::not_used
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__jp2__pclr.html b/build/doc/html/structopj__jp2__pclr.html deleted file mode 100644 index fdcc053d5..000000000 --- a/build/doc/html/structopj__jp2__pclr.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -OpenJPEG: opj_jp2_pclr Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_jp2_pclr Struct Reference
    -
    -
    - -

    Palette data: table entries, palette columns. - More...

    - -

    #include <jp2.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32entries
     
    OPJ_BYTEchannel_sign
     
    OPJ_BYTEchannel_size
     
    opj_jp2_cmap_comp_tcmap
     
    OPJ_UINT16 nr_entries
     
    OPJ_BYTE nr_channels
     
    -

    Detailed Description

    -

    Palette data: table entries, palette columns.

    -

    Field Documentation

    - -

    ◆ channel_sign

    - -
    -
    - - - - -
    OPJ_BYTE* opj_jp2_pclr::channel_sign
    -
    -
    - -

    ◆ channel_size

    - -
    -
    - - - - -
    OPJ_BYTE* opj_jp2_pclr::channel_size
    -
    -
    - -

    ◆ cmap

    - - - -

    ◆ entries

    - -
    -
    - - - - -
    OPJ_UINT32* opj_jp2_pclr::entries
    -
    -
    - -

    ◆ nr_channels

    - -
    -
    - - - - -
    OPJ_BYTE opj_jp2_pclr::nr_channels
    -
    -
    - -

    ◆ nr_entries

    - -
    -
    - - - - -
    OPJ_UINT16 opj_jp2_pclr::nr_entries
    -
    - -

    Referenced by opj_jp2_apply_pclr(), and opj_jp2_read_pclr().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__marker__info.html b/build/doc/html/structopj__marker__info.html deleted file mode 100644 index de10e6fa4..000000000 --- a/build/doc/html/structopj__marker__info.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: opj_marker_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_marker_info Struct Reference
    -
    -
    - -

    Marker structure. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - -

    -Data Fields

    unsigned short int type
     marker type More...
     
    OPJ_OFF_T pos
     position in codestream More...
     
    int len
     length, marker val included More...
     
    -

    Detailed Description

    -

    Marker structure.

    -

    Field Documentation

    - -

    ◆ len

    - -
    -
    - - - - -
    int opj_marker_info::len
    -
    - -

    length, marker val included

    - -

    Referenced by opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_dump_MH_index(), and opj_write_mainmhix().

    - -
    -
    - -

    ◆ pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_marker_info::pos
    -
    - -

    position in codestream

    - -

    Referenced by opj_j2k_add_mhmarker(), opj_j2k_add_tlmarker(), opj_j2k_dump_MH_index(), and opj_write_mainmhix().

    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    unsigned short int opj_marker_info::type
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__mct__data.html b/build/doc/html/structopj__mct__data.html deleted file mode 100644 index 00e944949..000000000 --- a/build/doc/html/structopj__mct__data.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -OpenJPEG: opj_mct_data Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_mct_data Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - -

    -Data Fields

    J2K_MCT_ELEMENT_TYPE m_element_type
     
    J2K_MCT_ARRAY_TYPE m_array_type
     
    OPJ_UINT32 m_index
     
    OPJ_BYTEm_data
     
    OPJ_UINT32 m_data_size
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ m_array_type

    - -
    -
    - - - - -
    J2K_MCT_ARRAY_TYPE opj_mct_data::m_array_type
    -
    -
    - -

    ◆ m_data

    - - - -

    ◆ m_data_size

    - - - -

    ◆ m_element_type

    - -
    -
    - - - - -
    J2K_MCT_ELEMENT_TYPE opj_mct_data::m_element_type
    -
    -
    - -

    ◆ m_index

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__mqc.html b/build/doc/html/structopj__mqc.html deleted file mode 100644 index f021b89f7..000000000 --- a/build/doc/html/structopj__mqc.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - -OpenJPEG: opj_mqc Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_mqc Struct Reference
    -
    -
    - -

    MQ coder. - More...

    - -

    #include <mqc.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 c
     temporary buffer where bits are coded or decoded More...
     
    OPJ_UINT32 a
     only used by MQ decoder More...
     
    OPJ_UINT32 ct
     number of bits already read or free to write More...
     
    OPJ_UINT32 end_of_byte_stream_counter
     
    OPJ_BYTEbp
     pointer to the current position in the buffer More...
     
    OPJ_BYTEstart
     pointer to the start of the buffer More...
     
    OPJ_BYTEend
     pointer to the end of the buffer More...
     
    const opj_mqc_state_tctxs [MQC_NUMCTXS]
     Array of contexts. More...
     
    const opj_mqc_state_t ** curctx
     Active context. More...
     
    const OPJ_BYTElut_ctxno_zc_orient
     
    OPJ_BYTE backup [OPJ_COMMON_CBLK_DATA_EXTRA]
     Original value of the 2 bytes at end[0] and end[1]. More...
     
    -

    Detailed Description

    -

    MQ coder.

    -

    Field Documentation

    - -

    ◆ a

    - - - -

    ◆ backup

    - -
    -
    - - - - -
    OPJ_BYTE opj_mqc::backup[OPJ_COMMON_CBLK_DATA_EXTRA]
    -
    - -

    Original value of the 2 bytes at end[0] and end[1].

    - -

    Referenced by opj_mqc_init_dec_common(), and opq_mqc_finish_dec().

    - -
    -
    - -

    ◆ bp

    - - - -

    ◆ c

    - - - -

    ◆ ct

    - - - -

    ◆ ctxs

    - -
    -
    - - - - -
    const opj_mqc_state_t* opj_mqc::ctxs[MQC_NUMCTXS]
    -
    - -

    Array of contexts.

    - -

    Referenced by opj_mqc_resetstates(), and opj_mqc_setstate().

    - -
    -
    - -

    ◆ curctx

    - - - -

    ◆ end

    - -
    -
    - - - - -
    OPJ_BYTE* opj_mqc::end
    -
    - -

    pointer to the end of the buffer

    - -

    Referenced by opj_mqc_init_dec_common(), opj_t1_decode_cblk(), and opq_mqc_finish_dec().

    - -
    -
    - -

    ◆ end_of_byte_stream_counter

    - -
    -
    - - - - -
    OPJ_UINT32 opj_mqc::end_of_byte_stream_counter
    -
    -
    - -

    ◆ lut_ctxno_zc_orient

    - -
    -
    - - - - -
    const OPJ_BYTE* opj_mqc::lut_ctxno_zc_orient
    -
    -
    - -

    ◆ start

    - -
    -
    - - - - -
    OPJ_BYTE* opj_mqc::start
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__mqc__state.html b/build/doc/html/structopj__mqc__state.html deleted file mode 100644 index 1c291fe51..000000000 --- a/build/doc/html/structopj__mqc__state.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -OpenJPEG: opj_mqc_state Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_mqc_state Struct Reference
    -
    -
    - -

    This struct defines the state of a context. - More...

    - -

    #include <mqc.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 qeval
     the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) More...
     
    OPJ_UINT32 mps
     the Most Probable Symbol (0 or 1) More...
     
    const struct opj_mqc_statenmps
     next state if the next encoded symbol is the MPS More...
     
    const struct opj_mqc_statenlps
     next state if the next encoded symbol is the LPS More...
     
    -

    Detailed Description

    -

    This struct defines the state of a context.

    -

    Field Documentation

    - -

    ◆ mps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_mqc_state::mps
    -
    - -

    the Most Probable Symbol (0 or 1)

    - -
    -
    - -

    ◆ nlps

    - -
    -
    - - - - -
    const struct opj_mqc_state* opj_mqc_state::nlps
    -
    - -

    next state if the next encoded symbol is the LPS

    - -
    -
    - -

    ◆ nmps

    - -
    -
    - - - - -
    const struct opj_mqc_state* opj_mqc_state::nmps
    -
    - -

    next state if the next encoded symbol is the MPS

    - -
    -
    - -

    ◆ qeval

    - -
    -
    - - - - -
    OPJ_UINT32 opj_mqc_state::qeval
    -
    - -

    the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff)

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__packet__info.html b/build/doc/html/structopj__packet__info.html deleted file mode 100644 index f58bfc337..000000000 --- a/build/doc/html/structopj__packet__info.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: opj_packet_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_packet_info Struct Reference
    -
    -
    - -

    Index structure : Information concerning a packet inside tile. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_OFF_T start_pos
     packet start position (including SOP marker if it exists) More...
     
    OPJ_OFF_T end_ph_pos
     end of packet header position (including EPH marker if it exists) More...
     
    OPJ_OFF_T end_pos
     packet end position More...
     
    double disto
     packet distorsion More...
     
    -

    Detailed Description

    -

    Index structure : Information concerning a packet inside tile.

    -

    Field Documentation

    - -

    ◆ disto

    - -
    -
    - - - - -
    double opj_packet_info::disto
    -
    - -

    packet distorsion

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ end_ph_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_packet_info::end_ph_pos
    -
    - -

    end of packet header position (including EPH marker if it exists)

    - -

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packet(), opj_t2_encode_packets(), opj_t2_read_packet_header(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ end_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_packet_info::end_pos
    -
    - -

    packet end position

    - -

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packets(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ start_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_packet_info::start_pos
    -
    - -

    packet start position (including SOP marker if it exists)

    - -

    Referenced by opj_t2_decode_packets(), opj_t2_encode_packets(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__pi__comp.html b/build/doc/html/structopj__pi__comp.html deleted file mode 100644 index 02379fe67..000000000 --- a/build/doc/html/structopj__pi__comp.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -OpenJPEG: opj_pi_comp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_pi_comp Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <pi.h>

    - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 dx
     
    OPJ_UINT32 dy
     
    OPJ_UINT32 numresolutions
     number of resolution levels More...
     
    opj_pi_resolution_tresolutions
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ dx

    - - - -

    ◆ dy

    - - - -

    ◆ numresolutions

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_comp::numresolutions
    -
    -
    - -

    ◆ resolutions

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__pi__iterator.html b/build/doc/html/structopj__pi__iterator.html deleted file mode 100644 index 38a4e6d14..000000000 --- a/build/doc/html/structopj__pi__iterator.html +++ /dev/null @@ -1,539 +0,0 @@ - - - - - - - -OpenJPEG: opj_pi_iterator Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_pi_iterator Struct Reference
    -
    -
    - -

    Packet iterator. - More...

    - -

    #include <pi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BYTE tp_on
     Enabling Tile part generation. More...
     
    OPJ_INT16include
     precise if the packet has been already used (useful for progression order change) More...
     
    OPJ_UINT32 include_size
     Number of elements in include array. More...
     
    OPJ_UINT32 step_l
     layer step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_r
     resolution step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_c
     component step used to localize the packet in the include vector More...
     
    OPJ_UINT32 step_p
     precinct step used to localize the packet in the include vector More...
     
    OPJ_UINT32 compno
     component that identify the packet More...
     
    OPJ_UINT32 resno
     resolution that identify the packet More...
     
    OPJ_UINT32 precno
     precinct that identify the packet More...
     
    OPJ_UINT32 layno
     layer that identify the packet More...
     
    OPJ_BOOL first
     0 if the first packet More...
     
    opj_poc_t poc
     progression order change information More...
     
    OPJ_UINT32 numcomps
     number of components in the image More...
     
    opj_pi_comp_tcomps
     Components. More...
     
    OPJ_UINT32 tx0
     FIXME DOC. More...
     
    OPJ_UINT32 ty0
     
    OPJ_UINT32 tx1
     
    OPJ_UINT32 ty1
     
    OPJ_UINT32 x
     FIXME DOC. More...
     
    OPJ_UINT32 y
     
    OPJ_UINT32 dx
     FIXME DOC. More...
     
    OPJ_UINT32 dy
     
    -

    Detailed Description

    -

    Packet iterator.

    -

    Field Documentation

    - -

    ◆ compno

    - - - -

    ◆ comps

    - - - -

    ◆ dx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::dx
    -
    -
    - -

    ◆ dy

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::dy
    -
    -
    - -

    ◆ first

    - - - -

    ◆ include

    - -
    -
    - - - - -
    OPJ_INT16* opj_pi_iterator::include
    -
    - -

    precise if the packet has been already used (useful for progression order change)

    - -

    Referenced by opj_pi_create_decode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ include_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::include_size
    -
    -
    - -

    ◆ layno

    - - - -

    ◆ numcomps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::numcomps
    -
    - -

    number of components in the image

    - -

    Referenced by opj_pi_create(), opj_pi_destroy(), opj_pi_next_pcrl(), opj_pi_next_rpcl(), and opj_pi_update_decode_not_poc().

    - -
    -
    - -

    ◆ poc

    - - - -

    ◆ precno

    - - - -

    ◆ resno

    - - - -

    ◆ step_c

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::step_c
    -
    - -

    component step used to localize the packet in the include vector

    - -

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ step_l

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::step_l
    -
    - -

    layer step used to localize the packet in the include vector

    - -

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ step_p

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::step_p
    -
    - -

    precinct step used to localize the packet in the include vector

    - -

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ step_r

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::step_r
    -
    - -

    resolution step used to localize the packet in the include vector

    - -

    Referenced by opj_pi_create_decode(), opj_pi_initialise_encode(), opj_pi_next_cprl(), opj_pi_next_lrcp(), opj_pi_next_pcrl(), opj_pi_next_rlcp(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ tp_on

    - -
    -
    - - - - -
    OPJ_BYTE opj_pi_iterator::tp_on
    -
    -
    - -

    ◆ tx0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::tx0
    -
    -
    - -

    ◆ tx1

    - - - -

    ◆ ty0

    - - - -

    ◆ ty1

    - - - -

    ◆ x

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::x
    -
    - -

    FIXME DOC.

    - -

    Referenced by opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ y

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_iterator::y
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__pi__resolution.html b/build/doc/html/structopj__pi__resolution.html deleted file mode 100644 index 32001e844..000000000 --- a/build/doc/html/structopj__pi__resolution.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: opj_pi_resolution Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_pi_resolution Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <pi.h>

    - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 pdx
     
    OPJ_UINT32 pdy
     
    OPJ_UINT32 pw
     
    OPJ_UINT32 ph
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ pdx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_resolution::pdx
    -
    -
    - -

    ◆ pdy

    - -
    -
    - - - - -
    OPJ_UINT32 opj_pi_resolution::pdy
    -
    -
    - -

    ◆ ph

    - - - -

    ◆ pw

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__poc.html b/build/doc/html/structopj__poc.html deleted file mode 100644 index df6d83ec2..000000000 --- a/build/doc/html/structopj__poc.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - -OpenJPEG: opj_poc Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_poc Struct Reference
    -
    -
    - -

    Progression order changes. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 resno0
     Resolution num start, Component num start, given by POC. More...
     
    OPJ_UINT32 compno0
     
    OPJ_UINT32 layno1
     Layer num end,Resolution num end, Component num end, given by POC. More...
     
    OPJ_UINT32 resno1
     
    OPJ_UINT32 compno1
     
    OPJ_UINT32 layno0
     Layer num start,Precinct num start, Precinct num end. More...
     
    OPJ_UINT32 precno0
     
    OPJ_UINT32 precno1
     
    OPJ_PROG_ORDER prg1
     Progression order enum. More...
     
    OPJ_PROG_ORDER prg
     
    OPJ_CHAR progorder [5]
     Progression order string. More...
     
    OPJ_UINT32 tile
     Tile number (starting at 1) More...
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx0
     Start and end values for Tile width and height. More...
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 tx1
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty0
     
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 ty1
     
    OPJ_UINT32 layS
     Start value, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 resS
     
    OPJ_UINT32 compS
     
    OPJ_UINT32 prcS
     
    OPJ_UINT32 layE
     End value, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 resE
     
    OPJ_UINT32 compE
     
    OPJ_UINT32 prcE
     
    OPJ_UINT32 txS
     Start and end values of Tile width and height, initialised in pi_initialise_encode. More...
     
    OPJ_UINT32 txE
     
    OPJ_UINT32 tyS
     
    OPJ_UINT32 tyE
     
    OPJ_UINT32 dx
     
    OPJ_UINT32 dy
     
    OPJ_UINT32 lay_t
     Temporary values for Tile parts, initialised in pi_create_encode. More...
     
    OPJ_UINT32 res_t
     
    OPJ_UINT32 comp_t
     
    OPJ_UINT32 prc_t
     
    OPJ_UINT32 tx0_t
     
    OPJ_UINT32 ty0_t
     
    -

    Detailed Description

    -

    Progression order changes.

    -

    Field Documentation

    - -

    ◆ comp_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::comp_t
    -
    - -
    -
    - -

    ◆ compE

    - - - -

    ◆ compno0

    - - - -

    ◆ compno1

    - - - -

    ◆ compS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::compS
    -
    -
    - -

    ◆ dx

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::dx
    -
    -
    - -

    ◆ dy

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::dy
    -
    -
    - -

    ◆ lay_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::lay_t
    -
    - -

    Temporary values for Tile parts, initialised in pi_create_encode.

    - -
    -
    - -

    ◆ layE

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::layE
    -
    - -

    End value, initialised in pi_initialise_encode.

    - -

    Referenced by opj_j2k_get_num_tp(), opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    - -
    -
    - -

    ◆ layno0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::layno0
    -
    -
    - -

    ◆ layno1

    - - - -

    ◆ layS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::layS
    -
    - -

    Start value, initialised in pi_initialise_encode.

    - -

    Referenced by opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    - -
    -
    - -

    ◆ prc_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::prc_t
    -
    - -
    -
    - -

    ◆ prcE

    - - - -

    ◆ prcS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::prcS
    -
    -
    - -

    ◆ precno0

    - - - -

    ◆ precno1

    - - - -

    ◆ prg

    - - - -

    ◆ prg1

    - -
    -
    - - - - -
    OPJ_PROG_ORDER opj_poc::prg1
    -
    -
    - -

    ◆ progorder

    - -
    -
    - - - - -
    OPJ_CHAR opj_poc::progorder[5]
    -
    - -

    Progression order string.

    - -
    -
    - -

    ◆ res_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::res_t
    -
    - -
    -
    - -

    ◆ resE

    - - - -

    ◆ resno0

    - - - -

    ◆ resno1

    - - - -

    ◆ resS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::resS
    -
    -
    - -

    ◆ tile

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::tile
    -
    - -

    Tile number (starting at 1)

    - -

    Referenced by opj_j2k_check_poc_val(), opj_j2k_initialise_4K_poc(), and opj_j2k_setup_encoder().

    - -
    -
    - -

    ◆ tx0

    - -
    -
    - - - - -
    OPJ_UINT32_SEMANTICALLY_BUT_INT32 opj_poc::tx0
    -
    - -

    Start and end values for Tile width and height.

    - -

    Referenced by opj_pi_create_encode(), opj_pi_next_cprl(), opj_pi_next_pcrl(), and opj_pi_next_rpcl().

    - -
    -
    - -

    ◆ tx0_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::tx0_t
    -
    - -
    -
    - -

    ◆ tx1

    - - - -

    ◆ txE

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::txE
    -
    -
    - -

    ◆ txS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::txS
    -
    - -

    Start and end values of Tile width and height, initialised in pi_initialise_encode.

    - -

    Referenced by opj_pi_update_encode_not_poc(), and opj_pi_update_encode_poc_and_final().

    - -
    -
    - -

    ◆ ty0

    - - - -

    ◆ ty0_t

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::ty0_t
    -
    - -
    -
    - -

    ◆ ty1

    - - - -

    ◆ tyE

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::tyE
    -
    -
    - -

    ◆ tyS

    - -
    -
    - - - - -
    OPJ_UINT32 opj_poc::tyS
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__ppx__struct.html b/build/doc/html/structopj__ppx__struct.html deleted file mode 100644 index 204183f9e..000000000 --- a/build/doc/html/structopj__ppx__struct.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -OpenJPEG: opj_ppx_struct Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_ppx_struct Struct Reference
    -
    -
    - -

    #include <j2k.h>

    - - - - - - -

    -Data Fields

    OPJ_BYTEm_data
     
    OPJ_UINT32 m_data_size
     
    -

    Field Documentation

    - -

    ◆ m_data

    - - - -

    ◆ m_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_ppx_struct::m_data_size
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__procedure__list.html b/build/doc/html/structopj__procedure__list.html deleted file mode 100644 index ec347e4ea..000000000 --- a/build/doc/html/structopj__procedure__list.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: opj_procedure_list Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_procedure_list Struct Reference
    -
    -
    - -

    A list of procedures. - More...

    - -

    #include <function_list.h>

    - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_nb_procedures
     The number of validation procedures. More...
     
    OPJ_UINT32 m_nb_max_procedures
     The number of the array of validation procedures. More...
     
    opj_procedurem_procedures
     The array of procedures. More...
     
    -

    Detailed Description

    -

    A list of procedures.

    -

    Field Documentation

    - -

    ◆ m_nb_max_procedures

    - -
    -
    - - - - -
    OPJ_UINT32 opj_procedure_list::m_nb_max_procedures
    -
    - -

    The number of the array of validation procedures.

    - -

    Referenced by opj_procedure_list_add_procedure(), and opj_procedure_list_create().

    - -
    -
    - -

    ◆ m_nb_procedures

    - -
    -
    - - - - -
    OPJ_UINT32 opj_procedure_list::m_nb_procedures
    -
    - -

    The number of validation procedures.

    - -

    Referenced by opj_procedure_list_add_procedure(), opj_procedure_list_clear(), and opj_procedure_list_get_nb_procedures().

    - -
    -
    - -

    ◆ m_procedures

    - -
    -
    - - - - -
    opj_procedure* opj_procedure_list::m_procedures
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__simple__mcc__decorrelation__data.html b/build/doc/html/structopj__simple__mcc__decorrelation__data.html deleted file mode 100644 index c3f2d6a95..000000000 --- a/build/doc/html/structopj__simple__mcc__decorrelation__data.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -OpenJPEG: opj_simple_mcc_decorrelation_data Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_simple_mcc_decorrelation_data Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 m_index
     
    OPJ_UINT32 m_nb_comps
     
    opj_mct_data_tm_decorrelation_array
     
    opj_mct_data_tm_offset_array
     
    OPJ_BITFIELD m_is_irreversible: 1
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ m_decorrelation_array

    - -
    -
    - - - - -
    opj_mct_data_t* opj_simple_mcc_decorrelation_data::m_decorrelation_array
    -
    -
    - -

    ◆ m_index

    - -
    -
    - - - - -
    OPJ_UINT32 opj_simple_mcc_decorrelation_data::m_index
    -
    -
    - -

    ◆ m_is_irreversible

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_simple_mcc_decorrelation_data::m_is_irreversible
    -
    -
    - -

    ◆ m_nb_comps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_simple_mcc_decorrelation_data::m_nb_comps
    -
    -
    - -

    ◆ m_offset_array

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__sparse__array__int32.html b/build/doc/html/structopj__sparse__array__int32.html deleted file mode 100644 index 847a40c96..000000000 --- a/build/doc/html/structopj__sparse__array__int32.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - -OpenJPEG: opj_sparse_array_int32 Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_sparse_array_int32 Struct Reference
    -
    -
    - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 width
     
    OPJ_UINT32 height
     
    OPJ_UINT32 block_width
     
    OPJ_UINT32 block_height
     
    OPJ_UINT32 block_count_hor
     
    OPJ_UINT32 block_count_ver
     
    OPJ_INT32 ** data_blocks
     
    -

    Field Documentation

    - -

    ◆ block_count_hor

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::block_count_hor
    -
    -
    - -

    ◆ block_count_ver

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::block_count_ver
    -
    -
    - -

    ◆ block_height

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::block_height
    -
    -
    - -

    ◆ block_width

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::block_width
    -
    -
    - -

    ◆ data_blocks

    - -
    -
    - - - - -
    OPJ_INT32** opj_sparse_array_int32::data_blocks
    -
    -
    - -

    ◆ height

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::height
    -
    -
    - -

    ◆ width

    - -
    -
    - - - - -
    OPJ_UINT32 opj_sparse_array_int32::width
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__stepsize.html b/build/doc/html/structopj__stepsize.html deleted file mode 100644 index ec7d50feb..000000000 --- a/build/doc/html/structopj__stepsize.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: opj_stepsize Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_stepsize Struct Reference
    -
    -
    - -

    Quantization stepsize. - More...

    - -

    #include <j2k.h>

    - - - - - - - - -

    -Data Fields

    OPJ_INT32 expn
     exponent More...
     
    OPJ_INT32 mant
     mantissa More...
     
    -

    Detailed Description

    -

    Quantization stepsize.

    -

    Field Documentation

    - -

    ◆ expn

    - - - -

    ◆ mant

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__stream__private.html b/build/doc/html/structopj__stream__private.html deleted file mode 100644 index afc616bf2..000000000 --- a/build/doc/html/structopj__stream__private.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -OpenJPEG: opj_stream_private Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_stream_private Struct Reference
    -
    -
    - -

    Byte input-output stream. - More...

    - -

    #include <cio.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    void * m_user_data
     User data, be it files, ... More...
     
    opj_stream_free_user_data_fn m_free_user_data_fn
     Pointer to function to free m_user_data (NULL at initialization) when destroying the stream. More...
     
    OPJ_UINT64 m_user_data_length
     User data length. More...
     
    opj_stream_read_fn m_read_fn
     Pointer to actual read function (NULL at the initialization of the cio. More...
     
    opj_stream_write_fn m_write_fn
     Pointer to actual write function (NULL at the initialization of the cio. More...
     
    opj_stream_skip_fn m_skip_fn
     Pointer to actual skip function (NULL at the initialization of the cio. More...
     
    opj_stream_seek_fn m_seek_fn
     Pointer to actual seek function (if available). More...
     
    OPJ_BYTEm_stored_data
     Actual data stored into the stream if readed from. More...
     
    OPJ_BYTEm_current_data
     Pointer to the current read data. More...
     
    OPJ_OFF_T(* m_opj_skip )(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
     FIXME DOC. More...
     
    OPJ_BOOL(* m_opj_seek )(struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
     FIXME DOC. More...
     
    OPJ_SIZE_T m_bytes_in_buffer
     number of bytes containing in the buffer. More...
     
    OPJ_OFF_T m_byte_offset
     The number of bytes read/written from the beginning of the stream. More...
     
    OPJ_SIZE_T m_buffer_size
     The size of the buffer. More...
     
    OPJ_UINT32 m_status
     Flags to tell the status of the stream. More...
     
    -

    Detailed Description

    -

    Byte input-output stream.

    -

    Field Documentation

    - -

    ◆ m_buffer_size

    - -
    -
    - - - - -
    OPJ_SIZE_T opj_stream_private::m_buffer_size
    -
    - -

    The size of the buffer.

    - -

    Referenced by opj_stream_create(), opj_stream_read_data(), and opj_stream_write_data().

    - -
    -
    - -

    ◆ m_byte_offset

    - -
    -
    - - - - -
    OPJ_OFF_T opj_stream_private::m_byte_offset
    -
    -
    - -

    ◆ m_bytes_in_buffer

    - -
    -
    - - - - -
    OPJ_SIZE_T opj_stream_private::m_bytes_in_buffer
    -
    -
    - -

    ◆ m_current_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_stream_private::m_current_data
    -
    -
    - -

    ◆ m_free_user_data_fn

    - -
    -
    - - - - -
    opj_stream_free_user_data_fn opj_stream_private::m_free_user_data_fn
    -
    - -

    Pointer to function to free m_user_data (NULL at initialization) when destroying the stream.

    -

    If pointer is NULL the function is not called and the m_user_data is not freed (even if non-NULL).

    - -

    Referenced by opj_stream_destroy(), and opj_stream_set_user_data().

    - -
    -
    - -

    ◆ m_opj_seek

    - -
    -
    - - - - -
    OPJ_BOOL(* opj_stream_private::m_opj_seek) (struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    -
    - -

    FIXME DOC.

    - -

    Referenced by opj_stream_create(), and opj_stream_seek().

    - -
    -
    - -

    ◆ m_opj_skip

    - -
    -
    - - - - -
    OPJ_OFF_T(* opj_stream_private::m_opj_skip) (struct opj_stream_private *, OPJ_OFF_T, struct opj_event_mgr *)
    -
    - -

    FIXME DOC.

    - -

    Referenced by opj_stream_create(), and opj_stream_skip().

    - -
    -
    - -

    ◆ m_read_fn

    - -
    -
    - - - - -
    opj_stream_read_fn opj_stream_private::m_read_fn
    -
    - -

    Pointer to actual read function (NULL at the initialization of the cio.

    - -

    Referenced by opj_stream_create(), opj_stream_read_data(), and opj_stream_set_read_function().

    - -
    -
    - -

    ◆ m_seek_fn

    - -
    -
    - - - - -
    opj_stream_seek_fn opj_stream_private::m_seek_fn
    -
    - -

    Pointer to actual seek function (if available).

    - -

    Referenced by opj_stream_create(), opj_stream_has_seek(), opj_stream_read_seek(), opj_stream_set_seek_function(), and opj_stream_write_seek().

    - -
    -
    - -

    ◆ m_skip_fn

    - -
    -
    - - - - -
    opj_stream_skip_fn opj_stream_private::m_skip_fn
    -
    - -

    Pointer to actual skip function (NULL at the initialization of the cio.

    -

    There is no seek function to prevent from back and forth slow procedures.

    - -

    Referenced by opj_stream_create(), opj_stream_read_skip(), opj_stream_set_skip_function(), and opj_stream_write_skip().

    - -
    -
    - -

    ◆ m_status

    - -
    -
    - - - - -
    OPJ_UINT32 opj_stream_private::m_status
    -
    -
    - -

    ◆ m_stored_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_stream_private::m_stored_data
    -
    - -

    Actual data stored into the stream if readed from.

    -

    Data is read by chunk of fixed size. you should never access this data directly.

    - -

    Referenced by opj_stream_create(), opj_stream_destroy(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_seek(), opj_stream_read_skip(), opj_stream_write_data(), and opj_stream_write_seek().

    - -
    -
    - -

    ◆ m_user_data

    - -
    -
    - - - - -
    void* opj_stream_private::m_user_data
    -
    - -

    User data, be it files, ...

    -

    The actual data depends on the type of the stream.

    - -

    Referenced by opj_stream_destroy(), opj_stream_flush(), opj_stream_read_data(), opj_stream_read_seek(), opj_stream_read_skip(), opj_stream_set_user_data(), opj_stream_write_seek(), and opj_stream_write_skip().

    - -
    -
    - -

    ◆ m_user_data_length

    - -
    -
    - - - - -
    OPJ_UINT64 opj_stream_private::m_user_data_length
    -
    -
    - -

    ◆ m_write_fn

    - -
    -
    - - - - -
    opj_stream_write_fn opj_stream_private::m_write_fn
    -
    - -

    Pointer to actual write function (NULL at the initialization of the cio.

    - -

    Referenced by opj_stream_create(), opj_stream_flush(), and opj_stream_set_write_function().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__t1.html b/build/doc/html/structopj__t1.html deleted file mode 100644 index d6d056c07..000000000 --- a/build/doc/html/structopj__t1.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - -OpenJPEG: opj_t1 Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_t1 Struct Reference
    -
    -
    - -

    Tier-1 coding (coding of code-block coefficients) - More...

    - -

    #include <t1.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    opj_mqc_t mqc
     MQC component. More...
     
    OPJ_INT32data
     
    opj_flag_tflags
     Flags used by decoder and encoder. More...
     
    OPJ_UINT32 w
     
    OPJ_UINT32 h
     
    OPJ_UINT32 datasize
     
    OPJ_UINT32 flagssize
     
    OPJ_UINT32 data_stride
     
    OPJ_BOOL encoder
     
    OPJ_BOOL mustuse_cblkdatabuffer
     
    OPJ_BYTEcblkdatabuffer
     
    OPJ_UINT32 cblkdatabuffersize
     
    -

    Detailed Description

    -

    Tier-1 coding (coding of code-block coefficients)

    -

    Field Documentation

    - -

    ◆ cblkdatabuffer

    - -
    -
    - - - - -
    OPJ_BYTE* opj_t1::cblkdatabuffer
    -
    - -

    Referenced by opj_t1_decode_cblk(), and opj_t1_destroy().

    - -
    -
    - -

    ◆ cblkdatabuffersize

    - -
    -
    - - - - -
    OPJ_UINT32 opj_t1::cblkdatabuffersize
    -
    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ data

    - - - -

    ◆ data_stride

    - - - -

    ◆ datasize

    - -
    -
    - - - - -
    OPJ_UINT32 opj_t1::datasize
    -
    - -

    Referenced by opj_t1_allocate_buffers().

    - -
    -
    - -

    ◆ encoder

    - -
    -
    - - - - -
    OPJ_BOOL opj_t1::encoder
    -
    -
    - -

    ◆ flags

    - -
    -
    - - - - -
    opj_flag_t* opj_t1::flags
    -
    - -

    Flags used by decoder and encoder.

    -

    Such that flags[1+0] is for state of col=0,row=0..3, flags[1+1] for col=1, row=0..3, flags[1+flags_stride] for col=0,row=4..7, ... This array avoids too much cache trashing when processing by 4 vertical samples as done in the various decoding steps.

    - -

    Referenced by opj_t1_allocate_buffers(), and opj_t1_destroy().

    - -
    -
    - -

    ◆ flagssize

    - -
    -
    - - - - -
    OPJ_UINT32 opj_t1::flagssize
    -
    - -

    Referenced by opj_t1_allocate_buffers().

    - -
    -
    - -

    ◆ h

    - - - -

    ◆ mqc

    - - - -

    ◆ mustuse_cblkdatabuffer

    - -
    -
    - - - - -
    OPJ_BOOL opj_t1::mustuse_cblkdatabuffer
    -
    -
    - -

    ◆ w

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html b/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html deleted file mode 100644 index 08a714533..000000000 --- a/build/doc/html/structopj__t1__cblk__decode__processing__job__t.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - -OpenJPEG: opj_t1_cblk_decode_processing_job_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_t1_cblk_decode_processing_job_t Struct Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BOOL whole_tile_decoding
     
    OPJ_UINT32 resno
     
    opj_tcd_cblk_dec_tcblk
     
    opj_tcd_band_tband
     
    opj_tcd_tilecomp_ttilec
     
    opj_tccp_ttccp
     
    OPJ_BOOL mustuse_cblkdatabuffer
     
    volatile OPJ_BOOLpret
     
    opj_event_mgr_tp_manager
     
    opj_mutex_tp_manager_mutex
     
    OPJ_BOOL check_pterm
     
    -

    Field Documentation

    - -

    ◆ band

    - -
    -
    - - - - -
    opj_tcd_band_t* opj_t1_cblk_decode_processing_job_t::band
    -
    -
    - -

    ◆ cblk

    - -
    -
    - - - - -
    opj_tcd_cblk_dec_t* opj_t1_cblk_decode_processing_job_t::cblk
    -
    -
    - -

    ◆ check_pterm

    - -
    -
    - - - - -
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::check_pterm
    -
    -
    - -

    ◆ mustuse_cblkdatabuffer

    - -
    -
    - - - - -
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer
    -
    -
    - -

    ◆ p_manager

    - -
    -
    - - - - -
    opj_event_mgr_t* opj_t1_cblk_decode_processing_job_t::p_manager
    -
    -
    - -

    ◆ p_manager_mutex

    - -
    -
    - - - - -
    opj_mutex_t* opj_t1_cblk_decode_processing_job_t::p_manager_mutex
    -
    -
    - -

    ◆ pret

    - -
    -
    - - - - -
    volatile OPJ_BOOL* opj_t1_cblk_decode_processing_job_t::pret
    -
    -
    - -

    ◆ resno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_t1_cblk_decode_processing_job_t::resno
    -
    -
    - -

    ◆ tccp

    - -
    -
    - - - - -
    opj_tccp_t* opj_t1_cblk_decode_processing_job_t::tccp
    -
    -
    - -

    ◆ tilec

    - -
    -
    - - - - -
    opj_tcd_tilecomp_t* opj_t1_cblk_decode_processing_job_t::tilec
    -
    -
    - -

    ◆ whole_tile_decoding

    - -
    -
    - - - - -
    OPJ_BOOL opj_t1_cblk_decode_processing_job_t::whole_tile_decoding
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__t2.html b/build/doc/html/structopj__t2.html deleted file mode 100644 index d1571ff4f..000000000 --- a/build/doc/html/structopj__t2.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -OpenJPEG: opj_t2 Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_t2 Struct Reference
    -
    -
    - -

    Tier-2 coding. - More...

    - -

    #include <t2.h>

    - - - - - - - - -

    -Data Fields

    opj_image_timage
     Encoding: pointer to the src image. More...
     
    opj_cp_tcp
     pointer to the image coding parameters More...
     
    -

    Detailed Description

    -

    Tier-2 coding.

    -

    Field Documentation

    - -

    ◆ cp

    - -
    -
    - - - - -
    opj_cp_t* opj_t2::cp
    -
    - -

    pointer to the image coding parameters

    - -

    Referenced by opj_t2_create(), opj_t2_decode_packets(), opj_t2_encode_packets(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ image

    - -
    -
    - - - - -
    opj_image_t* opj_t2::image
    -
    - -

    Encoding: pointer to the src image.

    -

    Decoding: pointer to the dst image.

    - -

    Referenced by opj_t2_create(), opj_t2_decode_packets(), and opj_t2_encode_packets().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tccp.html b/build/doc/html/structopj__tccp.html deleted file mode 100644 index f095a1c32..000000000 --- a/build/doc/html/structopj__tccp.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -OpenJPEG: opj_tccp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tccp Struct Reference
    -
    -
    - -

    Tile-component coding parameters. - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 csty
     coding style More...
     
    OPJ_UINT32 numresolutions
     number of resolutions More...
     
    OPJ_UINT32 cblkw
     code-blocks width More...
     
    OPJ_UINT32 cblkh
     code-blocks height More...
     
    OPJ_UINT32 cblksty
     code-block coding style More...
     
    OPJ_UINT32 qmfbid
     discrete wavelet transform identifier More...
     
    OPJ_UINT32 qntsty
     quantisation style More...
     
    opj_stepsize_t stepsizes [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 numgbits
     number of guard bits More...
     
    OPJ_INT32 roishift
     Region Of Interest shift. More...
     
    OPJ_UINT32 prcw [OPJ_J2K_MAXRLVLS]
     precinct width More...
     
    OPJ_UINT32 prch [OPJ_J2K_MAXRLVLS]
     precinct height More...
     
    OPJ_INT32 m_dc_level_shift
     the dc_level_shift More...
     
    -

    Detailed Description

    -

    Tile-component coding parameters.

    -

    Field Documentation

    - -

    ◆ cblkh

    - - - -

    ◆ cblksty

    - - - -

    ◆ cblkw

    - - - -

    ◆ csty

    - - - -

    ◆ m_dc_level_shift

    - -
    -
    - - - - -
    OPJ_INT32 opj_tccp::m_dc_level_shift
    -
    -
    - -

    ◆ numgbits

    - - - -

    ◆ numresolutions

    - - - -

    ◆ prch

    - - - -

    ◆ prcw

    - - - -

    ◆ qmfbid

    - - - -

    ◆ qntsty

    - - - -

    ◆ roishift

    - - - -

    ◆ stepsizes

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tccp__info.html b/build/doc/html/structopj__tccp__info.html deleted file mode 100644 index 8de8da439..000000000 --- a/build/doc/html/structopj__tccp__info.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - -OpenJPEG: opj_tccp_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tccp_info Struct Reference
    -
    -
    - -

    Tile-component coding parameters information. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 compno
     component index More...
     
    OPJ_UINT32 csty
     coding style More...
     
    OPJ_UINT32 numresolutions
     number of resolutions More...
     
    OPJ_UINT32 cblkw
     log2 of code-blocks width More...
     
    OPJ_UINT32 cblkh
     log2 of code-blocks height More...
     
    OPJ_UINT32 cblksty
     code-block coding style More...
     
    OPJ_UINT32 qmfbid
     discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible More...
     
    OPJ_UINT32 qntsty
     quantisation style More...
     
    OPJ_UINT32 stepsizes_mant [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 stepsizes_expn [OPJ_J2K_MAXBANDS]
     stepsizes used for quantization More...
     
    OPJ_UINT32 numgbits
     number of guard bits More...
     
    OPJ_INT32 roishift
     Region Of Interest shift. More...
     
    OPJ_UINT32 prcw [OPJ_J2K_MAXRLVLS]
     precinct width More...
     
    OPJ_UINT32 prch [OPJ_J2K_MAXRLVLS]
     precinct height More...
     
    -

    Detailed Description

    -

    Tile-component coding parameters information.

    -

    Field Documentation

    - -

    ◆ cblkh

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::cblkh
    -
    - -

    log2 of code-blocks height

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ cblksty

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::cblksty
    -
    - -

    code-block coding style

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ cblkw

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::cblkw
    -
    - -

    log2 of code-blocks width

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ compno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::compno
    -
    - -

    component index

    - -
    -
    - -

    ◆ csty

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::csty
    -
    - -

    coding style

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ numgbits

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::numgbits
    -
    - -

    number of guard bits

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ numresolutions

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::numresolutions
    -
    - -

    number of resolutions

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ prch

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::prch[OPJ_J2K_MAXRLVLS]
    -
    - -

    precinct height

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ prcw

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::prcw[OPJ_J2K_MAXRLVLS]
    -
    - -

    precinct width

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ qmfbid

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::qmfbid
    -
    - -

    discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-3 reversible

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ qntsty

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::qntsty
    -
    - -

    quantisation style

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ roishift

    - -
    -
    - - - - -
    OPJ_INT32 opj_tccp_info::roishift
    -
    - -

    Region Of Interest shift.

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ stepsizes_expn

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::stepsizes_expn[OPJ_J2K_MAXBANDS]
    -
    - -

    stepsizes used for quantization

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ stepsizes_mant

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tccp_info::stepsizes_mant[OPJ_J2K_MAXBANDS]
    -
    - -

    stepsizes used for quantization

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd.html b/build/doc/html/structopj__tcd.html deleted file mode 100644 index 3e1fbf7f9..000000000 --- a/build/doc/html/structopj__tcd.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd Struct Reference
    -
    -
    - -

    Tile coder/decoder. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 tp_pos
     Position of the tilepart flag in Progression order. More...
     
    OPJ_UINT32 tp_num
     Tile part number. More...
     
    OPJ_UINT32 cur_tp_num
     Current tile part number. More...
     
    OPJ_UINT32 cur_totnum_tp
     Total number of tileparts of the current tile. More...
     
    OPJ_UINT32 cur_pino
     Current Packet iterator number. More...
     
    opj_tcd_image_ttcd_image
     info on each image tile More...
     
    opj_image_timage
     image header More...
     
    opj_cp_tcp
     coding parameters More...
     
    opj_tcp_ttcp
     coding/decoding parameters common to all tiles More...
     
    OPJ_UINT32 tcd_tileno
     current encoded/decoded tile More...
     
    OPJ_BITFIELD m_is_decoder: 1
     tell if the tcd is a decoder. More...
     
    opj_thread_pool_tthread_pool
     Thread pool. More...
     
    OPJ_UINT32 win_x0
     Coordinates of the window of interest, in grid reference space. More...
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    OPJ_BOOL whole_tile_decoding
     Only valid for decoding. More...
     
    OPJ_BOOLused_component
     
    -

    Detailed Description

    -

    Tile coder/decoder.

    -

    Field Documentation

    - -

    ◆ cp

    - - - -

    ◆ cur_pino

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::cur_pino
    -
    - -

    Current Packet iterator number.

    - -

    Referenced by opj_j2k_write_all_tile_parts(), opj_j2k_write_first_tile_part(), opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ cur_totnum_tp

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::cur_totnum_tp
    -
    - -

    Total number of tileparts of the current tile.

    - -

    Referenced by opj_j2k_pre_write_tile().

    - -
    -
    - -

    ◆ cur_tp_num

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::cur_tp_num
    -
    - -

    Current tile part number.

    - -

    Referenced by opj_j2k_write_sod(), opj_tcd_encode_tile(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ image

    - - - -

    ◆ m_is_decoder

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_tcd::m_is_decoder
    -
    - -

    tell if the tcd is a decoder.

    - -

    Referenced by opj_tcd_create(), and opj_tcd_free_tile().

    - -
    -
    - -

    ◆ tcd_image

    - - - -

    ◆ tcd_tileno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::tcd_tileno
    -
    -
    - -

    ◆ tcp

    - - - -

    ◆ thread_pool

    - -
    -
    - - - - -
    opj_thread_pool_t* opj_tcd::thread_pool
    -
    - -

    Thread pool.

    - -

    Referenced by main(), opj_dwt_decode(), opj_t1_decode_cblks(), opj_tcd_init(), and opj_tcd_t1_decode().

    - -
    -
    - -

    ◆ tp_num

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::tp_num
    -
    - -

    Tile part number.

    - -

    Referenced by opj_j2k_write_sod(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ tp_pos

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd::tp_pos
    -
    - -

    Position of the tilepart flag in Progression order.

    - -

    Referenced by opj_tcd_init(), opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ used_component

    - - - -

    ◆ whole_tile_decoding

    - -
    -
    - - - - -
    OPJ_BOOL opj_tcd::whole_tile_decoding
    -
    - -

    Only valid for decoding.

    -

    Whether the whole tile is decoded, or just the region in win_x0/win_y0/win_x1/win_y1

    - -

    Referenced by main(), opj_dwt_decode(), opj_dwt_decode_real(), opj_j2k_update_image_data(), opj_t1_decode_cblks(), opj_tcd_dc_level_shift_decode(), opj_tcd_decode_tile(), opj_tcd_get_decoded_tile_size(), opj_tcd_mct_decode(), and opj_tcd_update_tile_data().

    - -
    -
    - -

    ◆ win_x0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd::win_x0
    -
    - -

    Coordinates of the window of interest, in grid reference space.

    - -

    Referenced by main(), opj_tcd_decode_tile(), opj_tcd_is_subband_area_of_interest(), and opj_tcd_is_whole_tilecomp_decoding().

    - -
    -
    - -

    ◆ win_x1

    - - - -

    ◆ win_y0

    - - - -

    ◆ win_y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__band.html b/build/doc/html/structopj__tcd__band.html deleted file mode 100644 index 87a790b15..000000000 --- a/build/doc/html/structopj__tcd__band.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_band Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_band Struct Reference
    -
    -
    - -

    Sub-band structure. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 bandno
     
    opj_tcd_precinct_tprecincts
     
    OPJ_UINT32 precincts_data_size
     
    OPJ_INT32 numbps
     
    OPJ_FLOAT32 stepsize
     
    -

    Detailed Description

    -

    Sub-band structure.

    -

    Field Documentation

    - -

    ◆ bandno

    - - - -

    ◆ numbps

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_band::numbps
    -
    -
    - -

    ◆ precincts

    - - - -

    ◆ precincts_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_band::precincts_data_size
    -
    -
    - -

    ◆ stepsize

    - -
    -
    - - - - -
    OPJ_FLOAT32 opj_tcd_band::stepsize
    -
    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ x0

    - - - -

    ◆ x1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_band::x1
    -
    -
    - -

    ◆ y0

    - - - -

    ◆ y1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_band::y1
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__cblk__dec.html b/build/doc/html/structopj__tcd__cblk__dec.html deleted file mode 100644 index ffa2d0501..000000000 --- a/build/doc/html/structopj__tcd__cblk__dec.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_cblk_dec Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_cblk_dec Struct Reference
    -
    -
    - -

    Code-block for decoding. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    opj_tcd_seg_tsegs
     
    opj_tcd_seg_data_chunk_tchunks
     
    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numbps
     
    OPJ_UINT32 numlenbits
     
    OPJ_UINT32 numnewpasses
     
    OPJ_UINT32 numsegs
     
    OPJ_UINT32 real_num_segs
     
    OPJ_UINT32 m_current_max_segs
     
    OPJ_UINT32 numchunks
     
    OPJ_UINT32 numchunksalloc
     
    OPJ_INT32decoded_data
     
    -

    Detailed Description

    -

    Code-block for decoding.

    -

    Field Documentation

    - -

    ◆ chunks

    - - - -

    ◆ decoded_data

    - - - -

    ◆ m_current_max_segs

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::m_current_max_segs
    -
    -
    - -

    ◆ numbps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numbps
    -
    -
    - -

    ◆ numchunks

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numchunks
    -
    -
    - -

    ◆ numchunksalloc

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numchunksalloc
    -
    -
    - -

    ◆ numlenbits

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numlenbits
    -
    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ numnewpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numnewpasses
    -
    -
    - -

    ◆ numsegs

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::numsegs
    -
    -
    - -

    ◆ real_num_segs

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_dec::real_num_segs
    -
    -
    - -

    ◆ segs

    - - - -

    ◆ x0

    - - - -

    ◆ x1

    - - - -

    ◆ y0

    - - - -

    ◆ y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__cblk__enc.html b/build/doc/html/structopj__tcd__cblk__enc.html deleted file mode 100644 index 8c2e7026d..000000000 --- a/build/doc/html/structopj__tcd__cblk__enc.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_cblk_enc Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_cblk_enc Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_BYTEdata
     
    opj_tcd_layer_tlayers
     
    opj_tcd_pass_tpasses
     
    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numbps
     
    OPJ_UINT32 numlenbits
     
    OPJ_UINT32 data_size
     
    OPJ_UINT32 numpasses
     
    OPJ_UINT32 numpassesinlayers
     
    OPJ_UINT32 totalpasses
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ data

    - - - -

    ◆ data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::data_size
    -
    -
    - -

    ◆ layers

    - - - -

    ◆ numbps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::numbps
    -
    -
    - -

    ◆ numlenbits

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::numlenbits
    -
    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ numpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::numpasses
    -
    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ numpassesinlayers

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::numpassesinlayers
    -
    -
    - -

    ◆ passes

    - - - -

    ◆ totalpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_cblk_enc::totalpasses
    -
    -
    - -

    ◆ x0

    - - - -

    ◆ x1

    - - - -

    ◆ y0

    - - - -

    ◆ y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__image.html b/build/doc/html/structopj__tcd__image.html deleted file mode 100644 index ed95697fc..000000000 --- a/build/doc/html/structopj__tcd__image.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_image Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_image Struct Reference
    -
    - - - - - diff --git a/build/doc/html/structopj__tcd__layer.html b/build/doc/html/structopj__tcd__layer.html deleted file mode 100644 index cc7f6893b..000000000 --- a/build/doc/html/structopj__tcd__layer.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_layer Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_layer Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 numpasses
     
    OPJ_UINT32 len
     
    OPJ_FLOAT64 disto
     
    OPJ_BYTEdata
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_tcd_layer::data
    -
    -
    - -

    ◆ disto

    - -
    -
    - - - - -
    OPJ_FLOAT64 opj_tcd_layer::disto
    -
    - -

    Referenced by opj_t2_encode_packet(), and opj_tcd_makelayer().

    - -
    -
    - -

    ◆ len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_layer::len
    -
    -
    - -

    ◆ numpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_layer::numpasses
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__marker__info.html b/build/doc/html/structopj__tcd__marker__info.html deleted file mode 100644 index 765a0eeda..000000000 --- a/build/doc/html/structopj__tcd__marker__info.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_marker_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_marker_info Struct Reference
    -
    -
    - -

    Structure to hold information needed to generate some markers. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - -

    -Data Fields

    OPJ_BOOL need_PLT
     In: Whether information to generate PLT markers in needed. More...
     
    OPJ_UINT32 packet_count
     OUT: Number of elements in p_packet_size[] array. More...
     
    OPJ_UINT32p_packet_size
     OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet. More...
     
    -

    Detailed Description

    -

    Structure to hold information needed to generate some markers.

    -

    Used by encoder.

    -

    Field Documentation

    - -

    ◆ need_PLT

    - -
    -
    - - - - -
    OPJ_BOOL opj_tcd_marker_info::need_PLT
    -
    - -

    In: Whether information to generate PLT markers in needed.

    - -

    Referenced by opj_t2_encode_packets(), and opj_tcd_marker_info_create().

    - -
    -
    - -

    ◆ p_packet_size

    - -
    -
    - - - - -
    OPJ_UINT32* opj_tcd_marker_info::p_packet_size
    -
    - -

    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.

    - -

    Referenced by opj_j2k_write_plt_in_memory(), opj_t2_encode_packets(), and opj_tcd_marker_info_destroy().

    - -
    -
    - -

    ◆ packet_count

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_marker_info::packet_count
    -
    - -

    OUT: Number of elements in p_packet_size[] array.

    - -

    Referenced by opj_j2k_write_plt_in_memory(), and opj_t2_encode_packets().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__pass.html b/build/doc/html/structopj__tcd__pass.html deleted file mode 100644 index 91e7fc690..000000000 --- a/build/doc/html/structopj__tcd__pass.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_pass Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_pass Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 rate
     
    OPJ_FLOAT64 distortiondec
     
    OPJ_UINT32 len
     
    OPJ_BITFIELD term: 1
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ distortiondec

    - -
    -
    - - - - -
    OPJ_FLOAT64 opj_tcd_pass::distortiondec
    -
    -
    - -

    ◆ len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_pass::len
    -
    - -

    Referenced by opj_t1_encode_cblk(), and opj_t2_encode_packet().

    - -
    -
    - -

    ◆ rate

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_pass::rate
    -
    -
    - -

    ◆ term

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_tcd_pass::term
    -
    - -

    Referenced by opj_t1_encode_cblk(), and opj_t2_encode_packet().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__precinct.html b/build/doc/html/structopj__tcd__precinct.html deleted file mode 100644 index 537bbfeee..000000000 --- a/build/doc/html/structopj__tcd__precinct.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_precinct Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_precinct Struct Reference
    -
    -
    - -

    Precinct structure. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 cw
     
    OPJ_UINT32 ch
     
    union {
       opj_tcd_cblk_enc_t *   enc
     
       opj_tcd_cblk_dec_t *   dec
     
       void *   blocks
     
    cblks
     
    OPJ_UINT32 block_size
     
    opj_tgt_tree_tincltree
     
    opj_tgt_tree_timsbtree
     
    -

    Detailed Description

    -

    Precinct structure.

    -

    Field Documentation

    - -

    ◆ block_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_precinct::block_size
    -
    -
    - -

    ◆ blocks

    - -
    -
    - - - - -
    void* opj_tcd_precinct::blocks
    -
    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ cblks

    - - - -

    ◆ ch

    - - - -

    ◆ cw

    - - - -

    ◆ dec

    - - - -

    ◆ enc

    - - - -

    ◆ imsbtree

    - -
    -
    - - - - -
    opj_tgt_tree_t* opj_tcd_precinct::imsbtree
    -
    -
    - -

    ◆ incltree

    - -
    -
    - - - - -
    opj_tgt_tree_t* opj_tcd_precinct::incltree
    -
    -
    - -

    ◆ x0

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_precinct::x0
    -
    -
    - -

    ◆ x1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_precinct::x1
    -
    -
    - -

    ◆ y0

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_precinct::y0
    -
    -
    - -

    ◆ y1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_precinct::y1
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__resolution.html b/build/doc/html/structopj__tcd__resolution.html deleted file mode 100644 index a713128e2..000000000 --- a/build/doc/html/structopj__tcd__resolution.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_resolution Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_resolution Struct Reference
    -
    -
    - -

    Tile-component resolution structure. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 pw
     
    OPJ_UINT32 ph
     
    OPJ_UINT32 numbands
     
    opj_tcd_band_t bands [3]
     
    OPJ_UINT32 win_x0
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    -

    Detailed Description

    -

    Tile-component resolution structure.

    -

    Field Documentation

    - -

    ◆ bands

    - - - -

    ◆ numbands

    - - - -

    ◆ ph

    - - - -

    ◆ pw

    - - - -

    ◆ win_x0

    - - - -

    ◆ win_x1

    - - - -

    ◆ win_y0

    - - - -

    ◆ win_y1

    - - - -

    ◆ x0

    - - - -

    ◆ x1

    - - - -

    ◆ y0

    - - - -

    ◆ y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__seg.html b/build/doc/html/structopj__tcd__seg.html deleted file mode 100644 index 69f3b534b..000000000 --- a/build/doc/html/structopj__tcd__seg.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_seg Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_seg Struct Reference
    -
    -
    - -

    Segment of a code-block. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 len
     
    OPJ_UINT32 numpasses
     
    OPJ_UINT32 real_num_passes
     
    OPJ_UINT32 maxpasses
     
    OPJ_UINT32 numnewpasses
     
    OPJ_UINT32 newlen
     
    -

    Detailed Description

    -

    Segment of a code-block.

    -

    A segment represent a number of consecutive coding passes, without termination of MQC or RAW between them.

    -

    Field Documentation

    - -

    ◆ len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::len
    -
    -
    - -

    ◆ maxpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::maxpasses
    -
    -
    - -

    ◆ newlen

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::newlen
    -
    -
    - -

    ◆ numnewpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::numnewpasses
    -
    -
    - -

    ◆ numpasses

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::numpasses
    -
    -
    - -

    ◆ real_num_passes

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg::real_num_passes
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__seg__data__chunk.html b/build/doc/html/structopj__tcd__seg__data__chunk.html deleted file mode 100644 index 6d1fef6cf..000000000 --- a/build/doc/html/structopj__tcd__seg__data__chunk.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_seg_data_chunk Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_seg_data_chunk Struct Reference
    -
    -
    - -

    Chunk of codestream data that is part of a code block. - More...

    - -

    #include <tcd.h>

    - - - - - - -

    -Data Fields

    OPJ_BYTEdata
     
    OPJ_UINT32 len
     
    -

    Detailed Description

    -

    Chunk of codestream data that is part of a code block.

    -

    Field Documentation

    - -

    ◆ data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_tcd_seg_data_chunk::data
    -
    -
    - -

    ◆ len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_seg_data_chunk::len
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__tile.html b/build/doc/html/structopj__tcd__tile.html deleted file mode 100644 index d81c58044..000000000 --- a/build/doc/html/structopj__tcd__tile.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_tile Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_tile Struct Reference
    -
    -
    - -

    FIXME DOC. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 numcomps
     
    opj_tcd_tilecomp_tcomps
     
    OPJ_INT32 numpix
     
    OPJ_FLOAT64 distotile
     
    OPJ_FLOAT64 distolayer [100]
     
    OPJ_UINT32 packno
     
    -

    Detailed Description

    -

    FIXME DOC.

    -

    Field Documentation

    - -

    ◆ comps

    - - - -

    ◆ distolayer

    - -
    -
    - - - - -
    OPJ_FLOAT64 opj_tcd_tile::distolayer[100]
    -
    - -

    Referenced by opj_tcd_makelayer(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ distotile

    - -
    -
    - - - - -
    OPJ_FLOAT64 opj_tcd_tile::distotile
    -
    -
    - -

    ◆ numcomps

    - - - -

    ◆ numpix

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tile::numpix
    -
    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ packno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tile::packno
    -
    -
    - -

    ◆ x0

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tile::x0
    -
    -
    - -

    ◆ x1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tile::x1
    -
    -
    - -

    ◆ y0

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tile::y0
    -
    -
    - -

    ◆ y1

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tile::y1
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcd__tilecomp.html b/build/doc/html/structopj__tcd__tilecomp.html deleted file mode 100644 index ad1c52f2c..000000000 --- a/build/doc/html/structopj__tcd__tilecomp.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcd_tilecomp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcd_tilecomp Struct Reference
    -
    -
    - -

    Tile-component structure. - More...

    - -

    #include <tcd.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_INT32 x0
     
    OPJ_INT32 y0
     
    OPJ_INT32 x1
     
    OPJ_INT32 y1
     
    OPJ_UINT32 compno
     
    OPJ_UINT32 numresolutions
     
    OPJ_UINT32 minimum_num_resolutions
     
    opj_tcd_resolution_tresolutions
     
    OPJ_UINT32 resolutions_size
     
    OPJ_INT32data
     
    OPJ_BOOL ownsData
     
    size_t data_size_needed
     
    size_t data_size
     
    OPJ_INT32data_win
     data of the component limited to window of interest. More...
     
    OPJ_UINT32 win_x0
     
    OPJ_UINT32 win_y0
     
    OPJ_UINT32 win_x1
     
    OPJ_UINT32 win_y1
     
    OPJ_INT32 numpix
     
    -

    Detailed Description

    -

    Tile-component structure.

    -

    Field Documentation

    - -

    ◆ compno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::compno
    -
    - -

    Referenced by opj_t1_decode_cblks(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ data

    - - - -

    ◆ data_size

    - -
    -
    - - - - -
    size_t opj_tcd_tilecomp::data_size
    -
    -
    - -

    ◆ data_size_needed

    - -
    -
    - - - - -
    size_t opj_tcd_tilecomp::data_size_needed
    -
    -
    - -

    ◆ data_win

    - -
    -
    - - - - -
    OPJ_INT32* opj_tcd_tilecomp::data_win
    -
    - -

    data of the component limited to window of interest.

    -

    Only valid for decoding and if tcd->whole_tile_decoding is NOT set (so exclusive of data member)

    - -

    Referenced by opj_dwt_decode_partial_tile(), opj_j2k_update_image_data(), opj_tcd_dc_level_shift_decode(), opj_tcd_decode_tile(), opj_tcd_free_tile(), opj_tcd_init_tile(), opj_tcd_mct_decode(), and opj_tcd_update_tile_data().

    - -
    -
    - -

    ◆ minimum_num_resolutions

    - - - -

    ◆ numpix

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcd_tilecomp::numpix
    -
    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ numresolutions

    - - - -

    ◆ ownsData

    - -
    -
    - - - - -
    OPJ_BOOL opj_tcd_tilecomp::ownsData
    -
    -
    - -

    ◆ resolutions

    - - - -

    ◆ resolutions_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::resolutions_size
    -
    - -

    Referenced by opj_tcd_free_tile(), and opj_tcd_init_tile().

    - -
    -
    - -

    ◆ win_x0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::win_x0
    -
    -
    - -

    ◆ win_x1

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::win_x1
    -
    -
    - -

    ◆ win_y0

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::win_y0
    -
    -
    - -

    ◆ win_y1

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcd_tilecomp::win_y1
    -
    -
    - -

    ◆ x0

    - - - -

    ◆ x1

    - - - -

    ◆ y0

    - - - -

    ◆ y1

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tcp.html b/build/doc/html/structopj__tcp.html deleted file mode 100644 index 8ed72cc3d..000000000 --- a/build/doc/html/structopj__tcp.html +++ /dev/null @@ -1,740 +0,0 @@ - - - - - - - -OpenJPEG: opj_tcp Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tcp Struct Reference
    -
    -
    - -

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header) - More...

    - -

    #include <j2k.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 csty
     coding style More...
     
    OPJ_PROG_ORDER prg
     progression order More...
     
    OPJ_UINT32 numlayers
     number of layers More...
     
    OPJ_UINT32 num_layers_to_decode
     
    OPJ_UINT32 mct
     multi-component transform identifier More...
     
    OPJ_FLOAT32 rates [100]
     rates of layers More...
     
    OPJ_UINT32 numpocs
     number of progression order changes More...
     
    opj_poc_t pocs [J2K_MAX_POCS]
     progression order changes More...
     
    OPJ_UINT32 ppt_markers_count
     number of ppt markers (reserved size) More...
     
    opj_ppxppt_markers
     ppt markers data (table indexed by Zppt) More...
     
    OPJ_BYTEppt_data
     packet header store there for future use in t2_decode_packet More...
     
    OPJ_BYTEppt_buffer
     used to keep a track of the allocated memory More...
     
    OPJ_UINT32 ppt_data_size
     Number of bytes stored inside ppt_data. More...
     
    OPJ_UINT32 ppt_len
     size of ppt_data More...
     
    OPJ_FLOAT32 distoratio [100]
     add fixed_quality More...
     
    opj_tccp_ttccps
     tile-component coding parameters More...
     
    OPJ_INT32 m_current_tile_part_number
     current tile part number or -1 if first time into this tile More...
     
    OPJ_UINT32 m_nb_tile_parts
     number of tile parts for the tile. More...
     
    OPJ_BYTEm_data
     data for the tile More...
     
    OPJ_UINT32 m_data_size
     size of data More...
     
    OPJ_FLOAT64mct_norms
     encoding norms More...
     
    OPJ_FLOAT32m_mct_decoding_matrix
     the mct decoding matrix More...
     
    OPJ_FLOAT32m_mct_coding_matrix
     the mct coding matrix More...
     
    opj_mct_data_tm_mct_records
     mct records More...
     
    OPJ_UINT32 m_nb_mct_records
     the number of mct records. More...
     
    OPJ_UINT32 m_nb_max_mct_records
     the max number of mct records. More...
     
    opj_simple_mcc_decorrelation_data_tm_mcc_records
     mcc records More...
     
    OPJ_UINT32 m_nb_mcc_records
     the number of mct records. More...
     
    OPJ_UINT32 m_nb_max_mcc_records
     the max number of mct records. More...
     
    OPJ_BITFIELD cod: 1
     If cod == 1 --> there was a COD marker for the present tile. More...
     
    OPJ_BITFIELD ppt: 1
     If ppt == 1 --> there was a PPT marker for the present tile. More...
     
    OPJ_BITFIELD POC: 1
     indicates if a POC marker has been used O:NO, 1:YES More...
     
    -

    Detailed Description

    -

    Tile coding parameters : this structure is used to store coding/decoding parameters common to all tiles (information like COD, COC in main header)

    -

    Field Documentation

    - -

    ◆ cod

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_tcp::cod
    -
    - -

    If cod == 1 --> there was a COD marker for the present tile.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_read_cod().

    - -
    -
    - -

    ◆ csty

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::csty
    -
    -
    - -

    ◆ distoratio

    - -
    -
    - - - - -
    OPJ_FLOAT32 opj_tcp::distoratio[100]
    -
    - -

    add fixed_quality

    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ m_current_tile_part_number

    - -
    -
    - - - - -
    OPJ_INT32 opj_tcp::m_current_tile_part_number
    -
    - -

    current tile part number or -1 if first time into this tile

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_decode_one_tile(), and opj_j2k_read_sot().

    - -
    -
    - -

    ◆ m_data

    - - - -

    ◆ m_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::m_data_size
    -
    - -

    size of data

    - -

    Referenced by opj_j2k_decode_tile(), opj_j2k_read_sod(), and opj_j2k_tcp_data_destroy().

    - -
    -
    - -

    ◆ m_mcc_records

    - - - -

    ◆ m_mct_coding_matrix

    - -
    -
    - - - - -
    OPJ_FLOAT32* opj_tcp::m_mct_coding_matrix
    -
    - -

    the mct coding matrix

    - -

    Referenced by opj_j2k_mct_validation(), opj_j2k_tcp_destroy(), and opj_tcd_mct_encode().

    - -
    -
    - -

    ◆ m_mct_decoding_matrix

    - -
    -
    - - - - -
    OPJ_FLOAT32* opj_tcp::m_mct_decoding_matrix
    -
    -
    - -

    ◆ m_mct_records

    - - - -

    ◆ m_nb_max_mcc_records

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::m_nb_max_mcc_records
    -
    -
    - -

    ◆ m_nb_max_mct_records

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::m_nb_max_mct_records
    -
    -
    - -

    ◆ m_nb_mcc_records

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::m_nb_mcc_records
    -
    -
    - -

    ◆ m_nb_mct_records

    - - - -

    ◆ m_nb_tile_parts

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::m_nb_tile_parts
    -
    -
    - -

    ◆ mct

    - - - -

    ◆ mct_norms

    - -
    -
    - - - - -
    OPJ_FLOAT64* opj_tcp::mct_norms
    -
    - -

    encoding norms

    - -

    Referenced by opj_j2k_tcp_destroy(), and opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ num_layers_to_decode

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::num_layers_to_decode
    -
    -
    - -

    ◆ numlayers

    - - - -

    ◆ numpocs

    - - - -

    ◆ POC

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_tcp::POC
    -
    -
    - -

    ◆ pocs

    - - - -

    ◆ ppt

    - -
    -
    - - - - -
    OPJ_BITFIELD opj_tcp::ppt
    -
    - -

    If ppt == 1 --> there was a PPT marker for the present tile.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppt_buffer

    - -
    -
    - - - - -
    OPJ_BYTE* opj_tcp::ppt_buffer
    -
    - -

    used to keep a track of the allocated memory

    - -

    Referenced by opj_j2k_merge_ppt(), and opj_j2k_tcp_destroy().

    - -
    -
    - -

    ◆ ppt_data

    - -
    -
    - - - - -
    OPJ_BYTE* opj_tcp::ppt_data
    -
    - -

    packet header store there for future use in t2_decode_packet

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_merge_ppt(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppt_data_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::ppt_data_size
    -
    - -

    Number of bytes stored inside ppt_data.

    - -

    Referenced by opj_j2k_merge_ppt().

    - -
    -
    - -

    ◆ ppt_len

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::ppt_len
    -
    - -

    size of ppt_data

    - -

    Referenced by opj_j2k_merge_ppt(), and opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ ppt_markers

    - -
    -
    - - - - -
    opj_ppx* opj_tcp::ppt_markers
    -
    - -

    ppt markers data (table indexed by Zppt)

    - -

    Referenced by opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_j2k_tcp_destroy().

    - -
    -
    - -

    ◆ ppt_markers_count

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tcp::ppt_markers_count
    -
    - -

    number of ppt markers (reserved size)

    - -

    Referenced by opj_j2k_merge_ppt(), opj_j2k_read_ppt(), and opj_j2k_tcp_destroy().

    - -
    -
    - -

    ◆ prg

    - - - -

    ◆ rates

    - -
    -
    - - - - -
    OPJ_FLOAT32 opj_tcp::rates[100]
    -
    - -

    rates of layers

    - -

    Referenced by opj_j2k_update_rates(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ tccps

    - - -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tgt__node.html b/build/doc/html/structopj__tgt__node.html deleted file mode 100644 index 3f11df432..000000000 --- a/build/doc/html/structopj__tgt__node.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -OpenJPEG: opj_tgt_node Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tgt_node Struct Reference
    -
    -
    - -

    Tag node. - More...

    - -

    #include <tgt.h>

    - - - - - - - - - - -

    -Data Fields

    struct opj_tgt_nodeparent
     
    OPJ_INT32 value
     
    OPJ_INT32 low
     
    OPJ_UINT32 known
     
    -

    Detailed Description

    -

    Tag node.

    -

    Field Documentation

    - -

    ◆ known

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tgt_node::known
    -
    - -

    Referenced by opj_tgt_encode(), and opj_tgt_reset().

    - -
    -
    - -

    ◆ low

    - -
    -
    - - - - -
    OPJ_INT32 opj_tgt_node::low
    -
    -
    - -

    ◆ parent

    - -
    -
    - - - - -
    struct opj_tgt_node* opj_tgt_node::parent
    -
    -
    - -

    ◆ value

    - -
    -
    - - - - -
    OPJ_INT32 opj_tgt_node::value
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tgt__tree.html b/build/doc/html/structopj__tgt__tree.html deleted file mode 100644 index 23f112809..000000000 --- a/build/doc/html/structopj__tgt__tree.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -OpenJPEG: opj_tgt_tree Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tgt_tree Struct Reference
    -
    -
    - -

    Tag tree. - More...

    - -

    #include <tgt.h>

    - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 numleafsh
     
    OPJ_UINT32 numleafsv
     
    OPJ_UINT32 numnodes
     
    opj_tgt_node_tnodes
     
    OPJ_UINT32 nodes_size
     
    -

    Detailed Description

    -

    Tag tree.

    -

    Field Documentation

    - -

    ◆ nodes

    - - - -

    ◆ nodes_size

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tgt_tree::nodes_size
    -
    - -

    Referenced by opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ numleafsh

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tgt_tree::numleafsh
    -
    - -

    Referenced by opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ numleafsv

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tgt_tree::numleafsv
    -
    - -

    Referenced by opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ numnodes

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tgt_tree::numnodes
    -
    - -

    Referenced by opj_tgt_create(), opj_tgt_init(), and opj_tgt_reset().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__thread__pool__t.html b/build/doc/html/structopj__thread__pool__t.html deleted file mode 100644 index a50ef5136..000000000 --- a/build/doc/html/structopj__thread__pool__t.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - -OpenJPEG: opj_thread_pool_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_thread_pool_t Struct Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    opj_worker_thread_tworker_threads
     
    int worker_threads_count
     
    opj_cond_tcond
     
    opj_mutex_tmutex
     
    volatile opj_worker_thread_state state
     
    opj_job_list_tjob_queue
     
    volatile int pending_jobs_count
     
    opj_worker_thread_list_twaiting_worker_thread_list
     
    int waiting_worker_thread_count
     
    opj_tls_ttls
     
    int signaling_threshold
     
    -

    Field Documentation

    - -

    ◆ cond

    - - - -

    ◆ job_queue

    - -
    -
    - - - - -
    opj_job_list_t* opj_thread_pool_t::job_queue
    -
    -
    - -

    ◆ mutex

    - - - -

    ◆ pending_jobs_count

    - -
    -
    - - - - -
    volatile int opj_thread_pool_t::pending_jobs_count
    -
    -
    - -

    ◆ signaling_threshold

    - -
    -
    - - - - -
    int opj_thread_pool_t::signaling_threshold
    -
    -
    - -

    ◆ state

    - -
    -
    - - - - -
    volatile opj_worker_thread_state opj_thread_pool_t::state
    -
    -
    - -

    ◆ tls

    - -
    -
    - - - - -
    opj_tls_t* opj_thread_pool_t::tls
    -
    -
    - -

    ◆ waiting_worker_thread_count

    - -
    -
    - - - - -
    int opj_thread_pool_t::waiting_worker_thread_count
    -
    -
    - -

    ◆ waiting_worker_thread_list

    - -
    -
    - - - - -
    opj_worker_thread_list_t* opj_thread_pool_t::waiting_worker_thread_list
    -
    -
    - -

    ◆ worker_threads

    - -
    -
    - - - - -
    opj_worker_thread_t* opj_thread_pool_t::worker_threads
    -
    -
    - -

    ◆ worker_threads_count

    - -
    -
    - - - - -
    int opj_thread_pool_t::worker_threads_count
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tile__index.html b/build/doc/html/structopj__tile__index.html deleted file mode 100644 index 3e07cf9d5..000000000 --- a/build/doc/html/structopj__tile__index.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - -OpenJPEG: opj_tile_index Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tile_index Struct Reference
    -
    -
    - -

    Index structure about a tile. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    OPJ_UINT32 tileno
     tile index More...
     
    OPJ_UINT32 nb_tps
     number of tile parts More...
     
    OPJ_UINT32 current_nb_tps
     current nb of tile part (allocated) More...
     
    OPJ_UINT32 current_tpsno
     current tile-part index More...
     
    opj_tp_index_ttp_index
     information concerning tile parts More...
     
    OPJ_UINT32 marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    OPJ_UINT32 maxmarknum
     actual size of markers array More...
     
    OPJ_UINT32 nb_packet
     packet number More...
     
    opj_packet_info_tpacket_index
     information concerning packets inside tile More...
     
    -

    Detailed Description

    -

    Index structure about a tile.

    -

    Field Documentation

    - -

    ◆ current_nb_tps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::current_nb_tps
    -
    - -

    current nb of tile part (allocated)

    - -

    Referenced by opj_j2k_read_sot().

    - -
    -
    - -

    ◆ current_tpsno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::current_tpsno
    -
    - -

    current tile-part index

    - -

    Referenced by opj_j2k_add_tlmarker(), opj_j2k_read_sod(), and opj_j2k_read_sot().

    - -
    -
    - -

    ◆ marker

    - - - -

    ◆ marknum

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::marknum
    -
    -
    - -

    ◆ maxmarknum

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::maxmarknum
    -
    - -

    actual size of markers array

    - -

    Referenced by opj_j2k_add_tlmarker(), and opj_j2k_allocate_tile_element_cstr_index().

    - -
    -
    - -

    ◆ nb_packet

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::nb_packet
    -
    - -

    packet number

    - -

    Referenced by j2k_get_cstr_index().

    - -
    -
    - -

    ◆ nb_tps

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::nb_tps
    -
    -
    - -

    ◆ packet_index

    - -
    -
    - - - - -
    opj_packet_info_t* opj_tile_index::packet_index
    -
    - -

    information concerning packets inside tile

    - -

    Referenced by j2k_destroy_cstr_index(), and j2k_get_cstr_index().

    - -
    -
    - -

    ◆ tileno

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_index::tileno
    -
    - -

    tile index

    - -

    Referenced by opj_j2k_read_sot().

    - -
    -
    - -

    ◆ tp_index

    - -
    -
    - - - - -
    opj_tp_index_t* opj_tile_index::tp_index
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tile__info.html b/build/doc/html/structopj__tile__info.html deleted file mode 100644 index 0c46fa9e5..000000000 --- a/build/doc/html/structopj__tile__info.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - -OpenJPEG: opj_tile_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tile_info Struct Reference
    -
    -
    - -

    Index structure : information regarding tiles. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    double * thresh
     value of thresh for each layer by tile cfr. More...
     
    int tileno
     number of tile More...
     
    int start_pos
     start position More...
     
    int end_header
     end position of the header More...
     
    int end_pos
     end position More...
     
    int pw [33]
     precinct number for each resolution level (width) More...
     
    int ph [33]
     precinct number for each resolution level (height) More...
     
    int pdx [33]
     precinct size (in power of 2), in X for each resolution level More...
     
    int pdy [33]
     precinct size (in power of 2), in Y for each resolution level More...
     
    opj_packet_info_tpacket
     information concerning packets inside tile More...
     
    int numpix
     add fixed_quality More...
     
    double distotile
     add fixed_quality More...
     
    int marknum
     number of markers More...
     
    opj_marker_info_tmarker
     list of markers More...
     
    int maxmarknum
     actual size of markers array More...
     
    int num_tps
     number of tile parts More...
     
    opj_tp_info_ttp
     information concerning tile parts More...
     
    -

    Detailed Description

    -

    Index structure : information regarding tiles.

    -

    Field Documentation

    - -

    ◆ distotile

    - -
    -
    - - - - -
    double opj_tile_info::distotile
    -
    - -

    add fixed_quality

    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ end_header

    - -
    -
    - - - - -
    int opj_tile_info::end_header
    -
    - -

    end position of the header

    - -

    Referenced by opj_t2_encode_packets().

    - -
    -
    - -

    ◆ end_pos

    - -
    -
    - - - - -
    int opj_tile_info::end_pos
    -
    - -

    end position

    - -
    -
    - -

    ◆ marker

    - -
    -
    - - - - -
    opj_marker_info_t* opj_tile_info::marker
    -
    - -

    list of markers

    - -

    Referenced by opj_write_tilemhix().

    - -
    -
    - -

    ◆ marknum

    - -
    -
    - - - - -
    int opj_tile_info::marknum
    -
    - -

    number of markers

    - -

    Referenced by opj_write_tilemhix().

    - -
    -
    - -

    ◆ maxmarknum

    - -
    -
    - - - - -
    int opj_tile_info::maxmarknum
    -
    - -

    actual size of markers array

    - -
    -
    - -

    ◆ num_tps

    - -
    -
    - - - - -
    int opj_tile_info::num_tps
    -
    - -

    number of tile parts

    - -

    Referenced by get_num_max_tile_parts(), and opj_write_tpixfaix().

    - -
    -
    - -

    ◆ numpix

    - -
    -
    - - - - -
    int opj_tile_info::numpix
    -
    - -

    add fixed_quality

    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ packet

    - -
    -
    - - - - -
    opj_packet_info_t* opj_tile_info::packet
    -
    - -

    information concerning packets inside tile

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_encode_packets(), opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ pdx

    - -
    -
    - - - - -
    int opj_tile_info::pdx[33]
    -
    - -

    precinct size (in power of 2), in X for each resolution level

    - -

    Referenced by opj_tcd_encode_tile().

    - -
    -
    - -

    ◆ pdy

    - -
    -
    - - - - -
    int opj_tile_info::pdy[33]
    -
    - -

    precinct size (in power of 2), in Y for each resolution level

    - -

    Referenced by opj_tcd_encode_tile().

    - -
    -
    - -

    ◆ ph

    - -
    -
    - - - - -
    int opj_tile_info::ph[33]
    -
    - -

    precinct number for each resolution level (height)

    - -

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ pw

    - -
    -
    - - - - -
    int opj_tile_info::pw[33]
    -
    - -

    precinct number for each resolution level (width)

    - -

    Referenced by opj_tcd_encode_tile(), opj_write_phixfaix(), and opj_write_ppixfaix().

    - -
    -
    - -

    ◆ start_pos

    - -
    -
    - - - - -
    int opj_tile_info::start_pos
    -
    - -

    start position

    - -
    -
    - -

    ◆ thresh

    - -
    -
    - - - - -
    double* opj_tile_info::thresh
    -
    - -

    value of thresh for each layer by tile cfr.

    -

    Marcela
    -

    - -

    Referenced by opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ tileno

    - -
    -
    - - - - -
    int opj_tile_info::tileno
    -
    - -

    number of tile

    - -
    -
    - -

    ◆ tp

    - -
    -
    - - - - -
    opj_tp_info_t* opj_tile_info::tp
    -
    - -

    information concerning tile parts

    - -

    Referenced by opj_write_tilemhix(), and opj_write_tpixfaix().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tile__v2__info.html b/build/doc/html/structopj__tile__v2__info.html deleted file mode 100644 index bda47a5e5..000000000 --- a/build/doc/html/structopj__tile__v2__info.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -OpenJPEG: opj_tile_v2_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tile_v2_info Struct Reference
    -
    -
    - -

    Tile coding parameters information. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    int tileno
     number (index) of tile More...
     
    OPJ_UINT32 csty
     coding style More...
     
    OPJ_PROG_ORDER prg
     progression order More...
     
    OPJ_UINT32 numlayers
     number of layers More...
     
    OPJ_UINT32 mct
     multi-component transform identifier More...
     
    opj_tccp_info_ttccp_info
     information concerning tile component parameters More...
     
    -

    Detailed Description

    -

    Tile coding parameters information.

    -

    Field Documentation

    - -

    ◆ csty

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_v2_info::csty
    -
    - -

    coding style

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ mct

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_v2_info::mct
    -
    - -

    multi-component transform identifier

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ numlayers

    - -
    -
    - - - - -
    OPJ_UINT32 opj_tile_v2_info::numlayers
    -
    - -

    number of layers

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ prg

    - -
    -
    - - - - -
    OPJ_PROG_ORDER opj_tile_v2_info::prg
    -
    - -

    progression order

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tccp_info

    - -
    -
    - - - - -
    opj_tccp_info_t* opj_tile_v2_info::tccp_info
    -
    - -

    information concerning tile component parameters

    - -

    Referenced by j2k_get_cstr_info().

    - -
    -
    - -

    ◆ tileno

    - -
    -
    - - - - -
    int opj_tile_v2_info::tileno
    -
    - -

    number (index) of tile

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tls__key__val__t.html b/build/doc/html/structopj__tls__key__val__t.html deleted file mode 100644 index 2082fbfe4..000000000 --- a/build/doc/html/structopj__tls__key__val__t.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -OpenJPEG: opj_tls_key_val_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tls_key_val_t Struct Reference
    -
    -
    - - - - - - - - -

    -Data Fields

    int key
     
    void * value
     
    opj_tls_free_func opj_free_func
     
    -

    Field Documentation

    - -

    ◆ key

    - -
    -
    - - - - -
    int opj_tls_key_val_t::key
    -
    - -

    Referenced by opj_tls_get(), and opj_tls_set().

    - -
    -
    - -

    ◆ opj_free_func

    - -
    -
    - - - - -
    opj_tls_free_func opj_tls_key_val_t::opj_free_func
    -
    - -

    Referenced by opj_tls_destroy(), and opj_tls_set().

    - -
    -
    - -

    ◆ value

    - -
    -
    - - - - -
    void* opj_tls_key_val_t::value
    -
    - -

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tls__t.html b/build/doc/html/structopj__tls__t.html deleted file mode 100644 index 60a713a1c..000000000 --- a/build/doc/html/structopj__tls__t.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: opj_tls_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tls_t Struct Reference
    -
    -
    - - - - - - -

    -Data Fields

    opj_tls_key_val_tkey_val
     
    int key_val_count
     
    -

    Field Documentation

    - -

    ◆ key_val

    - -
    -
    - - - - -
    opj_tls_key_val_t* opj_tls_t::key_val
    -
    - -

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    - -
    -
    - -

    ◆ key_val_count

    - -
    -
    - - - - -
    int opj_tls_t::key_val_count
    -
    - -

    Referenced by opj_tls_destroy(), opj_tls_get(), and opj_tls_set().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tp__index.html b/build/doc/html/structopj__tp__index.html deleted file mode 100644 index 1ba215877..000000000 --- a/build/doc/html/structopj__tp__index.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: opj_tp_index Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tp_index Struct Reference
    -
    -
    - -

    Index structure about a tile part. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - -

    -Data Fields

    OPJ_OFF_T start_pos
     start position More...
     
    OPJ_OFF_T end_header
     end position of the header More...
     
    OPJ_OFF_T end_pos
     end position More...
     
    -

    Detailed Description

    -

    Index structure about a tile part.

    -

    Field Documentation

    - -

    ◆ end_header

    - -
    -
    - - - - -
    OPJ_OFF_T opj_tp_index::end_header
    -
    - -

    end position of the header

    - -

    Referenced by opj_j2k_dump_MH_index(), and opj_j2k_read_sod().

    - -
    -
    - -

    ◆ end_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_tp_index::end_pos
    -
    - -

    end position

    - -

    Referenced by opj_j2k_dump_MH_index(), and opj_j2k_read_sod().

    - -
    -
    - -

    ◆ start_pos

    - -
    -
    - - - - -
    OPJ_OFF_T opj_tp_index::start_pos
    -
    - -

    start position

    - -

    Referenced by opj_j2k_add_tlmarker(), opj_j2k_decode_one_tile(), and opj_j2k_dump_MH_index().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__tp__info.html b/build/doc/html/structopj__tp__info.html deleted file mode 100644 index 44b614688..000000000 --- a/build/doc/html/structopj__tp__info.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -OpenJPEG: opj_tp_info Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_tp_info Struct Reference
    -
    -
    - -

    Index structure : Information concerning tile-parts. - More...

    - -

    #include <openjpeg.h>

    - - - - - - - - - - - - - - - - - -

    -Data Fields

    int tp_start_pos
     start position of tile part More...
     
    int tp_end_header
     end position of tile part header More...
     
    int tp_end_pos
     end position of tile part More...
     
    int tp_start_pack
     start packet of tile part More...
     
    int tp_numpacks
     number of packets of tile part More...
     
    -

    Detailed Description

    -

    Index structure : Information concerning tile-parts.

    -

    Field Documentation

    - -

    ◆ tp_end_header

    - -
    -
    - - - - -
    int opj_tp_info::tp_end_header
    -
    - -

    end position of tile part header

    - -

    Referenced by opj_write_tilemhix().

    - -
    -
    - -

    ◆ tp_end_pos

    - -
    -
    - - - - -
    int opj_tp_info::tp_end_pos
    -
    - -

    end position of tile part

    - -

    Referenced by opj_write_tpixfaix().

    - -
    -
    - -

    ◆ tp_numpacks

    - -
    -
    - - - - -
    int opj_tp_info::tp_numpacks
    -
    - -

    number of packets of tile part

    - -
    -
    - -

    ◆ tp_start_pack

    - -
    -
    - - - - -
    int opj_tp_info::tp_start_pack
    -
    - -

    start packet of tile part

    - -
    -
    - -

    ◆ tp_start_pos

    - -
    -
    - - - - -
    int opj_tp_info::tp_start_pos
    -
    - -

    start position of tile part

    - -

    Referenced by opj_write_tilemhix(), and opj_write_tpixfaix().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__worker__thread__job__t.html b/build/doc/html/structopj__worker__thread__job__t.html deleted file mode 100644 index 0258c5a88..000000000 --- a/build/doc/html/structopj__worker__thread__job__t.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: opj_worker_thread_job_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_worker_thread_job_t Struct Reference
    -
    -
    - - - - - - -

    -Data Fields

    opj_job_fn job_fn
     
    void * user_data
     
    -

    Field Documentation

    - -

    ◆ job_fn

    - -
    -
    - - - - -
    opj_job_fn opj_worker_thread_job_t::job_fn
    -
    -
    - -

    ◆ user_data

    - -
    -
    - - - - -
    void* opj_worker_thread_job_t::user_data
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__worker__thread__list__t.html b/build/doc/html/structopj__worker__thread__list__t.html deleted file mode 100644 index aea5342a2..000000000 --- a/build/doc/html/structopj__worker__thread__list__t.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -OpenJPEG: opj_worker_thread_list_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_worker_thread_list_t Struct Reference
    -
    -
    - - - - - - -

    -Data Fields

    opj_worker_thread_tworker_thread
     
    struct opj_worker_thread_list_tnext
     
    -

    Field Documentation

    - -

    ◆ next

    - -
    -
    - - - - -
    struct opj_worker_thread_list_t* opj_worker_thread_list_t::next
    -
    -
    - -

    ◆ worker_thread

    - -
    -
    - - - - -
    opj_worker_thread_t* opj_worker_thread_list_t::worker_thread
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structopj__worker__thread__t.html b/build/doc/html/structopj__worker__thread__t.html deleted file mode 100644 index 84b332715..000000000 --- a/build/doc/html/structopj__worker__thread__t.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -OpenJPEG: opj_worker_thread_t Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_worker_thread_t Struct Reference
    -
    -
    - - - - - - - - - - - - -

    -Data Fields

    opj_thread_pool_ttp
     
    opj_thread_tthread
     
    int marked_as_waiting
     
    opj_mutex_tmutex
     
    opj_cond_tcond
     
    -

    Field Documentation

    - -

    ◆ cond

    - - - -

    ◆ marked_as_waiting

    - -
    -
    - - - - -
    int opj_worker_thread_t::marked_as_waiting
    -
    -
    - -

    ◆ mutex

    - -
    -
    - - - - -
    opj_mutex_t* opj_worker_thread_t::mutex
    -
    -
    - -

    ◆ thread

    - -
    -
    - - - - -
    opj_thread_t* opj_worker_thread_t::thread
    -
    -
    - -

    ◆ tp

    - -
    -
    - - - - -
    opj_thread_pool_t* opj_worker_thread_t::tp
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structplaceholder__param.html b/build/doc/html/structplaceholder__param.html deleted file mode 100644 index 93594f668..000000000 --- a/build/doc/html/structplaceholder__param.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -OpenJPEG: placeholder_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    placeholder_param Struct Reference
    -
    -
    - -

    A.3.6.3 Placeholder box format. - More...

    - -

    #include <placeholder_manager.h>

    - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    Byte4_t LBox
     
    char TBox [4]
     
    Byte4_t Flags
     
    Byte8_t OrigID
     
    Byte_tOrigBH
     dynamic memory pointer More...
     
    Byte_t OrigBHlen
     length of OrigBH More...
     
    struct placeholder_paramnext
     pointer to the next placeholder More...
     
    -

    Detailed Description

    -

    A.3.6.3 Placeholder box format.

    -

    placeholder box parameters

    -

    Field Documentation

    - -

    ◆ Flags

    - -
    -
    - - - - -
    Byte4_t placeholder_param::Flags
    -
    -
    - -

    ◆ LBox

    - -
    -
    - - - - -
    Byte4_t placeholder_param::LBox
    -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct placeholder_param* placeholder_param::next
    -
    -
    - -

    ◆ OrigBH

    - -
    -
    - - - - -
    Byte_t* placeholder_param::OrigBH
    -
    -
    - -

    ◆ OrigBHlen

    - -
    -
    - - - - -
    Byte_t placeholder_param::OrigBHlen
    -
    -
    - -

    ◆ OrigID

    - -
    -
    - - - - -
    Byte8_t placeholder_param::OrigID
    -
    -
    - -

    ◆ TBox

    - -
    -
    - - - - -
    char placeholder_param::TBox[4]
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structplaceholderlist__param.html b/build/doc/html/structplaceholderlist__param.html deleted file mode 100644 index 0d7eefbdb..000000000 --- a/build/doc/html/structplaceholderlist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: placeholderlist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    placeholderlist_param Struct Reference
    -
    -
    - -

    placeholder box list parameters - More...

    - -

    #include <placeholder_manager.h>

    - - - - - - - - -

    -Data Fields

    placeholder_param_tfirst
     first placeholder pointer of the list More...
     
    placeholder_param_tlast
     last placeholder pointer of the list More...
     
    -

    Detailed Description

    -

    placeholder box list parameters

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    placeholder_param_t* placeholderlist_param::first
    -
    - -

    first placeholder pointer of the list

    - -

    Referenced by enqueue_phld(), gene_placeholderlist(), insert_placeholder_into_list(), print_allplaceholder(), and search_metadataidx().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    placeholder_param_t* placeholderlist_param::last
    -
    - -

    last placeholder pointer of the list

    - -

    Referenced by gene_placeholderlist(), and insert_placeholder_into_list().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structquery__param.html b/build/doc/html/structquery__param.html deleted file mode 100644 index b62462336..000000000 --- a/build/doc/html/structquery__param.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - - - - -OpenJPEG: query_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    query_param Struct Reference
    -
    -
    - -

    Query parameters. - More...

    - -

    #include <query_parser.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    char * target
     target name More...
     
    char * tid
     target identifier More...
     
    int fx
     
    int fy
     frame size (fx,fy) More...
     
    int rx
     
    int ry
     
    int rw
     
    int rh
     roi region More...
     
    int layers
     quality layers More...
     
    int lastcomp
     last component number More...
     
    OPJ_BOOLcomps
     components (dynamic array) for jpp-stream, null means all components More...
     
    char * cid
     channel identifier More...
     
    cnew_transport_t cnew
     transport name if there is new channel request, else non More...
     
    char * cclose
     list of closing channel identifiers, separated by '\0' More...
     
    int numOfcclose
     number of closing channels More...
     
    char box_type [MAX_NUMOFBOX][4]
     interested box-types More...
     
    int limit [MAX_NUMOFBOX]
     limit value, -1: skeleton request "r", 0: entire contents More...
     
    OPJ_BOOL w [MAX_NUMOFBOX]
     Metadata request qualifier flags. More...
     
    OPJ_BOOL s [MAX_NUMOFBOX]
     
    OPJ_BOOL g [MAX_NUMOFBOX]
     
    OPJ_BOOL a [MAX_NUMOFBOX]
     
    OPJ_BOOL priority [MAX_NUMOFBOX]
     priority flag More...
     
    int root_bin
     root-bin More...
     
    int max_depth
     max-depth More...
     
    OPJ_BOOL metadata_only
     metadata-only request More...
     
    image_return_t return_type
     image return type More...
     
    int len
     maximum response length More...
     
    -

    Detailed Description

    -

    Query parameters.

    -

    Field Documentation

    - -

    ◆ a

    - -
    -
    - - - - -
    OPJ_BOOL query_param::a[MAX_NUMOFBOX]
    -
    -
    - -

    ◆ box_type

    - -
    -
    - - - - -
    char query_param::box_type[MAX_NUMOFBOX][4]
    -
    -
    - -

    ◆ cclose

    - -
    -
    - - - - -
    char* query_param::cclose
    -
    - -

    list of closing channel identifiers, separated by '\0'

    - -

    Referenced by close_channel(), get_initquery(), parse_cclose(), and print_queryparam().

    - -
    -
    - -

    ◆ cid

    - -
    -
    - - - - -
    char* query_param::cid
    -
    - -

    channel identifier

    - -

    Referenced by associate_channel(), get_initquery(), identify_target(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ cnew

    - -
    -
    - - - - -
    cnew_transport_t query_param::cnew
    -
    - -

    transport name if there is new channel request, else non

    - -

    Referenced by associate_channel(), gene_channel(), get_initquery(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ comps

    - -
    -
    - - - - -
    OPJ_BOOL* query_param::comps
    -
    - -

    components (dynamic array) for jpp-stream, null means all components

    - -

    Referenced by enqueue_imagedata(), get_initquery(), parse_comps(), and print_queryparam().

    - -
    -
    - -

    ◆ fx

    - -
    -
    - - - - -
    int query_param::fx
    -
    -
    - -

    ◆ fy

    - -
    -
    - - - - -
    int query_param::fy
    -
    - -

    frame size (fx,fy)

    - -

    Referenced by enqueue_imagedata(), gene_JPIPstream(), get_initquery(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ g

    - -
    -
    - - - - -
    OPJ_BOOL query_param::g[MAX_NUMOFBOX]
    -
    -
    - -

    ◆ lastcomp

    - -
    -
    - - - - -
    int query_param::lastcomp
    -
    - -

    last component number

    - -

    Referenced by enqueue_imagedata(), get_initquery(), parse_comps(), and print_queryparam().

    - -
    -
    - -

    ◆ layers

    - -
    -
    - - - - -
    int query_param::layers
    -
    -
    - -

    ◆ len

    - -
    -
    - - - - -
    int query_param::len
    -
    - -

    maximum response length

    - -

    Referenced by enqueue_imagedata(), gene_JPIPstream(), get_initquery(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ limit

    - -
    -
    - - - - -
    int query_param::limit[MAX_NUMOFBOX]
    -
    - -

    limit value, -1: skeleton request "r", 0: entire contents

    - -

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    - -
    -
    - -

    ◆ max_depth

    - -
    -
    - - - - -
    int query_param::max_depth
    -
    - -

    max-depth

    - -

    Referenced by get_initquery(), parse_metareq(), and print_queryparam().

    - -
    -
    - -

    ◆ metadata_only

    - -
    -
    - - - - -
    OPJ_BOOL query_param::metadata_only
    -
    - -

    metadata-only request

    - -

    Referenced by gene_JPIPstream(), get_initquery(), parse_metareq(), and print_queryparam().

    - -
    -
    - -

    ◆ numOfcclose

    - -
    -
    - - - - -
    int query_param::numOfcclose
    -
    - -

    number of closing channels

    - -

    Referenced by close_channel(), get_initquery(), parse_cclose(), and print_queryparam().

    - -
    -
    - -

    ◆ priority

    - -
    -
    - - - - -
    OPJ_BOOL query_param::priority[MAX_NUMOFBOX]
    -
    - -

    priority flag

    - -

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    - -
    -
    - -

    ◆ return_type

    - -
    -
    - - - - -
    image_return_t query_param::return_type
    -
    - -

    image return type

    - -

    Referenced by gene_JPIPstream(), get_initquery(), open_channel(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ rh

    - -
    -
    - - - - -
    int query_param::rh
    -
    - -

    roi region

    - -

    Referenced by enqueue_imagedata(), get_initquery(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ root_bin

    - -
    -
    - - - - -
    int query_param::root_bin
    -
    - -

    root-bin

    - -

    Referenced by get_initquery(), parse_metareq(), and print_queryparam().

    - -
    -
    - -

    ◆ rw

    - -
    -
    - - - - -
    int query_param::rw
    -
    -
    - -

    ◆ rx

    - -
    -
    - - - - -
    int query_param::rx
    -
    -
    - -

    ◆ ry

    - -
    -
    - - - - -
    int query_param::ry
    -
    -
    - -

    ◆ s

    - -
    -
    - - - - -
    OPJ_BOOL query_param::s[MAX_NUMOFBOX]
    -
    -
    - -

    ◆ target

    - -
    -
    - - - - -
    char* query_param::target
    -
    - -

    target name

    - -

    Referenced by get_initquery(), identify_target(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ tid

    - -
    -
    - - - - -
    char* query_param::tid
    -
    - -

    target identifier

    - -

    Referenced by get_initquery(), identify_target(), parse_query(), and print_queryparam().

    - -
    -
    - -

    ◆ w

    - -
    -
    - - - - -
    OPJ_BOOL query_param::w[MAX_NUMOFBOX]
    -
    - -

    Metadata request qualifier flags.

    - -

    Referenced by get_initquery(), parse_req_box_prop(), and print_queryparam().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structrange__param.html b/build/doc/html/structrange__param.html deleted file mode 100644 index 2df684fec..000000000 --- a/build/doc/html/structrange__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: range_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    range_param Struct Reference
    -
    -
    - -

    1-dimensional range parameters - More...

    - -

    #include <index_manager.h>

    - - - - - - - - -

    -Data Fields

    Byte4_t minvalue
     minimal value More...
     
    Byte4_t maxvalue
     maximal value More...
     
    -

    Detailed Description

    -

    1-dimensional range parameters

    -

    Field Documentation

    - -

    ◆ maxvalue

    - -
    -
    - - - - -
    Byte4_t range_param::maxvalue
    -
    - -

    maximal value

    - -

    Referenced by enqueue_imagedata(), get_tile_range(), get_tile_XSiz(), and get_tile_YSiz().

    - -
    -
    - -

    ◆ minvalue

    - -
    -
    - - - - -
    Byte4_t range_param::minvalue
    -
    - -

    minimal value

    - -

    Referenced by enqueue_imagedata(), get_tile_range(), get_tile_XSiz(), and get_tile_YSiz().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structsession__param.html b/build/doc/html/structsession__param.html deleted file mode 100644 index b11a414df..000000000 --- a/build/doc/html/structsession__param.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -OpenJPEG: session_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    session_param Struct Reference
    -
    -
    - -

    Session parameters. - More...

    - -

    #include <session_manager.h>

    - - - - - - - - - - - -

    -Data Fields

    channellist_param_tchannellist
     channel list pointer More...
     
    cachemodellist_param_tcachemodellist
     cache list pointer More...
     
    struct session_paramnext
     pointer to the next session More...
     
    -

    Detailed Description

    -

    Session parameters.

    -

    Field Documentation

    - -

    ◆ cachemodellist

    - -
    -
    - - - - -
    cachemodellist_param_t* session_param::cachemodellist
    -
    -
    - -

    ◆ channellist

    - -
    -
    - - - - -
    channellist_param_t* session_param::channellist
    -
    - -

    channel list pointer

    - -

    Referenced by delete_sessionlist(), gene_session(), and print_allsession().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct session_param* session_param::next
    -
    - -

    pointer to the next session

    - -

    Referenced by delete_session(), delete_sessionlist(), gene_session(), print_allsession(), and search_session_and_channel().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structsessionlist__param.html b/build/doc/html/structsessionlist__param.html deleted file mode 100644 index 789013904..000000000 --- a/build/doc/html/structsessionlist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: sessionlist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    sessionlist_param Struct Reference
    -
    -
    - -

    Session list parameters. - More...

    - -

    #include <session_manager.h>

    - - - - - - - - -

    -Data Fields

    session_param_tfirst
     first session pointer of the list More...
     
    session_param_tlast
     last session pointer of the list More...
     
    -

    Detailed Description

    -

    Session list parameters.

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    session_param_t* sessionlist_param::first
    -
    - -

    first session pointer of the list

    - -

    Referenced by delete_session(), gene_session(), gene_sessionlist(), print_allsession(), and search_session_and_channel().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    session_param_t* sessionlist_param::last
    -
    - -

    last session pointer of the list

    - -

    Referenced by delete_session(), gene_session(), and gene_sessionlist().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structsubfaixbox4__param.html b/build/doc/html/structsubfaixbox4__param.html deleted file mode 100644 index 79147c548..000000000 --- a/build/doc/html/structsubfaixbox4__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: subfaixbox4_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    subfaixbox4_param Struct Reference
    -
    -
    - -

    4byte parameters of fragment array index box - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    Byte4_t nmax
     maximum number of valid elements in any row of the array More...
     
    Byte4_t m
     number of raws of the array More...
     
    faixelem4_param_telem
     dynamic array pointer of faix elements More...
     
    Byte4_taux
     dynamic array pointer of auxiliary More...
     
    -

    Detailed Description

    -

    4byte parameters of fragment array index box

    -

    Field Documentation

    - -

    ◆ aux

    - -
    -
    - - - - -
    Byte4_t* subfaixbox4_param::aux
    -
    - -

    dynamic array pointer of auxiliary

    - -

    Referenced by gene_faixbox(), and get_elemAux().

    - -
    -
    - -

    ◆ elem

    - -
    -
    - - - - -
    faixelem4_param_t* subfaixbox4_param::elem
    -
    - -

    dynamic array pointer of faix elements

    - -

    Referenced by gene_faixbox(), get_elemLen(), and get_elemOff().

    - -
    -
    - -

    ◆ m

    - -
    -
    - - - - -
    Byte4_t subfaixbox4_param::m
    -
    - -

    number of raws of the array

    - -

    Referenced by gene_faixbox(), and get_m().

    - -
    -
    - -

    ◆ nmax

    - -
    -
    - - - - -
    Byte4_t subfaixbox4_param::nmax
    -
    - -

    maximum number of valid elements in any row of the array

    - -

    Referenced by gene_faixbox(), and get_nmax().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structsubfaixbox8__param.html b/build/doc/html/structsubfaixbox8__param.html deleted file mode 100644 index f63e3ae03..000000000 --- a/build/doc/html/structsubfaixbox8__param.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -OpenJPEG: subfaixbox8_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    subfaixbox8_param Struct Reference
    -
    -
    - -

    8byte parameters of fragment array index box - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - - - - - - - -

    -Data Fields

    Byte8_t nmax
     maximum number of valid elements in any row of the array More...
     
    Byte8_t m
     number of raws of the array More...
     
    faixelem8_param_telem
     dynamic array pointer of faix elements More...
     
    Byte4_taux
     dynamic array pointer of auxiliary More...
     
    -

    Detailed Description

    -

    8byte parameters of fragment array index box

    -

    Field Documentation

    - -

    ◆ aux

    - -
    -
    - - - - -
    Byte4_t* subfaixbox8_param::aux
    -
    - -

    dynamic array pointer of auxiliary

    - -

    Referenced by gene_faixbox(), and get_elemAux().

    - -
    -
    - -

    ◆ elem

    - -
    -
    - - - - -
    faixelem8_param_t* subfaixbox8_param::elem
    -
    - -

    dynamic array pointer of faix elements

    - -

    Referenced by gene_faixbox(), get_elemLen(), and get_elemOff().

    - -
    -
    - -

    ◆ m

    - -
    -
    - - - - -
    Byte8_t subfaixbox8_param::m
    -
    - -

    number of raws of the array

    - -

    Referenced by gene_faixbox(), and get_m().

    - -
    -
    - -

    ◆ nmax

    - -
    -
    - - - - -
    Byte8_t subfaixbox8_param::nmax
    -
    - -

    maximum number of valid elements in any row of the array

    - -

    Referenced by gene_faixbox(), and get_nmax().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structtarget__param.html b/build/doc/html/structtarget__param.html deleted file mode 100644 index bb782df68..000000000 --- a/build/doc/html/structtarget__param.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - -OpenJPEG: target_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    target_param Struct Reference
    -
    -
    - -

    target parameters - More...

    - -

    #include <target_manager.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    char tid [MAX_LENOFTID]
     target identifier More...
     
    char * targetname
     local file path or URL ( URL is supported only with SERVER mode) More...
     
    int fd
     file descriptor More...
     
    int csn
     codestream number
    - More...
     
    index_param_tcodeidx
     index information of codestream
    - More...
     
    int num_of_use
     numbers of sessions referring to this target
    - More...
     
    OPJ_BOOL jppstream
     if this target can return JPP-stream
    - More...
     
    OPJ_BOOL jptstream
     if this target can return JPP-stream
    - More...
     
    struct target_paramnext
     pointer to the next target
    - More...
     
    -

    Detailed Description

    -

    target parameters

    -

    Field Documentation

    - -

    ◆ codeidx

    - - - -

    ◆ csn

    - -
    -
    - - - - -
    int target_param::csn
    -
    -
    - -

    ◆ fd

    - -
    -
    - - - - -
    int target_param::fd
    -
    - -

    file descriptor

    - -

    Referenced by gene_target(), and recons_stream_from_msgqueue().

    - -
    -
    - -

    ◆ jppstream

    - -
    -
    - - - - -
    OPJ_BOOL target_param::jppstream
    -
    - -

    if this target can return JPP-stream
    -

    - -

    Referenced by gene_cachemodel(), and gene_target().

    - -
    -
    - -

    ◆ jptstream

    - -
    -
    - - - - -
    OPJ_BOOL target_param::jptstream
    -
    - -

    if this target can return JPP-stream
    -

    - -

    Referenced by gene_cachemodel(), and gene_target().

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    struct target_param* target_param::next
    -
    -
    - -

    ◆ num_of_use

    - -
    -
    - - - - -
    int target_param::num_of_use
    -
    - -

    numbers of sessions referring to this target
    -

    - -

    Referenced by gene_target(), refer_target(), and unrefer_target().

    - -
    -
    - -

    ◆ targetname

    - -
    -
    - - - - -
    char* target_param::targetname
    -
    - -

    local file path or URL ( URL is supported only with SERVER mode)

    - -

    Referenced by gene_target(), print_allchannel(), print_cachemodel(), print_target(), and search_target().

    - -
    -
    - -

    ◆ tid

    - -
    -
    - - - - -
    char target_param::tid[MAX_LENOFTID]
    -
    - -

    target identifier

    - -

    Referenced by gene_target(), print_target(), and search_targetBytid().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structtargetlist__param.html b/build/doc/html/structtargetlist__param.html deleted file mode 100644 index d496104ff..000000000 --- a/build/doc/html/structtargetlist__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: targetlist_param Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    targetlist_param Struct Reference
    -
    -
    - -

    Target list parameters. - More...

    - -

    #include <target_manager.h>

    - - - - - - - - -

    -Data Fields

    target_param_tfirst
     first target pointer of the list More...
     
    target_param_tlast
     last target pointer of the list More...
     
    -

    Detailed Description

    -

    Target list parameters.

    -

    Field Documentation

    - -

    ◆ first

    - -
    -
    - - - - -
    target_param_t* targetlist_param::first
    -
    - -

    first target pointer of the list

    - -

    Referenced by delete_target_in_list(), gene_target(), gene_targetlist(), print_alltarget(), search_target(), and search_targetBytid().

    - -
    -
    - -

    ◆ last

    - -
    -
    - - - - -
    target_param_t* targetlist_param::last
    -
    - -

    last target pointer of the list

    - -

    Referenced by delete_target_in_list(), gene_target(), and gene_targetlist().

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/structv4dwt__local.html b/build/doc/html/structv4dwt__local.html deleted file mode 100644 index 2f7809936..000000000 --- a/build/doc/html/structv4dwt__local.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - -OpenJPEG: v4dwt_local Struct Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    v4dwt_local Struct Reference
    -
    -
    - - - - - - - - - - - - - - - - - - -

    -Data Fields

    opj_v4_twavelet
     
    OPJ_INT32 dn
     
    OPJ_INT32 sn
     
    OPJ_INT32 cas
     
    OPJ_UINT32 win_l_x0
     
    OPJ_UINT32 win_l_x1
     
    OPJ_UINT32 win_h_x0
     
    OPJ_UINT32 win_h_x1
     
    -

    Field Documentation

    - -

    ◆ cas

    - -
    -
    - - - - -
    OPJ_INT32 v4dwt_local::cas
    -
    -
    - -

    ◆ dn

    - -
    -
    - - - - -
    OPJ_INT32 v4dwt_local::dn
    -
    -
    - -

    ◆ sn

    - -
    -
    - - - - -
    OPJ_INT32 v4dwt_local::sn
    -
    -
    - -

    ◆ wavelet

    - -
    -
    - - - - -
    opj_v4_t* v4dwt_local::wavelet
    -
    -
    - -

    ◆ win_h_x0

    - -
    -
    - - - - -
    OPJ_UINT32 v4dwt_local::win_h_x0
    -
    -
    - -

    ◆ win_h_x1

    - -
    -
    - - - - -
    OPJ_UINT32 v4dwt_local::win_h_x1
    -
    -
    - -

    ◆ win_l_x0

    - -
    -
    - - - - -
    OPJ_UINT32 v4dwt_local::win_l_x0
    -
    -
    - -

    ◆ win_l_x1

    - -
    -
    - - - - -
    OPJ_UINT32 v4dwt_local::win_l_x1
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/build/doc/html/sync_off.png b/build/doc/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/build/doc/html/sync_on.png b/build/doc/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/build/doc/html/t1_8c.html b/build/doc/html/t1_8c.html deleted file mode 100644 index b6c19c013..000000000 --- a/build/doc/html/t1_8c.html +++ /dev/null @@ -1,3235 +0,0 @@ - - - - - - - -OpenJPEG: t1.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    t1.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include "t1_luts.h"
    -
    - - - -

    -Data Structures

    struct  opj_t1_cblk_decode_processing_job_t
     
    - - - - - - - -

    -Macros

    #define OPJ_SKIP_POISON
     
    #define T1_FLAGS(x, y)   (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])
     
    #define opj_t1_setcurctx(curctx, ctxno)   curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    #define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
     
    #define opj_t1_dec_sigpass_step_mqc_macro(flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
     
    #define opj_t1_dec_sigpass_mqc_internal(t1, bpno, vsc, w, h, flags_stride)
     
    #define opj_t1_dec_refpass_step_mqc_macro(flags, data, data_stride, ci, mqc, curctx, v, a, c, ct, poshalf)
     
    #define opj_t1_dec_refpass_mqc_internal(t1, bpno, w, h, flags_stride)
     
    #define opj_t1_dec_clnpass_step_macro(check_flags, partial, flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
     
    #define opj_t1_dec_clnpass_internal(t1, bpno, vsc, w, h, flags_stride)
     
    static INLINE OPJ_BYTE opj_t1_getctxno_zc (opj_mqc_t *mqc, OPJ_UINT32 f)
     
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
     
    static OPJ_INT16 opj_t1_getnmsedec_sig (OPJ_UINT32 x, OPJ_UINT32 bitpos)
     
    static OPJ_INT16 opj_t1_getnmsedec_ref (OPJ_UINT32 x, OPJ_UINT32 bitpos)
     
    static INLINE void opj_t1_update_flags (opj_flag_t *flagsp, OPJ_UINT32 ci, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 vsc)
     
    static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 vsc, OPJ_UINT32 row)
     Decode significant pass. More...
     
    static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 flags_stride, OPJ_UINT32 vsc)
     
    static void opj_t1_enc_sigpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
     Encode significant pass. More...
     
    static void opj_t1_dec_sigpass_raw (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     Decode significant pass. More...
     
    static void opj_t1_enc_refpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
     Encode refinement pass. More...
     
    static void opj_t1_dec_refpass_raw (opj_t1_t *t1, OPJ_INT32 bpno)
     Decode refinement pass. More...
     
    static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
     Decode refinement pass. More...
     
    static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
     
    static void opj_t1_dec_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 vsc)
     Decode clean-up pass. More...
     
    static void opj_t1_enc_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
     Encode clean-up pass. More...
     
    static OPJ_FLOAT64 opj_t1_getwmsedec (OPJ_INT32 nmsedec, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 numcomps, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     mod fixed_quality More...
     
    static void opj_t1_encode_cblk (opj_t1_t *t1, opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 cblksty, OPJ_UINT32 numcomps, opj_tcd_tile_t *tile, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     mod fixed_quality More...
     
    static OPJ_BOOL opj_t1_decode_cblk (opj_t1_t *t1, opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 roishift, OPJ_UINT32 cblksty, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode 1 code-block. More...
     
    static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
     
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index (OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
     
    static INLINE OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 lu)
     
    static INLINE OPJ_BYTE opj_t1_getspb (OPJ_UINT32 lu)
     
    static INLINE void opj_t1_enc_sigpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci, OPJ_UINT32 vsc)
     Encode significant pass. More...
     
    static void opj_t1_dec_sigpass_mqc_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_sigpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     
    static INLINE void opj_t1_enc_refpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci)
     Encode refinement pass step. More...
     
    static void opj_t1_dec_refpass_mqc_64x64 (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_refpass_mqc_generic (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_refpass_mqc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_enc_clnpass_step (opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 agg, OPJ_UINT32 runlen, OPJ_UINT32 lim, OPJ_UINT32 cblksty)
     Encode clean-up pass step. More...
     
    static void opj_t1_dec_clnpass_check_segsym (opj_t1_t *t1, OPJ_INT32 cblksty)
     
    static void opj_t1_dec_clnpass_64x64_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_64x64_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_generic_novsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass_generic_vsc (opj_t1_t *t1, OPJ_INT32 bpno)
     
    static void opj_t1_dec_clnpass (opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
     
    opj_t1_topj_t1_create (OPJ_BOOL isEncoder)
     Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder. More...
     
    void opj_t1_destroy (opj_t1_t *p_t1)
     Destroys a previously created T1 handle. More...
     
    static void opj_t1_destroy_wrapper (void *t1)
     
    static void opj_t1_clbl_decode_processor (void *user_data, opj_tls_t *tls)
     
    void opj_t1_decode_cblks (opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode the code-blocks of a tile. More...
     
    OPJ_BOOL opj_t1_encode_cblks (opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     Encode the code-blocks of a tile. More...
     
    static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_SKIP_POISON

    - -
    -
    - - - - -
    #define OPJ_SKIP_POISON
    -
    - -
    -
    - -

    ◆ opj_t1_dec_clnpass_internal

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_clnpass_internal( t1,
     bpno,
     vsc,
     w,
     h,
     flags_stride 
    )
    -
    - -
    -
    - -

    ◆ opj_t1_dec_clnpass_step_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_clnpass_step_macro( check_flags,
     partial,
     flags,
     flagsp,
     flags_stride,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     oneplushalf,
     vsc 
    )
    -
    -Value:
    { \
    -
    if ( !check_flags || !(flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U)))) {\
    -
    do { \
    -
    if( !partial ) { \
    -
    OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
    -
    opj_t1_setcurctx(curctx, ctxt1); \
    -
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    -
    if( !v ) \
    -
    break; \
    -
    } \
    -
    { \
    - -
    flags, flagsp[-1], flagsp[1], \
    -
    ci); \
    -
    opj_t1_setcurctx(curctx, opj_t1_getctxno_sc(lu)); \
    -
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    -
    v = v ^ opj_t1_getspb(lu); \
    -
    data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
    -
    opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
    -
    } \
    -
    } while(0); \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_t1_dec_refpass_mqc_internal

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_refpass_mqc_internal( t1,
     bpno,
     w,
     h,
     flags_stride 
    )
    -
    - -
    -
    - -

    ◆ opj_t1_dec_refpass_step_mqc_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_refpass_step_mqc_macro( flags,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     poshalf 
    )
    -
    -Value:
    { \
    -
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == \
    -
    (T1_SIGMA_THIS << (ci * 3U))) { \
    -
    OPJ_UINT32 ctxt = opj_t1_getctxno_mag(flags >> (ci * 3U)); \
    -
    opj_t1_setcurctx(curctx, ctxt); \
    -
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    -
    data[ci*data_stride] += (v ^ (data[ci*data_stride] < 0)) ? poshalf : -poshalf; \
    -
    flags |= T1_MU_THIS << (ci * 3U); \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc_internal

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_sigpass_mqc_internal( t1,
     bpno,
     vsc,
     w,
     h,
     flags_stride 
    )
    -
    - -
    -
    - -

    ◆ opj_t1_dec_sigpass_step_mqc_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_dec_sigpass_step_mqc_macro( flags,
     flagsp,
     flags_stride,
     data,
     data_stride,
     ci,
     mqc,
     curctx,
     v,
     a,
     c,
     ct,
     oneplushalf,
     vsc 
    )
    -
    -Value:
    { \
    -
    if ((flags & ((T1_SIGMA_THIS | T1_PI_THIS) << (ci * 3U))) == 0U && \
    -
    (flags & (T1_SIGMA_NEIGHBOURS << (ci * 3U))) != 0U) { \
    -
    OPJ_UINT32 ctxt1 = opj_t1_getctxno_zc(mqc, flags >> (ci * 3U)); \
    -
    opj_t1_setcurctx(curctx, ctxt1); \
    -
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    -
    if (v) { \
    - -
    flags, \
    -
    flagsp[-1], flagsp[1], \
    -
    ci); \
    -
    OPJ_UINT32 ctxt2 = opj_t1_getctxno_sc(lu); \
    -
    OPJ_UINT32 spb = opj_t1_getspb(lu); \
    -
    opj_t1_setcurctx(curctx, ctxt2); \
    -
    opj_mqc_decode_macro(v, mqc, curctx, a, c, ct); \
    -
    v = v ^ spb; \
    -
    data[ci*data_stride] = v ? -oneplushalf : oneplushalf; \
    -
    opj_t1_update_flags_macro(flags, flagsp, ci, v, flags_stride, vsc); \
    -
    } \
    -
    flags |= T1_PI_THIS << (ci * 3U); \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ opj_t1_setcurctx

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define opj_t1_setcurctx( curctx,
     ctxno 
    )   curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
    -
    - -
    -
    - -

    ◆ opj_t1_update_flags_macro

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define opj_t1_update_flags_macro( flags,
     flagsp,
     ci,
     s,
     stride,
     vsc 
    )
    -
    -Value:
    { \
    -
    /* east */ \
    -
    flagsp[-1] |= T1_SIGMA_5 << (3U * ci); \
    -
    \
    -
    /* mark target as significant */ \
    -
    flags |= ((s << T1_CHI_1_I) | T1_SIGMA_4) << (3U * ci); \
    -
    \
    -
    /* west */ \
    -
    flagsp[1] |= T1_SIGMA_3 << (3U * ci); \
    -
    \
    -
    /* north-west, north, north-east */ \
    -
    if (ci == 0U && !(vsc)) { \
    -
    opj_flag_t* north = flagsp - (stride); \
    -
    *north |= (s << T1_CHI_5_I) | T1_SIGMA_16; \
    -
    north[-1] |= T1_SIGMA_17; \
    -
    north[1] |= T1_SIGMA_15; \
    -
    } \
    -
    \
    -
    /* south-west, south, south-east */ \
    -
    if (ci == 3U) { \
    -
    opj_flag_t* south = flagsp + (stride); \
    -
    *south |= (s << T1_CHI_0_I) | T1_SIGMA_1; \
    -
    south[-1] |= T1_SIGMA_2; \
    -
    south[1] |= T1_SIGMA_0; \
    -
    } \
    -
    }
    -
    -
    -
    - -

    ◆ T1_FLAGS

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define T1_FLAGS( x,
     
    )   (t1->flags[x + 1 + ((y / 4) + 1) * (t1->w+2)])
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_t1_allocate_buffers()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t1_allocate_buffers (opj_t1_tt1,
    OPJ_UINT32 w,
    OPJ_UINT32 h 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_clbl_decode_processor()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_clbl_decode_processor (void * user_data,
    opj_tls_ttls 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_create()

    - -
    -
    - - - - - - - - -
    opj_t1_t* opj_t1_create (OPJ_BOOL isEncoder)
    -
    - -

    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.

    -
    Returns
    a new T1 handle if successful, returns NULL otherwise
    - -

    References opj_t1::encoder, and opj_calloc().

    - -

    Referenced by opj_t1_clbl_decode_processor(), and opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_t1_dec_clnpass()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_clnpass_64x64_novsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_64x64_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References OPJ_FALSE, and opj_t1_dec_clnpass_internal.

    - -

    Referenced by opj_t1_dec_clnpass().

    - -
    -
    - -

    ◆ opj_t1_dec_clnpass_64x64_vsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_64x64_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References opj_t1_dec_clnpass_internal, and OPJ_TRUE.

    - -

    Referenced by opj_t1_dec_clnpass().

    - -
    -
    - -

    ◆ opj_t1_dec_clnpass_check_segsym()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_check_segsym (opj_t1_tt1,
    OPJ_INT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_clnpass_generic_novsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_generic_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_clnpass_generic_vsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_generic_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References opj_t1::h, opj_t1_dec_clnpass_internal, OPJ_TRUE, and opj_t1::w.

    - -

    Referenced by opj_t1_dec_clnpass().

    - -
    -
    - -

    ◆ opj_t1_dec_clnpass_step()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_clnpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 row,
    OPJ_UINT32 vsc 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_refpass_mqc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_refpass_mqc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_refpass_mqc_64x64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_refpass_mqc_64x64 (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References opj_t1_dec_refpass_mqc_internal.

    - -

    Referenced by opj_t1_dec_refpass_mqc().

    - -
    -
    - -

    ◆ opj_t1_dec_refpass_mqc_generic()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_refpass_mqc_generic (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_refpass_raw()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_refpass_raw (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    Decode refinement pass.

    - -

    References opj_t1::data, opj_t1::h, opj_t1_dec_refpass_step_raw(), T1_FLAGS, and opj_t1::w.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_t1_dec_refpass_step_mqc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_dec_refpass_step_mqc (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 poshalf,
    OPJ_UINT32 row 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_refpass_step_raw()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_dec_refpass_step_raw (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 poshalf,
    OPJ_UINT32 row 
    )
    -
    -static
    -
    - -

    Decode refinement pass.

    - -

    References opj_t1::mqc, opj_mqc_raw_decode(), T1_MU_THIS, T1_PI_THIS, and T1_SIGMA_THIS.

    - -

    Referenced by opj_t1_dec_refpass_raw().

    - -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_mqc (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc_64x64_novsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_mqc_64x64_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References OPJ_FALSE, and opj_t1_dec_sigpass_mqc_internal.

    - -

    Referenced by opj_t1_dec_sigpass_mqc().

    - -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc_64x64_vsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_mqc_64x64_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    - -

    References opj_t1_dec_sigpass_mqc_internal, and OPJ_TRUE.

    - -

    Referenced by opj_t1_dec_sigpass_mqc().

    - -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc_generic_novsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_mqc_generic_novsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_sigpass_mqc_generic_vsc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_mqc_generic_vsc (opj_t1_tt1,
    OPJ_INT32 bpno 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_sigpass_raw()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_dec_sigpass_raw (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32 cblksty 
    )
    -
    -static
    -
    - -

    Decode significant pass.

    - -

    References opj_t1::data, opj_t1::h, J2K_CCP_CBLKSTY_VSC, OPJ_FALSE, opj_t1_dec_sigpass_step_raw(), T1_FLAGS, and opj_t1::w.

    - -

    Referenced by opj_t1_decode_cblk().

    - -
    -
    - -

    ◆ opj_t1_dec_sigpass_step_mqc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_dec_sigpass_step_mqc (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 row,
    OPJ_UINT32 flags_stride,
    OPJ_UINT32 vsc 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_dec_sigpass_step_raw()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_dec_sigpass_step_raw (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 oneplushalf,
    OPJ_UINT32 vsc,
    OPJ_UINT32 row 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_decode_cblk()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t1_decode_cblk (opj_t1_tt1,
    opj_tcd_cblk_dec_tcblk,
    OPJ_UINT32 orient,
    OPJ_UINT32 roishift,
    OPJ_UINT32 cblksty,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_decode_cblks()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_t1_decode_cblks (opj_tcd_ttcd,
    volatile OPJ_BOOLpret,
    opj_tcd_tilecomp_ttilec,
    opj_tccp_ttccp,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    -
    - -

    Decode the code-blocks of a tile.

    -
    Parameters
    - - - - - - - - -
    tcdTCD handle
    pretPointer to return value
    tilecThe tile to decode
    tccpTile coding parameters
    p_managerthe event manager
    p_manager_mutexmutex for the event manager
    check_ptermwhether PTERM correct termination should be checked
    -
    -
    - -

    References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_decode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_tcd_tilecomp::compno, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_tcd_resolution::numbands, opj_aligned_free(), opj_calloc(), OPJ_FALSE, OPJ_RESTRICT, opj_t1_clbl_decode_processor(), opj_tcd_is_subband_area_of_interest(), opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_tcd_resolution::ph, opj_t1_cblk_decode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_decode_processing_job_t::tccp, opj_tcd::thread_pool, opj_t1_cblk_decode_processing_job_t::tilec, opj_tcd::whole_tile_decoding, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_cblk_dec::y1, and opj_tcd_precinct::y1.

    - -

    Referenced by opj_tcd_t1_decode().

    - -
    -
    - -

    ◆ opj_t1_destroy()

    - -
    -
    - - - - - - - - -
    void opj_t1_destroy (opj_t1_tp_t1)
    -
    - -

    Destroys a previously created T1 handle.

    -
    Parameters
    - - -
    p_t1Tier 1 handle to destroy
    -
    -
    - -

    References opj_t1::cblkdatabuffer, opj_t1::data, opj_t1::encoder, opj_t1::flags, opj_aligned_free(), and opj_free().

    - -

    Referenced by opj_t1_clbl_decode_processor(), opj_t1_destroy_wrapper(), and opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_t1_destroy_wrapper()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_t1_destroy_wrapper (void * t1)
    -
    -static
    -
    - -

    References opj_t1_destroy().

    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_t1_enc_clnpass()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_enc_clnpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_UINT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_clnpass_step()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_enc_clnpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_UINT32 agg,
    OPJ_UINT32 runlen,
    OPJ_UINT32 lim,
    OPJ_UINT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_is_term_pass()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static int opj_t1_enc_is_term_pass (opj_tcd_cblk_enc_tcblk,
    OPJ_UINT32 cblksty,
    OPJ_INT32 bpno,
    OPJ_UINT32 passtype 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_refpass()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_enc_refpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_BYTE type 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_refpass_step()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_enc_refpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 ci 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_sigpass()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_enc_sigpass (opj_t1_tt1,
    OPJ_INT32 bpno,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 cblksty 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_enc_sigpass_step()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_enc_sigpass_step (opj_t1_tt1,
    opj_flag_tflagsp,
    OPJ_INT32datap,
    OPJ_INT32 bpno,
    OPJ_INT32 one,
    OPJ_INT32nmsedec,
    OPJ_BYTE type,
    OPJ_UINT32 ci,
    OPJ_UINT32 vsc 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_encode_cblk()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_t1_encode_cblk (opj_t1_tt1,
    opj_tcd_cblk_enc_tcblk,
    OPJ_UINT32 orient,
    OPJ_UINT32 compno,
    OPJ_UINT32 level,
    OPJ_UINT32 qmfbid,
    OPJ_FLOAT64 stepsize,
    OPJ_UINT32 cblksty,
    OPJ_UINT32 numcomps,
    opj_tcd_tile_ttile,
    const OPJ_FLOAT64mct_norms,
    OPJ_UINT32 mct_numcomps 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_encode_cblks()

    - - - -

    ◆ opj_t1_getctxno_mag()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag (OPJ_UINT32 f)
    -
    -static
    -
    - -

    References T1_CTXNO_MAG, T1_MU_0, and T1_SIGMA_NEIGHBOURS.

    - -

    Referenced by opj_t1_enc_refpass_step().

    - -
    -
    - -

    ◆ opj_t1_getctxno_sc()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_BYTE opj_t1_getctxno_sc (OPJ_UINT32 lu)
    -
    -static
    -
    - -

    References lut_ctxno_sc.

    - -

    Referenced by opj_t1_enc_clnpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_t1_getctxno_zc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_BYTE opj_t1_getctxno_zc (opj_mqc_tmqc,
    OPJ_UINT32 f 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_getctxtno_sc_or_spb_index()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index (OPJ_UINT32 fX,
    OPJ_UINT32 pfX,
    OPJ_UINT32 nfX,
    OPJ_UINT32 ci 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_getnmsedec_ref()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_INT16 opj_t1_getnmsedec_ref (OPJ_UINT32 x,
    OPJ_UINT32 bitpos 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_getnmsedec_sig()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_INT16 opj_t1_getnmsedec_sig (OPJ_UINT32 x,
    OPJ_UINT32 bitpos 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t1_getspb()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static INLINE OPJ_BYTE opj_t1_getspb (OPJ_UINT32 lu)
    -
    -static
    -
    - -

    References lut_spb.

    - -

    Referenced by opj_t1_enc_clnpass_step(), and opj_t1_enc_sigpass_step().

    - -
    -
    - -

    ◆ opj_t1_getwmsedec()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_FLOAT64 opj_t1_getwmsedec (OPJ_INT32 nmsedec,
    OPJ_UINT32 compno,
    OPJ_UINT32 level,
    OPJ_UINT32 orient,
    OPJ_INT32 bpno,
    OPJ_UINT32 qmfbid,
    OPJ_FLOAT64 stepsize,
    OPJ_UINT32 numcomps,
    const OPJ_FLOAT64mct_norms,
    OPJ_UINT32 mct_numcomps 
    )
    -
    -static
    -
    - -

    mod fixed_quality

    - -

    References OPJ_ARG_NOT_USED, opj_dwt_getnorm(), and opj_dwt_getnorm_real().

    - -

    Referenced by opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ opj_t1_update_flags()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE void opj_t1_update_flags (opj_flag_tflagsp,
    OPJ_UINT32 ci,
    OPJ_UINT32 s,
    OPJ_UINT32 stride,
    OPJ_UINT32 vsc 
    )
    -
    -static
    -
    -
    -
    -
    #define T1_MU_THIS
    Definition: t1.h:162
    -
    #define T1_CHI_5_I
    Definition: t1.h:127
    -
    #define T1_SIGMA_4
    Definition: t1.h:95
    -
    #define T1_SIGMA_2
    Definition: t1.h:93
    -
    #define T1_SIGMA_NEIGHBOURS
    Definition: t1.h:158
    -
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index(OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
    Definition: t1.c:228
    -
    static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
    Definition: t1.c:258
    -
    #define T1_SIGMA_0
    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to ho...
    Definition: t1.h:91
    -
    #define T1_SIGMA_1
    Definition: t1.h:92
    -
    #define T1_SIGMA_16
    Definition: t1.h:107
    -
    #define T1_SIGMA_3
    Definition: t1.h:94
    -
    #define T1_SIGMA_17
    Definition: t1.h:108
    -
    #define T1_SIGMA_5
    Definition: t1.h:96
    -
    static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
    Definition: t1.c:223
    -
    #define T1_SIGMA_15
    Definition: t1.h:106
    -
    static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
    Definition: t1.c:270
    -
    #define T1_SIGMA_THIS
    Definition: t1.h:153
    -
    #define T1_CHI_1_I
    Definition: t1.h:113
    -
    #define T1_CHI_0_I
    Definition: t1.h:111
    -
    #define T1_PI_THIS
    Definition: t1.h:163
    -
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
    Definition: t1.c:263
    - - - - diff --git a/build/doc/html/t1_8h.html b/build/doc/html/t1_8h.html deleted file mode 100644 index 09df95c2f..000000000 --- a/build/doc/html/t1_8h.html +++ /dev/null @@ -1,1538 +0,0 @@ - - - - - - - -OpenJPEG: t1.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    t1.h File Reference
    -
    -
    - -

    Implementation of the tier-1 coding (coding of code-block coefficients) (T1) -More...

    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_t1
     Tier-1 coding (coding of code-block coefficients) More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define T1_NMSEDEC_BITS   7
     
    #define T1_NUMCTXS_ZC   9
     
    #define T1_NUMCTXS_SC   5
     
    #define T1_NUMCTXS_MAG   3
     
    #define T1_NUMCTXS_AGG   1
     
    #define T1_NUMCTXS_UNI   1
     
    #define T1_CTXNO_ZC   0
     
    #define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
     
    #define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)
     
    #define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
     
    #define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
     
    #define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
     
    #define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
     
    #define T1_TYPE_MQ   0
     Normal coding using entropy coder. More...
     
    #define T1_TYPE_RAW   1
     No encoding the information is store under raw format in codestream (mode switch RAW) More...
     
    #define T1_SIGMA_0   (1U << 0)
     We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to hold the state of 4 data points. More...
     
    #define T1_SIGMA_1   (1U << 1)
     
    #define T1_SIGMA_2   (1U << 2)
     
    #define T1_SIGMA_3   (1U << 3)
     
    #define T1_SIGMA_4   (1U << 4)
     
    #define T1_SIGMA_5   (1U << 5)
     
    #define T1_SIGMA_6   (1U << 6)
     
    #define T1_SIGMA_7   (1U << 7)
     
    #define T1_SIGMA_8   (1U << 8)
     
    #define T1_SIGMA_9   (1U << 9)
     
    #define T1_SIGMA_10   (1U << 10)
     
    #define T1_SIGMA_11   (1U << 11)
     
    #define T1_SIGMA_12   (1U << 12)
     
    #define T1_SIGMA_13   (1U << 13)
     
    #define T1_SIGMA_14   (1U << 14)
     
    #define T1_SIGMA_15   (1U << 15)
     
    #define T1_SIGMA_16   (1U << 16)
     
    #define T1_SIGMA_17   (1U << 17)
     
    #define T1_CHI_0   (1U << 18)
     
    #define T1_CHI_0_I   18
     
    #define T1_CHI_1   (1U << 19)
     
    #define T1_CHI_1_I   19
     
    #define T1_MU_0   (1U << 20)
     
    #define T1_PI_0   (1U << 21)
     
    #define T1_CHI_2   (1U << 22)
     
    #define T1_CHI_2_I   22
     
    #define T1_MU_1   (1U << 23)
     
    #define T1_PI_1   (1U << 24)
     
    #define T1_CHI_3   (1U << 25)
     
    #define T1_MU_2   (1U << 26)
     
    #define T1_PI_2   (1U << 27)
     
    #define T1_CHI_4   (1U << 28)
     
    #define T1_MU_3   (1U << 29)
     
    #define T1_PI_3   (1U << 30)
     
    #define T1_CHI_5   (1U << 31)
     
    #define T1_CHI_5_I   31
     
    #define T1_SIGMA_NW   T1_SIGMA_0
     As an example, the bits T1_SIGMA_3, T1_SIGMA_4 and T1_SIGMA_5 indicate the significance state of the west neighbour of data point zero of our four, the point itself, and its east neighbour respectively. More...
     
    #define T1_SIGMA_N   T1_SIGMA_1
     
    #define T1_SIGMA_NE   T1_SIGMA_2
     
    #define T1_SIGMA_W   T1_SIGMA_3
     
    #define T1_SIGMA_THIS   T1_SIGMA_4
     
    #define T1_SIGMA_E   T1_SIGMA_5
     
    #define T1_SIGMA_SW   T1_SIGMA_6
     
    #define T1_SIGMA_S   T1_SIGMA_7
     
    #define T1_SIGMA_SE   T1_SIGMA_8
     
    #define T1_SIGMA_NEIGHBOURS   (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
     
    #define T1_CHI_THIS   T1_CHI_1
     
    #define T1_CHI_THIS_I   T1_CHI_1_I
     
    #define T1_MU_THIS   T1_MU_0
     
    #define T1_PI_THIS   T1_PI_0
     
    #define T1_CHI_S   T1_CHI_2
     
    #define T1_LUT_SGN_W   (1U << 0)
     
    #define T1_LUT_SIG_N   (1U << 1)
     
    #define T1_LUT_SGN_E   (1U << 2)
     
    #define T1_LUT_SIG_W   (1U << 3)
     
    #define T1_LUT_SGN_N   (1U << 4)
     
    #define T1_LUT_SIG_E   (1U << 5)
     
    #define T1_LUT_SGN_S   (1U << 6)
     
    #define T1_LUT_SIG_S   (1U << 7)
     
    - - - - - - - -

    -Typedefs

    typedef OPJ_UINT32 opj_flag_t
     Flags for 4 consecutive rows of a column. More...
     
    typedef struct opj_t1 opj_t1_t
     Tier-1 coding (coding of code-block coefficients) More...
     
    - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    OPJ_BOOL opj_t1_encode_cblks (opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
     Encode the code-blocks of a tile. More...
     
    void opj_t1_decode_cblks (opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
     Decode the code-blocks of a tile. More...
     
    opj_t1_topj_t1_create (OPJ_BOOL isEncoder)
     Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder. More...
     
    void opj_t1_destroy (opj_t1_t *p_t1)
     Destroys a previously created T1 handle. More...
     
    -

    Detailed Description

    -

    Implementation of the tier-1 coding (coding of code-block coefficients) (T1)

    -

    The functions in T1.C have for goal to realize the tier-1 coding operation. The functions in T1.C are used by some function in TCD.C.

    -

    Macro Definition Documentation

    - -

    ◆ T1_CHI_0

    - -
    -
    - - - - -
    #define T1_CHI_0   (1U << 18)
    -
    - -
    -
    - -

    ◆ T1_CHI_0_I

    - -
    -
    - - - - -
    #define T1_CHI_0_I   18
    -
    - -
    -
    - -

    ◆ T1_CHI_1

    - -
    -
    - - - - -
    #define T1_CHI_1   (1U << 19)
    -
    - -
    -
    - -

    ◆ T1_CHI_1_I

    - -
    -
    - - - - -
    #define T1_CHI_1_I   19
    -
    - -
    -
    - -

    ◆ T1_CHI_2

    - -
    -
    - - - - -
    #define T1_CHI_2   (1U << 22)
    -
    - -
    -
    - -

    ◆ T1_CHI_2_I

    - -
    -
    - - - - -
    #define T1_CHI_2_I   22
    -
    - -
    -
    - -

    ◆ T1_CHI_3

    - -
    -
    - - - - -
    #define T1_CHI_3   (1U << 25)
    -
    - -
    -
    - -

    ◆ T1_CHI_4

    - -
    -
    - - - - -
    #define T1_CHI_4   (1U << 28)
    -
    - -
    -
    - -

    ◆ T1_CHI_5

    - -
    -
    - - - - -
    #define T1_CHI_5   (1U << 31)
    -
    - -
    -
    - -

    ◆ T1_CHI_5_I

    - -
    -
    - - - - -
    #define T1_CHI_5_I   31
    -
    - -
    -
    - -

    ◆ T1_CHI_S

    - -
    -
    - - - - -
    #define T1_CHI_S   T1_CHI_2
    -
    - -
    -
    - -

    ◆ T1_CHI_THIS

    - -
    -
    - - - - -
    #define T1_CHI_THIS   T1_CHI_1
    -
    - -
    -
    - -

    ◆ T1_CHI_THIS_I

    - -
    -
    - - - - -
    #define T1_CHI_THIS_I   T1_CHI_1_I
    -
    - -
    -
    - -

    ◆ T1_CTXNO_AGG

    - -
    -
    - - - - -
    #define T1_CTXNO_AGG   (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
    -
    - -
    -
    - -

    ◆ T1_CTXNO_MAG

    - -
    -
    - - - - -
    #define T1_CTXNO_MAG   (T1_CTXNO_SC+T1_NUMCTXS_SC)
    -
    - -
    -
    - -

    ◆ T1_CTXNO_SC

    - -
    -
    - - - - -
    #define T1_CTXNO_SC   (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
    -
    - -
    -
    - -

    ◆ T1_CTXNO_UNI

    - -
    -
    - - - - -
    #define T1_CTXNO_UNI   (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
    -
    - -
    -
    - -

    ◆ T1_CTXNO_ZC

    - -
    -
    - - - - -
    #define T1_CTXNO_ZC   0
    -
    - -
    -
    - -

    ◆ T1_LUT_SGN_E

    - -
    -
    - - - - -
    #define T1_LUT_SGN_E   (1U << 2)
    -
    - -
    -
    - -

    ◆ T1_LUT_SGN_N

    - -
    -
    - - - - -
    #define T1_LUT_SGN_N   (1U << 4)
    -
    - -
    -
    - -

    ◆ T1_LUT_SGN_S

    - -
    -
    - - - - -
    #define T1_LUT_SGN_S   (1U << 6)
    -
    - -
    -
    - -

    ◆ T1_LUT_SGN_W

    - -
    -
    - - - - -
    #define T1_LUT_SGN_W   (1U << 0)
    -
    - -
    -
    - -

    ◆ T1_LUT_SIG_E

    - -
    -
    - - - - -
    #define T1_LUT_SIG_E   (1U << 5)
    -
    - -
    -
    - -

    ◆ T1_LUT_SIG_N

    - -
    -
    - - - - -
    #define T1_LUT_SIG_N   (1U << 1)
    -
    - -
    -
    - -

    ◆ T1_LUT_SIG_S

    - -
    -
    - - - - -
    #define T1_LUT_SIG_S   (1U << 7)
    -
    - -
    -
    - -

    ◆ T1_LUT_SIG_W

    - -
    -
    - - - - -
    #define T1_LUT_SIG_W   (1U << 3)
    -
    - -
    -
    - -

    ◆ T1_MU_0

    - -
    -
    - - - - -
    #define T1_MU_0   (1U << 20)
    -
    - -
    -
    - -

    ◆ T1_MU_1

    - -
    -
    - - - - -
    #define T1_MU_1   (1U << 23)
    -
    - -
    -
    - -

    ◆ T1_MU_2

    - -
    -
    - - - - -
    #define T1_MU_2   (1U << 26)
    -
    - -
    -
    - -

    ◆ T1_MU_3

    - -
    -
    - - - - -
    #define T1_MU_3   (1U << 29)
    -
    - -
    -
    - -

    ◆ T1_MU_THIS

    - -
    -
    - - - - -
    #define T1_MU_THIS   T1_MU_0
    -
    - -
    -
    - -

    ◆ T1_NMSEDEC_BITS

    - -
    -
    - - - - -
    #define T1_NMSEDEC_BITS   7
    -
    - -
    -
    - -

    ◆ T1_NMSEDEC_FRACBITS

    - -
    -
    - - - - -
    #define T1_NMSEDEC_FRACBITS   (T1_NMSEDEC_BITS-1)
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS

    - -
    -
    - - - - -
    #define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS_AGG

    - -
    -
    - - - - -
    #define T1_NUMCTXS_AGG   1
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS_MAG

    - -
    -
    - - - - -
    #define T1_NUMCTXS_MAG   3
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS_SC

    - -
    -
    - - - - -
    #define T1_NUMCTXS_SC   5
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS_UNI

    - -
    -
    - - - - -
    #define T1_NUMCTXS_UNI   1
    -
    - -
    -
    - -

    ◆ T1_NUMCTXS_ZC

    - -
    -
    - - - - -
    #define T1_NUMCTXS_ZC   9
    -
    - -
    -
    - -

    ◆ T1_PI_0

    - -
    -
    - - - - -
    #define T1_PI_0   (1U << 21)
    -
    - -
    -
    - -

    ◆ T1_PI_1

    - -
    -
    - - - - -
    #define T1_PI_1   (1U << 24)
    -
    - -
    -
    - -

    ◆ T1_PI_2

    - -
    -
    - - - - -
    #define T1_PI_2   (1U << 27)
    -
    - -
    -
    - -

    ◆ T1_PI_3

    - -
    -
    - - - - -
    #define T1_PI_3   (1U << 30)
    -
    - -
    -
    - -

    ◆ T1_PI_THIS

    - -
    -
    - - - - -
    #define T1_PI_THIS   T1_PI_0
    -
    - -
    -
    - -

    ◆ T1_SIGMA_0

    - -
    -
    - - - - -
    #define T1_SIGMA_0   (1U << 0)
    -
    - -

    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to hold the state of 4 data points.

    -

    This corresponds to the 4-point-high columns that the data is processed in.

    -

    These #defines declare the layout of a 32-bit flags word.

    -

    This is currently done for encoding only. The values must NOT be changed, otherwise this is going to break a lot of assumptions.

    - -
    -
    - -

    ◆ T1_SIGMA_1

    - -
    -
    - - - - -
    #define T1_SIGMA_1   (1U << 1)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_10

    - -
    -
    - - - - -
    #define T1_SIGMA_10   (1U << 10)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_11

    - -
    -
    - - - - -
    #define T1_SIGMA_11   (1U << 11)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_12

    - -
    -
    - - - - -
    #define T1_SIGMA_12   (1U << 12)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_13

    - -
    -
    - - - - -
    #define T1_SIGMA_13   (1U << 13)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_14

    - -
    -
    - - - - -
    #define T1_SIGMA_14   (1U << 14)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_15

    - -
    -
    - - - - -
    #define T1_SIGMA_15   (1U << 15)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_16

    - -
    -
    - - - - -
    #define T1_SIGMA_16   (1U << 16)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_17

    - -
    -
    - - - - -
    #define T1_SIGMA_17   (1U << 17)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_2

    - -
    -
    - - - - -
    #define T1_SIGMA_2   (1U << 2)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_3

    - -
    -
    - - - - -
    #define T1_SIGMA_3   (1U << 3)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_4

    - -
    -
    - - - - -
    #define T1_SIGMA_4   (1U << 4)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_5

    - -
    -
    - - - - -
    #define T1_SIGMA_5   (1U << 5)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_6

    - -
    -
    - - - - -
    #define T1_SIGMA_6   (1U << 6)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_7

    - -
    -
    - - - - -
    #define T1_SIGMA_7   (1U << 7)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_8

    - -
    -
    - - - - -
    #define T1_SIGMA_8   (1U << 8)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_9

    - -
    -
    - - - - -
    #define T1_SIGMA_9   (1U << 9)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_E

    - -
    -
    - - - - -
    #define T1_SIGMA_E   T1_SIGMA_5
    -
    - -
    -
    - -

    ◆ T1_SIGMA_N

    - -
    -
    - - - - -
    #define T1_SIGMA_N   T1_SIGMA_1
    -
    - -
    -
    - -

    ◆ T1_SIGMA_NE

    - -
    -
    - - - - -
    #define T1_SIGMA_NE   T1_SIGMA_2
    -
    - -
    -
    - -

    ◆ T1_SIGMA_NEIGHBOURS

    - -
    -
    - - - - -
    #define T1_SIGMA_NEIGHBOURS   (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
    -
    - -
    -
    - -

    ◆ T1_SIGMA_NW

    - -
    -
    - - - - -
    #define T1_SIGMA_NW   T1_SIGMA_0
    -
    - -

    As an example, the bits T1_SIGMA_3, T1_SIGMA_4 and T1_SIGMA_5 indicate the significance state of the west neighbour of data point zero of our four, the point itself, and its east neighbour respectively.

    -

    Many of the bits are arranged so that given a flags word, you can look at the values for the data point 0, then shift the flags word right by 3 bits and look at the same bit positions to see the values for data point 1.

    -

    The #defines below help a bit with this; say you have a flags word f, you can do things like

    -

    (f & T1_SIGMA_THIS)

    -

    to see the significance bit of data point 0, then do

    -

    ((f >> 3) & T1_SIGMA_THIS)

    -

    to see the significance bit of data point 1.

    - -
    -
    - -

    ◆ T1_SIGMA_S

    - -
    -
    - - - - -
    #define T1_SIGMA_S   T1_SIGMA_7
    -
    - -
    -
    - -

    ◆ T1_SIGMA_SE

    - -
    -
    - - - - -
    #define T1_SIGMA_SE   T1_SIGMA_8
    -
    - -
    -
    - -

    ◆ T1_SIGMA_SW

    - -
    -
    - - - - -
    #define T1_SIGMA_SW   T1_SIGMA_6
    -
    - -
    -
    - -

    ◆ T1_SIGMA_THIS

    - -
    -
    - - - - -
    #define T1_SIGMA_THIS   T1_SIGMA_4
    -
    - -
    -
    - -

    ◆ T1_SIGMA_W

    - -
    -
    - - - - -
    #define T1_SIGMA_W   T1_SIGMA_3
    -
    - -
    -
    - -

    ◆ T1_TYPE_MQ

    - -
    -
    - - - - -
    #define T1_TYPE_MQ   0
    -
    - -

    Normal coding using entropy coder.

    - -
    -
    - -

    ◆ T1_TYPE_RAW

    - -
    -
    - - - - -
    #define T1_TYPE_RAW   1
    -
    - -

    No encoding the information is store under raw format in codestream (mode switch RAW)

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ opj_flag_t

    - -
    -
    - - - - -
    typedef OPJ_UINT32 opj_flag_t
    -
    - -

    Flags for 4 consecutive rows of a column.

    - -
    -
    - -

    ◆ opj_t1_t

    - -
    -
    - - - - -
    typedef struct opj_t1 opj_t1_t
    -
    - -

    Tier-1 coding (coding of code-block coefficients)

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_t1_create()

    - -
    -
    - - - - - - - - -
    opj_t1_t* opj_t1_create (OPJ_BOOL isEncoder)
    -
    - -

    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.

    -
    Returns
    a new T1 handle if successful, returns NULL otherwise
    - -

    References opj_t1::encoder, and opj_calloc().

    - -

    Referenced by opj_t1_clbl_decode_processor(), and opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_t1_decode_cblks()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_t1_decode_cblks (opj_tcd_ttcd,
    volatile OPJ_BOOLpret,
    opj_tcd_tilecomp_ttilec,
    opj_tccp_ttccp,
    opj_event_mgr_tp_manager,
    opj_mutex_tp_manager_mutex,
    OPJ_BOOL check_pterm 
    )
    -
    - -

    Decode the code-blocks of a tile.

    -
    Parameters
    - - - - - - - - -
    tcdTCD handle
    pretPointer to return value
    tilecThe tile to decode
    tccpTile coding parameters
    p_managerthe event manager
    p_manager_mutexmutex for the event manager
    check_ptermwhether PTERM correct termination should be checked
    -
    -
    - -

    References opj_t1_cblk_decode_processing_job_t::band, opj_tcd_resolution::bands, opj_t1_cblk_decode_processing_job_t::cblk, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_t1_cblk_decode_processing_job_t::check_pterm, opj_tcd_tilecomp::compno, opj_tcd_precinct::cw, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_tcd_tilecomp::minimum_num_resolutions, opj_t1_cblk_decode_processing_job_t::mustuse_cblkdatabuffer, opj_tcd_resolution::numbands, opj_aligned_free(), opj_calloc(), OPJ_FALSE, OPJ_RESTRICT, opj_t1_clbl_decode_processor(), opj_tcd_is_subband_area_of_interest(), opj_thread_pool_get_thread_count(), opj_thread_pool_submit_job(), opj_t1_cblk_decode_processing_job_t::p_manager, opj_t1_cblk_decode_processing_job_t::p_manager_mutex, opj_tcd_resolution::ph, opj_t1_cblk_decode_processing_job_t::pret, opj_tcd_resolution::pw, opj_t1_cblk_decode_processing_job_t::resno, opj_tcd_tilecomp::resolutions, opj_t1_cblk_decode_processing_job_t::tccp, opj_tcd::thread_pool, opj_t1_cblk_decode_processing_job_t::tilec, opj_tcd::whole_tile_decoding, opj_t1_cblk_decode_processing_job_t::whole_tile_decoding, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_cblk_dec::y1, and opj_tcd_precinct::y1.

    - -

    Referenced by opj_tcd_t1_decode().

    - -
    -
    - -

    ◆ opj_t1_destroy()

    - -
    -
    - - - - - - - - -
    void opj_t1_destroy (opj_t1_tp_t1)
    -
    - -

    Destroys a previously created T1 handle.

    -
    Parameters
    - - -
    p_t1Tier 1 handle to destroy
    -
    -
    - -

    References opj_t1::cblkdatabuffer, opj_t1::data, opj_t1::encoder, opj_t1::flags, opj_aligned_free(), and opj_free().

    - -

    Referenced by opj_t1_clbl_decode_processor(), opj_t1_destroy_wrapper(), and opj_tcd_t1_encode().

    - -
    -
    - -

    ◆ opj_t1_encode_cblks()

    - - -
    - - - - diff --git a/build/doc/html/t1_8h_source.html b/build/doc/html/t1_8h_source.html deleted file mode 100644 index 5701fa378..000000000 --- a/build/doc/html/t1_8h_source.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - - - - -OpenJPEG: t1.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    t1.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2012, Carl Hetherington
    -
    15  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    -
    16  * All rights reserved.
    -
    17  *
    -
    18  * Redistribution and use in source and binary forms, with or without
    -
    19  * modification, are permitted provided that the following conditions
    -
    20  * are met:
    -
    21  * 1. Redistributions of source code must retain the above copyright
    -
    22  * notice, this list of conditions and the following disclaimer.
    -
    23  * 2. Redistributions in binary form must reproduce the above copyright
    -
    24  * notice, this list of conditions and the following disclaimer in the
    -
    25  * documentation and/or other materials provided with the distribution.
    -
    26  *
    -
    27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    37  * POSSIBILITY OF SUCH DAMAGE.
    -
    38  */
    -
    39 #ifndef OPJ_T1_H
    -
    40 #define OPJ_T1_H
    -
    41 
    -
    51 
    -
    52 /* ----------------------------------------------------------------------- */
    -
    53 #define T1_NMSEDEC_BITS 7
    -
    54 
    -
    55 #define T1_NUMCTXS_ZC 9
    -
    56 #define T1_NUMCTXS_SC 5
    -
    57 #define T1_NUMCTXS_MAG 3
    -
    58 #define T1_NUMCTXS_AGG 1
    -
    59 #define T1_NUMCTXS_UNI 1
    -
    60 
    -
    61 #define T1_CTXNO_ZC 0
    -
    62 #define T1_CTXNO_SC (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
    -
    63 #define T1_CTXNO_MAG (T1_CTXNO_SC+T1_NUMCTXS_SC)
    -
    64 #define T1_CTXNO_AGG (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
    -
    65 #define T1_CTXNO_UNI (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
    -
    66 #define T1_NUMCTXS (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
    -
    67 
    -
    68 #define T1_NMSEDEC_FRACBITS (T1_NMSEDEC_BITS-1)
    -
    69 
    -
    70 #define T1_TYPE_MQ 0
    -
    71 #define T1_TYPE_RAW 1
    -
    73 /* BEGINNING of flags that apply to opj_flag_t */
    -
    74 
    -
    85 /* SIGMA: significance state (3 cols x 6 rows)
    -
    86  * CHI: state for negative sample value (1 col x 6 rows)
    -
    87  * MU: state for visited in refinement pass (1 col x 4 rows)
    -
    88  * PI: state for visited in significance pass (1 col * 4 rows)
    -
    89  */
    -
    90 
    -
    91 #define T1_SIGMA_0 (1U << 0)
    -
    92 #define T1_SIGMA_1 (1U << 1)
    -
    93 #define T1_SIGMA_2 (1U << 2)
    -
    94 #define T1_SIGMA_3 (1U << 3)
    -
    95 #define T1_SIGMA_4 (1U << 4)
    -
    96 #define T1_SIGMA_5 (1U << 5)
    -
    97 #define T1_SIGMA_6 (1U << 6)
    -
    98 #define T1_SIGMA_7 (1U << 7)
    -
    99 #define T1_SIGMA_8 (1U << 8)
    -
    100 #define T1_SIGMA_9 (1U << 9)
    -
    101 #define T1_SIGMA_10 (1U << 10)
    -
    102 #define T1_SIGMA_11 (1U << 11)
    -
    103 #define T1_SIGMA_12 (1U << 12)
    -
    104 #define T1_SIGMA_13 (1U << 13)
    -
    105 #define T1_SIGMA_14 (1U << 14)
    -
    106 #define T1_SIGMA_15 (1U << 15)
    -
    107 #define T1_SIGMA_16 (1U << 16)
    -
    108 #define T1_SIGMA_17 (1U << 17)
    -
    109 
    -
    110 #define T1_CHI_0 (1U << 18)
    -
    111 #define T1_CHI_0_I 18
    -
    112 #define T1_CHI_1 (1U << 19)
    -
    113 #define T1_CHI_1_I 19
    -
    114 #define T1_MU_0 (1U << 20)
    -
    115 #define T1_PI_0 (1U << 21)
    -
    116 #define T1_CHI_2 (1U << 22)
    -
    117 #define T1_CHI_2_I 22
    -
    118 #define T1_MU_1 (1U << 23)
    -
    119 #define T1_PI_1 (1U << 24)
    -
    120 #define T1_CHI_3 (1U << 25)
    -
    121 #define T1_MU_2 (1U << 26)
    -
    122 #define T1_PI_2 (1U << 27)
    -
    123 #define T1_CHI_4 (1U << 28)
    -
    124 #define T1_MU_3 (1U << 29)
    -
    125 #define T1_PI_3 (1U << 30)
    -
    126 #define T1_CHI_5 (1U << 31)
    -
    127 #define T1_CHI_5_I 31
    -
    128 
    -
    149 #define T1_SIGMA_NW T1_SIGMA_0
    -
    150 #define T1_SIGMA_N T1_SIGMA_1
    -
    151 #define T1_SIGMA_NE T1_SIGMA_2
    -
    152 #define T1_SIGMA_W T1_SIGMA_3
    -
    153 #define T1_SIGMA_THIS T1_SIGMA_4
    -
    154 #define T1_SIGMA_E T1_SIGMA_5
    -
    155 #define T1_SIGMA_SW T1_SIGMA_6
    -
    156 #define T1_SIGMA_S T1_SIGMA_7
    -
    157 #define T1_SIGMA_SE T1_SIGMA_8
    -
    158 #define T1_SIGMA_NEIGHBOURS (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
    -
    159 
    -
    160 #define T1_CHI_THIS T1_CHI_1
    -
    161 #define T1_CHI_THIS_I T1_CHI_1_I
    -
    162 #define T1_MU_THIS T1_MU_0
    -
    163 #define T1_PI_THIS T1_PI_0
    -
    164 #define T1_CHI_S T1_CHI_2
    -
    165 
    -
    166 #define T1_LUT_SGN_W (1U << 0)
    -
    167 #define T1_LUT_SIG_N (1U << 1)
    -
    168 #define T1_LUT_SGN_E (1U << 2)
    -
    169 #define T1_LUT_SIG_W (1U << 3)
    -
    170 #define T1_LUT_SGN_N (1U << 4)
    -
    171 #define T1_LUT_SIG_E (1U << 5)
    -
    172 #define T1_LUT_SGN_S (1U << 6)
    -
    173 #define T1_LUT_SIG_S (1U << 7)
    -
    174 /* END of flags that apply to opj_flag_t */
    -
    175 
    -
    176 /* ----------------------------------------------------------------------- */
    -
    177 
    - -
    180 
    -
    184 typedef struct opj_t1 {
    -
    185 
    - -
    188 
    - - -
    196 
    - - - - - - -
    203 
    -
    204  /* Thre 3 variables below are only used by the decoder */
    -
    205  /* set to TRUE in multithreaded context */
    - -
    207  /* Temporary buffer to concatenate all chunks of a codebock */
    - -
    209  /* Maximum size available in cblkdatabuffer */
    - -
    211 } opj_t1_t;
    -
    212 
    -
    215 /* ----------------------------------------------------------------------- */
    -
    216 
    - -
    226  opj_tcd_tile_t *tile,
    -
    227  opj_tcp_t *tcp,
    -
    228  const OPJ_FLOAT64 * mct_norms,
    -
    229  OPJ_UINT32 mct_numcomps);
    -
    230 
    - -
    242  volatile OPJ_BOOL* pret,
    -
    243  opj_tcd_tilecomp_t* tilec,
    -
    244  opj_tccp_t* tccp,
    -
    245  opj_event_mgr_t *p_manager,
    -
    246  opj_mutex_t* p_manager_mutex,
    -
    247  OPJ_BOOL check_pterm);
    -
    248 
    -
    249 
    -
    250 
    -
    256 opj_t1_t* opj_t1_create(OPJ_BOOL isEncoder);
    -
    257 
    -
    263 void opj_t1_destroy(opj_t1_t *p_t1);
    -
    264 /* ----------------------------------------------------------------------- */
    -
    268 
    -
    269 #endif /* OPJ_T1_H */
    -
    -
    static void opj_t1_dec_sigpass_mqc_64x64_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:665
    -
    #define T1_MU_THIS
    Definition: t1.h:162
    -
    OPJ_UINT32 cw
    Definition: tcd.h:145
    -
    #define J2K_CCP_CBLKSTY_PTERM
    Predictable termination.
    Definition: j2k.h:62
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    Definition: thread.c:504
    -
    static void opj_t1_encode_cblk(opj_t1_t *t1, opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 cblksty, OPJ_UINT32 numcomps, opj_tcd_tile_t *tile, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    mod fixed_quality
    Definition: t1.c:2269
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    -
    void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for RAW decoding.
    Definition: mqc.c:531
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp)
    Initialize the encoder.
    Definition: mqc.c:283
    -
    #define opj_t1_dec_sigpass_mqc_internal(t1, bpno, vsc, w, h, flags_stride)
    Definition: t1.c:621
    -
    #define T1_CHI_2_I
    Definition: t1.h:117
    -
    OPJ_INT32 x0
    Definition: tcd.h:81
    -
    void opj_mqc_reset_enc(opj_mqc_t *mqc)
    RESET mode switch.
    Definition: mqc.c:415
    -
    MQ coder.
    Definition: mqc.h:74
    -
    OPJ_FLOAT64 opj_dwt_getnorm_real(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the irreversible 9-7 DWT.
    Definition: dwt.c:1267
    -
    OPJ_BYTE * bp
    pointer to the current position in the buffer
    Definition: mqc.h:84
    -
    #define J2K_CCP_CBLKSTY_SEGSYM
    Segmentation symbols are used.
    Definition: j2k.h:63
    -
    opj_flag_t * flags
    Flags used by decoder and encoder.
    Definition: t1.h:195
    -
    void opj_mqc_erterm_enc(opj_mqc_t *mqc)
    ERTERM mode switch (PTERM)
    Definition: mqc.c:462
    -
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    -
    static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a)
    Definition: opj_intmath.h:152
    -
    FIXME DOC.
    Definition: tcd.h:77
    -
    const opj_mqc_state_t ** curctx
    Active context.
    Definition: mqc.h:92
    -
    #define OPJ_COMMON_CBLK_DATA_EXTRA
    Margin for a fake FFFF marker.
    Definition: opj_common.h:39
    -
    OPJ_UINT32 data_stride
    Definition: t1.h:201
    -
    #define T1_CTXNO_UNI
    Definition: t1.h:65
    -
    void opj_mqc_bypass_init_enc(opj_mqc_t *mqc)
    BYPASS mode switch, initialization operation.
    Definition: mqc.c:334
    -
    OPJ_INT32 roishift
    Region Of Interest shift.
    Definition: j2k.h:195
    -
    static INLINE void opj_t1_enc_sigpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci, OPJ_UINT32 vsc)
    Encode significant pass.
    Definition: t1.c:332
    -
    #define T1_SIGMA_10
    Definition: t1.h:101
    -
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    -
    OPJ_INT32 x0
    Definition: tcd.h:159
    -
    Segment of a code-block.
    Definition: tcd.h:105
    -
    opj_tcd_band_t * band
    Definition: t1.c:1583
    -
    #define T1_PI_3
    Definition: t1.h:125
    -
    void opj_mqc_segmark_enc(opj_mqc_t *mqc)
    SEGMARK mode switch (SEGSYM)
    Definition: mqc.c:478
    - -
    OPJ_INT32 x0
    Definition: tcd.h:173
    -
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    -
    #define T1_CTXNO_AGG
    Definition: t1.h:64
    -
    OPJ_INT32 y1
    Definition: tcd.h:173
    -
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    -
    static void opj_t1_dec_clnpass_check_segsym(opj_t1_t *t1, OPJ_INT32 cblksty)
    Definition: t1.c:1333
    - -
    OPJ_INT32 y1
    Definition: tcd.h:144
    -
    OPJ_INT32 x1
    Definition: tcd.h:173
    -
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    -
    #define T1_PI_0
    Definition: t1.h:115
    -
    static INLINE void opj_t1_update_flags(opj_flag_t *flagsp, OPJ_UINT32 ci, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 vsc)
    Definition: t1.c:322
    -
    #define T1_SIGMA_4
    Definition: t1.h:95
    -
    static void opj_t1_dec_clnpass_generic_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1368
    -
    OPJ_INT32 x1
    Definition: tcd.h:124
    -
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    -
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    #define J2K_CCP_CBLKSTY_LAZY
    Selective arithmetic coding bypass.
    Definition: j2k.h:58
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    #define T1_SIGMA_NEIGHBOURS
    Definition: t1.h:158
    -
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    -
    static void opj_t1_clbl_decode_processor(void *user_data, opj_tls_t *tls)
    Definition: t1.c:1598
    -
    OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm)
    Return number of extra bytes to add to opj_mqc_numbytes() for the² size of a non-terminating BYPASS p...
    Definition: mqc.c:371
    -
    void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d)
    BYPASS mode switch, coding operation.
    Definition: mqc.c:352
    -
    static const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:138
    -
    #define T1_PI_2
    Definition: t1.h:122
    -
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    -
    @ tcp
    Definition: query_parser.h:41
    -
    static void opj_t1_enc_clnpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_UINT32 cblksty)
    Encode clean-up pass.
    Definition: t1.c:1160
    -
    OPJ_UINT32 w
    Definition: t1.h:197
    -
    OPJ_UINT32 h
    Definition: t1.h:198
    -
    OPJ_INT32 x1
    Definition: tcd.h:191
    -
    Message handler object used for.
    Definition: event.h:50
    -
    void opq_mqc_finish_dec(opj_mqc_t *mqc)
    Terminate RAW/MQC decoding.
    Definition: mqc.c:540
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    OPJ_UINT32 ph
    Definition: tcd.h:175
    -
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    -
    OPJ_UINT32 len
    Definition: tcd.h:60
    -
    #define opj_t1_dec_clnpass_step_macro(check_flags, partial, flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
    Definition: t1.c:1115
    -
    struct opj_t1 opj_t1_t
    Tier-1 coding (coding of code-block coefficients)
    -
    OPJ_INT32 y1
    Definition: tcd.h:124
    -
    static void opj_t1_dec_refpass_mqc_64x64(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1005
    -
    #define OPJ_TLS_KEY_T1
    Definition: tls_keys.h:35
    -
    static const OPJ_BYTE lut_ctxno_zc[2048]
    Definition: t1_luts.h:3
    -
    OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc)
    Return the number of bytes written/read since initialisation.
    Definition: mqc.c:274
    -
    OPJ_BYTE * data
    Definition: tcd.h:78
    -
    OPJ_UINT32 a
    only used by MQ decoder
    Definition: mqc.h:78
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos)
    Definition: t1.c:284
    -
    opj_tccp_t * tccp
    Definition: t1.c:1585
    -
    static void opj_t1_dec_refpass_raw(opj_t1_t *t1, OPJ_INT32 bpno)
    Decode refinement pass.
    Definition: t1.c:907
    -
    static INLINE void opj_t1_enc_refpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 ci)
    Encode refinement pass step.
    Definition: t1.c:718
    -
    static void opj_t1_dec_sigpass_mqc_generic_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:679
    -
    #define T1_CHI_THIS_I
    Definition: t1.h:161
    -
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    OPJ_INT32 x0
    Definition: tcd.h:191
    -
    OPJ_UINT32 pw
    Definition: tcd.h:175
    -
    OPJ_INT32 x0
    Definition: tcd.h:124
    -
    static OPJ_FLOAT64 opj_t1_getwmsedec(OPJ_INT32 nmsedec, OPJ_UINT32 compno, OPJ_UINT32 level, OPJ_UINT32 orient, OPJ_INT32 bpno, OPJ_UINT32 qmfbid, OPJ_FLOAT64 stepsize, OPJ_UINT32 numcomps, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    mod fixed_quality
    Definition: t1.c:1407
    -
    OPJ_UINT32 resno
    Definition: t1.c:1581
    -
    OPJ_BOOL check_pterm
    Definition: t1.c:1590
    -
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    -
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    -
    Tier-1 coding (coding of code-block coefficients)
    Definition: t1.h:184
    -
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    -
    #define opj_t1_dec_sigpass_step_mqc_macro(flags, flagsp, flags_stride, data, data_stride, ci, mqc, curctx, v, a, c, ct, oneplushalf, vsc)
    Definition: t1.c:413
    -
    static INLINE OPJ_UINT32 opj_t1_getctxtno_sc_or_spb_index(OPJ_UINT32 fX, OPJ_UINT32 pfX, OPJ_UINT32 nfX, OPJ_UINT32 ci)
    Definition: t1.c:228
    -
    opj_tcd_cblk_dec_t * cblk
    Definition: t1.c:1582
    -
    void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob)
    Set the state of a particular context.
    Definition: mqc.c:554
    -
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    -
    OPJ_INT32 x1
    Definition: tcd.h:144
    -
    static int opj_t1_enc_is_term_pass(opj_tcd_cblk_enc_t *cblk, OPJ_UINT32 cblksty, OPJ_INT32 bpno, OPJ_UINT32 passtype)
    Definition: t1.c:2238
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    OPJ_UINT32 opj_flag_t
    Flags for 4 consecutive rows of a column.
    Definition: t1.h:179
    -
    Precinct structure.
    Definition: tcd.h:142
    -
    static void opj_t1_dec_sigpass_mqc_64x64_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:672
    -
    static INLINE OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 lu)
    Definition: t1.c:258
    - -
    OPJ_INT32 y0
    Definition: tcd.h:81
    -
    static OPJ_INT16 opj_t1_getnmsedec_sig(OPJ_UINT32 x, OPJ_UINT32 bitpos)
    Definition: t1.c:275
    -
    #define opj_t1_dec_clnpass_internal(t1, bpno, vsc, w, h, flags_stride)
    Definition: t1.c:1244
    -
    static INLINE OPJ_INT32 opj_int_fix_mul_t1(OPJ_INT32 a, OPJ_INT32 b)
    Definition: opj_intmath.h:265
    -
    OPJ_INT32 x0
    Definition: tcd.h:144
    -
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    -
    volatile OPJ_BOOL * pret
    Definition: t1.c:1587
    -
    #define T1_SIGMA_1
    Definition: t1.h:92
    -
    void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len, OPJ_UINT32 extra_writable_bytes)
    Initialize the decoder for MQ decoding.
    Definition: mqc.c:507
    -
    FIXME DOC.
    Definition: tcd.h:57
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    #define T1_MU_0
    Definition: t1.h:114
    -
    OPJ_FLOAT64 opj_dwt_getnorm(OPJ_UINT32 level, OPJ_UINT32 orient)
    Get the norm of a wavelet function of a subband at a specified level for the reversible 5-3 DWT.
    Definition: dwt.c:1234
    -
    OPJ_BYTE * end
    pointer to the end of the buffer
    Definition: mqc.h:88
    -
    static INLINE void opj_t1_dec_sigpass_step_mqc(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 flags_stride, OPJ_UINT32 vsc)
    Definition: t1.c:439
    -
    OPJ_INT32 x1
    Definition: tcd.h:81
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    Sub-band structure.
    Definition: tcd.h:157
    -
    OPJ_UINT32 totalpasses
    Definition: tcd.h:89
    -
    OPJ_INT32 * data
    Definition: t1.h:189
    -
    static const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:119
    -
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    -
    OPJ_BOOL encoder
    Definition: t1.h:202
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    #define opj_mqc_setcurctx(mqc, ctxno)
    Set the current context used for coding/decoding.
    Definition: mqc.h:137
    -
    OPJ_BYTE * cblkdatabuffer
    Definition: t1.h:208
    -
    #define opj_t1_dec_refpass_mqc_internal(t1, bpno, w, h, flags_stride)
    Definition: t1.c:963
    -
    OPJ_BITFIELD term
    Definition: tcd.h:61
    -
    static void opj_t1_dec_clnpass_64x64_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1361
    -
    OPJ_FLOAT64 distortiondec
    Definition: tcd.h:59
    -
    OPJ_INT32 y0
    Definition: tcd.h:173
    -
    void opj_mqc_flush(opj_mqc_t *mqc)
    Flush the encoder, so that all remaining data is written.
    Definition: mqc.c:315
    -
    #define T1_SIGMA_13
    Definition: t1.h:104
    -
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    -
    #define T1_TYPE_MQ
    Normal coding using entropy coder.
    Definition: t1.h:70
    -
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    -
    #define OPJ_RESTRICT
    Definition: opj_includes.h:121
    -
    OPJ_UINT32 datasize
    Definition: t1.h:199
    -
    OPJ_BOOL mustuse_cblkdatabuffer
    Definition: t1.h:206
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    opj_mutex_t * p_manager_mutex
    Definition: t1.c:1589
    -
    static void opj_t1_destroy_wrapper(void *t1)
    Definition: t1.c:1593
    -
    OPJ_BYTE * start
    pointer to the start of the buffer
    Definition: mqc.h:86
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_FLOAT64 distotile
    Definition: tcd.h:234
    -
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    -
    static void opj_t1_dec_clnpass_64x64_novsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1354
    -
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    -
    static const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:157
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    -
    static void opj_t1_dec_sigpass_raw(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Decode significant pass.
    Definition: t1.c:557
    -
    static void opj_t1_enc_refpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type)
    Encode refinement pass.
    Definition: t1.c:800
    -
    static const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:100
    -
    union opj_tcd_precinct::@3 cblks
    -
    static INLINE void opj_t1_dec_sigpass_step_raw(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 vsc, OPJ_UINT32 row)
    Decode significant pass.
    Definition: t1.c:389
    -
    OPJ_INT32 y0
    Definition: tcd.h:144
    -
    static void opj_t1_dec_sigpass_mqc_generic_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:687
    -
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    -
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    -
    #define T1_FLAGS(x, y)
    Definition: t1.c:60
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    -
    #define T1_SIGMA_3
    Definition: t1.h:94
    -
    static void opj_t1_dec_clnpass_generic_vsc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1376
    -
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    -
    static void opj_t1_dec_clnpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 oneplushalf, OPJ_UINT32 row, OPJ_UINT32 vsc)
    Decode clean-up pass.
    Definition: t1.c:1143
    -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    -
    OPJ_UINT32 len
    Definition: tcd.h:99
    -
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    -
    static OPJ_BOOL opj_t1_allocate_buffers(opj_t1_t *t1, OPJ_UINT32 w, OPJ_UINT32 h)
    Definition: t1.c:1438
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    OPJ_INT32 y0
    Definition: tcd.h:159
    -
    void opj_mqc_resetstates(opj_mqc_t *mqc)
    Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
    Definition: mqc.c:546
    -
    static void opj_t1_dec_refpass_mqc_generic(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1012
    -
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    -
    #define T1_SIGMA_5
    Definition: t1.h:96
    -
    Code-block for decoding.
    Definition: tcd.h:120
    -
    OPJ_FLOAT32 stepsize
    Definition: tcd.h:167
    -
    void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm)
    BYPASS mode switch, flush operation.
    Definition: mqc.c:377
    -
    #define T1_CTXNO_MAG
    Definition: t1.h:63
    -
    Tile-component coding parameters.
    Definition: j2k.h:175
    -
    OPJ_INT32 * data
    Definition: tcd.h:204
    -
    static INLINE OPJ_BYTE opj_t1_getctxno_zc(opj_mqc_t *mqc, OPJ_UINT32 f)
    Definition: t1.c:223
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    -
    #define T1_SIGMA_7
    Definition: t1.h:98
    -
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    -
    FIXME DOC.
    Definition: tcd.h:228
    -
    static INLINE OPJ_UINT32 opj_mqc_raw_decode(opj_mqc_t *mqc)
    Decode a symbol using raw-decoder.
    Definition: mqc_inl.h:74
    -
    OPJ_UINT32 compno
    Definition: tcd.h:193
    -
    #define T1_PI_1
    Definition: t1.h:119
    -
    OPJ_INT32 y0
    Definition: tcd.h:124
    -
    opj_event_mgr_t * p_manager
    Definition: t1.c:1588
    -
    void * opj_aligned_malloc(size_t size)
    Allocate memory aligned to a 16 byte boundary.
    Definition: opj_malloc.c:207
    -
    OPJ_UINT32 len
    Definition: tcd.h:106
    -
    #define J2K_CCP_CBLKSTY_RESET
    Reset context probabilities on coding pass boundaries.
    Definition: j2k.h:59
    -
    static INLINE OPJ_BYTE opj_t1_getspb(OPJ_UINT32 lu)
    Definition: t1.c:270
    -
    static void opj_t1_dec_clnpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Definition: t1.c:1384
    -
    #define opj_t1_dec_refpass_step_mqc_macro(flags, data, data_stride, ci, mqc, curctx, v, a, c, ct, poshalf)
    Definition: t1.c:772
    -
    OPJ_UINT32 c
    temporary buffer where bits are coded or decoded
    Definition: mqc.h:76
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    -
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    -
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    -
    OPJ_BYTE * data
    Definition: tcd.h:98
    -
    OPJ_UINT32 cblkdatabuffersize
    Definition: t1.h:210
    -
    #define T1_SIGMA_THIS
    Definition: t1.h:153
    -
    void opj_mqc_restart_init_enc(opj_mqc_t *mqc)
    RESTART mode switch (TERMALL) reinitialisation.
    Definition: mqc.c:442
    -
    void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d)
    Encode a symbol using the MQ-coder.
    Definition: mqc.c:306
    -
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    -
    #define T1_CHI_1_I
    Definition: t1.h:113
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    static INLINE void opj_t1_dec_refpass_step_raw(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
    Decode refinement pass.
    Definition: t1.c:753
    -
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    -
    static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1, opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 orient, OPJ_UINT32 roishift, OPJ_UINT32 cblksty, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode 1 code-block.
    Definition: t1.c:1934
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    static const OPJ_BYTE lut_ctxno_sc[256]
    Definition: t1_luts.h:70
    -
    static void opj_t1_enc_sigpass(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 *nmsedec, OPJ_BYTE type, OPJ_UINT32 cblksty)
    Encode significant pass.
    Definition: t1.c:456
    -
    OPJ_BOOL mustuse_cblkdatabuffer
    Definition: t1.c:1586
    -
    #define J2K_CCP_CBLKSTY_TERMALL
    Termination on each coding pass.
    Definition: j2k.h:60
    -
    #define opj_t1_update_flags_macro(flags, flagsp, ci, s, stride, vsc)
    Definition: t1.c:293
    -
    #define T1_CHI_0_I
    Definition: t1.h:111
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    -
    static void opj_t1_enc_clnpass_step(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 bpno, OPJ_INT32 one, OPJ_INT32 *nmsedec, OPJ_UINT32 agg, OPJ_UINT32 runlen, OPJ_UINT32 lim, OPJ_UINT32 cblksty)
    Encode clean-up pass step.
    Definition: t1.c:1033
    -
    OPJ_INT32 y1
    Definition: tcd.h:82
    -
    OPJ_UINT32 rate
    Definition: tcd.h:58
    -
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    -
    static void opj_t1_dec_refpass_mqc(opj_t1_t *t1, OPJ_INT32 bpno)
    Definition: t1.c:1019
    -
    static const OPJ_BYTE lut_spb[256]
    Definition: t1_luts.h:89
    -
    OPJ_UINT32 ct
    number of bits already read or free to write
    Definition: mqc.h:80
    -
    static INLINE void opj_t1_dec_refpass_step_mqc(opj_t1_t *t1, opj_flag_t *flagsp, OPJ_INT32 *datap, OPJ_INT32 poshalf, OPJ_UINT32 row)
    Definition: t1.c:785
    -
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    -
    opj_mqc_t mqc
    MQC component.
    Definition: t1.h:187
    -
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    -
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    -
    #define T1_PI_THIS
    Definition: t1.h:163
    -
    OPJ_UINT32 flagssize
    Definition: t1.h:200
    -
    #define T1_TYPE_RAW
    No encoding the information is store under raw format in codestream (mode switch RAW)
    Definition: t1.h:71
    -
    OPJ_BOOL whole_tile_decoding
    Definition: t1.c:1580
    -
    OPJ_UINT32 end_of_byte_stream_counter
    Definition: mqc.h:82
    -
    static INLINE OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f)
    Definition: t1.c:263
    -
    OPJ_UINT32 ch
    Definition: tcd.h:145
    -
    static void opj_t1_dec_sigpass_mqc(opj_t1_t *t1, OPJ_INT32 bpno, OPJ_INT32 cblksty)
    Definition: t1.c:695
    -
    Definition: thread.c:605
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    opj_tcd_tilecomp_t * tilec
    Definition: t1.c:1584
    -
    #define J2K_CCP_CBLKSTY_VSC
    Vertically stripe causal context.
    Definition: j2k.h:61
    -
    #define T1_NMSEDEC_BITS
    Definition: t1.h:53
    -
    #define opj_mqc_decode(d, mqc)
    Decode a symbol.
    Definition: mqc_inl.h:193
    -
    const OPJ_BYTE * lut_ctxno_zc_orient
    Definition: mqc.h:94
    - - - - diff --git a/build/doc/html/t1__generate__luts_8c.html b/build/doc/html/t1__generate__luts_8c.html deleted file mode 100644 index a83cdee5d..000000000 --- a/build/doc/html/t1__generate__luts_8c.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - -OpenJPEG: t1_generate_luts.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    t1_generate_luts.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - -

    -Functions

    static int t1_init_ctxno_zc (OPJ_UINT32 f, OPJ_UINT32 orient)
     
    static int t1_init_ctxno_sc (OPJ_UINT32 f)
     
    static int t1_init_spb (OPJ_UINT32 f)
     
    static void dump_array16 (int array[], int size)
     
    int main (int argc, char **argv)
     
    -

    Function Documentation

    - -

    ◆ dump_array16()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void dump_array16 (int array[],
    int size 
    )
    -
    -static
    -
    - -

    Referenced by main().

    - -
    -
    - -

    ◆ main()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    int main (int argc,
    char ** argv 
    )
    -
    -
    - -

    ◆ t1_init_ctxno_sc()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static int t1_init_ctxno_sc (OPJ_UINT32 f)
    -
    -static
    -
    -
    - -

    ◆ t1_init_ctxno_zc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static int t1_init_ctxno_zc (OPJ_UINT32 f,
    OPJ_UINT32 orient 
    )
    -
    -static
    -
    -
    - -

    ◆ t1_init_spb()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static int t1_init_spb (OPJ_UINT32 f)
    -
    -static
    -
    -
    -
    - - - - diff --git a/build/doc/html/t1__luts_8h.html b/build/doc/html/t1__luts_8h.html deleted file mode 100644 index 1e4b0fc94..000000000 --- a/build/doc/html/t1__luts_8h.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - -OpenJPEG: t1_luts.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    t1_luts.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - -

    -Variables

    static const OPJ_BYTE lut_ctxno_zc [2048]
     
    static const OPJ_BYTE lut_ctxno_sc [256]
     
    static const OPJ_BYTE lut_spb [256]
     
    static const OPJ_INT16 lut_nmsedec_sig [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_sig0 [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_ref [1U<< T1_NMSEDEC_BITS]
     
    static const OPJ_INT16 lut_nmsedec_ref0 [1U<< T1_NMSEDEC_BITS]
     
    -

    Variable Documentation

    - -

    ◆ lut_ctxno_sc

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_BYTE lut_ctxno_sc[256]
    -
    -static
    -
    -Initial value:
    = {
    -
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    -
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    -
    0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    -
    0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    -
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    -
    0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    -
    0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    -
    0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    -
    0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb,
    -
    0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc,
    -
    0xd, 0xd, 0xd, 0xd, 0xb, 0xb, 0xb, 0xb, 0xd, 0xa, 0xd, 0xa, 0xa, 0xb, 0xa, 0xb,
    -
    0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xa, 0xc, 0x9, 0xa, 0xb, 0x9, 0xc,
    -
    0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc,
    -
    0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd,
    -
    0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xa, 0xc, 0x9, 0xa, 0xd, 0x9, 0xc,
    -
    0xb, 0xb, 0xb, 0xb, 0xd, 0xd, 0xd, 0xd, 0xb, 0xa, 0xb, 0xa, 0xa, 0xd, 0xa, 0xd
    -
    }
    -
    -

    Referenced by opj_t1_getctxno_sc().

    - -
    -
    - -

    ◆ lut_ctxno_zc

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_BYTE lut_ctxno_zc[2048]
    -
    -static
    -
    - -

    Referenced by main(), opj_t1_decode_cblk(), and opj_t1_encode_cblk().

    - -
    -
    - -

    ◆ lut_nmsedec_ref

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    -
    -static
    -
    -Initial value:
    = {
    -
    0x1800, 0x1780, 0x1700, 0x1680, 0x1600, 0x1580, 0x1500, 0x1480,
    -
    0x1400, 0x1380, 0x1300, 0x1280, 0x1200, 0x1180, 0x1100, 0x1080,
    -
    0x1000, 0x0f80, 0x0f00, 0x0e80, 0x0e00, 0x0d80, 0x0d00, 0x0c80,
    -
    0x0c00, 0x0b80, 0x0b00, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    -
    0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0500, 0x0480,
    -
    0x0400, 0x0380, 0x0300, 0x0280, 0x0200, 0x0180, 0x0100, 0x0080,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0080, 0x0100, 0x0180, 0x0200, 0x0280, 0x0300, 0x0380,
    -
    0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b00, 0x0b80,
    -
    0x0c00, 0x0c80, 0x0d00, 0x0d80, 0x0e00, 0x0e80, 0x0f00, 0x0f80,
    -
    0x1000, 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
    -
    0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780
    -
    }
    -
    -

    Referenced by main(), and opj_t1_getnmsedec_ref().

    - -
    -
    - -

    ◆ lut_nmsedec_ref0

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    -
    -static
    -
    -Initial value:
    = {
    -
    0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x1b00, 0x1a80, 0x1980,
    -
    0x1880, 0x1780, 0x1700, 0x1600, 0x1500, 0x1480, 0x1380, 0x1300,
    -
    0x1200, 0x1180, 0x1080, 0x1000, 0x0f00, 0x0e80, 0x0e00, 0x0d00,
    -
    0x0c80, 0x0c00, 0x0b80, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    -
    0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0580, 0x0500,
    -
    0x0480, 0x0400, 0x0400, 0x0380, 0x0300, 0x0300, 0x0280, 0x0280,
    -
    0x0200, 0x0200, 0x0180, 0x0180, 0x0100, 0x0100, 0x0100, 0x0080,
    -
    0x0080, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    -
    0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    -
    0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    -
    0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    -
    0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    -
    0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    -
    0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00
    -
    }
    -
    -

    Referenced by main(), and opj_t1_getnmsedec_ref().

    - -
    -
    - -

    ◆ lut_nmsedec_sig

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    -
    -static
    -
    -Initial value:
    = {
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    0x0000, 0x0180, 0x0300, 0x0480, 0x0600, 0x0780, 0x0900, 0x0a80,
    -
    0x0c00, 0x0d80, 0x0f00, 0x1080, 0x1200, 0x1380, 0x1500, 0x1680,
    -
    0x1800, 0x1980, 0x1b00, 0x1c80, 0x1e00, 0x1f80, 0x2100, 0x2280,
    -
    0x2400, 0x2580, 0x2700, 0x2880, 0x2a00, 0x2b80, 0x2d00, 0x2e80,
    -
    0x3000, 0x3180, 0x3300, 0x3480, 0x3600, 0x3780, 0x3900, 0x3a80,
    -
    0x3c00, 0x3d80, 0x3f00, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    -
    0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5100, 0x5280,
    -
    0x5400, 0x5580, 0x5700, 0x5880, 0x5a00, 0x5b80, 0x5d00, 0x5e80,
    -
    0x6000, 0x6180, 0x6300, 0x6480, 0x6600, 0x6780, 0x6900, 0x6a80,
    -
    0x6c00, 0x6d80, 0x6f00, 0x7080, 0x7200, 0x7380, 0x7500, 0x7680
    -
    }
    -
    -

    Referenced by main(), and opj_t1_getnmsedec_sig().

    - -
    -
    - -

    ◆ lut_nmsedec_sig0

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    -
    -static
    -
    -Initial value:
    = {
    -
    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    -
    0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    -
    0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    -
    0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    -
    0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    -
    0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    -
    0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00,
    -
    0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2680, 0x2780,
    -
    0x2880, 0x2980, 0x2b00, 0x2c00, 0x2d00, 0x2e80, 0x2f80, 0x3100,
    -
    0x3200, 0x3380, 0x3480, 0x3600, 0x3700, 0x3880, 0x3a00, 0x3b00,
    -
    0x3c80, 0x3e00, 0x3f80, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    -
    0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5180, 0x5300,
    -
    0x5480, 0x5600, 0x5800, 0x5980, 0x5b00, 0x5d00, 0x5e80, 0x6080,
    -
    0x6200, 0x6400, 0x6580, 0x6780, 0x6900, 0x6b00, 0x6d00, 0x6e80,
    -
    0x7080, 0x7280, 0x7480, 0x7600, 0x7800, 0x7a00, 0x7c00, 0x7e00
    -
    }
    -
    -

    Referenced by main(), and opj_t1_getnmsedec_sig().

    - -
    -
    - -

    ◆ lut_spb

    - -
    -
    - - - - - -
    - - - - -
    const OPJ_BYTE lut_spb[256]
    -
    -static
    -
    -Initial value:
    = {
    -
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    -
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    -
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1,
    -
    1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1
    -
    }
    -
    -

    Referenced by opj_t1_getspb().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/t1__luts_8h_source.html b/build/doc/html/t1__luts_8h_source.html deleted file mode 100644 index fa98b7cca..000000000 --- a/build/doc/html/t1__luts_8h_source.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - -OpenJPEG: t1_luts.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    t1_luts.h
    -
    -
    -Go to the documentation of this file.
    1 /* This file was automatically generated by t1_generate_luts.c */
    -
    2 
    -
    3 static const OPJ_BYTE lut_ctxno_zc[2048] = {
    -
    4  0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7, 0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7,
    -
    5  5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    6  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    7  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    8  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    9  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    10  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    11  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    12  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    13  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    14  2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    15  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    16  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    17  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    18  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    19  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    20  0, 1, 5, 6, 1, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 0, 1, 5, 6, 1, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    -
    21  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    -
    22  1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    -
    23  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    -
    24  5, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 5, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    25  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    26  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    27  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    28  1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 1, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    -
    29  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    -
    30  2, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7, 2, 2, 6, 6, 2, 2, 6, 6, 3, 3, 7, 7, 3, 3, 7, 7,
    -
    31  3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7, 3, 3, 7, 7, 3, 3, 7, 7, 4, 4, 7, 7, 4, 4, 7, 7,
    -
    32  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    33  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    34  6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 6, 6, 8, 8, 6, 6, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    35  7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8, 7, 7, 8, 8,
    -
    36  0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7, 0, 1, 3, 3, 1, 2, 3, 3, 5, 6, 7, 7, 6, 6, 7, 7,
    -
    37  5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    38  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    39  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    40  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    41  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    42  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    43  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    44  1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 1, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    45  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    46  2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7,
    -
    47  6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    48  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    49  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    50  3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 4, 4, 3, 3, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7,
    -
    51  7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,
    -
    52  0, 3, 1, 4, 3, 6, 4, 7, 1, 4, 2, 5, 4, 7, 5, 7, 0, 3, 1, 4, 3, 6, 4, 7, 1, 4, 2, 5, 4, 7, 5, 7,
    -
    53  1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    -
    54  3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8,
    -
    55  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    56  1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 1, 4, 2, 5, 4, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    -
    57  2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7, 2, 5, 2, 5, 5, 7, 5, 7,
    -
    58  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    59  5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    60  3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 3, 6, 4, 7, 6, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8,
    -
    61  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    62  6, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 6, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    -
    63  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    -
    64  4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 4, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    65  5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8, 5, 7, 5, 7, 7, 8, 7, 8,
    -
    66  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8,
    -
    67  7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8
    -
    68 };
    -
    69 
    -
    70 static const OPJ_BYTE lut_ctxno_sc[256] = {
    -
    71  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    -
    72  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    -
    73  0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    -
    74  0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    -
    75  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb,
    -
    76  0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd,
    -
    77  0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0x9, 0xd, 0xa, 0x9, 0xc, 0xa, 0xb,
    -
    78  0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0x9, 0xb, 0xa, 0x9, 0xc, 0xa, 0xd,
    -
    79  0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb,
    -
    80  0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xd, 0xb, 0xc, 0xc, 0xd, 0xb, 0xc, 0xc,
    -
    81  0xd, 0xd, 0xd, 0xd, 0xb, 0xb, 0xb, 0xb, 0xd, 0xa, 0xd, 0xa, 0xa, 0xb, 0xa, 0xb,
    -
    82  0xd, 0xd, 0xc, 0xc, 0xb, 0xb, 0xc, 0xc, 0xd, 0xa, 0xc, 0x9, 0xa, 0xb, 0x9, 0xc,
    -
    83  0xa, 0xa, 0x9, 0x9, 0xa, 0xa, 0x9, 0x9, 0xb, 0xd, 0xc, 0xc, 0xb, 0xd, 0xc, 0xc,
    -
    84  0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd, 0xb, 0xd,
    -
    85  0xb, 0xb, 0xc, 0xc, 0xd, 0xd, 0xc, 0xc, 0xb, 0xa, 0xc, 0x9, 0xa, 0xd, 0x9, 0xc,
    -
    86  0xb, 0xb, 0xb, 0xb, 0xd, 0xd, 0xd, 0xd, 0xb, 0xa, 0xb, 0xa, 0xa, 0xd, 0xa, 0xd
    -
    87 };
    -
    88 
    -
    89 static const OPJ_BYTE lut_spb[256] = {
    -
    90  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    91  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    -
    92  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    93  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,
    -
    94  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    95  0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1,
    -
    96  1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,
    -
    97  0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1
    -
    98 };
    -
    99 
    - -
    101  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    102  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    103  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    104  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    105  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    106  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    107  0x0000, 0x0180, 0x0300, 0x0480, 0x0600, 0x0780, 0x0900, 0x0a80,
    -
    108  0x0c00, 0x0d80, 0x0f00, 0x1080, 0x1200, 0x1380, 0x1500, 0x1680,
    -
    109  0x1800, 0x1980, 0x1b00, 0x1c80, 0x1e00, 0x1f80, 0x2100, 0x2280,
    -
    110  0x2400, 0x2580, 0x2700, 0x2880, 0x2a00, 0x2b80, 0x2d00, 0x2e80,
    -
    111  0x3000, 0x3180, 0x3300, 0x3480, 0x3600, 0x3780, 0x3900, 0x3a80,
    -
    112  0x3c00, 0x3d80, 0x3f00, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    -
    113  0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5100, 0x5280,
    -
    114  0x5400, 0x5580, 0x5700, 0x5880, 0x5a00, 0x5b80, 0x5d00, 0x5e80,
    -
    115  0x6000, 0x6180, 0x6300, 0x6480, 0x6600, 0x6780, 0x6900, 0x6a80,
    -
    116  0x6c00, 0x6d80, 0x6f00, 0x7080, 0x7200, 0x7380, 0x7500, 0x7680
    -
    117 };
    -
    118 
    - -
    120  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    -
    121  0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    -
    122  0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    -
    123  0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    124  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    -
    125  0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    -
    126  0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    -
    127  0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00,
    -
    128  0x2000, 0x2100, 0x2200, 0x2300, 0x2400, 0x2500, 0x2680, 0x2780,
    -
    129  0x2880, 0x2980, 0x2b00, 0x2c00, 0x2d00, 0x2e80, 0x2f80, 0x3100,
    -
    130  0x3200, 0x3380, 0x3480, 0x3600, 0x3700, 0x3880, 0x3a00, 0x3b00,
    -
    131  0x3c80, 0x3e00, 0x3f80, 0x4080, 0x4200, 0x4380, 0x4500, 0x4680,
    -
    132  0x4800, 0x4980, 0x4b00, 0x4c80, 0x4e00, 0x4f80, 0x5180, 0x5300,
    -
    133  0x5480, 0x5600, 0x5800, 0x5980, 0x5b00, 0x5d00, 0x5e80, 0x6080,
    -
    134  0x6200, 0x6400, 0x6580, 0x6780, 0x6900, 0x6b00, 0x6d00, 0x6e80,
    -
    135  0x7080, 0x7280, 0x7480, 0x7600, 0x7800, 0x7a00, 0x7c00, 0x7e00
    -
    136 };
    -
    137 
    - -
    139  0x1800, 0x1780, 0x1700, 0x1680, 0x1600, 0x1580, 0x1500, 0x1480,
    -
    140  0x1400, 0x1380, 0x1300, 0x1280, 0x1200, 0x1180, 0x1100, 0x1080,
    -
    141  0x1000, 0x0f80, 0x0f00, 0x0e80, 0x0e00, 0x0d80, 0x0d00, 0x0c80,
    -
    142  0x0c00, 0x0b80, 0x0b00, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    -
    143  0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0500, 0x0480,
    -
    144  0x0400, 0x0380, 0x0300, 0x0280, 0x0200, 0x0180, 0x0100, 0x0080,
    -
    145  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    146  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    147  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    148  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    149  0x0000, 0x0080, 0x0100, 0x0180, 0x0200, 0x0280, 0x0300, 0x0380,
    -
    150  0x0400, 0x0480, 0x0500, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    151  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b00, 0x0b80,
    -
    152  0x0c00, 0x0c80, 0x0d00, 0x0d80, 0x0e00, 0x0e80, 0x0f00, 0x0f80,
    -
    153  0x1000, 0x1080, 0x1100, 0x1180, 0x1200, 0x1280, 0x1300, 0x1380,
    -
    154  0x1400, 0x1480, 0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780
    -
    155 };
    -
    156 
    - -
    158  0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x1b00, 0x1a80, 0x1980,
    -
    159  0x1880, 0x1780, 0x1700, 0x1600, 0x1500, 0x1480, 0x1380, 0x1300,
    -
    160  0x1200, 0x1180, 0x1080, 0x1000, 0x0f00, 0x0e80, 0x0e00, 0x0d00,
    -
    161  0x0c80, 0x0c00, 0x0b80, 0x0a80, 0x0a00, 0x0980, 0x0900, 0x0880,
    -
    162  0x0800, 0x0780, 0x0700, 0x0680, 0x0600, 0x0580, 0x0580, 0x0500,
    -
    163  0x0480, 0x0400, 0x0400, 0x0380, 0x0300, 0x0300, 0x0280, 0x0280,
    -
    164  0x0200, 0x0200, 0x0180, 0x0180, 0x0100, 0x0100, 0x0100, 0x0080,
    -
    165  0x0080, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
    -
    166  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0080,
    -
    167  0x0080, 0x0080, 0x0100, 0x0100, 0x0100, 0x0180, 0x0180, 0x0200,
    -
    168  0x0200, 0x0280, 0x0280, 0x0300, 0x0300, 0x0380, 0x0400, 0x0400,
    -
    169  0x0480, 0x0500, 0x0580, 0x0580, 0x0600, 0x0680, 0x0700, 0x0780,
    -
    170  0x0800, 0x0880, 0x0900, 0x0980, 0x0a00, 0x0a80, 0x0b80, 0x0c00,
    -
    171  0x0c80, 0x0d00, 0x0e00, 0x0e80, 0x0f00, 0x1000, 0x1080, 0x1180,
    -
    172  0x1200, 0x1300, 0x1380, 0x1480, 0x1500, 0x1600, 0x1700, 0x1780,
    -
    173  0x1880, 0x1980, 0x1a80, 0x1b00, 0x1c00, 0x1d00, 0x1e00, 0x1f00
    -
    174 };
    -
    175 
    -
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    #define T1_LUT_SGN_N
    Definition: t1.h:170
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    int main(int argc, char **argv)
    Definition: t1_generate_luts.c:205
    -
    #define T1_SIGMA_2
    Definition: t1.h:93
    -
    #define T1_CTXNO_ZC
    Definition: t1.h:61
    -
    static const OPJ_INT16 lut_nmsedec_ref[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:138
    -
    #define T1_CTXNO_SC
    Definition: t1.h:62
    -
    static const OPJ_BYTE lut_ctxno_zc[2048]
    Definition: t1_luts.h:3
    -
    static void dump_array16(int array[], int size)
    Definition: t1_generate_luts.c:190
    -
    #define T1_SIGMA_6
    Definition: t1.h:97
    -
    static int t1_init_spb(OPJ_UINT32 f)
    Definition: t1_generate_luts.c:163
    - -
    #define T1_SIGMA_0
    We hold the state of individual data points for the T1 encoder using a single 32-bit flags word to ho...
    Definition: t1.h:91
    -
    #define T1_SIGMA_1
    Definition: t1.h:92
    -
    static int t1_init_ctxno_zc(OPJ_UINT32 f, OPJ_UINT32 orient)
    Definition: t1_generate_luts.c:42
    -
    #define T1_LUT_SIG_S
    Definition: t1.h:173
    -
    static const OPJ_INT16 lut_nmsedec_sig0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:119
    -
    #define T1_LUT_SGN_W
    Definition: t1.h:166
    -
    static int t1_init_ctxno_sc(OPJ_UINT32 f)
    Definition: t1_generate_luts.c:119
    -
    #define T1_LUT_SIG_E
    Definition: t1.h:171
    -
    #define T1_SIGMA_8
    Definition: t1.h:99
    -
    static const OPJ_INT16 lut_nmsedec_ref0[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:157
    -
    static const OPJ_INT16 lut_nmsedec_sig[1U<< T1_NMSEDEC_BITS]
    Definition: t1_luts.h:100
    -
    #define T1_SIGMA_3
    Definition: t1.h:94
    -
    #define T1_LUT_SIG_W
    Definition: t1.h:169
    -
    #define T1_NMSEDEC_FRACBITS
    Definition: t1.h:68
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    #define T1_LUT_SGN_S
    Definition: t1.h:172
    -
    #define T1_SIGMA_5
    Definition: t1.h:96
    -
    #define T1_SIGMA_7
    Definition: t1.h:98
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    #define T1_LUT_SGN_E
    Definition: t1.h:168
    -
    #define T1_LUT_SIG_N
    Definition: t1.h:167
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    static const OPJ_BYTE lut_ctxno_sc[256]
    Definition: t1_luts.h:70
    -
    static const OPJ_BYTE lut_spb[256]
    Definition: t1_luts.h:89
    -
    #define T1_NMSEDEC_BITS
    Definition: t1.h:53
    - - - - diff --git a/build/doc/html/t2_8c.html b/build/doc/html/t2_8c.html deleted file mode 100644 index a07f05259..000000000 --- a/build/doc/html/t2_8c.html +++ /dev/null @@ -1,1183 +0,0 @@ - - - - - - - -OpenJPEG: t2.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    t2.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include "opj_common.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Local static functions

    #define JAS_FPRINTF   opj_null_jas_fprintf
     
    static void opj_t2_putcommacode (opj_bio_t *bio, OPJ_INT32 n)
     
    static OPJ_UINT32 opj_t2_getcommacode (opj_bio_t *bio)
     
    static void opj_t2_putnumpasses (opj_bio_t *bio, OPJ_UINT32 n)
     Variable length code for signalling delta Zil (truncation point) More...
     
    static OPJ_UINT32 opj_t2_getnumpasses (opj_bio_t *bio)
     
    static OPJ_BOOL opj_t2_encode_packet (OPJ_UINT32 tileno, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
     Encode a packet of a tile to a destination buffer. More...
     
    static OPJ_BOOL opj_t2_decode_packet (opj_t2_t *t2, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *src, OPJ_UINT32 *data_read, OPJ_UINT32 max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     Decode a packet of a tile from a source buffer. More...
     
    static OPJ_BOOL opj_t2_skip_packet (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_read_packet_header (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BOOL *p_is_data_present, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_read_packet_data (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_skip_packet_data (opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_t2_init_seg (opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 index, OPJ_UINT32 cblksty, OPJ_UINT32 first)
     
    OPJ_BOOL opj_t2_encode_packets (opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
     Encode the packets of a tile to a destination buffer. More...
     
    static void opj_null_jas_fprintf (FILE *file, const char *format,...)
     
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     Decode the packets of a tile from a source buffer. More...
     
    opj_t2_topj_t2_create (opj_image_t *p_image, opj_cp_t *p_cp)
     Creates a Tier 2 handle. More...
     
    void opj_t2_destroy (opj_t2_t *t2)
     Destroy a T2 handle. More...
     
    -

    Macro Definition Documentation

    - -

    ◆ JAS_FPRINTF

    - -
    -
    - - - - -
    #define JAS_FPRINTF   opj_null_jas_fprintf
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_null_jas_fprintf()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    static void opj_null_jas_fprintf (FILE * file,
    const char * format,
     ... 
    )
    -
    -static
    -
    - -
    -
    - -

    ◆ opj_t2_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_t2_t* opj_t2_create (opj_image_tp_image,
    opj_cp_tp_cp 
    )
    -
    - -

    Creates a Tier 2 handle.

    -
    Parameters
    - - - -
    p_imageSource or destination image
    p_cpImage coding parameters.
    -
    -
    -
    Returns
    a new T2 handle if successful, NULL otherwise.
    - -

    References opj_t2::cp, opj_t2::image, and opj_calloc().

    - -

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ opj_t2_decode_packet()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t2_decode_packet (opj_t2_tt2,
    opj_tcd_tile_ttile,
    opj_tcp_ttcp,
    opj_pi_iterator_tpi,
    OPJ_BYTEsrc,
    OPJ_UINT32data_read,
    OPJ_UINT32 max_length,
    opj_packet_info_tpack_info,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Decode a packet of a tile from a source buffer.

    -
    Parameters
    - - - - - - - - - - -
    t2T2 handle
    tileTile for which to write the packets
    tcpTile coding parameters
    piPacket identity
    srcSource buffer
    data_readFIXME DOC
    max_lengthFIXME DOC
    pack_infoPacket information
    p_managerthe user event manager
    -
    -
    -
    Returns
    FIXME DOC
    - -

    References OPJ_FALSE, opj_t2_read_packet_data(), opj_t2_read_packet_header(), and OPJ_TRUE.

    - -

    Referenced by opj_t2_decode_packets().

    - -
    -
    - -

    ◆ opj_t2_decode_packets()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_ttcd,
    opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_BYTEsrc,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 len,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_t2_destroy()

    - -
    -
    - - - - - - - - -
    void opj_t2_destroy (opj_t2_tt2)
    -
    - -

    Destroy a T2 handle.

    -
    Parameters
    - - -
    t2T2 handle to destroy
    -
    -
    - -

    References opj_free().

    - -

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ opj_t2_encode_packet()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t2_encode_packet (OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    opj_tcp_ttcp,
    opj_pi_iterator_tpi,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    J2K_T2_MODE p_t2_mode,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    - -

    Encode a packet of a tile to a destination buffer.

    -
    Parameters
    - - - - - - - - - - - -
    tilenoNumber of the tile encoded
    tileTile for which to write the packets
    tcpTile coding parameters
    piPacket identity
    destDestination buffer
    p_data_writtenFIXME DOC
    lenLength of the destination buffer
    cstr_infoCodestream information structure
    p_t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    -
    -
    -
    Returns
    - -

    References opj_tcd_resolution::bands, opj_tcd_precinct::cblks, opj_tcd_precinct::ch, opj_pi_iterator::compno, opj_tcd_tile::comps, opj_tcd_precinct::cw, opj_codestream_info::D_max, opj_tcd_layer::data, opj_tcd_layer::disto, opj_packet_info::disto, opj_tcd_precinct::enc, opj_packet_info::end_ph_pos, EVT_ERROR, FINAL_PASS, opj_tcd_precinct::imsbtree, opj_tcd_precinct::incltree, opj_codestream_info::index_write, J2K_CP_CSTY_EPH, J2K_CP_CSTY_SOP, opj_tcd_cblk_enc::layers, opj_pi_iterator::layno, opj_tcd_pass::len, opj_tcd_layer::len, opj_tcd_resolution::numbands, opj_tcd_cblk_enc::numbps, opj_tcd_band::numbps, opj_tcd_cblk_enc::numlenbits, opj_tcd_layer::numpasses, opj_tcd_cblk_enc::numpasses, opj_bio_create(), opj_bio_destroy(), opj_bio_flush(), opj_bio_init_enc(), opj_bio_numbytes(), opj_bio_write(), opj_event_msg(), OPJ_FALSE, opj_int_floorlog2(), opj_int_max(), opj_t2_putcommacode(), opj_t2_putnumpasses(), opj_tcd_is_band_empty(), opj_tgt_encode(), opj_tgt_reset(), opj_tgt_setvalue(), OPJ_TRUE, opj_tile_info::packet, opj_tcd_tile::packno, opj_codestream_info::packno, opj_tcd_cblk_enc::passes, opj_tcd_band::precincts, opj_pi_iterator::precno, opj_pi_iterator::resno, opj_tcd_tilecomp::resolutions, tcp, opj_tcd_pass::term, and opj_codestream_info::tile.

    - -

    Referenced by opj_t2_encode_packets().

    - -
    -
    - -

    ◆ opj_t2_encode_packets()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_t2_encode_packets (opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_UINT32 maxlayers,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_tcd_marker_info_tp_marker_info,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    OPJ_UINT32 pino,
    J2K_T2_MODE t2_mode,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encode the packets of a tile to a destination buffer.

    -
    Parameters
    - - - - - - - - - - - - - - - -
    t2T2 handle
    tilenonumber of the tile encoded
    tilethe tile for which to write the packets
    maxlayersmaximum number of layers
    destthe destination buffer
    p_data_writtenFIXME DOC
    lenthe length of the destination buffer
    cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    pinoFIXME DOC
    t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    -
    -
    - -

    References opj_t2::cp, opj_tile_info::end_header, opj_packet_info::end_ph_pos, opj_packet_info::end_pos, opj_t2::image, opj_codestream_info::index_write, opj_pi_iterator::layno, opj_cp::m_enc, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, opj_tcd_marker_info::need_PLT, opj_image::numcomps, opj_tcp::numpocs, OPJ_FALSE, opj_get_encoding_packet_count(), opj_malloc(), opj_pi_create_encode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next(), OPJ_PROFILE_CINEMA_4K, OPJ_PROG_UNKNOWN, opj_t2_encode_packet(), OPJ_TRUE, opj_tcd_marker_info::p_packet_size, opj_tile_info::packet, opj_tcd_marker_info::packet_count, opj_tcd_tile::packno, opj_codestream_info::packno, opj_pi_iterator::poc, opj_tcp::POC, opj_poc::prg, opj_cp::rsiz, opj_packet_info::start_pos, opj_cp::tcps, THRESH_CALC, and opj_codestream_info::tile.

    - -

    Referenced by opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ opj_t2_getcommacode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_t2_getcommacode (opj_bio_tbio)
    -
    -static
    -
    - -

    References opj_bio_read().

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_t2_getnumpasses()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_UINT32 opj_t2_getnumpasses (opj_bio_tbio)
    -
    -static
    -
    - -

    References opj_bio_read().

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_t2_init_seg()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t2_init_seg (opj_tcd_cblk_dec_tcblk,
    OPJ_UINT32 index,
    OPJ_UINT32 cblksty,
    OPJ_UINT32 first 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t2_putcommacode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t2_putcommacode (opj_bio_tbio,
    OPJ_INT32 n 
    )
    -
    -static
    -
    - -

    References opj_bio_write().

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_t2_putnumpasses()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void opj_t2_putnumpasses (opj_bio_tbio,
    OPJ_UINT32 n 
    )
    -
    -static
    -
    - -

    Variable length code for signalling delta Zil (truncation point)

    -
    Parameters
    - - - -
    bioBit Input/Output component
    ndelta Zil
    -
    -
    - -

    References opj_bio_write().

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_t2_read_packet_data()

    - - - -

    ◆ opj_t2_read_packet_header()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t2_read_packet_header (opj_t2_tp_t2,
    opj_tcd_tile_tp_tile,
    opj_tcp_tp_tcp,
    opj_pi_iterator_tp_pi,
    OPJ_BOOLp_is_data_present,
    OPJ_BYTEp_src_data,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_length,
    opj_packet_info_tp_pack_info,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t2_skip_packet()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_t2_skip_packet (opj_t2_tp_t2,
    opj_tcd_tile_tp_tile,
    opj_tcp_tp_tcp,
    opj_pi_iterator_tp_pi,
    OPJ_BYTEp_src,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_length,
    opj_packet_info_tp_pack_info,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_t2_skip_packet_data()

    - - -
    - - - - diff --git a/build/doc/html/t2_8h.html b/build/doc/html/t2_8h.html deleted file mode 100644 index 13ff0ea13..000000000 --- a/build/doc/html/t2_8h.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - -OpenJPEG: t2.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    t2.h File Reference
    -
    -
    - -

    Implementation of a tier-2 coding (packetization of code-block data) (T2) -More...

    - -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  opj_t2
     Tier-2 coding. More...
     
    - - - - -

    -Typedefs

    typedef struct opj_t2 opj_t2_t
     Tier-2 coding. More...
     
    - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    OPJ_BOOL opj_t2_encode_packets (opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_UINT32 maxlayers, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 tpnum, OPJ_INT32 tppos, OPJ_UINT32 pino, J2K_T2_MODE t2_mode, opj_event_mgr_t *p_manager)
     Encode the packets of a tile to a destination buffer. More...
     
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_t *tcd, opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_BYTE *src, OPJ_UINT32 *p_data_read, OPJ_UINT32 len, opj_codestream_index_t *cstr_info, opj_event_mgr_t *p_manager)
     Decode the packets of a tile from a source buffer. More...
     
    opj_t2_topj_t2_create (opj_image_t *p_image, opj_cp_t *p_cp)
     Creates a Tier 2 handle. More...
     
    void opj_t2_destroy (opj_t2_t *t2)
     Destroy a T2 handle. More...
     
    -

    Detailed Description

    -

    Implementation of a tier-2 coding (packetization of code-block data) (T2)

    -

    Typedef Documentation

    - -

    ◆ opj_t2_t

    - -
    -
    - - - - -
    typedef struct opj_t2 opj_t2_t
    -
    - -

    Tier-2 coding.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_t2_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_t2_t* opj_t2_create (opj_image_tp_image,
    opj_cp_tp_cp 
    )
    -
    - -

    Creates a Tier 2 handle.

    -
    Parameters
    - - - -
    p_imageSource or destination image
    p_cpImage coding parameters.
    -
    -
    -
    Returns
    a new T2 handle if successful, NULL otherwise.
    - -

    References opj_t2::cp, opj_t2::image, and opj_calloc().

    - -

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ opj_t2_decode_packets()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_t2_decode_packets (opj_tcd_ttcd,
    opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_BYTEsrc,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 len,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_t2_destroy()

    - -
    -
    - - - - - - - - -
    void opj_t2_destroy (opj_t2_tt2)
    -
    - -

    Destroy a T2 handle.

    -
    Parameters
    - - -
    t2T2 handle to destroy
    -
    -
    - -

    References opj_free().

    - -

    Referenced by opj_tcd_rateallocate(), opj_tcd_t2_decode(), and opj_tcd_t2_encode().

    - -
    -
    - -

    ◆ opj_t2_encode_packets()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_t2_encode_packets (opj_t2_tt2,
    OPJ_UINT32 tileno,
    opj_tcd_tile_ttile,
    OPJ_UINT32 maxlayers,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_tcd_marker_info_tp_marker_info,
    OPJ_UINT32 tpnum,
    OPJ_INT32 tppos,
    OPJ_UINT32 pino,
    J2K_T2_MODE t2_mode,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encode the packets of a tile to a destination buffer.

    -
    Parameters
    - - - - - - - - - - - - - - - -
    t2T2 handle
    tilenonumber of the tile encoded
    tilethe tile for which to write the packets
    maxlayersmaximum number of layers
    destthe destination buffer
    p_data_writtenFIXME DOC
    lenthe length of the destination buffer
    cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    tpnumTile part number of the current tile
    tpposThe position of the tile part flag in the progression order
    pinoFIXME DOC
    t2_modeIf == THRESH_CALC In Threshold calculation ,If == FINAL_PASS Final pass
    p_managerthe user event manager
    -
    -
    - -

    References opj_t2::cp, opj_tile_info::end_header, opj_packet_info::end_ph_pos, opj_packet_info::end_pos, opj_t2::image, opj_codestream_info::index_write, opj_pi_iterator::layno, opj_cp::m_enc, opj_encoding_param::m_max_comp_size, opj_cp::m_specific_param, opj_encoding_param::m_tp_on, opj_tcd_marker_info::need_PLT, opj_image::numcomps, opj_tcp::numpocs, OPJ_FALSE, opj_get_encoding_packet_count(), opj_malloc(), opj_pi_create_encode(), opj_pi_destroy(), opj_pi_initialise_encode(), opj_pi_next(), OPJ_PROFILE_CINEMA_4K, OPJ_PROG_UNKNOWN, opj_t2_encode_packet(), OPJ_TRUE, opj_tcd_marker_info::p_packet_size, opj_tile_info::packet, opj_tcd_marker_info::packet_count, opj_tcd_tile::packno, opj_codestream_info::packno, opj_pi_iterator::poc, opj_tcp::POC, opj_poc::prg, opj_cp::rsiz, opj_packet_info::start_pos, opj_cp::tcps, THRESH_CALC, and opj_codestream_info::tile.

    - -

    Referenced by opj_tcd_rateallocate(), and opj_tcd_t2_encode().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/t2_8h_source.html b/build/doc/html/t2_8h_source.html deleted file mode 100644 index a4f1c3953..000000000 --- a/build/doc/html/t2_8h_source.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - -OpenJPEG: t2.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    t2.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    16  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    -
    17  * All rights reserved.
    -
    18  *
    -
    19  * Redistribution and use in source and binary forms, with or without
    -
    20  * modification, are permitted provided that the following conditions
    -
    21  * are met:
    -
    22  * 1. Redistributions of source code must retain the above copyright
    -
    23  * notice, this list of conditions and the following disclaimer.
    -
    24  * 2. Redistributions in binary form must reproduce the above copyright
    -
    25  * notice, this list of conditions and the following disclaimer in the
    -
    26  * documentation and/or other materials provided with the distribution.
    -
    27  *
    -
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    38  * POSSIBILITY OF SUCH DAMAGE.
    -
    39  */
    -
    40 #ifndef OPJ_T2_H
    -
    41 #define OPJ_T2_H
    -
    42 
    -
    50 
    -
    54 typedef struct opj_t2 {
    -
    55 
    - - -
    60 } opj_t2_t;
    -
    61 
    -
    64 /* ----------------------------------------------------------------------- */
    -
    65 
    - -
    84  OPJ_UINT32 tileno,
    -
    85  opj_tcd_tile_t *tile,
    -
    86  OPJ_UINT32 maxlayers,
    -
    87  OPJ_BYTE *dest,
    -
    88  OPJ_UINT32 * p_data_written,
    -
    89  OPJ_UINT32 len,
    -
    90  opj_codestream_info_t *cstr_info,
    -
    91  opj_tcd_marker_info_t* p_marker_info,
    -
    92  OPJ_UINT32 tpnum,
    -
    93  OPJ_INT32 tppos,
    -
    94  OPJ_UINT32 pino,
    -
    95  J2K_T2_MODE t2_mode,
    -
    96  opj_event_mgr_t *p_manager);
    -
    97 
    - -
    113  opj_t2_t *t2,
    -
    114  OPJ_UINT32 tileno,
    -
    115  opj_tcd_tile_t *tile,
    -
    116  OPJ_BYTE *src,
    -
    117  OPJ_UINT32 * p_data_read,
    -
    118  OPJ_UINT32 len,
    -
    119  opj_codestream_index_t *cstr_info,
    -
    120  opj_event_mgr_t *p_manager);
    -
    121 
    -
    129 opj_t2_t* opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp);
    -
    130 
    -
    135 void opj_t2_destroy(opj_t2_t *t2);
    -
    136 
    -
    137 /* ----------------------------------------------------------------------- */
    -
    141 
    -
    142 #endif /* OPJ_T2_H */
    -
    -
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    -
    OPJ_UINT32 cw
    Definition: tcd.h:145
    -
    OPJ_UINT32 opj_get_encoding_packet_count(const opj_image_t *p_image, const opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Return the number of packets in the tile.
    Definition: pi.c:1557
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    -
    ptrdiff_t opj_bio_numbytes(opj_bio_t *bio)
    Number of bytes written.
    Definition: bio.c:142
    -
    Packet iterator.
    Definition: pi.h:73
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    void opj_bio_init_enc(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init encoder.
    Definition: bio.c:147
    -
    FIXME DOC.
    Definition: tcd.h:77
    -
    static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:225
    -
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    -
    static OPJ_BOOL opj_t2_skip_packet_data(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1447
    -
    OPJ_INT32 x0
    Definition: tcd.h:159
    -
    OPJ_UINT32 compno
    component that identify the packet
    Definition: pi.h:89
    -
    Segment of a code-block.
    Definition: tcd.h:105
    -
    opj_pi_iterator_t * opj_pi_create_decode(opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no)
    Create a packet iterator for Decoder.
    Definition: pi.c:1359
    -
    void opj_pi_destroy(opj_pi_iterator_t *p_pi, OPJ_UINT32 p_nb_elements)
    Destroys a packet iterator array.
    Definition: pi.c:2035
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    OPJ_UINT32 maxpasses
    Definition: tcd.h:112
    -
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    -
    OPJ_BOOL opj_bio_flush(opj_bio_t *bio)
    Flush bits.
    Definition: bio.c:195
    -
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    -
    double D_max
    maximum distortion reduction on the whole image (add for Marcela)
    Definition: openjpeg.h:847
    -
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    -
    static OPJ_UINT32 opj_t2_getcommacode(opj_bio_t *bio)
    Definition: t2.c:175
    -
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    -
    OPJ_INT32 y1
    Definition: tcd.h:144
    -
    opj_image_t * image
    Encoding: pointer to the src image.
    Definition: t2.h:57
    -
    #define OPJ_J2K_DEFAULT_NB_SEGS
    Definition: openjpeg.h:149
    -
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    - -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    OPJ_UINT32 precincts_data_size
    Definition: tcd.h:165
    -
    opj_tcd_layer_t * layers
    Definition: tcd.h:79
    -
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    -
    Tier-2 coding.
    Definition: t2.h:54
    -
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    -
    @ THRESH_CALC
    Definition: j2k.h:158
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    OPJ_UINT32 ppm_len
    size of the ppm_data
    Definition: j2k.h:375
    -
    opj_bio_t * opj_bio_create(void)
    Create a new BIO handle.
    Definition: bio.c:129
    -
    #define J2K_CCP_CBLKSTY_LAZY
    Selective arithmetic coding bypass.
    Definition: j2k.h:58
    -
    static OPJ_UINT32 opj_t2_getnumpasses(opj_bio_t *bio)
    Definition: t2.c:199
    -
    #define OPJ_ARG_NOT_USED(x)
    Definition: openjpeg.h:136
    -
    opj_pi_iterator_t * opj_pi_initialise_encode(const opj_image_t *p_image, opj_cp_t *p_cp, OPJ_UINT32 p_tile_no, J2K_T2_MODE p_t2_mode)
    Creates a packet iterator for encoding.
    Definition: pi.c:1580
    -
    OPJ_BITFIELD ppt
    If ppt == 1 --> there was a PPT marker for the present tile.
    Definition: j2k.h:307
    -
    static OPJ_BOOL opj_t2_skip_packet(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:989
    -
    #define OPJ_PROFILE_CINEMA_4K
    Definition: openjpeg.h:199
    -
    double disto
    packet distorsion
    Definition: openjpeg.h:768
    -
    OPJ_INT32 y1
    Definition: tcd.h:159
    -
    @ tcp
    Definition: query_parser.h:41
    -
    void opj_bio_destroy(opj_bio_t *bio)
    Destroy a previously created BIO handle.
    Definition: bio.c:135
    -
    OPJ_BYTE * ppt_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:264
    -
    OPJ_INT32 x1
    Definition: tcd.h:159
    -
    OPJ_BITFIELD ppm
    if ppm == 1 --> there was a PPM marker
    Definition: j2k.h:448
    -
    Message handler object used for.
    Definition: event.h:50
    -
    void opj_bio_init_dec(opj_bio_t *bio, OPJ_BYTE *bp, OPJ_UINT32 len)
    Init decoder.
    Definition: bio.c:156
    -
    OPJ_UINT32 len
    Definition: tcd.h:60
    -
    OPJ_UINT32 m_max_comp_size
    Maximum rate for each component.
    Definition: j2k.h:317
    -
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    -
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    -
    Coding parameters.
    Definition: j2k.h:347
    -
    static void opj_t2_putcommacode(opj_bio_t *bio, OPJ_INT32 n)
    Definition: t2.c:167
    -
    OPJ_UINT32 csty
    coding style
    Definition: j2k.h:243
    -
    OPJ_OFF_T start_pos
    packet start position (including SOP marker if it exists)
    Definition: openjpeg.h:762
    -
    #define EVT_WARNING
    Warning event type.
    Definition: event.h:67
    -
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    -
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    -
    static OPJ_BOOL opj_t2_read_packet_data(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_pi_iterator_t *p_pi, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1317
    -
    FIXME DOC.
    Definition: tcd.h:67
    -
    OPJ_UINT32 numpocs
    number of progression order changes
    Definition: j2k.h:254
    -
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    -
    OPJ_INT32 x1
    Definition: tcd.h:144
    -
    int end_header
    end position of the header
    Definition: openjpeg.h:813
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    struct opj_t2 opj_t2_t
    Tier-2 coding.
    -
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    -
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    opj_tgt_tree_t * imsbtree
    Definition: tcd.h:153
    -
    OPJ_PROG_ORDER prg
    Definition: openjpeg.h:367
    -
    Precinct structure.
    Definition: tcd.h:142
    -
    @ OPJ_PROG_UNKNOWN
    place-holder
    Definition: openjpeg.h:298
    -
    OPJ_UINT32 precno
    precinct that identify the packet
    Definition: pi.h:93
    - -
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    -
    OPJ_OFF_T end_ph_pos
    end of packet header position (including EPH marker if it exists)
    Definition: openjpeg.h:764
    -
    void opj_tgt_reset(opj_tgt_tree_t *p_tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    -
    OPJ_INT32 x0
    Definition: tcd.h:144
    -
    void opj_pi_create_encode(opj_pi_iterator_t *pi, opj_cp_t *cp, OPJ_UINT32 tileno, OPJ_UINT32 pino, OPJ_UINT32 tpnum, OPJ_INT32 tppos, J2K_T2_MODE t2_mode)
    Modify the packet iterator for enabling tile part generation.
    Definition: pi.c:1772
    -
    opj_tgt_tree_t * incltree
    Definition: tcd.h:152
    -
    FIXME DOC.
    Definition: tcd.h:57
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    static OPJ_BOOL opj_t2_decode_packet(opj_t2_t *t2, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *src, OPJ_UINT32 *data_read, OPJ_UINT32 max_length, opj_packet_info_t *pack_info, opj_event_mgr_t *p_manager)
    Decode a packet of a tile from a source buffer.
    Definition: t2.c:621
    -
    opj_tile_index_t * tile_index
    Definition: openjpeg.h:1052
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    enum T2_MODE J2K_T2_MODE
    T2 encoding mode.
    -
    Sub-band structure.
    Definition: tcd.h:157
    -
    OPJ_BITFIELD m_tp_on
    Enabling Tile part generation.
    Definition: j2k.h:331
    -
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_UINT32 m_current_max_segs
    Definition: tcd.h:134
    -
    static INLINE OPJ_UINT32 opj_uint_floorlog2(OPJ_UINT32 a)
    Get logarithm of an integer and round downwards.
    Definition: opj_intmath.h:237
    -
    OPJ_BYTE * ppm_data
    packet header store there for future use in t2_decode_packet
    Definition: j2k.h:373
    -
    OPJ_BITFIELD term
    Definition: tcd.h:61
    -
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    -
    OPJ_UINT32 numlenbits
    Definition: tcd.h:84
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    OPJ_BITFIELD POC
    indicates if a POC marker has been used O:NO, 1:YES
    Definition: j2k.h:309
    -
    OPJ_UINT32 numchunksalloc
    Definition: tcd.h:136
    -
    int packno
    packet number
    Definition: openjpeg.h:849
    -
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    -
    OPJ_UINT32 numlenbits
    Definition: tcd.h:127
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:114
    -
    static OPJ_BOOL opj_t2_read_packet_header(opj_t2_t *p_t2, opj_tcd_tile_t *p_tile, opj_tcp_t *p_tcp, opj_pi_iterator_t *p_pi, OPJ_BOOL *p_is_data_present, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_length, opj_packet_info_t *p_pack_info, opj_event_mgr_t *p_manager)
    Definition: t2.c:1031
    -
    Tile coding parameters information.
    Definition: openjpeg.h:935
    -
    #define J2K_CP_CSTY_SOP
    Definition: j2k.h:55
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    #define J2K_CP_CSTY_EPH
    Definition: j2k.h:56
    -
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_UINT32 maxlayers, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 tpnum, OPJ_INT32 tppos, OPJ_UINT32 pino, J2K_T2_MODE t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    -
    Chunk of codestream data that is part of a code block.
    Definition: tcd.h:94
    -
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    -
    union opj_tcd_precinct::@3 cblks
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    -
    static void opj_null_jas_fprintf(FILE *file, const char *format,...)
    Definition: t2.c:385
    -
    OPJ_INT32 y0
    Definition: tcd.h:144
    -
    OPJ_BOOL need_PLT
    In: Whether information to generate PLT markers in needed.
    Definition: tcd.h:293
    -
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    -
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:87
    -
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    -
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    -
    OPJ_UINT32 ppt_len
    size of ppt_data
    Definition: j2k.h:270
    -
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    -
    OPJ_UINT32 len
    Definition: tcd.h:99
    -
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:68
    -
    OPJ_BOOL opj_pi_next(opj_pi_iterator_t *pi)
    Modify the packet iterator to point to the next packet.
    Definition: pi.c:2100
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    -
    OPJ_UINT32 resno
    resolution that identify the packet
    Definition: pi.h:91
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    OPJ_INT32 y0
    Definition: tcd.h:159
    -
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    -
    Code-block for decoding.
    Definition: tcd.h:120
    -
    OPJ_INT32 numbps
    Definition: tcd.h:166
    -
    static OPJ_BOOL opj_t2_init_seg(opj_tcd_cblk_dec_t *cblk, OPJ_UINT32 index, OPJ_UINT32 cblksty, OPJ_UINT32 first)
    Definition: t2.c:1553
    -
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    -
    FIXME DOC.
    Definition: tcd.h:228
    -
    OPJ_BOOL opj_bio_inalign(opj_bio_t *bio)
    Passes the ending bits (coming from flushing)
    Definition: bio.c:208
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    OPJ_UINT32 packno
    Definition: tcd.h:236
    -
    OPJ_UINT32 len
    Definition: tcd.h:69
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    opj_cp_t * cp
    pointer to the image coding parameters
    Definition: t2.h:59
    -
    OPJ_UINT32 len
    Definition: tcd.h:106
    -
    OPJ_OFF_T end_pos
    packet end position
    Definition: openjpeg.h:766
    -
    OPJ_FLOAT64 disto
    Definition: tcd.h:70
    -
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    OPJ_BYTE * data
    Definition: tcd.h:71
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    -
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    -
    OPJ_BYTE * data
    Definition: tcd.h:98
    -
    #define JAS_FPRINTF
    Definition: t2.c:390
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:108
    -
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_PROG_ORDER prg1
    Progression order enum.
    Definition: openjpeg.h:367
    -
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:129
    -
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *t2, OPJ_UINT32 tileno, opj_tcd_tile_t *tile, OPJ_BYTE *src, OPJ_UINT32 *p_data_read, OPJ_UINT32 len, opj_codestream_index_t *cstr_info, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    -
    #define J2K_CCP_CBLKSTY_TERMALL
    Termination on each coding pass.
    Definition: j2k.h:60
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    -
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    -
    static void opj_t2_putnumpasses(opj_bio_t *bio, OPJ_UINT32 n)
    Variable length code for signalling delta Zil (truncation point)
    Definition: t2.c:184
    -
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    -
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    -
    opj_poc_t poc
    progression order change information
    Definition: pi.h:99
    -
    OPJ_UINT32 numsegs
    Definition: tcd.h:131
    -
    OPJ_UINT32 ch
    Definition: tcd.h:145
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    union opj_cp::@0 m_specific_param
    -
    static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, opj_tcd_tile_t *tile, opj_tcp_t *tcp, opj_pi_iterator_t *pi, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode a packet of a tile to a destination buffer.
    Definition: t2.c:663
    -
    OPJ_UINT32 layno
    layer that identify the packet
    Definition: pi.h:95
    -
    OPJ_UINT32 newlen
    Definition: tcd.h:116
    - - - - diff --git a/build/doc/html/tab_a.png b/build/doc/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/build/doc/html/tab_b.png b/build/doc/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/build/doc/html/tabs.css b/build/doc/html/tabs.css deleted file mode 100644 index 85a0cd5b5..000000000 --- a/build/doc/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/build/doc/html/target__manager_8c.html b/build/doc/html/target__manager_8c.html deleted file mode 100644 index 26904523f..000000000 --- a/build/doc/html/target__manager_8c.html +++ /dev/null @@ -1,615 +0,0 @@ - - - - - - - -OpenJPEG: target_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    target_manager.c File Reference
    -
    -
    -
    #include <stdlib.h>
    -#include <string.h>
    -#include <stdio.h>
    -#include <assert.h>
    -#include <sys/types.h>
    -#include <unistd.h>
    -#include <sys/stat.h>
    -#include <fcntl.h>
    -#include <time.h>
    -#include "target_manager.h"
    -
    - - - - - - - -

    -Macros

    #define FCGI_stdout   stdout
     
    #define FCGI_stderr   stderr
     
    #define logstream   stderr
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    targetlist_param_tgene_targetlist (void)
     generate a target list More...
     
    int open_jp2file (const char filepath[], char tmpfname[])
     open jp2 format image file More...
     
    target_param_tgene_target (targetlist_param_t *targetlist, char *targetpath)
     generate a target More...
     
    void refer_target (target_param_t *reftarget, target_param_t **ptr)
     refer a target, used to make a new cache model More...
     
    void unrefer_target (target_param_t *target)
     refer a target, used to make a new cache model More...
     
    void delete_target (target_param_t **target)
     delete a target More...
     
    void delete_target_in_list (target_param_t **target, targetlist_param_t *targetlist)
     delete a target in list More...
     
    void delete_targetlist (targetlist_param_t **targetlist)
     delete target list More...
     
    void print_target (target_param_t *target)
     print target parameters More...
     
    void print_alltarget (targetlist_param_t *targetlist)
     print all target parameters More...
     
    target_param_tsearch_target (const char targetname[], targetlist_param_t *targetlist)
     search a target by target name More...
     
    target_param_tsearch_targetBytid (const char tid[], targetlist_param_t *targetlist)
     search a target by tid More...
     
    int open_remotefile (const char filepath[], char tmpfname[])
     
    -

    Macro Definition Documentation

    - -

    ◆ FCGI_stderr

    - -
    -
    - - - - -
    #define FCGI_stderr   stderr
    -
    - -
    -
    - -

    ◆ FCGI_stdout

    - -
    -
    - - - - -
    #define FCGI_stdout   stdout
    -
    - -
    -
    - -

    ◆ logstream

    - -
    -
    - - - - -
    #define logstream   stderr
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_target()

    - -
    -
    - - - - - - - - -
    void delete_target (target_param_t ** target)
    -
    - -

    delete a target

    -
    Parameters
    - - -
    [in,out]targetaddress of the deleting target pointer
    -
    -
    - -

    References delete_index(), FCGI_stderr, logstream, and opj_free().

    - -

    Referenced by delete_target_in_list(), and delete_targetlist().

    - -
    -
    - -

    ◆ delete_target_in_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_target_in_list (target_param_t ** target,
    targetlist_param_ttargetlist 
    )
    -
    - -

    delete a target in list

    -
    Parameters
    - - - -
    [in,out]targetaddress of the deleting target pointer
    [in]targetlisttarget list pointer
    -
    -
    - -

    References delete_target(), targetlist_param::first, targetlist_param::last, and target_param::next.

    - -
    -
    - -

    ◆ delete_targetlist()

    - -
    -
    - - - - - - - - -
    void delete_targetlist (targetlist_param_t ** targetlist)
    -
    - -

    delete target list

    -
    Parameters
    - - -
    [in,out]targetlistaddress of the target list pointer
    -
    -
    - -

    References delete_target(), target_param::next, and opj_free().

    - -
    -
    - -

    ◆ gene_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* gene_target (targetlist_param_ttargetlist,
    char * targetpath 
    )
    -
    - -

    generate a target

    -
    Parameters
    - - - -
    [in]targetlisttarget list to insert the generated target
    [in]targetpathfile path or URL of the target
    -
    -
    -
    Returns
    pointer to the generated target
    - -

    References target_param::codeidx, target_param::csn, FCGI_stderr, FCGI_stdout, target_param::fd, targetlist_param::first, isJPTfeasible(), target_param::jppstream, target_param::jptstream, targetlist_param::last, logstream, MAX_LENOFTID, target_param::next, target_param::num_of_use, open_jp2file(), opj_malloc(), OPJ_TRUE, parse_jp2file(), target_param::targetname, and target_param::tid.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ gene_targetlist()

    - -
    -
    - - - - - - - - -
    targetlist_param_t* gene_targetlist (void )
    -
    - -

    generate a target list

    -
    Returns
    pointer to the generated target list
    - -

    References targetlist_param::first, targetlist_param::last, and opj_malloc().

    - -
    -
    - -

    ◆ open_jp2file()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    int open_jp2file (const char filepath[],
    char tmpfname[] 
    )
    -
    - -

    open jp2 format image file

    -
    Parameters
    - - - -
    [in]filepathfile name (.jp2)
    [out]tmpfnamenew file name if filepath is a URL
    -
    -
    -
    Returns
    file descriptor
    - -

    References FCGI_stdout, open_remotefile(), opj_free(), and opj_malloc().

    - -

    Referenced by gene_target().

    - -
    -
    - -

    ◆ open_remotefile()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    int open_remotefile (const char filepath[],
    char tmpfname[] 
    )
    -
    - -

    References FCGI_stderr, FCGI_stdout, and MAX_LENOFTID.

    - -

    Referenced by open_jp2file().

    - -
    -
    - -

    ◆ print_alltarget()

    - -
    -
    - - - - - - - - -
    void print_alltarget (targetlist_param_ttargetlist)
    -
    - -

    print all target parameters

    -
    Parameters
    - - -
    [in]targetlisttarget list pointer
    -
    -
    - -

    References targetlist_param::first, target_param::next, and print_target().

    - -
    -
    - -

    ◆ print_target()

    - -
    -
    - - - - - - - - -
    void print_target (target_param_ttarget)
    -
    - -

    print target parameters

    -
    Parameters
    - - -
    [in]targettarget pointer
    -
    -
    - -

    References target_param::csn, logstream, target_param::targetname, and target_param::tid.

    - -

    Referenced by print_allsession(), and print_alltarget().

    - -
    -
    - -

    ◆ refer_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void refer_target (target_param_treftarget,
    target_param_t ** ptr 
    )
    -
    - -

    refer a target, used to make a new cache model

    -
    Parameters
    - - - -
    [in]reftargetreference target pointer
    [out]ptraddress of feeding target pointer
    -
    -
    - -

    References target_param::num_of_use.

    - -

    Referenced by gene_cachemodel().

    - -
    -
    - -

    ◆ search_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* search_target (const char targetname[],
    targetlist_param_ttargetlist 
    )
    -
    - -

    search a target by target name

    -
    Parameters
    - - - -
    [in]targetnametarget name
    [in]targetlisttarget list pointer
    -
    -
    -
    Returns
    found target pointer
    - -

    References targetlist_param::first, target_param::next, and target_param::targetname.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ search_targetBytid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* search_targetBytid (const char tid[],
    targetlist_param_ttargetlist 
    )
    -
    - -

    search a target by tid

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]targetlisttarget list pointer
    -
    -
    -
    Returns
    found target pointer
    - -

    References targetlist_param::first, target_param::next, and target_param::tid.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ unrefer_target()

    - -
    -
    - - - - - - - - -
    void unrefer_target (target_param_ttarget)
    -
    - -

    refer a target, used to make a new cache model

    -
    Parameters
    - - -
    [in]targetreference pointer to the target
    -
    -
    - -

    References target_param::num_of_use.

    - -

    Referenced by delete_cachemodel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/target__manager_8h.html b/build/doc/html/target__manager_8h.html deleted file mode 100644 index 0049fe8ce..000000000 --- a/build/doc/html/target__manager_8h.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - - -OpenJPEG: target_manager.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    target_manager.h File Reference
    -
    -
    -
    #include "index_manager.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  target_param
     target parameters More...
     
    struct  targetlist_param
     Target list parameters. More...
     
    - - - - -

    -Macros

    #define MAX_LENOFTID   30
     maximum length of target identifier More...
     
    - - - - - - - -

    -Typedefs

    typedef struct target_param target_param_t
     target parameters More...
     
    typedef struct targetlist_param targetlist_param_t
     Target list parameters. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    targetlist_param_tgene_targetlist (void)
     generate a target list More...
     
    target_param_tgene_target (targetlist_param_t *targetlist, char *targetpath)
     generate a target More...
     
    void refer_target (target_param_t *reftarget, target_param_t **ptr)
     refer a target, used to make a new cache model More...
     
    void unrefer_target (target_param_t *target)
     refer a target, used to make a new cache model More...
     
    void delete_target (target_param_t **target)
     delete a target More...
     
    void delete_target_in_list (target_param_t **target, targetlist_param_t *targetlist)
     delete a target in list More...
     
    void delete_targetlist (targetlist_param_t **targetlist)
     delete target list More...
     
    void print_target (target_param_t *target)
     print target parameters More...
     
    void print_alltarget (targetlist_param_t *targetlist)
     print all target parameters More...
     
    target_param_tsearch_target (const char targetname[], targetlist_param_t *targetlist)
     search a target by target name More...
     
    target_param_tsearch_targetBytid (const char tid[], targetlist_param_t *targetlist)
     search a target by tid More...
     
    -

    Macro Definition Documentation

    - -

    ◆ MAX_LENOFTID

    - -
    -
    - - - - -
    #define MAX_LENOFTID   30
    -
    - -

    maximum length of target identifier

    - -
    -
    -

    Typedef Documentation

    - -

    ◆ target_param_t

    - -
    -
    - - - - -
    typedef struct target_param target_param_t
    -
    - -

    target parameters

    - -
    -
    - -

    ◆ targetlist_param_t

    - -
    -
    - - - - -
    typedef struct targetlist_param targetlist_param_t
    -
    - -

    Target list parameters.

    - -
    -
    -

    Function Documentation

    - -

    ◆ delete_target()

    - -
    -
    - - - - - - - - -
    void delete_target (target_param_t ** target)
    -
    - -

    delete a target

    -
    Parameters
    - - -
    [in,out]targetaddress of the deleting target pointer
    -
    -
    - -

    References delete_index(), FCGI_stderr, logstream, and opj_free().

    - -

    Referenced by delete_target_in_list(), and delete_targetlist().

    - -
    -
    - -

    ◆ delete_target_in_list()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void delete_target_in_list (target_param_t ** target,
    targetlist_param_ttargetlist 
    )
    -
    - -

    delete a target in list

    -
    Parameters
    - - - -
    [in,out]targetaddress of the deleting target pointer
    [in]targetlisttarget list pointer
    -
    -
    - -

    References delete_target(), targetlist_param::first, targetlist_param::last, and target_param::next.

    - -
    -
    - -

    ◆ delete_targetlist()

    - -
    -
    - - - - - - - - -
    void delete_targetlist (targetlist_param_t ** targetlist)
    -
    - -

    delete target list

    -
    Parameters
    - - -
    [in,out]targetlistaddress of the target list pointer
    -
    -
    - -

    References delete_target(), target_param::next, and opj_free().

    - -
    -
    - -

    ◆ gene_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* gene_target (targetlist_param_ttargetlist,
    char * targetpath 
    )
    -
    - -

    generate a target

    -
    Parameters
    - - - -
    [in]targetlisttarget list to insert the generated target
    [in]targetpathfile path or URL of the target
    -
    -
    -
    Returns
    pointer to the generated target
    - -

    References target_param::codeidx, target_param::csn, FCGI_stderr, FCGI_stdout, target_param::fd, targetlist_param::first, isJPTfeasible(), target_param::jppstream, target_param::jptstream, targetlist_param::last, logstream, MAX_LENOFTID, target_param::next, target_param::num_of_use, open_jp2file(), opj_malloc(), OPJ_TRUE, parse_jp2file(), target_param::targetname, and target_param::tid.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ gene_targetlist()

    - -
    -
    - - - - - - - - -
    targetlist_param_t* gene_targetlist (void )
    -
    - -

    generate a target list

    -
    Returns
    pointer to the generated target list
    - -

    References targetlist_param::first, targetlist_param::last, and opj_malloc().

    - -
    -
    - -

    ◆ print_alltarget()

    - -
    -
    - - - - - - - - -
    void print_alltarget (targetlist_param_ttargetlist)
    -
    - -

    print all target parameters

    -
    Parameters
    - - -
    [in]targetlisttarget list pointer
    -
    -
    - -

    References targetlist_param::first, target_param::next, and print_target().

    - -
    -
    - -

    ◆ print_target()

    - -
    -
    - - - - - - - - -
    void print_target (target_param_ttarget)
    -
    - -

    print target parameters

    -
    Parameters
    - - -
    [in]targettarget pointer
    -
    -
    - -

    References target_param::csn, logstream, target_param::targetname, and target_param::tid.

    - -

    Referenced by print_allsession(), and print_alltarget().

    - -
    -
    - -

    ◆ refer_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void refer_target (target_param_treftarget,
    target_param_t ** ptr 
    )
    -
    - -

    refer a target, used to make a new cache model

    -
    Parameters
    - - - -
    [in]reftargetreference target pointer
    [out]ptraddress of feeding target pointer
    -
    -
    - -

    References target_param::num_of_use.

    - -

    Referenced by gene_cachemodel().

    - -
    -
    - -

    ◆ search_target()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* search_target (const char targetname[],
    targetlist_param_ttargetlist 
    )
    -
    - -

    search a target by target name

    -
    Parameters
    - - - -
    [in]targetnametarget name
    [in]targetlisttarget list pointer
    -
    -
    -
    Returns
    found target pointer
    - -

    References targetlist_param::first, target_param::next, and target_param::targetname.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ search_targetBytid()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    target_param_t* search_targetBytid (const char tid[],
    targetlist_param_ttargetlist 
    )
    -
    - -

    search a target by tid

    -
    Parameters
    - - - -
    [in]tidtarget identifier
    [in]targetlisttarget list pointer
    -
    -
    -
    Returns
    found target pointer
    - -

    References targetlist_param::first, target_param::next, and target_param::tid.

    - -

    Referenced by identify_target().

    - -
    -
    - -

    ◆ unrefer_target()

    - -
    -
    - - - - - - - - -
    void unrefer_target (target_param_ttarget)
    -
    - -

    refer a target, used to make a new cache model

    -
    Parameters
    - - -
    [in]targetreference pointer to the target
    -
    -
    - -

    References target_param::num_of_use.

    - -

    Referenced by delete_cachemodel().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/target__manager_8h_source.html b/build/doc/html/target__manager_8h_source.html deleted file mode 100644 index 941666c82..000000000 --- a/build/doc/html/target__manager_8h_source.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - -OpenJPEG: target_manager.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    target_manager.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * $Id$
    -
    3  *
    -
    4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    5  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    6  * Copyright (c) 2010-2011, Kaori Hagihara
    -
    7  * All rights reserved.
    -
    8  *
    -
    9  * Redistribution and use in source and binary forms, with or without
    -
    10  * modification, are permitted provided that the following conditions
    -
    11  * are met:
    -
    12  * 1. Redistributions of source code must retain the above copyright
    -
    13  * notice, this list of conditions and the following disclaimer.
    -
    14  * 2. Redistributions in binary form must reproduce the above copyright
    -
    15  * notice, this list of conditions and the following disclaimer in the
    -
    16  * documentation and/or other materials provided with the distribution.
    -
    17  *
    -
    18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    28  * POSSIBILITY OF SUCH DAMAGE.
    -
    29  */
    -
    30 
    -
    31 #ifndef TARGET_MANAGER_H_
    -
    32 # define TARGET_MANAGER_H_
    -
    33 
    -
    34 #include "index_manager.h"
    -
    35 
    -
    37 #define MAX_LENOFTID 30
    -
    38 
    -
    40 typedef struct target_param {
    -
    41  char tid[MAX_LENOFTID];
    -
    42  char *targetname;
    -
    43  int fd;
    -
    44 #ifdef SERVER
    -
    45  char *tmpfname;
    -
    46 #endif
    -
    47  int csn;
    - - -
    50  int num_of_use;
    - - -
    53  struct target_param
    -
    54  *next;
    - -
    56 
    -
    57 
    -
    59 typedef struct targetlist_param {
    - - - -
    63 
    -
    64 
    -
    65 
    - -
    72 
    -
    73 
    -
    81 target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath);
    -
    82 
    -
    83 
    -
    90 void refer_target(target_param_t *reftarget, target_param_t **ptr);
    -
    91 
    -
    92 
    -
    98 void unrefer_target(target_param_t *target);
    -
    99 
    -
    105 void delete_target(target_param_t **target);
    -
    106 
    -
    107 
    - -
    115  targetlist_param_t *targetlist);
    -
    116 
    -
    117 
    -
    123 void delete_targetlist(targetlist_param_t **targetlist);
    -
    124 
    -
    125 
    -
    131 void print_target(target_param_t *target);
    -
    132 
    -
    138 void print_alltarget(targetlist_param_t *targetlist);
    -
    139 
    -
    140 
    -
    148 target_param_t * search_target(const char targetname[],
    -
    149  targetlist_param_t *targetlist);
    -
    150 
    -
    151 
    -
    159 target_param_t * search_targetBytid(const char tid[],
    -
    160  targetlist_param_t *targetlist);
    -
    161 
    -
    162 #endif /* !TARGET_MANAGER_H_ */
    -
    163 
    -
    -
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    -
    index_param_t * codeidx
    index information of codestream
    Definition: target_manager.h:49
    -
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    -
    int csn
    codestream number
    Definition: target_manager.h:47
    -
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    -
    #define FCGI_stdout
    Definition: target_manager.c:52
    -
    #define logstream
    Definition: target_manager.c:54
    -
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    -
    OPJ_BOOL jppstream
    if this target can return JPP-stream
    Definition: target_manager.h:51
    -
    index parameters
    Definition: index_manager.h:86
    -
    targetlist_param_t * gene_targetlist(void)
    generate a target list
    Definition: target_manager.c:57
    -
    void delete_index(index_param_t **index)
    delete index
    Definition: index_manager.c:192
    -
    void delete_target_in_list(target_param_t **target, targetlist_param_t *targetlist)
    delete a target in list
    Definition: target_manager.c:170
    -
    struct target_param * next
    pointer to the next target
    Definition: target_manager.h:53
    -
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    -
    #define MAX_LENOFTID
    maximum length of target identifier
    Definition: target_manager.h:37
    -
    target_param_t * last
    last target pointer of the list
    Definition: target_manager.h:61
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void refer_target(target_param_t *reftarget, target_param_t **ptr)
    refer a target, used to make a new cache model
    Definition: target_manager.c:135
    -
    OPJ_BOOL jptstream
    if this target can return JPP-stream
    Definition: target_manager.h:52
    - -
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    -
    int open_jp2file(const char filepath[], char tmpfname[])
    open jp2 format image file
    Definition: target_manager.c:263
    -
    target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath)
    generate a target
    Definition: target_manager.c:79
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void delete_target(target_param_t **target)
    delete a target
    Definition: target_manager.c:146
    -
    int num_of_use
    numbers of sessions referring to this target
    Definition: target_manager.h:50
    -
    int open_remotefile(const char filepath[], char tmpfname[])
    Definition: target_manager.c:314
    -
    void delete_target(target_param_t **target)
    delete a target
    Definition: target_manager.c:146
    -
    char * targetname
    local file path or URL ( URL is supported only with SERVER mode)
    Definition: target_manager.h:42
    -
    void unrefer_target(target_param_t *target)
    refer a target, used to make a new cache model
    Definition: target_manager.c:141
    -
    void delete_target_in_list(target_param_t **target, targetlist_param_t *targetlist)
    delete a target in list
    Definition: target_manager.c:170
    -
    Target list parameters.
    Definition: target_manager.h:59
    -
    OPJ_BOOL isJPTfeasible(index_param_t index)
    answers if the target is feasible to JPT-stream
    Definition: index_manager.c:792
    -
    char tid[MAX_LENOFTID]
    target identifier
    Definition: target_manager.h:41
    -
    index_param_t * parse_jp2file(int fd)
    parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
    Definition: index_manager.c:73
    -
    int fd
    file descriptor
    Definition: target_manager.h:43
    -
    target parameters
    Definition: target_manager.h:40
    -
    target_param_t * search_target(const char targetname[], targetlist_param_t *targetlist)
    search a target by target name
    Definition: target_manager.c:224
    -
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    -
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    -
    struct targetlist_param targetlist_param_t
    Target list parameters.
    - -
    #define FCGI_stderr
    Definition: target_manager.c:53
    -
    void print_target(target_param_t *target)
    print target parameters
    Definition: target_manager.c:205
    -
    target_param_t * first
    first target pointer of the list
    Definition: target_manager.h:60
    -
    struct target_param target_param_t
    target parameters
    -
    void delete_targetlist(targetlist_param_t **targetlist)
    delete target list
    Definition: target_manager.c:192
    -
    target_param_t * search_targetBytid(const char tid[], targetlist_param_t *targetlist)
    search a target by tid
    Definition: target_manager.c:242
    -
    void print_alltarget(targetlist_param_t *targetlist)
    print all target parameters
    Definition: target_manager.c:213
    - - - - diff --git a/build/doc/html/tcd_8c.html b/build/doc/html/tcd_8c.html deleted file mode 100644 index 18a87b3b3..000000000 --- a/build/doc/html/tcd_8c.html +++ /dev/null @@ -1,1867 +0,0 @@ - - - - - - - -OpenJPEG: tcd.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tcd.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -#include "opj_common.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    static INLINE OPJ_BOOL opj_tcd_init_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BOOL isEncoder, OPJ_FLOAT32 fraction, OPJ_SIZE_T sizeof_block, opj_event_mgr_t *manager)
     Initializes tile coding/decoding. More...
     
    static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_t *p_code_block)
     Allocates memory for a decoding code block. More...
     
    static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_t *p_precinct)
     Deallocates the decoding data of the given precinct. More...
     
    static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_t *p_code_block)
     Allocates memory for an encoding code block (but not data). More...
     
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_t *p_code_block)
     Allocates data for an encoding code block. More...
     
    static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_t *p_precinct)
     Deallocates the encoding data of the given precinct. More...
     
    static void opj_tcd_free_tile (opj_tcd_t *tcd)
     Free the memory allocated for encoding. More...
     
    static OPJ_BOOL opj_tcd_t2_decode (opj_tcd_t *p_tcd, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_src_size, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_t1_decode (opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_dwt_decode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_mct_decode (opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_dc_level_shift_decode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_dc_level_shift_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_mct_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_dwt_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_t1_encode (opj_tcd_t *p_tcd)
     
    static OPJ_BOOL opj_tcd_t2_encode (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_rate_allocate_encode (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_event_mgr_t *p_manager)
     
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding (opj_tcd_t *p_tcd, OPJ_UINT32 compno)
     Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members. More...
     
    opj_tcd_topj_tcd_create (OPJ_BOOL p_is_decoder)
     Create a new TCD handle. More...
     
    void opj_tcd_rateallocate_fixed (opj_tcd_t *tcd)
     
    void opj_tcd_makelayer (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
     
    void opj_tcd_makelayer_fixed (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
     
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
     
    OPJ_BOOL opj_tcd_init (opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
     Initialize the tile coder and may reuse some memory. More...
     
    void opj_tcd_destroy (opj_tcd_t *tcd)
     Destroy a previously created TCD handle. More...
     
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_t *l_tilec)
     Allocates tile component data. More...
     
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Initialize the tile coder and may reuse some meory. More...
     
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Allocates memory for decoding a specific tile. More...
     
    void opj_tcd_reinit_segment (opj_tcd_seg_t *seg)
     Reinitialize a segment. More...
     
    OPJ_UINT32 opj_tcd_get_decoded_tile_size (opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
     Gets the maximum tile size that will be taken by the tile once decoded. More...
     
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     Encodes a tile from the raw image into the given buffer. More...
     
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
     Decode a tile from a buffer into a raw image. More...
     
    OPJ_BOOL opj_tcd_update_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
     Copies tile data from the system onto the given memory block. More...
     
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_t *p_tcd)
     Get the size in bytes of the input buffer provided before encoded. More...
     
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
     Copies tile data from the given memory block onto the system. More...
     
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_t *band)
     Returns whether a sub-band is empty (i.e. More...
     
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
     Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1. More...
     
    opj_tcd_marker_info_topj_tcd_marker_info_create (OPJ_BOOL need_PLT)
     Create a new opj_tcd_marker_info_t* structure. More...
     
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_t *p_tcd_marker_info)
     Destroy a previously created opj_tcd_marker_info_t* structure. More...
     
    -

    Function Documentation

    - -

    ◆ opj_alloc_tile_component_data()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_tl_tilec)
    -
    -
    - -

    ◆ opj_tcd_code_block_dec_allocate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_tcd_code_block_dec_allocate (opj_tcd_cblk_dec_tp_code_block)
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_code_block_dec_deallocate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_tcd_code_block_dec_deallocate (opj_tcd_precinct_tp_precinct)
    -
    -static
    -
    - -

    Deallocates the decoding data of the given precinct.

    -

    Deallocates the encoding data of the given precinct.

    - -

    References opj_tcd_precinct::block_size, opj_tcd_precinct::cblks, opj_tcd_cblk_dec::chunks, opj_tcd_precinct::dec, opj_tcd_cblk_dec::decoded_data, opj_aligned_free(), opj_free(), and opj_tcd_cblk_dec::segs.

    - -

    Referenced by opj_tcd_free_tile().

    - -
    -
    - -

    ◆ opj_tcd_code_block_enc_allocate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_tcd_code_block_enc_allocate (opj_tcd_cblk_enc_tp_code_block)
    -
    -static
    -
    - -

    Allocates memory for an encoding code block (but not data).

    -

    Allocates memory for an encoding code block (but not data memory).

    - -

    References opj_tcd_cblk_enc::layers, opj_calloc(), OPJ_FALSE, OPJ_TRUE, and opj_tcd_cblk_enc::passes.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tcd_code_block_enc_allocate_data()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data (opj_tcd_cblk_enc_tp_code_block)
    -
    -static
    -
    - -

    Allocates data for an encoding code block.

    -

    Allocates data memory for an encoding code block.

    - -

    References opj_tcd_cblk_enc::data, opj_tcd_cblk_enc::data_size, OPJ_FALSE, opj_free(), opj_malloc(), OPJ_TRUE, opj_tcd_cblk_enc::x0, opj_tcd_cblk_enc::x1, opj_tcd_cblk_enc::y0, and opj_tcd_cblk_enc::y1.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tcd_code_block_enc_deallocate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_tcd_code_block_enc_deallocate (opj_tcd_precinct_tp_precinct)
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_copy_tile_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_src,
    OPJ_SIZE_T p_src_length 
    )
    -
    -
    - -

    ◆ opj_tcd_create()

    - -
    -
    - - - - - - - - -
    opj_tcd_t* opj_tcd_create (OPJ_BOOL p_is_decoder)
    -
    - -

    Create a new TCD handle.

    -

    Dump the content of a tcd structure.

    - -

    References opj_tcd::m_is_decoder, opj_calloc(), opj_free(), and opj_tcd::tcd_image.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    - -
    -
    - -

    ◆ opj_tcd_dc_level_shift_decode()

    - - - -

    ◆ opj_tcd_dc_level_shift_encode()

    - - - -

    ◆ opj_tcd_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_ttcd,
    OPJ_UINT32 win_x0,
    OPJ_UINT32 win_y0,
    OPJ_UINT32 win_x1,
    OPJ_UINT32 win_y1,
    OPJ_UINT32 numcomps_to_decode,
    const OPJ_UINT32comps_indices,
    OPJ_BYTEsrc,
    OPJ_UINT32 len,
    OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tmanager 
    )
    -
    - -

    Decode a tile from a buffer into a raw image.

    -
    Parameters
    - - - - - - - - - - - - - -
    tcdTCD handle
    win_x0Upper left x of region to decode (in grid coordinates)
    win_y0Upper left y of region to decode (in grid coordinates)
    win_x1Lower right x of region to decode (in grid coordinates)
    win_y1Lower right y of region to decode (in grid coordinates)
    numcomps_to_decodeSize of the comps_indices array, or 0 if decoding all components.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0). Or NULL if decoding all components.
    srcSource buffer
    lenLength of source buffer
    tilenoNumber that identifies one of the tiles to be decoded
    cstr_infoFIXME DOC
    managerthe event manager.
    -
    -
    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_image::numcomps, opj_tcd_tilecomp::numresolutions, opj_alloc_tile_component_data(), opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_alloc(), opj_image_data_free(), opj_malloc(), opj_tcd_dc_level_shift_decode(), opj_tcd_dwt_decode(), opj_tcd_is_whole_tilecomp_decoding(), opj_tcd_mct_decode(), opj_tcd_t1_decode(), opj_tcd_t2_decode(), OPJ_TRUE, opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, SIZE_MAX, opj_tcd::tcd_image, opj_tcd::tcd_tileno, tcp, opj_tcd::tcp, opj_cp::tcps, opj_tcd_image::tiles, opj_tcd::used_component, opj_tcd::whole_tile_decoding, opj_tcd_resolution::win_x0, opj_tcd_tilecomp::win_x0, opj_tcd::win_x0, opj_tcd_resolution::win_x1, opj_tcd_tilecomp::win_x1, opj_tcd::win_x1, opj_tcd_resolution::win_y0, opj_tcd_tilecomp::win_y0, opj_tcd::win_y0, opj_tcd_resolution::win_y1, opj_tcd_tilecomp::win_y1, opj_tcd::win_y1, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_resolution::y1, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_j2k_decode_tile().

    - -
    -
    - -

    ◆ opj_tcd_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tcd_destroy (opj_tcd_ttcd)
    -
    - -

    Destroy a previously created TCD handle.

    -
    Parameters
    - - -
    tcdTCD handle to destroy
    -
    -
    - -

    References opj_free(), opj_tcd_free_tile(), opj_tcd::tcd_image, and opj_tcd::used_component.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_destroy(), and opj_j2k_end_encoding().

    - -
    -
    - -

    ◆ opj_tcd_dwt_decode()

    - - - -

    ◆ opj_tcd_dwt_encode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static OPJ_BOOL opj_tcd_dwt_encode (opj_tcd_tp_tcd)
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_encode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BYTEp_dest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_len,
    struct opj_codestream_infop_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encodes a tile from the raw image into the given buffer.

    -
    Parameters
    - - - - - - - - - -
    p_tcdTile Coder handle
    p_tile_noIndex of the tile to encode.
    p_destDestination buffer
    p_data_writtenpointer to an int that is incremented by the number of bytes really written on p_dest
    p_lenMaximum length of the destination buffer
    p_cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the coding is successful.
    - -

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::cur_tp_num, opj_codestream_info::index_write, opj_codestream_info::numcomps, opj_codestream_info::numlayers, opj_tcd_tilecomp::numresolutions, opj_calloc(), OPJ_FALSE, opj_tcd_dc_level_shift_encode(), opj_tcd_dwt_encode(), opj_tcd_mct_encode(), opj_tcd_rate_allocate_encode(), opj_tcd_t1_encode(), opj_tcd_t2_encode(), OPJ_TRUE, opj_tile_info::packet, opj_tile_info::pdx, opj_tile_info::pdy, opj_tcd_resolution::ph, opj_tile_info::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_tile_info::pw, opj_tcd_tilecomp::resolutions, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcd_tileno, opj_tcd::tcp, opj_cp::tcps, opj_codestream_info::tile, and opj_tcd_image::tiles.

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_free_tile()

    - - - -

    ◆ opj_tcd_get_decoded_tile_size()

    - - - -

    ◆ opj_tcd_get_encoder_input_buffer_size()

    - -
    -
    - - - - - - - - -
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_tp_tcd)
    -
    - -

    Get the size in bytes of the input buffer provided before encoded.

    -

    This must be the size provided to the p_src_length argument of opj_tcd_copy_tile_data()

    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::image, opj_image::numcomps, opj_image_comp::prec, opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_j2k_encode(), and opj_tcd_copy_tile_data().

    - -
    -
    - -

    ◆ opj_tcd_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init (opj_tcd_tp_tcd,
    opj_image_tp_image,
    opj_cp_tp_cp,
    opj_thread_pool_tp_tp 
    )
    -
    - -

    Initialize the tile coder and may reuse some memory.

    -
    Parameters
    - - - - - -
    p_tcdTCD handle.
    p_imageraw image.
    p_cpcoding parameters.
    p_tpthread pool
    -
    -
    -
    Returns
    true if the encoding values could be set (false otherwise).
    - -

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::image, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_pos, opj_tcd_tile::numcomps, opj_image::numcomps, opj_calloc(), OPJ_FALSE, OPJ_TRUE, opj_tcd::tcd_image, opj_tcd::thread_pool, opj_tcd_image::tiles, and opj_tcd::tp_pos.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    - -
    -
    - -

    ◆ opj_tcd_init_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Allocates memory for decoding a specific tile.

    -
    Parameters
    - - - - -
    p_tcdthe tile decoder.
    p_tile_nothe index of the tile received in sequence. This not necessarily lead to the tile at index p_tile_no.
    p_managerthe event manager.
    -
    -
    -
    Returns
    true if the remaining data is sufficient.
    - -

    References OPJ_FALSE, and opj_tcd_init_tile().

    - -

    Referenced by opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ opj_tcd_init_encode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Initialize the tile coder and may reuse some meory.

    -
    Parameters
    - - - - -
    p_tcdTCD handle.
    p_tile_nocurrent tile index to encode.
    p_managerthe event manager.
    -
    -
    -
    Returns
    true if the encoding values could be set (false otherwise).
    - -

    References opj_tcd_init_tile(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_pre_write_tile().

    - -
    -
    - -

    ◆ opj_tcd_init_tile()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static INLINE OPJ_BOOL opj_tcd_init_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BOOL isEncoder,
    OPJ_FLOAT32 fraction,
    OPJ_SIZE_T sizeof_block,
    opj_event_mgr_tmanager 
    )
    -
    -static
    -
    - -

    Initializes tile coding/decoding.

    -

    avoid an if with storing function pointer

    - -

    References opj_tcd_band::bandno, opj_tcd_resolution::bands, opj_tcd_precinct::block_size, opj_tcd_precinct::blocks, opj_tccp::cblkh, opj_tcd_precinct::cblks, opj_tccp::cblkw, opj_tcd_precinct::ch, opj_tcd_tilecomp::compno, opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_precinct::cw, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_tcd_precinct::dec, opj_image_comp::dx, opj_image_comp::dy, opj_tcd_precinct::enc, EVT_ERROR, opj_stepsize::expn, opj_tcd::image, opj_tcd_precinct::imsbtree, opj_tcd_precinct::incltree, opj_cp::m_dec, opj_decoding_param::m_reduce, opj_cp::m_specific_param, opj_stepsize::mant, opj_tcd_tilecomp::minimum_num_resolutions, opj_tcd_resolution::numbands, opj_tcd_tile::numcomps, opj_tccp::numgbits, opj_tccp::numresolutions, opj_tcd_tilecomp::numresolutions, opj_dwt_getgain(), opj_dwt_getgain_real(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_free(), opj_int64_ceildivpow2(), opj_int_ceildiv(), opj_int_ceildivpow2(), opj_int_floordivpow2(), opj_int_max(), opj_int_min(), opj_malloc(), opj_realloc(), opj_tcd_code_block_dec_allocate(), opj_tcd_code_block_enc_allocate(), opj_tcd_code_block_enc_allocate_data(), opj_tcd_is_band_empty(), opj_tgt_create(), opj_tgt_init(), OPJ_TRUE, opj_uint_adds(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_image_comp::prec, opj_tcd_resolution::pw, opj_tccp::qmfbid, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, opj_tcd_tilecomp::resolutions_size, SIZE_MAX, opj_tccp::stepsizes, opj_tcp::tccps, opj_tcd::tcd_image, opj_cp::tcps, opj_cp::tdx, opj_cp::tdy, opj_tcd_image::tiles, opj_cp::tw, opj_cp::tx0, opj_cp::ty0, opj_tcd_tilecomp::win_x0, opj_tcd_tilecomp::win_x1, opj_tcd_tilecomp::win_y0, opj_tcd_tilecomp::win_y1, opj_tcd_cblk_enc::x0, opj_tcd_cblk_dec::x0, opj_tcd_precinct::x0, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_tile::x0, opj_image::x0, opj_tcd_cblk_enc::x1, opj_tcd_cblk_dec::x1, opj_tcd_precinct::x1, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_tile::x1, opj_image::x1, opj_tcd_cblk_enc::y0, opj_tcd_cblk_dec::y0, opj_tcd_precinct::y0, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_tile::y0, opj_image::y0, opj_tcd_cblk_enc::y1, opj_tcd_cblk_dec::y1, opj_tcd_precinct::y1, opj_tcd_resolution::y1, opj_tcd_tilecomp::y1, opj_tcd_tile::y1, and opj_image::y1.

    - -

    Referenced by opj_tcd_init_decode_tile(), and opj_tcd_init_encode_tile().

    - -
    -
    - -

    ◆ opj_tcd_is_band_empty()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_tband)
    -
    - -

    Returns whether a sub-band is empty (i.e.

    -

    whether it has a null area)

    Parameters
    - - -
    bandSub-band handle.
    -
    -
    -
    Returns
    OPJ_TRUE whether the sub-band is empty.
    - -

    References opj_tcd_band::x0, opj_tcd_band::x1, opj_tcd_band::y0, and opj_tcd_band::y1.

    - -

    Referenced by opj_t1_encode_cblks(), opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_tcd_makelayer(), opj_tcd_makelayer_fixed(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ opj_tcd_is_subband_area_of_interest()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_ttcd,
    OPJ_UINT32 compno,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    -
    - -

    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1.

    -
    Parameters
    - - - - - - - - - -
    tcdTCD handle.
    compnoComponent number
    resnoResolution number
    bandnoBand number (not band index, ie 0, 1, 2 or 3)
    x0Upper left x in subband coordinates
    y0Upper left y in subband coordinates
    x1Lower right x in subband coordinates
    y1Lower right y in subband coordinates
    -
    -
    -
    Returns
    OPJ_TRUE whether the sub-band region contributs to the area of interest.
    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::qmfbid, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcp, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_t1_decode_cblks(), and opj_t2_decode_packets().

    - -
    -
    - -

    ◆ opj_tcd_is_whole_tilecomp_decoding()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding (opj_tcd_tp_tcd,
    OPJ_UINT32 compno 
    )
    -
    -static
    -
    - -

    Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members.

    -
    Parameters
    - - - -
    p_tcdTCD handle.
    compnoComponent number
    -
    -
    -
    Returns
    OPJ_TRUE whether the tile componenent is fully decoded
    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_tcd_tilecomp::numresolutions, opj_uint_ceildiv(), opj_uint_max(), opj_uint_min(), opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_tcd_decode_tile().

    - -
    -
    - -

    ◆ opj_tcd_makelayer()

    - - - -

    ◆ opj_tcd_makelayer_fixed()

    - - - -

    ◆ opj_tcd_marker_info_create()

    - -
    -
    - - - - - - - - -
    opj_tcd_marker_info_t* opj_tcd_marker_info_create (OPJ_BOOL need_PLT)
    -
    - -

    Create a new opj_tcd_marker_info_t* structure.

    -
    Parameters
    - - -
    need_PLTWhether information is needed to generate PLT markers.
    -
    -
    - -

    References opj_tcd_marker_info::need_PLT, and opj_calloc().

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_marker_info_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_tp_tcd_marker_info)
    -
    - -

    Destroy a previously created opj_tcd_marker_info_t* structure.

    -
    Parameters
    - - -
    p_tcd_marker_infoStructure to destroy
    -
    -
    - -

    References opj_free(), and opj_tcd_marker_info::p_packet_size.

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_mct_decode()

    - - - -

    ◆ opj_tcd_mct_encode()

    - - - -

    ◆ opj_tcd_rate_allocate_encode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_tcd_rate_allocate_encode (opj_tcd_tp_tcd,
    OPJ_BYTEp_dest_data,
    OPJ_UINT32 p_max_dest_size,
    opj_codestream_info_tp_cstr_info,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_rateallocate()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_ttcd,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_tcd_rateallocate_fixed()

    - -
    -
    - - - - - - - - -
    void opj_tcd_rateallocate_fixed (opj_tcd_ttcd)
    -
    -
    - -

    ◆ opj_tcd_reinit_segment()

    - -
    -
    - - - - - - - - -
    void opj_tcd_reinit_segment (opj_tcd_seg_tseg)
    -
    - -

    Reinitialize a segment.

    - -

    Referenced by opj_t2_init_seg(), and opj_tcd_code_block_dec_allocate().

    - -
    -
    - -

    ◆ opj_tcd_t1_decode()

    - - - -

    ◆ opj_tcd_t1_encode()

    - - - -

    ◆ opj_tcd_t2_decode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_tcd_t2_decode (opj_tcd_tp_tcd,
    OPJ_BYTEp_src_data,
    OPJ_UINT32p_data_read,
    OPJ_UINT32 p_max_src_size,
    opj_codestream_index_tp_cstr_index,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_t2_encode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static OPJ_BOOL opj_tcd_t2_encode (opj_tcd_tp_tcd,
    OPJ_BYTEp_dest_data,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_max_dest_size,
    opj_codestream_info_tp_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    -
    -static
    -
    -
    - -

    ◆ opj_tcd_update_tile_data()

    - - -
    - - - - diff --git a/build/doc/html/tcd_8h.html b/build/doc/html/tcd_8h.html deleted file mode 100644 index b92b16599..000000000 --- a/build/doc/html/tcd_8h.html +++ /dev/null @@ -1,1383 +0,0 @@ - - - - - - - -OpenJPEG: tcd.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tcd.h File Reference
    -
    -
    - -

    Implementation of a tile coder/decoder (TCD) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Structures

    struct  opj_tcd_pass
     FIXME DOC. More...
     
    struct  opj_tcd_layer
     FIXME DOC. More...
     
    struct  opj_tcd_cblk_enc
     FIXME DOC. More...
     
    struct  opj_tcd_seg_data_chunk
     Chunk of codestream data that is part of a code block. More...
     
    struct  opj_tcd_seg
     Segment of a code-block. More...
     
    struct  opj_tcd_cblk_dec
     Code-block for decoding. More...
     
    struct  opj_tcd_precinct
     Precinct structure. More...
     
    struct  opj_tcd_band
     Sub-band structure. More...
     
    struct  opj_tcd_resolution
     Tile-component resolution structure. More...
     
    struct  opj_tcd_tilecomp
     Tile-component structure. More...
     
    struct  opj_tcd_tile
     FIXME DOC. More...
     
    struct  opj_tcd_image
     FIXME DOC. More...
     
    struct  opj_tcd
     Tile coder/decoder. More...
     
    struct  opj_tcd_marker_info
     Structure to hold information needed to generate some markers. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    typedef struct opj_tcd_pass opj_tcd_pass_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_layer opj_tcd_layer_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_seg_data_chunk opj_tcd_seg_data_chunk_t
     Chunk of codestream data that is part of a code block. More...
     
    typedef struct opj_tcd_seg opj_tcd_seg_t
     Segment of a code-block. More...
     
    typedef struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
     Code-block for decoding. More...
     
    typedef struct opj_tcd_precinct opj_tcd_precinct_t
     Precinct structure. More...
     
    typedef struct opj_tcd_band opj_tcd_band_t
     Sub-band structure. More...
     
    typedef struct opj_tcd_resolution opj_tcd_resolution_t
     Tile-component resolution structure. More...
     
    typedef struct opj_tcd_tilecomp opj_tcd_tilecomp_t
     Tile-component structure. More...
     
    typedef struct opj_tcd_tile opj_tcd_tile_t
     FIXME DOC. More...
     
    typedef struct opj_tcd_image opj_tcd_image_t
     FIXME DOC. More...
     
    typedef struct opj_tcd opj_tcd_t
     Tile coder/decoder. More...
     
    typedef struct opj_tcd_marker_info opj_tcd_marker_info_t
     Structure to hold information needed to generate some markers. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    opj_tcd_topj_tcd_create (OPJ_BOOL p_is_decoder)
     Dump the content of a tcd structure. More...
     
    void opj_tcd_destroy (opj_tcd_t *tcd)
     Destroy a previously created TCD handle. More...
     
    opj_tcd_marker_info_topj_tcd_marker_info_create (OPJ_BOOL need_PLT)
     Create a new opj_tcd_marker_info_t* structure. More...
     
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_t *p_tcd_marker_info)
     Destroy a previously created opj_tcd_marker_info_t* structure. More...
     
    OPJ_BOOL opj_tcd_init (opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
     Initialize the tile coder and may reuse some memory. More...
     
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Allocates memory for decoding a specific tile. More...
     
    void opj_tcd_makelayer_fixed (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
     
    void opj_tcd_rateallocate_fixed (opj_tcd_t *tcd)
     
    void opj_tcd_makelayer (opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
     
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
     
    OPJ_UINT32 opj_tcd_get_decoded_tile_size (opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
     Gets the maximum tile size that will be taken by the tile once decoded. More...
     
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_len, struct opj_codestream_info *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
     Encodes a tile from the raw image into the given buffer. More...
     
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_t *tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *src, OPJ_UINT32 len, OPJ_UINT32 tileno, opj_codestream_index_t *cstr_info, opj_event_mgr_t *manager)
     Decode a tile from a buffer into a raw image. More...
     
    OPJ_BOOL opj_tcd_update_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
     Copies tile data from the system onto the given memory block. More...
     
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_t *p_tcd)
     Get the size in bytes of the input buffer provided before encoded. More...
     
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
     Initialize the tile coder and may reuse some meory. More...
     
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
     Copies tile data from the given memory block onto the system. More...
     
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_t *l_tilec)
     Allocates tile component data. More...
     
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_t *band)
     Returns whether a sub-band is empty (i.e. More...
     
    void opj_tcd_reinit_segment (opj_tcd_seg_t *seg)
     Reinitialize a segment. More...
     
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
     Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1. More...
     
    -

    Detailed Description

    -

    Implementation of a tile coder/decoder (TCD)

    -

    The functions in TCD.C encode or decode each tile independently from each other. The functions in TCD.C are used by other functions in J2K.C.

    -

    Typedef Documentation

    - -

    ◆ opj_tcd_band_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_band opj_tcd_band_t
    -
    - -

    Sub-band structure.

    - -
    -
    - -

    ◆ opj_tcd_cblk_dec_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
    -
    - -

    Code-block for decoding.

    - -
    -
    - -

    ◆ opj_tcd_cblk_enc_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_tcd_image_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_image opj_tcd_image_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_tcd_layer_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_layer opj_tcd_layer_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_tcd_marker_info_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_marker_info opj_tcd_marker_info_t
    -
    - -

    Structure to hold information needed to generate some markers.

    -

    Used by encoder.

    - -
    -
    - -

    ◆ opj_tcd_pass_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_pass opj_tcd_pass_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_tcd_precinct_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_precinct opj_tcd_precinct_t
    -
    - -

    Precinct structure.

    - -
    -
    - -

    ◆ opj_tcd_resolution_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_resolution opj_tcd_resolution_t
    -
    - -

    Tile-component resolution structure.

    - -
    -
    - -

    ◆ opj_tcd_seg_data_chunk_t

    - -
    -
    - -

    Chunk of codestream data that is part of a code block.

    - -
    -
    - -

    ◆ opj_tcd_seg_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_seg opj_tcd_seg_t
    -
    - -

    Segment of a code-block.

    -

    A segment represent a number of consecutive coding passes, without termination of MQC or RAW between them.

    - -
    -
    - -

    ◆ opj_tcd_t

    - -
    -
    - - - - -
    typedef struct opj_tcd opj_tcd_t
    -
    - -

    Tile coder/decoder.

    - -
    -
    - -

    ◆ opj_tcd_tile_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_tile opj_tcd_tile_t
    -
    - -

    FIXME DOC.

    - -
    -
    - -

    ◆ opj_tcd_tilecomp_t

    - -
    -
    - - - - -
    typedef struct opj_tcd_tilecomp opj_tcd_tilecomp_t
    -
    - -

    Tile-component structure.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_alloc_tile_component_data()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_alloc_tile_component_data (opj_tcd_tilecomp_tl_tilec)
    -
    -
    - -

    ◆ opj_tcd_copy_tile_data()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_copy_tile_data (opj_tcd_tp_tcd,
    OPJ_BYTEp_src,
    OPJ_SIZE_T p_src_length 
    )
    -
    -
    - -

    ◆ opj_tcd_create()

    - -
    -
    - - - - - - - - -
    opj_tcd_t* opj_tcd_create (OPJ_BOOL p_is_decoder)
    -
    - -

    Dump the content of a tcd structure.

    -

    Create a new TCD handle

    Parameters
    - - -
    p_is_decoderFIXME DOC
    -
    -
    -
    Returns
    Returns a new TCD handle if successful returns NULL otherwise
    -

    Dump the content of a tcd structure.

    - -

    References opj_tcd::m_is_decoder, opj_calloc(), opj_free(), and opj_tcd::tcd_image.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    - -
    -
    - -

    ◆ opj_tcd_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_decode_tile (opj_tcd_ttcd,
    OPJ_UINT32 win_x0,
    OPJ_UINT32 win_y0,
    OPJ_UINT32 win_x1,
    OPJ_UINT32 win_y1,
    OPJ_UINT32 numcomps_to_decode,
    const OPJ_UINT32comps_indices,
    OPJ_BYTEsrc,
    OPJ_UINT32 len,
    OPJ_UINT32 tileno,
    opj_codestream_index_tcstr_info,
    opj_event_mgr_tmanager 
    )
    -
    - -

    Decode a tile from a buffer into a raw image.

    -
    Parameters
    - - - - - - - - - - - - - -
    tcdTCD handle
    win_x0Upper left x of region to decode (in grid coordinates)
    win_y0Upper left y of region to decode (in grid coordinates)
    win_x1Lower right x of region to decode (in grid coordinates)
    win_y1Lower right y of region to decode (in grid coordinates)
    numcomps_to_decodeSize of the comps_indices array, or 0 if decoding all components.
    comps_indicesArray of numcomps values representing the indices of the components to decode (relative to the codestream, starting at 0). Or NULL if decoding all components.
    srcSource buffer
    lenLength of source buffer
    tilenoNumber that identifies one of the tiles to be decoded
    cstr_infoFIXME DOC
    managerthe event manager.
    -
    -
    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::cp, opj_tcd_tilecomp::data_size_needed, opj_tcd_tilecomp::data_win, opj_image_comp::dx, opj_image_comp::dy, EVT_ERROR, opj_tcd::image, opj_tcd_tilecomp::minimum_num_resolutions, opj_image::numcomps, opj_tcd_tilecomp::numresolutions, opj_alloc_tile_component_data(), opj_calloc(), opj_event_msg(), OPJ_FALSE, opj_free(), opj_image_data_alloc(), opj_image_data_free(), opj_malloc(), opj_tcd_dc_level_shift_decode(), opj_tcd_dwt_decode(), opj_tcd_is_whole_tilecomp_decoding(), opj_tcd_mct_decode(), opj_tcd_t1_decode(), opj_tcd_t2_decode(), OPJ_TRUE, opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tcd_resolution::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_image_comp::resno_decoded, opj_tcd_tilecomp::resolutions, SIZE_MAX, opj_tcd::tcd_image, opj_tcd::tcd_tileno, tcp, opj_tcd::tcp, opj_cp::tcps, opj_tcd_image::tiles, opj_tcd::used_component, opj_tcd::whole_tile_decoding, opj_tcd_resolution::win_x0, opj_tcd_tilecomp::win_x0, opj_tcd::win_x0, opj_tcd_resolution::win_x1, opj_tcd_tilecomp::win_x1, opj_tcd::win_x1, opj_tcd_resolution::win_y0, opj_tcd_tilecomp::win_y0, opj_tcd::win_y0, opj_tcd_resolution::win_y1, opj_tcd_tilecomp::win_y1, opj_tcd::win_y1, opj_tcd_resolution::x0, opj_tcd_tilecomp::x0, opj_tcd_resolution::x1, opj_tcd_tilecomp::x1, opj_tcd_resolution::y0, opj_tcd_tilecomp::y0, opj_tcd_resolution::y1, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_j2k_decode_tile().

    - -
    -
    - -

    ◆ opj_tcd_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tcd_destroy (opj_tcd_ttcd)
    -
    - -

    Destroy a previously created TCD handle.

    -
    Parameters
    - - -
    tcdTCD handle to destroy
    -
    -
    - -

    References opj_free(), opj_tcd_free_tile(), opj_tcd::tcd_image, and opj_tcd::used_component.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), opj_j2k_create_tcd(), opj_j2k_destroy(), and opj_j2k_end_encoding().

    - -
    -
    - -

    ◆ opj_tcd_encode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    OPJ_BYTEp_dest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 p_len,
    struct opj_codestream_infop_cstr_info,
    opj_tcd_marker_info_tp_marker_info,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Encodes a tile from the raw image into the given buffer.

    -
    Parameters
    - - - - - - - - - -
    p_tcdTile Coder handle
    p_tile_noIndex of the tile to encode.
    p_destDestination buffer
    p_data_writtenpointer to an int that is incremented by the number of bytes really written on p_dest
    p_lenMaximum length of the destination buffer
    p_cstr_infoCodestream information structure
    p_marker_infoMarker information structure
    p_managerthe user event manager
    -
    -
    -
    Returns
    true if the coding is successful.
    - -

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::cur_tp_num, opj_codestream_info::index_write, opj_codestream_info::numcomps, opj_codestream_info::numlayers, opj_tcd_tilecomp::numresolutions, opj_calloc(), OPJ_FALSE, opj_tcd_dc_level_shift_encode(), opj_tcd_dwt_encode(), opj_tcd_mct_encode(), opj_tcd_rate_allocate_encode(), opj_tcd_t1_encode(), opj_tcd_t2_encode(), OPJ_TRUE, opj_tile_info::packet, opj_tile_info::pdx, opj_tile_info::pdy, opj_tcd_resolution::ph, opj_tile_info::ph, opj_tccp::prch, opj_tccp::prcw, opj_tcd_resolution::pw, opj_tile_info::pw, opj_tcd_tilecomp::resolutions, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcd_tileno, opj_tcd::tcp, opj_cp::tcps, opj_codestream_info::tile, and opj_tcd_image::tiles.

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_get_decoded_tile_size()

    - - - -

    ◆ opj_tcd_get_encoder_input_buffer_size()

    - -
    -
    - - - - - - - - -
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size (opj_tcd_tp_tcd)
    -
    - -

    Get the size in bytes of the input buffer provided before encoded.

    -

    This must be the size provided to the p_src_length argument of opj_tcd_copy_tile_data()

    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_tcd::image, opj_image::numcomps, opj_image_comp::prec, opj_tcd::tcd_image, opj_tcd_image::tiles, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_j2k_encode(), and opj_tcd_copy_tile_data().

    - -
    -
    - -

    ◆ opj_tcd_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init (opj_tcd_tp_tcd,
    opj_image_tp_image,
    opj_cp_tp_cp,
    opj_thread_pool_tp_tp 
    )
    -
    - -

    Initialize the tile coder and may reuse some memory.

    -
    Parameters
    - - - - - -
    p_tcdTCD handle.
    p_imageraw image.
    p_cpcoding parameters.
    p_tpthread pool
    -
    -
    -
    Returns
    true if the encoding values could be set (false otherwise).
    - -

    References opj_tcd_tile::comps, opj_tcd::cp, opj_tcd::image, opj_cp::m_enc, opj_cp::m_specific_param, opj_encoding_param::m_tp_pos, opj_tcd_tile::numcomps, opj_image::numcomps, opj_calloc(), OPJ_FALSE, OPJ_TRUE, opj_tcd::tcd_image, opj_tcd::thread_pool, opj_tcd_image::tiles, and opj_tcd::tp_pos.

    - -

    Referenced by opj_j2k_copy_default_tcp_and_create_tcd(), and opj_j2k_create_tcd().

    - -
    -
    - -

    ◆ opj_tcd_init_decode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init_decode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Allocates memory for decoding a specific tile.

    -
    Parameters
    - - - - -
    p_tcdthe tile decoder.
    p_tile_nothe index of the tile received in sequence. This not necessarily lead to the tile at index p_tile_no.
    p_managerthe event manager.
    -
    -
    -
    Returns
    true if the remaining data is sufficient.
    - -

    References OPJ_FALSE, and opj_tcd_init_tile().

    - -

    Referenced by opj_j2k_read_tile_header().

    - -
    -
    - -

    ◆ opj_tcd_init_encode_tile()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_init_encode_tile (opj_tcd_tp_tcd,
    OPJ_UINT32 p_tile_no,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Initialize the tile coder and may reuse some meory.

    -
    Parameters
    - - - - -
    p_tcdTCD handle.
    p_tile_nocurrent tile index to encode.
    p_managerthe event manager.
    -
    -
    -
    Returns
    true if the encoding values could be set (false otherwise).
    - -

    References opj_tcd_init_tile(), and OPJ_TRUE.

    - -

    Referenced by opj_j2k_pre_write_tile().

    - -
    -
    - -

    ◆ opj_tcd_is_band_empty()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL opj_tcd_is_band_empty (opj_tcd_band_tband)
    -
    - -

    Returns whether a sub-band is empty (i.e.

    -

    whether it has a null area)

    Parameters
    - - -
    bandSub-band handle.
    -
    -
    -
    Returns
    OPJ_TRUE whether the sub-band is empty.
    - -

    References opj_tcd_band::x0, opj_tcd_band::x1, opj_tcd_band::y0, and opj_tcd_band::y1.

    - -

    Referenced by opj_t1_encode_cblks(), opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tcd_init_tile(), opj_tcd_makelayer(), opj_tcd_makelayer_fixed(), and opj_tcd_rateallocate().

    - -
    -
    - -

    ◆ opj_tcd_is_subband_area_of_interest()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest (opj_tcd_ttcd,
    OPJ_UINT32 compno,
    OPJ_UINT32 resno,
    OPJ_UINT32 bandno,
    OPJ_UINT32 x0,
    OPJ_UINT32 y0,
    OPJ_UINT32 x1,
    OPJ_UINT32 y1 
    )
    -
    - -

    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,tcd->win_y0,tcd->win_x1,tcd->win_y1.

    -
    Parameters
    - - - - - - - - - -
    tcdTCD handle.
    compnoComponent number
    resnoResolution number
    bandnoBand number (not band index, ie 0, 1, 2 or 3)
    x0Upper left x in subband coordinates
    y0Upper left y in subband coordinates
    x1Lower right x in subband coordinates
    y1Lower right y in subband coordinates
    -
    -
    -
    Returns
    OPJ_TRUE whether the sub-band region contributs to the area of interest.
    - -

    References opj_tcd_tile::comps, opj_image::comps, opj_image_comp::dx, opj_image_comp::dy, opj_tcd::image, opj_tcd_tilecomp::numresolutions, opj_uint_adds(), opj_uint_ceildiv(), opj_uint_ceildivpow2(), opj_uint_max(), opj_uint_min(), opj_tccp::qmfbid, opj_tcp::tccps, opj_tcd::tcd_image, opj_tcd::tcp, opj_tcd_image::tiles, opj_tcd::win_x0, opj_tcd::win_x1, opj_tcd::win_y0, opj_tcd::win_y1, opj_tcd_tilecomp::x0, opj_tcd_tilecomp::x1, opj_tcd_tilecomp::y0, and opj_tcd_tilecomp::y1.

    - -

    Referenced by opj_t1_decode_cblks(), and opj_t2_decode_packets().

    - -
    -
    - -

    ◆ opj_tcd_makelayer()

    - - - -

    ◆ opj_tcd_makelayer_fixed()

    - - - -

    ◆ opj_tcd_marker_info_create()

    - -
    -
    - - - - - - - - -
    opj_tcd_marker_info_t* opj_tcd_marker_info_create (OPJ_BOOL need_PLT)
    -
    - -

    Create a new opj_tcd_marker_info_t* structure.

    -
    Parameters
    - - -
    need_PLTWhether information is needed to generate PLT markers.
    -
    -
    - -

    References opj_tcd_marker_info::need_PLT, and opj_calloc().

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_marker_info_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tcd_marker_info_destroy (opj_tcd_marker_info_tp_tcd_marker_info)
    -
    - -

    Destroy a previously created opj_tcd_marker_info_t* structure.

    -
    Parameters
    - - -
    p_tcd_marker_infoStructure to destroy
    -
    -
    - -

    References opj_free(), and opj_tcd_marker_info::p_packet_size.

    - -

    Referenced by opj_j2k_write_sod().

    - -
    -
    - -

    ◆ opj_tcd_rateallocate()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tcd_rateallocate (opj_tcd_ttcd,
    OPJ_BYTEdest,
    OPJ_UINT32p_data_written,
    OPJ_UINT32 len,
    opj_codestream_info_tcstr_info,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_tcd_rateallocate_fixed()

    - -
    -
    - - - - - - - - -
    void opj_tcd_rateallocate_fixed (opj_tcd_ttcd)
    -
    -
    - -

    ◆ opj_tcd_reinit_segment()

    - -
    -
    - - - - - - - - -
    void opj_tcd_reinit_segment (opj_tcd_seg_tseg)
    -
    - -

    Reinitialize a segment.

    - -

    Referenced by opj_t2_init_seg(), and opj_tcd_code_block_dec_allocate().

    - -
    -
    - -

    ◆ opj_tcd_update_tile_data()

    - - -
    - - - - diff --git a/build/doc/html/tcd_8h_source.html b/build/doc/html/tcd_8h_source.html deleted file mode 100644 index 5155583be..000000000 --- a/build/doc/html/tcd_8h_source.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - - - - -OpenJPEG: tcd.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    tcd.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
    -
    15  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    16  * Copyright (c) 2017, IntoPIX SA <support@intopix.com>
    -
    17  * All rights reserved.
    -
    18  *
    -
    19  * Redistribution and use in source and binary forms, with or without
    -
    20  * modification, are permitted provided that the following conditions
    -
    21  * are met:
    -
    22  * 1. Redistributions of source code must retain the above copyright
    -
    23  * notice, this list of conditions and the following disclaimer.
    -
    24  * 2. Redistributions in binary form must reproduce the above copyright
    -
    25  * notice, this list of conditions and the following disclaimer in the
    -
    26  * documentation and/or other materials provided with the distribution.
    -
    27  *
    -
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    38  * POSSIBILITY OF SUCH DAMAGE.
    -
    39  */
    -
    40 #ifndef OPJ_TCD_H
    -
    41 #define OPJ_TCD_H
    -
    42 
    -
    52 
    -
    53 
    -
    57 typedef struct opj_tcd_pass {
    - - - - - -
    63 
    -
    67 typedef struct opj_tcd_layer {
    -
    68  OPJ_UINT32 numpasses; /* Number of passes in the layer */
    -
    69  OPJ_UINT32 len; /* len of information */
    -
    70  OPJ_FLOAT64 disto; /* add for index (Cfr. Marcela) */
    -
    71  OPJ_BYTE *data; /* data */
    - -
    73 
    -
    77 typedef struct opj_tcd_cblk_enc {
    -
    78  OPJ_BYTE* data; /* Data */
    -
    79  opj_tcd_layer_t* layers; /* layer information */
    -
    80  opj_tcd_pass_t* passes; /* information about the passes */
    - -
    82  y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
    - - -
    85  OPJ_UINT32 data_size; /* Size of allocated data buffer */
    - -
    87  numpasses; /* number of pass already done for the code-blocks */
    -
    88  OPJ_UINT32 numpassesinlayers; /* number of passes in the layer */
    -
    89  OPJ_UINT32 totalpasses; /* total number of passes */
    - -
    91 
    -
    92 
    -
    94 typedef struct opj_tcd_seg_data_chunk {
    -
    95  /* Point to tilepart buffer. We don't make a copy !
    -
    96  So the tilepart buffer must be kept alive
    -
    97  as long as we need to decode the codeblocks */
    - -
    99  OPJ_UINT32 len; /* Usable length of data */
    - -
    101 
    -
    105 typedef struct opj_tcd_seg {
    -
    106  OPJ_UINT32 len; /* Size of data related to this segment */
    -
    107  /* Number of passes decoded. Including those that we skip */
    - -
    109  /* Number of passes actually to be decoded. To be used for code-block decoding */
    - -
    111  /* Maximum number of passes for this segment */
    - -
    113  /* Number of new passes for current packed. Transitory value */
    - -
    115  /* Codestream length for this segment for current packed. Transitory value */
    - -
    117 } opj_tcd_seg_t;
    -
    118 
    -
    120 typedef struct opj_tcd_cblk_dec {
    -
    121  opj_tcd_seg_t* segs; /* segments information */
    -
    122  opj_tcd_seg_data_chunk_t* chunks; /* Array of chunks */
    -
    123  /* position of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
    - - -
    126  /* number of bits for len, for the current packet. Transitory value */
    - -
    128  /* number of pass added to the code-blocks, for the current packet. Transitory value */
    - -
    130  /* number of segments, including those of packet we skip */
    - -
    132  /* number of segments, to be used for code block decoding */
    - -
    134  OPJ_UINT32 m_current_max_segs; /* allocated number of segs[] items */
    -
    135  OPJ_UINT32 numchunks; /* Number of valid chunks items */
    -
    136  OPJ_UINT32 numchunksalloc; /* Number of chunks item allocated */
    -
    137  /* Decoded code-block. Only used for subtile decoding. Otherwise tilec->data is directly updated */
    - - -
    140 
    -
    142 typedef struct opj_tcd_precinct {
    -
    143  /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
    - -
    145  OPJ_UINT32 cw, ch; /* number of code-blocks, in width and height */
    -
    146  union { /* code-blocks information */
    - - -
    149  void* blocks;
    -
    150  } cblks;
    -
    151  OPJ_UINT32 block_size; /* size taken by cblks (in bytes) */
    -
    152  opj_tgt_tree_t *incltree; /* inclusion tree */
    -
    153  opj_tgt_tree_t *imsbtree; /* IMSB tree */
    - -
    155 
    -
    157 typedef struct opj_tcd_band {
    -
    158  /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
    - -
    160  /* band number: for lowest resolution level (0=LL), otherwise (1=HL, 2=LH, 3=HH) */
    - -
    162  /* precinct information */
    - -
    164  /* size of data taken by precincts */
    - - - - -
    169 
    -
    171 typedef struct opj_tcd_resolution {
    -
    172  /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
    - -
    174  /* number of precincts, in width and height, for this resolution level */
    - -
    176  /* number of sub-bands for the resolution level (1 for lowest resolution level, 3 otherwise) */
    - -
    178  /* subband information */
    - -
    180 
    -
    181  /* dimension of the resolution limited to window of interest. Only valid if tcd->whole_tile_decoding is set */
    - - - - - -
    187 
    -
    189 typedef struct opj_tcd_tilecomp {
    -
    190  /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
    - -
    192  /* component number */
    - -
    194  /* number of resolutions level */
    - -
    196  /* number of resolutions level to decode (at max)*/
    - -
    198  /* resolutions information */
    - -
    200  /* size of data for resolutions (in bytes) */
    - -
    202 
    -
    203  /* data of the component. For decoding, only valid if tcd->whole_tile_decoding is set (so exclusive of data_win member) */
    - -
    205  /* if true, then need to free after usage, otherwise do not free */
    - -
    207  /* we may either need to allocate this amount of data, or re-use image data and ignore this value */
    - -
    209  /* size of the data of the component */
    -
    210  size_t data_size;
    -
    211 
    - -
    214  /* dimension of the component limited to window of interest. Only valid for decoding and if tcd->whole_tile_decoding is NOT set */
    - - - - -
    219 
    -
    220  /* add fixed_quality */
    - - -
    223 
    -
    224 
    -
    228 typedef struct opj_tcd_tile {
    -
    229  /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
    - -
    231  OPJ_UINT32 numcomps; /* number of components in tile */
    -
    232  opj_tcd_tilecomp_t *comps; /* Components information */
    -
    233  OPJ_INT32 numpix; /* add fixed_quality */
    -
    234  OPJ_FLOAT64 distotile; /* add fixed_quality */
    -
    235  OPJ_FLOAT64 distolayer[100]; /* add fixed_quality */
    -
    236  OPJ_UINT32 packno; /* packet number */
    - -
    238 
    -
    242 typedef struct opj_tcd_image {
    -
    243  opj_tcd_tile_t *tiles; /* Tiles information */
    -
    244 }
    - -
    246 
    -
    247 
    -
    251 typedef struct opj_tcd {
    - - - - - - - - - - - - - - - - - -
    283  /* Array of size image->numcomps indicating if a component must be decoded. NULL if all components must be decoded */
    - -
    285 } opj_tcd_t;
    -
    286 
    -
    291 typedef struct opj_tcd_marker_info {
    - -
    294 
    - -
    297 
    - - -
    302 
    -
    305 /* ----------------------------------------------------------------------- */
    -
    306 
    -
    310 /*void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);*/ /* TODO MSD shoul use the new v2 structures */
    -
    311 
    -
    317 opj_tcd_t* opj_tcd_create(OPJ_BOOL p_is_decoder);
    -
    318 
    -
    323 void opj_tcd_destroy(opj_tcd_t *tcd);
    -
    324 
    -
    325 
    - -
    331 
    -
    332 
    -
    337 void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info);
    -
    338 
    -
    339 
    - -
    350  opj_image_t * p_image,
    -
    351  opj_cp_t * p_cp,
    -
    352  opj_thread_pool_t* p_tp);
    -
    353 
    - -
    365  opj_event_mgr_t* p_manager);
    -
    366 
    - -
    368  OPJ_UINT32 final);
    -
    369 
    - -
    371 
    -
    372 void opj_tcd_makelayer(opj_tcd_t *tcd,
    -
    373  OPJ_UINT32 layno,
    -
    374  OPJ_FLOAT64 thresh,
    -
    375  OPJ_UINT32 final);
    -
    376 
    - -
    378  OPJ_BYTE *dest,
    -
    379  OPJ_UINT32 * p_data_written,
    -
    380  OPJ_UINT32 len,
    -
    381  opj_codestream_info_t *cstr_info,
    -
    382  opj_event_mgr_t *p_manager);
    -
    383 
    - -
    388  OPJ_BOOL take_into_account_partial_decoding);
    -
    389 
    - -
    403  OPJ_UINT32 p_tile_no,
    -
    404  OPJ_BYTE *p_dest,
    -
    405  OPJ_UINT32 * p_data_written,
    -
    406  OPJ_UINT32 p_len,
    -
    407  struct opj_codestream_info *p_cstr_info,
    -
    408  opj_tcd_marker_info_t* p_marker_info,
    -
    409  opj_event_mgr_t *p_manager);
    -
    410 
    -
    411 
    - -
    430  OPJ_UINT32 win_x0,
    -
    431  OPJ_UINT32 win_y0,
    -
    432  OPJ_UINT32 win_x1,
    -
    433  OPJ_UINT32 win_y1,
    -
    434  OPJ_UINT32 numcomps_to_decode,
    -
    435  const OPJ_UINT32 *comps_indices,
    -
    436  OPJ_BYTE *src,
    -
    437  OPJ_UINT32 len,
    -
    438  OPJ_UINT32 tileno,
    -
    439  opj_codestream_index_t *cstr_info,
    -
    440  opj_event_mgr_t *manager);
    -
    441 
    -
    442 
    - -
    447  OPJ_BYTE * p_dest,
    -
    448  OPJ_UINT32 p_dest_length);
    -
    449 
    - -
    456 
    - -
    467  OPJ_UINT32 p_tile_no, opj_event_mgr_t* p_manager);
    -
    468 
    - -
    475  OPJ_BYTE * p_src,
    -
    476  OPJ_SIZE_T p_src_length);
    -
    477 
    - -
    484 
    - -
    490 
    - -
    493 
    -
    494 
    - -
    510  OPJ_UINT32 compno,
    -
    511  OPJ_UINT32 resno,
    -
    512  OPJ_UINT32 bandno,
    -
    513  OPJ_UINT32 x0,
    -
    514  OPJ_UINT32 y0,
    -
    515  OPJ_UINT32 x1,
    -
    516  OPJ_UINT32 y1);
    -
    517 
    -
    518 /* ----------------------------------------------------------------------- */
    -
    522 
    -
    523 #endif /* OPJ_TCD_H */
    -
    -
    OPJ_UINT32 opj_dwt_getgain_real(OPJ_UINT32 orient)
    Get the gain of a subband for the irreversible 9-7 DWT.
    Definition: dwt.c:1258
    -
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *src, OPJ_UINT32 len, OPJ_UINT32 tileno, opj_codestream_index_t *cstr_info, opj_event_mgr_t *manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    -
    OPJ_UINT32 num_layers_to_decode
    Definition: j2k.h:248
    -
    OPJ_BOOL ownsData
    Definition: tcd.h:206
    -
    OPJ_UINT32 numpassesinlayers
    Definition: tcd.h:88
    -
    OPJ_UINT32 cw
    Definition: tcd.h:145
    -
    #define J2K_CCP_CBLKSTY_PTERM
    Predictable termination.
    Definition: j2k.h:62
    -
    OPJ_UINT32 x1
    Xsiz: width of the reference grid.
    Definition: openjpeg.h:709
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    OPJ_BITFIELD m_fixed_quality
    add fixed_quality
    Definition: j2k.h:329
    -
    opj_packet_info_t * packet
    information concerning packets inside tile
    Definition: openjpeg.h:825
    -
    float OPJ_FLOAT32
    Definition: openjpeg.h:115
    -
    OPJ_INT32 * decoded_data
    Definition: tcd.h:138
    -
    static INLINE OPJ_INT32 opj_int64_ceildivpow2(OPJ_INT64 a, OPJ_INT32 b)
    Divide a 64bits integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:189
    -
    int numcomps
    component numbers
    Definition: openjpeg.h:871
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    -
    OPJ_FLOAT32 * m_mct_coding_matrix
    the mct coding matrix
    Definition: j2k.h:288
    -
    OPJ_INT32 x0
    Definition: tcd.h:81
    -
    OPJ_UINT32 cur_pino
    Current Packet iterator number.
    Definition: tcd.h:261
    -
    struct opj_tcd_seg_data_chunk opj_tcd_seg_data_chunk_t
    Chunk of codestream data that is part of a code block.
    -
    OPJ_UINT32 win_x0
    Definition: tcd.h:215
    -
    opj_image_t * image
    image header
    Definition: tcd.h:265
    -
    OPJ_UINT32 dy
    YRsiz: vertical separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:675
    -
    OPJ_INT32 tp_pos
    Position of the tilepart flag in Progression order.
    Definition: tcd.h:253
    -
    FIXME DOC.
    Definition: tcd.h:77
    -
    static INLINE long opj_lrintf(float f)
    Definition: opj_includes.h:174
    -
    static void opj_tcd_code_block_dec_deallocate(opj_tcd_precinct_t *p_precinct)
    Deallocates the decoding data of the given precinct.
    Definition: tcd.c:2279
    -
    int ph[33]
    precinct number for each resolution level (height)
    Definition: openjpeg.h:819
    -
    OPJ_INT32 x0
    Definition: tcd.h:159
    -
    struct opj_tcd_image opj_tcd_image_t
    FIXME DOC.
    -
    Segment of a code-block.
    Definition: tcd.h:105
    -
    OPJ_UINT32 numresolutions
    number of resolutions
    Definition: j2k.h:179
    -
    double distotile
    add fixed_quality
    Definition: openjpeg.h:829
    -
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    -
    struct opj_tcd_seg opj_tcd_seg_t
    Segment of a code-block.
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:216
    -
    static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:56
    -
    OPJ_UINT32 maxpasses
    Definition: tcd.h:112
    -
    int index_write
    writing the packet in the index with t2_encode_packets
    Definition: openjpeg.h:851
    -
    OPJ_INT32 x0
    Definition: tcd.h:173
    -
    opj_encoding_param_t m_enc
    Definition: j2k.h:397
    -
    OPJ_UINT32 numchunks
    Definition: tcd.h:135
    -
    OPJ_INT32 y1
    Definition: tcd.h:173
    -
    OPJ_UINT32 real_num_passes
    Definition: tcd.h:110
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms()
    FIXME DOC.
    Definition: mct.c:62
    -
    OPJ_INT32 y1
    Definition: tcd.h:144
    -
    OPJ_INT32 x1
    Definition: tcd.h:173
    -
    #define OPJ_J2K_DEFAULT_NB_SEGS
    Definition: openjpeg.h:149
    -
    OPJ_UINT32 y1
    Ysiz: height of the reference grid.
    Definition: openjpeg.h:711
    -
    opj_tcd_pass_t * passes
    Definition: tcd.h:80
    - -
    OPJ_INT32 m_tp_pos
    Position of tile part flag in progression order.
    Definition: j2k.h:319
    -
    OPJ_UINT32 numcomps
    number of components in the image
    Definition: openjpeg.h:713
    -
    static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:170
    -
    OPJ_INT32 x1
    Definition: tcd.h:124
    -
    OPJ_UINT32 precincts_data_size
    Definition: tcd.h:165
    -
    opj_tcd_layer_t * layers
    Definition: tcd.h:79
    -
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    -
    #define SIZE_MAX
    Definition: opj_malloc.c:40
    -
    Tier-2 coding.
    Definition: t2.h:54
    -
    static INLINE OPJ_BOOL opj_tcd_init_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BOOL isEncoder, OPJ_FLOAT32 fraction, OPJ_SIZE_T sizeof_block, opj_event_mgr_t *manager)
    Initializes tile coding/decoding.
    Definition: tcd.c:723
    -
    struct opj_tcd_marker_info opj_tcd_marker_info_t
    Structure to hold information needed to generate some markers.
    -
    opj_tcd_band_t bands[3]
    Definition: tcd.h:179
    -
    #define OPJ_IS_IMF(v)
    Definition: openjpeg.h:225
    -
    @ THRESH_CALC
    Definition: j2k.h:158
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    OPJ_BOOL opj_dwt_encode_real(opj_tcd_tilecomp_t *tilec)
    Forward 9-7 wavelet transform in 2-D.
    Definition: dwt.c:1250
    -
    int64_t OPJ_INT64
    Definition: openjpeg.h:127
    -
    void opj_t1_decode_cblks(opj_tcd_t *tcd, volatile OPJ_BOOL *pret, opj_tcd_tilecomp_t *tilec, opj_tccp_t *tccp, opj_event_mgr_t *p_manager, opj_mutex_t *p_manager_mutex, OPJ_BOOL check_pterm)
    Decode the code-blocks of a tile.
    Definition: t1.c:1808
    -
    static OPJ_BOOL opj_tcd_mct_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2427
    -
    OPJ_INT32 y1
    Definition: tcd.h:159
    -
    size_t data_size_needed
    Definition: tcd.h:208
    -
    void *OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size)
    Allocator for opj_image_t->comps[].data To be paired with opj_image_data_free.
    Definition: openjpeg.c:1085
    -
    int numlayers
    number of layer
    Definition: openjpeg.h:873
    -
    @ tcp
    Definition: query_parser.h:41
    -
    OPJ_BOOL opj_tcd_update_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest, OPJ_UINT32 p_dest_length)
    Copies tile data from the system onto the given memory block.
    Definition: tcd.c:1720
    -
    OPJ_INT32 x1
    Definition: tcd.h:159
    -
    OPJ_FLOAT32 rates[100]
    rates of layers
    Definition: j2k.h:252
    -
    OPJ_INT32 x1
    Definition: tcd.h:191
    -
    void opj_mct_decode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component inverse transform to an image.
    Definition: mct.c:180
    -
    Message handler object used for.
    Definition: event.h:50
    -
    int pdy[33]
    precinct size (in power of 2), in Y for each resolution level
    Definition: openjpeg.h:823
    -
    #define INLINE
    Definition: openjpeg.h:65
    -
    OPJ_UINT32 ph
    Definition: tcd.h:175
    -
    OPJ_INT32 m_dc_level_shift
    the dc_level_shift
    Definition: j2k.h:201
    -
    OPJ_UINT32 cur_tp_num
    Current tile part number.
    Definition: tcd.h:257
    -
    opj_t1_t * opj_t1_create(OPJ_BOOL isEncoder)
    Creates a new Tier 1 handle and initializes the look-up tables of the Tier-1 coder/decoder.
    Definition: t1.c:1537
    -
    OPJ_UINT32 len
    Definition: tcd.h:60
    -
    void opj_mct_decode_real(OPJ_FLOAT32 *OPJ_RESTRICT c0, OPJ_FLOAT32 *OPJ_RESTRICT c1, OPJ_FLOAT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component inverse transform to an image.
    Definition: mct.c:385
    -
    OPJ_INT32 y1
    Definition: tcd.h:124
    -
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    -
    static OPJ_BOOL opj_tcd_dwt_decode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2004
    -
    Defines a single image component.
    Definition: openjpeg.h:671
    -
    OPJ_BYTE * data
    Definition: tcd.h:78
    -
    static void opj_tcd_free_tile(opj_tcd_t *tcd)
    Free the memory allocated for encoding.
    Definition: tcd.c:1843
    -
    static OPJ_BOOL opj_tcd_dc_level_shift_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2387
    -
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    -
    opj_tcd_resolution_t * resolutions
    Definition: tcd.h:199
    -
    OPJ_BOOL opj_t2_encode_packets(opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_UINT32 p_maxlayers, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_len, opj_codestream_info_t *cstr_info, opj_tcd_marker_info_t *p_marker_info, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, J2K_T2_MODE p_t2_mode, opj_event_mgr_t *p_manager)
    Encode the packets of a tile to a destination buffer.
    Definition: t2.c:219
    -
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    -
    OPJ_BOOL opj_t1_encode_cblks(opj_t1_t *t1, opj_tcd_tile_t *tile, opj_tcp_t *tcp, const OPJ_FLOAT64 *mct_norms, OPJ_UINT32 mct_numcomps)
    Encode the code-blocks of a tile.
    Definition: t1.c:2119
    -
    double OPJ_FLOAT64
    Definition: openjpeg.h:116
    -
    Coding parameters.
    Definition: j2k.h:347
    -
    opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
    stepsizes used for quantization
    Definition: j2k.h:191
    -
    OPJ_INT32 x0
    Definition: tcd.h:191
    -
    OPJ_UINT32 pw
    Definition: tcd.h:175
    -
    OPJ_INT32 x0
    Definition: tcd.h:124
    -
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:278
    -
    void opj_tgt_destroy(opj_tgt_tree_t *p_tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    -
    static void opj_tcd_code_block_enc_deallocate(opj_tcd_precinct_t *p_precinct)
    Deallocates the encoding data of the given precinct.
    Definition: tcd.c:2321
    -
    OPJ_BOOL opj_tcd_init(opj_tcd_t *p_tcd, opj_image_t *p_image, opj_cp_t *p_cp, opj_thread_pool_t *p_tp)
    Initialize the tile coder and may reuse some memory.
    Definition: tcd.c:646
    -
    OPJ_INT32 x1
    Definition: tcd.h:230
    -
    Quantization stepsize.
    Definition: j2k.h:165
    -
    OPJ_BOOL whole_tile_decoding
    Only valid for decoding.
    Definition: tcd.h:282
    -
    FIXME DOC.
    Definition: tcd.h:242
    -
    OPJ_UINT32 tdy
    YTsiz.
    Definition: j2k.h:359
    -
    OPJ_UINT32 tx0
    XTOsiz.
    Definition: j2k.h:353
    -
    Tier-1 coding (coding of code-block coefficients)
    Definition: t1.h:184
    -
    struct opj_tcd opj_tcd_t
    Tile coder/decoder.
    -
    void opj_tcd_makelayer_fixed(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
    Definition: tcd.c:338
    -
    OPJ_FLOAT32 * m_mct_decoding_matrix
    the mct decoding matrix
    Definition: j2k.h:286
    -
    OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
    precinct height
    Definition: j2k.h:199
    -
    OPJ_INT32 mant
    mantissa
    Definition: j2k.h:169
    -
    OPJ_INT32 expn
    exponent
    Definition: j2k.h:167
    -
    OPJ_SIZE_T opj_tcd_get_encoder_input_buffer_size(opj_tcd_t *p_tcd)
    Get the size in bytes of the input buffer provided before encoded.
    Definition: tcd.c:2356
    -
    OPJ_BOOL * used_component
    Definition: tcd.h:284
    -
    FIXME DOC.
    Definition: tcd.h:67
    -
    OPJ_UINT32 minimum_num_resolutions
    Definition: tcd.h:197
    -
    OPJ_UINT32 tdx
    XTsiz.
    Definition: j2k.h:357
    -
    OPJ_INT32 x1
    Definition: tcd.h:144
    -
    static INLINE OPJ_UINT32 opj_uint_adds(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the saturated sum of two unsigned integers.
    Definition: opj_intmath.h:92
    -
    opj_cp_t * cp
    coding parameters
    Definition: tcd.h:267
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    opj_tcd_cblk_enc_t * enc
    Definition: tcd.h:147
    -
    opj_tcp_t * tcps
    tile coding parameters
    Definition: j2k.h:393
    -
    size_t OPJ_SIZE_T
    Definition: openjpeg.h:133
    -
    opj_tgt_tree_t * imsbtree
    Definition: tcd.h:153
    -
    Precinct structure.
    Definition: tcd.h:142
    -
    struct opj_tcd_precinct opj_tcd_precinct_t
    Precinct structure.
    - -
    OPJ_INT32 y0
    Definition: tcd.h:81
    -
    void opj_tcd_marker_info_destroy(opj_tcd_marker_info_t *p_tcd_marker_info)
    Destroy a previously created opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2846
    -
    OPJ_INT32 x0
    Definition: tcd.h:144
    -
    static OPJ_BOOL opj_tcd_t2_decode(opj_tcd_t *p_tcd, OPJ_BYTE *p_src_data, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_src_size, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Definition: tcd.c:1930
    -
    OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
    precinct width
    Definition: j2k.h:197
    -
    opj_tgt_tree_t * incltree
    Definition: tcd.h:152
    -
    #define OPJ_IS_CINEMA(v)
    JPEG 2000 profile macros.
    Definition: openjpeg.h:222
    -
    FIXME DOC.
    Definition: tcd.h:57
    -
    Tile-component resolution structure.
    Definition: tcd.h:171
    -
    char OPJ_CHAR
    Definition: openjpeg.h:114
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:280
    -
    OPJ_INT32 x1
    Definition: tcd.h:81
    -
    opj_tcd_tile_t * tiles
    Definition: tcd.h:243
    -
    Tile-component structure.
    Definition: tcd.h:189
    -
    Sub-band structure.
    Definition: tcd.h:157
    -
    OPJ_UINT32 sgnd
    signed (1) / unsigned (0)
    Definition: openjpeg.h:689
    -
    OPJ_UINT32 totalpasses
    Definition: tcd.h:89
    -
    OPJ_INT32 * data_win
    data of the component limited to window of interest.
    Definition: tcd.h:213
    -
    OPJ_UINT32 numbands
    Definition: tcd.h:177
    -
    static OPJ_BOOL opj_tcd_code_block_dec_allocate(opj_tcd_cblk_dec_t *p_code_block)
    Allocates memory for a decoding code block.
    Definition: tcd.c:1277
    -
    static OPJ_BOOL opj_tcd_t1_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2507
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_len, struct opj_codestream_info *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    -
    OPJ_UINT32 resolutions_size
    Definition: tcd.h:201
    -
    opj_decoding_param_t m_dec
    Definition: j2k.h:396
    -
    static OPJ_BOOL opj_tcd_t1_decode(opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
    Definition: tcd.c:1965
    -
    OPJ_UINT32 m_current_max_segs
    Definition: tcd.h:134
    -
    OPJ_UINT32 data_size
    Definition: tcd.h:85
    -
    OPJ_UINT32 mct
    multi-component transform identifier
    Definition: j2k.h:250
    -
    struct opj_tcd_tile opj_tcd_tile_t
    FIXME DOC.
    -
    OPJ_UINT32 win_x0
    Definition: tcd.h:182
    -
    OPJ_BITFIELD term
    Definition: tcd.h:61
    -
    void opj_mct_encode(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply a reversible multi-component transform to an image.
    Definition: mct.c:118
    -
    OPJ_UINT32 packet_count
    OUT: Number of elements in p_packet_size[] array.
    Definition: tcd.h:296
    -
    OPJ_FLOAT64 distortiondec
    Definition: tcd.h:59
    -
    OPJ_INT32 y0
    Definition: tcd.h:173
    -
    OPJ_UINT32 numlenbits
    Definition: tcd.h:84
    -
    struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
    FIXME DOC.
    -
    OPJ_UINT32 numlayers
    number of layers
    Definition: j2k.h:247
    -
    Byte4_t max(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:774
    -
    OPJ_UINT32 prec
    precision
    Definition: openjpeg.h:685
    -
    void opj_t1_destroy(opj_t1_t *p_t1)
    Destroys a previously created T1 handle.
    Definition: t1.c:1557
    -
    static OPJ_BOOL opj_tcd_t2_encode(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2543
    -
    static INLINE OPJ_INT64 opj_int64_clamp(OPJ_INT64 a, OPJ_INT64 min, OPJ_INT64 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:137
    -
    int pdx[33]
    precinct size (in power of 2), in X for each resolution level
    Definition: openjpeg.h:821
    -
    OPJ_INT32 x0
    Definition: tcd.h:230
    -
    OPJ_UINT32 y0
    YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
    Definition: openjpeg.h:707
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:218
    -
    OPJ_INT32 numpix
    Definition: tcd.h:233
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    opj_tcp_t * tcp
    coding/decoding parameters common to all tiles
    Definition: tcd.h:269
    -
    OPJ_UINT32 cblkw
    code-blocks width
    Definition: j2k.h:181
    -
    static OPJ_BOOL opj_tcd_dwt_encode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2482
    -
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    -
    OPJ_UINT32 numchunksalloc
    Definition: tcd.h:136
    -
    struct opj_tcd_tilecomp opj_tcd_tilecomp_t
    Tile-component structure.
    -
    opj_tcd_precinct_t * precincts
    Definition: tcd.h:163
    -
    OPJ_UINT32 tcd_tileno
    current encoded/decoded tile
    Definition: tcd.h:271
    -
    OPJ_UINT32 numlenbits
    Definition: tcd.h:127
    -
    static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the minimum of two integers.
    Definition: opj_intmath.h:65
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    OPJ_BOOL opj_t2_decode_packets(opj_tcd_t *tcd, opj_t2_t *p_t2, OPJ_UINT32 p_tile_no, opj_tcd_tile_t *p_tile, OPJ_BYTE *p_src, OPJ_UINT32 *p_data_read, OPJ_UINT32 p_max_len, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode the packets of a tile from a source buffer.
    Definition: t2.c:393
    -
    OPJ_FLOAT64 distotile
    Definition: tcd.h:234
    -
    static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:83
    -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    OPJ_BOOL opj_mct_decode_custom(OPJ_BYTE *pDecodingData, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:506
    -
    void OPJ_CALLCONV opj_image_data_free(void *ptr)
    Destructor for opj_image_t->comps[].data To be paired with opj_image_data_alloc.
    Definition: openjpeg.c:1092
    -
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:114
    -
    OPJ_INT32 y1
    Definition: tcd.h:230
    -
    size_t data_size
    Definition: tcd.h:210
    -
    OPJ_UINT32 numresolutions
    Definition: tcd.h:195
    -
    const OPJ_FLOAT64 * opj_mct_get_mct_norms_real()
    FIXME DOC.
    Definition: mct.c:67
    -
    OPJ_INT32 y0
    Definition: tcd.h:191
    -
    OPJ_BOOL opj_tcd_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 win_x0, OPJ_UINT32 win_y0, OPJ_UINT32 win_x1, OPJ_UINT32 win_y1, OPJ_UINT32 numcomps_to_decode, const OPJ_UINT32 *comps_indices, OPJ_BYTE *p_src, OPJ_UINT32 p_max_length, OPJ_UINT32 p_tile_no, opj_codestream_index_t *p_cstr_index, opj_event_mgr_t *p_manager)
    Decode a tile from a buffer into a raw image.
    Definition: tcd.c:1466
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    OPJ_UINT32 numcomps
    Definition: tcd.h:231
    -
    struct opj_tcd_pass opj_tcd_pass_t
    FIXME DOC.
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:279
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:83
    -
    Chunk of codestream data that is part of a code block.
    Definition: tcd.h:94
    -
    OPJ_UINT32 block_size
    Definition: tcd.h:151
    -
    OPJ_UINT32 resno_decoded
    number of decoded resolution
    Definition: openjpeg.h:691
    -
    union opj_tcd_precinct::@3 cblks
    -
    Index structure of the codestream (FIXME should be expand and enhance)
    Definition: openjpeg.h:1031
    -
    OPJ_UINT16 rsiz
    Size of the image in bits.
    Definition: j2k.h:351
    -
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    -
    void opj_tcd_makelayer(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
    Definition: tcd.c:237
    -
    OPJ_BOOL opj_dwt_encode(opj_tcd_tilecomp_t *tilec)
    Forward 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1198
    -
    OPJ_INT32 y0
    Definition: tcd.h:144
    -
    OPJ_BOOL need_PLT
    In: Whether information to generate PLT markers in needed.
    Definition: tcd.h:293
    -
    Index structure : Information concerning a packet inside tile.
    Definition: openjpeg.h:760
    -
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    -
    int numpix
    add fixed_quality
    Definition: openjpeg.h:827
    -
    OPJ_UINT32 qmfbid
    discrete wavelet transform identifier
    Definition: j2k.h:187
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:87
    -
    Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
    Definition: j2k.h:241
    -
    opj_tccp_t * tccps
    tile-component coding parameters
    Definition: j2k.h:274
    -
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    -
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    -
    void opj_t2_destroy(opj_t2_t *t2)
    Destroy a T2 handle.
    Definition: t2.c:614
    -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 band_x0, OPJ_UINT32 band_y0, OPJ_UINT32 band_x1, OPJ_UINT32 band_y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    -
    OPJ_UINT32 len
    Definition: tcd.h:99
    -
    Byte4_t min(Byte4_t n1, Byte4_t n2)
    Definition: index_manager.c:783
    -
    OPJ_UINT32 * p_packet_size
    OUT: Array of size packet_count, such that p_packet_size[i] is the size in bytes of the ith packet.
    Definition: tcd.h:300
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:68
    -
    void opj_mct_encode_real(OPJ_INT32 *OPJ_RESTRICT c0, OPJ_INT32 *OPJ_RESTRICT c1, OPJ_INT32 *OPJ_RESTRICT c2, OPJ_SIZE_T n)
    Apply an irreversible multi-component transform to an image.
    Definition: mct.c:358
    -
    opj_tcd_marker_info_t * opj_tcd_marker_info_create(OPJ_BOOL need_PLT)
    Create a new opj_tcd_marker_info_t* structure.
    Definition: tcd.c:2831
    -
    OPJ_UINT32 cblksty
    code-block coding style
    Definition: j2k.h:185
    -
    static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b)
    Get the maximum of two integers.
    Definition: opj_intmath.h:74
    -
    OPJ_INT32 y0
    Definition: tcd.h:159
    -
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    -
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    -
    void opj_tcd_rateallocate_fixed(opj_tcd_t *tcd)
    Definition: tcd.c:227
    -
    Code-block for decoding.
    Definition: tcd.h:120
    -
    OPJ_FLOAT32 stepsize
    Definition: tcd.h:167
    -
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    -
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    -
    OPJ_INT32 numbps
    Definition: tcd.h:166
    -
    OPJ_BOOL opj_mct_encode_custom(OPJ_BYTE *pCodingdata, OPJ_SIZE_T n, OPJ_BYTE **pData, OPJ_UINT32 pNbComp, OPJ_UINT32 isSigned)
    FIXME DOC.
    Definition: mct.c:452
    -
    Tile-component coding parameters.
    Definition: j2k.h:175
    -
    OPJ_INT32 * data
    Definition: tcd.h:204
    -
    static OPJ_BOOL opj_tcd_code_block_enc_allocate_data(opj_tcd_cblk_enc_t *p_code_block)
    Allocates data for an encoding code block.
    Definition: tcd.c:1234
    -
    static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max)
    Clamp an integer inside an interval.
    Definition: opj_intmath.h:116
    -
    opj_tcd_image_t * tcd_image
    info on each image tile
    Definition: tcd.h:263
    -
    static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round downwards.
    Definition: opj_intmath.h:207
    -
    void opj_tcd_reinit_segment(opj_tcd_seg_t *seg)
    Reinitialize a segment.
    Definition: tcd.c:1269
    -
    OPJ_FLOAT32 distoratio[100]
    add fixed_quality
    Definition: j2k.h:272
    -
    void opj_aligned_free(void *ptr)
    Definition: opj_malloc.c:225
    -
    OPJ_BOOL opj_dwt_decode(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *tilec, OPJ_UINT32 numres)
    Inverse 5-3 wavelet transform in 2-D.
    Definition: dwt.c:1206
    -
    OPJ_BITFIELD m_is_decoder
    tell if the tcd is a decoder.
    Definition: tcd.h:273
    -
    unsigned int OPJ_BITFIELD
    Definition: opj_includes.h:217
    -
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an existing one.
    Definition: tgt.c:136
    -
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Create a new TCD handle.
    Definition: tcd.c:203
    -
    OPJ_UINT32 x0
    XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
    Definition: openjpeg.h:705
    -
    opj_thread_pool_t * thread_pool
    Thread pool.
    Definition: tcd.h:275
    -
    FIXME DOC.
    Definition: tcd.h:228
    -
    static INLINE OPJ_UINT32 opj_uint_ceildivpow2(OPJ_UINT32 a, OPJ_UINT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:198
    -
    OPJ_UINT32 compno
    Definition: tcd.h:193
    -
    opj_image_comp_t * comps
    image components
    Definition: openjpeg.h:717
    -
    static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer and round upwards.
    Definition: opj_intmath.h:160
    -
    OPJ_INT32 y0
    Definition: tcd.h:124
    -
    double * thresh
    value of thresh for each layer by tile cfr.
    Definition: openjpeg.h:807
    -
    OPJ_UINT32 packno
    Definition: tcd.h:236
    -
    OPJ_UINT32 len
    Definition: tcd.h:69
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    OPJ_UINT32 len
    Definition: tcd.h:106
    -
    OPJ_FLOAT64 disto
    Definition: tcd.h:70
    -
    @ FINAL_PASS
    Function called in Rate allocation process.
    Definition: j2k.h:159
    -
    struct opj_tcd_layer opj_tcd_layer_t
    FIXME DOC.
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    OPJ_INT32 y1
    Definition: tcd.h:191
    -
    void opj_tcd_makelayer_fixed(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final)
    Definition: tcd.c:338
    -
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    -
    OPJ_BYTE * data
    Definition: tcd.h:71
    -
    OPJ_UINT32 numgbits
    number of guard bits
    Definition: j2k.h:193
    -
    OPJ_FLOAT64 * mct_norms
    encoding norms
    Definition: j2k.h:284
    -
    OPJ_UINT32 cur_totnum_tp
    Total number of tileparts of the current tile.
    Definition: tcd.h:259
    -
    OPJ_UINT32 m_reduce
    if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
    Definition: j2k.h:337
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    OPJ_UINT32 tw
    number of tiles in width
    Definition: j2k.h:363
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    OPJ_UINT32 bandno
    Definition: tcd.h:161
    -
    static OPJ_BOOL opj_tcd_rate_allocate_encode(opj_tcd_t *p_tcd, OPJ_BYTE *p_dest_data, OPJ_UINT32 p_max_dest_size, opj_codestream_info_t *p_cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2584
    -
    OPJ_UINT32 real_num_segs
    Definition: tcd.h:133
    -
    OPJ_UINT32 dx
    XRsiz: horizontal separation of a sample of ith component with respect to the reference grid.
    Definition: openjpeg.h:673
    -
    static OPJ_BOOL opj_tcd_is_whole_tilecomp_decoding(opj_tcd_t *tcd, OPJ_UINT32 compno)
    Returns whether a tile componenent is fully decoded, taking into account p_tcd->win_* members.
    Definition: tcd.c:2795
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:217
    -
    OPJ_UINT32 ty0
    YTOsiz.
    Definition: j2k.h:355
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    opj_tcd_seg_data_chunk_t * chunks
    Definition: tcd.h:122
    -
    OPJ_BYTE * data
    Definition: tcd.h:98
    -
    OPJ_INT32 numpix
    Definition: tcd.h:221
    -
    OPJ_UINT32 numpasses
    Definition: tcd.h:108
    -
    opj_tcd_seg_t * segs
    Definition: tcd.h:121
    -
    OPJ_INT32 * m_matrice
    fixed layer
    Definition: j2k.h:321
    -
    Tag tree.
    Definition: tgt.h:67
    -
    struct opj_tcd_resolution opj_tcd_resolution_t
    Tile-component resolution structure.
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    OPJ_INT32 y0
    Definition: tcd.h:230
    -
    OPJ_UINT32 numnewpasses
    Definition: tcd.h:129
    -
    OPJ_BITFIELD m_disto_alloc
    allocation by rate/distortion
    Definition: j2k.h:325
    -
    void opj_tcd_destroy(opj_tcd_t *tcd)
    Destroy a previously created TCD handle.
    Definition: tcd.c:676
    -
    OPJ_BOOL opj_dwt_decode_real(opj_tcd_t *p_tcd, opj_tcd_tilecomp_t *OPJ_RESTRICT tilec, OPJ_UINT32 numres)
    Inverse 9-7 wavelet transform in 2-D.
    Definition: dwt.c:2883
    -
    void opj_tcd_makelayer(opj_tcd_t *tcd, OPJ_UINT32 layno, OPJ_FLOAT64 thresh, OPJ_UINT32 final)
    Definition: tcd.c:237
    -
    opj_tcd_t * opj_tcd_create(OPJ_BOOL p_is_decoder)
    Dump the content of a tcd structure.
    Definition: tcd.c:203
    -
    OPJ_UINT32 opj_dwt_getgain(OPJ_UINT32 orient)
    Get the gain of a subband for the reversible 5-3 DWT.
    Definition: dwt.c:1220
    -
    int16_t OPJ_INT16
    Definition: openjpeg.h:123
    -
    OPJ_UINT32 win_x0
    Coordinates of the window of interest, in grid reference space.
    Definition: tcd.h:277
    -
    OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:443
    -
    OPJ_BOOL opj_tcd_is_band_empty(opj_tcd_band_t *band)
    Returns whether a sub-band is empty (i.e.
    Definition: tcd.c:2702
    -
    OPJ_UINT32 cblkh
    code-blocks height
    Definition: j2k.h:183
    -
    OPJ_UINT32 win_y1
    Definition: tcd.h:185
    -
    OPJ_BOOL opj_tcd_copy_tile_data(opj_tcd_t *p_tcd, OPJ_BYTE *p_src, OPJ_SIZE_T p_src_length)
    Copies tile data from the given memory block onto the system.
    Definition: tcd.c:2614
    -
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    -
    OPJ_BOOL opj_tcd_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, OPJ_BYTE *p_dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 p_max_length, opj_codestream_info_t *p_cstr_info, opj_tcd_marker_info_t *p_marker_info, opj_event_mgr_t *p_manager)
    Encodes a tile from the raw image into the given buffer.
    Definition: tcd.c:1370
    -
    OPJ_UINT32 numbps
    Definition: tcd.h:125
    -
    OPJ_INT32 y1
    Definition: tcd.h:82
    -
    OPJ_UINT32 rate
    Definition: tcd.h:58
    -
    OPJ_FLOAT64 distolayer[100]
    Definition: tcd.h:235
    -
    opj_tcd_cblk_dec_t * dec
    Definition: tcd.h:148
    -
    OPJ_UINT32 tp_num
    Tile part number.
    Definition: tcd.h:255
    -
    OPJ_BOOL opj_tcd_init_encode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Initialize the tile coder and may reuse some meory.
    Definition: tcd.c:1193
    -
    static OPJ_BOOL opj_tcd_code_block_enc_allocate(opj_tcd_cblk_enc_t *p_code_block)
    Allocates memory for an encoding code block (but not data).
    Definition: tcd.c:1210
    -
    OPJ_BOOL opj_tcd_rateallocate(opj_tcd_t *tcd, OPJ_BYTE *dest, OPJ_UINT32 *p_data_written, OPJ_UINT32 len, opj_codestream_info_t *cstr_info, opj_event_mgr_t *p_manager)
    Definition: tcd.c:443
    -
    OPJ_UINT32 opj_tcd_get_decoded_tile_size(opj_tcd_t *p_tcd, OPJ_BOOL take_into_account_partial_decoding)
    Gets the maximum tile size that will be taken by the tile once decoded.
    Definition: tcd.c:1315
    -
    OPJ_BOOL opj_alloc_tile_component_data(opj_tcd_tilecomp_t *l_tilec)
    Allocates tile component data.
    Definition: tcd.c:692
    -
    static OPJ_BOOL opj_tcd_mct_decode(opj_tcd_t *p_tcd, opj_event_mgr_t *p_manager)
    Definition: tcd.c:2035
    -
    void opj_tcd_rateallocate_fixed(opj_tcd_t *tcd)
    Definition: tcd.c:227
    -
    Structure to hold information needed to generate some markers.
    Definition: tcd.h:291
    -
    struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
    Code-block for decoding.
    -
    Defines image data and characteristics.
    Definition: openjpeg.h:703
    -
    OPJ_BOOL opj_tcd_init_decode_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no, opj_event_mgr_t *p_manager)
    Allocates memory for decoding a specific tile.
    Definition: tcd.c:1200
    -
    void * blocks
    Definition: tcd.h:149
    -
    opj_tcd_tilecomp_t * comps
    Definition: tcd.h:232
    -
    struct opj_tcd_band opj_tcd_band_t
    Sub-band structure.
    -
    static OPJ_BOOL opj_tcd_dc_level_shift_decode(opj_tcd_t *p_tcd)
    Definition: tcd.c:2186
    -
    opj_t2_t * opj_t2_create(opj_image_t *p_image, opj_cp_t *p_cp)
    Creates a Tier 2 handle.
    Definition: t2.c:600
    -
    static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b)
    Divide an integer by a power of 2 and round upwards.
    Definition: opj_intmath.h:180
    -
    OPJ_UINT32 numsegs
    Definition: tcd.h:131
    -
    OPJ_UINT32 ch
    Definition: tcd.h:145
    -
    Definition: thread.c:605
    -
    Tile coder/decoder.
    Definition: tcd.h:251
    -
    OPJ_BOOL opj_tcd_is_subband_area_of_interest(opj_tcd_t *tcd, OPJ_UINT32 compno, OPJ_UINT32 resno, OPJ_UINT32 bandno, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1)
    Returns whether a sub-band region contributes to the area of interest tcd->win_x0,...
    Definition: tcd.c:2707
    -
    union opj_cp::@0 m_specific_param
    -
    OPJ_UINT32 newlen
    Definition: tcd.h:116
    -
    OPJ_UINT32 win_y0
    Definition: tcd.h:183
    -
    OPJ_UINT32 win_x1
    Definition: tcd.h:184
    -
    int pw[33]
    precinct number for each resolution level (width)
    Definition: openjpeg.h:817
    - - - - diff --git a/build/doc/html/test__sparse__array_8c.html b/build/doc/html/test__sparse__array_8c.html deleted file mode 100644 index f511ca885..000000000 --- a/build/doc/html/test__sparse__array_8c.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -OpenJPEG: test_sparse_array.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    test_sparse_array.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - -

    -Functions

    int main ()
     
    -

    Function Documentation

    - -

    ◆ main()

    - - -
    - - - - diff --git a/build/doc/html/tgt_8c.html b/build/doc/html/tgt_8c.html deleted file mode 100644 index bb576c15f..000000000 --- a/build/doc/html/tgt_8c.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - -OpenJPEG: tgt.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tgt.c File Reference
    -
    -
    -
    #include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    opj_tgt_tree_topj_tgt_create (OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
     Create a tag-tree. More...
     
    opj_tgt_tree_topj_tgt_init (opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
     Reinitialises a tag-tree from an existing one. More...
     
    void opj_tgt_destroy (opj_tgt_tree_t *p_tree)
     Destroy a tag-tree, liberating memory. More...
     
    void opj_tgt_reset (opj_tgt_tree_t *p_tree)
     Reset a tag-tree (set all leaves to 0) More...
     
    void opj_tgt_setvalue (opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
     Set the value of a leaf of a tag-tree. More...
     
    void opj_tgt_encode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Encode the value of a leaf of the tag-tree up to a given threshold. More...
     
    OPJ_UINT32 opj_tgt_decode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Decode the value of a leaf of the tag-tree up to a given threshold. More...
     
    -

    Function Documentation

    - -

    ◆ opj_tgt_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_tgt_tree_t* opj_tgt_create (OPJ_UINT32 numleafsh,
    OPJ_UINT32 numleafsv,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Create a tag-tree.

    -
    Parameters
    - - - - -
    numleafshWidth of the array of leafs of the tree
    numleafsvHeight of the array of leafs of the tree
    p_managerthe event manager
    -
    -
    -
    Returns
    Returns a new tag-tree if successful, returns NULL otherwise
    - -

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_calloc(), opj_event_msg(), opj_free(), opj_tgt_reset(), and opj_tgt_node::parent.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tgt_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_tgt_decode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    -
    - -

    Decode the value of a leaf of the tag-tree up to a given threshold.

    -
    Parameters
    - - - - - -
    bioPointer to a BIO handle
    treeTag-tree to decode
    leafnoNumber that identifies the leaf to decode
    thresholdThreshold to use when decoding value of the leaf
    -
    -
    -
    Returns
    Returns 1 if the node's value < threshold, returns 0 otherwise
    - -

    References opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_read(), opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_tgt_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tgt_destroy (opj_tgt_tree_ttree)
    -
    - -

    Destroy a tag-tree, liberating memory.

    -
    Parameters
    - - -
    treeTag-tree to destroy
    -
    -
    - -

    References opj_tgt_tree::nodes, and opj_free().

    - -

    Referenced by opj_tcd_free_tile(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_tgt_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_tgt_encode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    -
    - -

    Encode the value of a leaf of the tag-tree up to a given threshold.

    -
    Parameters
    - - - - - -
    bioPointer to a BIO handle
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to encode
    thresholdThreshold to use when encoding value of the leaf
    -
    -
    - -

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_write(), opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_tgt_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_tgt_tree_t* opj_tgt_init (opj_tgt_tree_tp_tree,
    OPJ_UINT32 p_num_leafs_h,
    OPJ_UINT32 p_num_leafs_v,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reinitialises a tag-tree from an existing one.

    -

    Reinitialises a tag-tree from an exixting one.

    -
    Parameters
    - - - - -
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    -
    -
    -
    Returns
    a new tag-tree if successful, NULL otherwise
    - -

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_event_msg(), opj_realloc(), opj_tgt_destroy(), opj_tgt_reset(), and opj_tgt_node::parent.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tgt_reset()

    - -
    -
    - - - - - - - - -
    void opj_tgt_reset (opj_tgt_tree_ttree)
    -
    - -

    Reset a tag-tree (set all leaves to 0)

    -
    Parameters
    - - -
    treeTag-tree to reset
    -
    -
    - -

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_tgt_tree::numnodes, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_tgt_setvalue()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_tgt_setvalue (opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 value 
    )
    -
    - -

    Set the value of a leaf of a tag-tree.

    -
    Parameters
    - - - - -
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to modify
    valueNew value of the leaf
    -
    -
    - -

    References opj_tgt_tree::nodes, opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/tgt_8h.html b/build/doc/html/tgt_8h.html deleted file mode 100644 index 2bc811039..000000000 --- a/build/doc/html/tgt_8h.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - - -OpenJPEG: tgt.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tgt.h File Reference
    -
    -
    - -

    Implementation of a tag-tree coder (TGT) -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  opj_tgt_node
     Tag node. More...
     
    struct  opj_tgt_tree
     Tag tree. More...
     
    - - - - - - - -

    -Typedefs

    typedef struct opj_tgt_node opj_tgt_node_t
     Tag node. More...
     
    typedef struct opj_tgt_tree opj_tgt_tree_t
     Tag tree. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    Exported functions
    opj_tgt_tree_topj_tgt_create (OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
     Create a tag-tree. More...
     
    opj_tgt_tree_topj_tgt_init (opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
     Reinitialises a tag-tree from an exixting one. More...
     
    void opj_tgt_destroy (opj_tgt_tree_t *tree)
     Destroy a tag-tree, liberating memory. More...
     
    void opj_tgt_reset (opj_tgt_tree_t *tree)
     Reset a tag-tree (set all leaves to 0) More...
     
    void opj_tgt_setvalue (opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
     Set the value of a leaf of a tag-tree. More...
     
    void opj_tgt_encode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Encode the value of a leaf of the tag-tree up to a given threshold. More...
     
    OPJ_UINT32 opj_tgt_decode (opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
     Decode the value of a leaf of the tag-tree up to a given threshold. More...
     
    -

    Detailed Description

    -

    Implementation of a tag-tree coder (TGT)

    -

    The functions in TGT.C have for goal to realize a tag-tree coder. The functions in TGT.C are used by some function in T2.C.

    -

    Typedef Documentation

    - -

    ◆ opj_tgt_node_t

    - -
    -
    - - - - -
    typedef struct opj_tgt_node opj_tgt_node_t
    -
    - -

    Tag node.

    - -
    -
    - -

    ◆ opj_tgt_tree_t

    - -
    -
    - - - - -
    typedef struct opj_tgt_tree opj_tgt_tree_t
    -
    - -

    Tag tree.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_tgt_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_tgt_tree_t* opj_tgt_create (OPJ_UINT32 numleafsh,
    OPJ_UINT32 numleafsv,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Create a tag-tree.

    -
    Parameters
    - - - - -
    numleafshWidth of the array of leafs of the tree
    numleafsvHeight of the array of leafs of the tree
    p_managerthe event manager
    -
    -
    -
    Returns
    Returns a new tag-tree if successful, returns NULL otherwise
    - -

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_calloc(), opj_event_msg(), opj_free(), opj_tgt_reset(), and opj_tgt_node::parent.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tgt_decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_UINT32 opj_tgt_decode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    -
    - -

    Decode the value of a leaf of the tag-tree up to a given threshold.

    -
    Parameters
    - - - - - -
    bioPointer to a BIO handle
    treeTag-tree to decode
    leafnoNumber that identifies the leaf to decode
    thresholdThreshold to use when decoding value of the leaf
    -
    -
    -
    Returns
    Returns 1 if the node's value < threshold, returns 0 otherwise
    - -

    References opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_read(), opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_read_packet_header().

    - -
    -
    - -

    ◆ opj_tgt_destroy()

    - -
    -
    - - - - - - - - -
    void opj_tgt_destroy (opj_tgt_tree_ttree)
    -
    - -

    Destroy a tag-tree, liberating memory.

    -
    Parameters
    - - -
    treeTag-tree to destroy
    -
    -
    - -

    References opj_tgt_tree::nodes, and opj_free().

    - -

    Referenced by opj_tcd_free_tile(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_tgt_encode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_tgt_encode (opj_bio_tbio,
    opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 threshold 
    )
    -
    - -

    Encode the value of a leaf of the tag-tree up to a given threshold.

    -
    Parameters
    - - - - - -
    bioPointer to a BIO handle
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to encode
    thresholdThreshold to use when encoding value of the leaf
    -
    -
    - -

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_bio_write(), opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    - -

    ◆ opj_tgt_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    opj_tgt_tree_t* opj_tgt_init (opj_tgt_tree_tp_tree,
    OPJ_UINT32 p_num_leafs_h,
    OPJ_UINT32 p_num_leafs_v,
    opj_event_mgr_tp_manager 
    )
    -
    - -

    Reinitialises a tag-tree from an exixting one.

    -
    Parameters
    - - - - - -
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    p_managerthe event manager
    -
    -
    -
    Returns
    a new tag-tree if successful, NULL otherwise
    -

    Reinitialises a tag-tree from an exixting one.

    -
    Parameters
    - - - - -
    p_treethe tree to reinitialize.
    p_num_leafs_hthe width of the array of leafs of the tree
    p_num_leafs_vthe height of the array of leafs of the tree
    -
    -
    -
    Returns
    a new tag-tree if successful, NULL otherwise
    - -

    References EVT_ERROR, opj_tgt_tree::nodes, opj_tgt_tree::nodes_size, opj_tgt_tree::numleafsh, opj_tgt_tree::numleafsv, opj_tgt_tree::numnodes, opj_event_msg(), opj_realloc(), opj_tgt_destroy(), opj_tgt_reset(), and opj_tgt_node::parent.

    - -

    Referenced by opj_tcd_init_tile().

    - -
    -
    - -

    ◆ opj_tgt_reset()

    - -
    -
    - - - - - - - - -
    void opj_tgt_reset (opj_tgt_tree_ttree)
    -
    - -

    Reset a tag-tree (set all leaves to 0)

    -
    Parameters
    - - -
    treeTag-tree to reset
    -
    -
    - -

    References opj_tgt_node::known, opj_tgt_node::low, opj_tgt_tree::nodes, opj_tgt_tree::numnodes, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet(), opj_t2_read_packet_header(), opj_tgt_create(), and opj_tgt_init().

    - -
    -
    - -

    ◆ opj_tgt_setvalue()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void opj_tgt_setvalue (opj_tgt_tree_ttree,
    OPJ_UINT32 leafno,
    OPJ_INT32 value 
    )
    -
    - -

    Set the value of a leaf of a tag-tree.

    -
    Parameters
    - - - - -
    treeTag-tree to modify
    leafnoNumber that identifies the leaf to modify
    valueNew value of the leaf
    -
    -
    - -

    References opj_tgt_tree::nodes, opj_tgt_node::parent, and opj_tgt_node::value.

    - -

    Referenced by opj_t2_encode_packet().

    - -
    -
    -
    - - - - diff --git a/build/doc/html/tgt_8h_source.html b/build/doc/html/tgt_8h_source.html deleted file mode 100644 index 939700da5..000000000 --- a/build/doc/html/tgt_8h_source.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -OpenJPEG: tgt.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    tgt.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
    -
    8  * Copyright (c) 2002-2014, Professor Benoit Macq
    -
    9  * Copyright (c) 2001-2003, David Janssens
    -
    10  * Copyright (c) 2002-2003, Yannick Verschueren
    -
    11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
    -
    12  * Copyright (c) 2003-2014, Antonin Descampe
    -
    13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
    -
    14  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
    -
    15  * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
    -
    16  * Copyright (c) 2012, CS Systemes d'Information, France
    -
    17  * All rights reserved.
    -
    18  *
    -
    19  * Redistribution and use in source and binary forms, with or without
    -
    20  * modification, are permitted provided that the following conditions
    -
    21  * are met:
    -
    22  * 1. Redistributions of source code must retain the above copyright
    -
    23  * notice, this list of conditions and the following disclaimer.
    -
    24  * 2. Redistributions in binary form must reproduce the above copyright
    -
    25  * notice, this list of conditions and the following disclaimer in the
    -
    26  * documentation and/or other materials provided with the distribution.
    -
    27  *
    -
    28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    29  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    31  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    32  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    33  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    35  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    36  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    37  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    38  * POSSIBILITY OF SUCH DAMAGE.
    -
    39  */
    -
    40 
    -
    41 #ifndef OPJ_TGT_H
    -
    42 #define OPJ_TGT_H
    -
    43 
    -
    53 
    -
    57 typedef struct opj_tgt_node {
    - - - - - -
    63 
    -
    67 typedef struct opj_tgt_tree {
    - - - - -
    72  OPJ_UINT32 nodes_size; /* maximum size taken by nodes */
    - -
    74 
    -
    75 
    -
    78 /* ----------------------------------------------------------------------- */
    - -
    87  opj_event_mgr_t *p_manager);
    -
    88 
    - -
    99  OPJ_UINT32 p_num_leafs_h,
    -
    100  OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager);
    -
    105 void opj_tgt_destroy(opj_tgt_tree_t *tree);
    -
    110 void opj_tgt_reset(opj_tgt_tree_t *tree);
    - -
    118  OPJ_UINT32 leafno,
    -
    119  OPJ_INT32 value);
    -
    127 void opj_tgt_encode(opj_bio_t *bio,
    -
    128  opj_tgt_tree_t *tree,
    -
    129  OPJ_UINT32 leafno,
    -
    130  OPJ_INT32 threshold);
    - -
    140  opj_tgt_tree_t *tree,
    -
    141  OPJ_UINT32 leafno,
    -
    142  OPJ_INT32 threshold);
    -
    143 /* ----------------------------------------------------------------------- */
    -
    147 
    -
    148 #endif /* OPJ_TGT_H */
    -
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    struct opj_tgt_node opj_tgt_node_t
    Tag node.
    -
    int main()
    Definition: test_sparse_array.c:36
    -
    void opj_tgt_reset(opj_tgt_tree_t *tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    -
    OPJ_UINT32 opj_bio_read(opj_bio_t *bio, OPJ_UINT32 n)
    Read bits.
    Definition: bio.c:175
    -
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    -
    OPJ_BOOL opj_event_msg(opj_event_mgr_t *p_event_mgr, OPJ_INT32 event_type, const char *fmt,...)
    Write formatted data to a string and send the string to a user callback.
    Definition: event.c:91
    -
    Tag node.
    Definition: tgt.h:57
    -
    Message handler object used for.
    Definition: event.h:50
    -
    void opj_bio_write(opj_bio_t *bio, OPJ_UINT32 v, OPJ_UINT32 n)
    Write bits.
    Definition: bio.c:165
    -
    void opj_tgt_destroy(opj_tgt_tree_t *p_tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    -
    OPJ_UINT32 numleafsh
    Definition: tgt.h:68
    -
    OPJ_INT32 low
    Definition: tgt.h:60
    -
    void opj_tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Encode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:264
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    OPJ_INT32 value
    Definition: tgt.h:59
    -
    OPJ_UINT32 known
    Definition: tgt.h:61
    - -
    Individual bit input-output stream (BIO)
    Definition: bio.h:56
    -
    void opj_tgt_reset(opj_tgt_tree_t *p_tree)
    Reset a tag-tree (set all leaves to 0)
    Definition: tgt.c:236
    -
    OPJ_UINT32 numnodes
    Definition: tgt.h:70
    -
    int32_t OPJ_INT32
    Definition: openjpeg.h:125
    -
    void opj_tgt_destroy(opj_tgt_tree_t *tree)
    Destroy a tag-tree, liberating memory.
    Definition: tgt.c:223
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    -
    opj_tgt_node_t * nodes
    Definition: tgt.h:71
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    Definition: sparse_array.c:35
    -
    void opj_sparse_array_int32_free(opj_sparse_array_int32_t *sa)
    Frees a sparse array.
    Definition: sparse_array.c:81
    -
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    -
    OPJ_BOOL opj_sparse_array_int32_write(opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, const OPJ_INT32 *src, OPJ_UINT32 src_col_stride, OPJ_UINT32 src_line_stride, OPJ_BOOL forgiving)
    Write the content of a rectangular region into the sparse array from a user buffer.
    Definition: sparse_array.c:330
    -
    OPJ_BOOL opj_sparse_array_int32_read(const opj_sparse_array_int32_t *sa, OPJ_UINT32 x0, OPJ_UINT32 y0, OPJ_UINT32 x1, OPJ_UINT32 y1, OPJ_INT32 *dest, OPJ_UINT32 dest_col_stride, OPJ_UINT32 dest_line_stride, OPJ_BOOL forgiving)
    Read the content of a rectangular region of the sparse array into a user buffer.
    Definition: sparse_array.c:311
    -
    OPJ_UINT32 opj_tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 threshold)
    Decode the value of a leaf of the tag-tree up to a given threshold.
    Definition: tgt.c:307
    -
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an existing one.
    Definition: tgt.c:136
    -
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    -
    OPJ_UINT32 numleafsv
    Definition: tgt.h:69
    -
    void opj_tgt_setvalue(opj_tgt_tree_t *tree, OPJ_UINT32 leafno, OPJ_INT32 value)
    Set the value of a leaf of a tag-tree.
    Definition: tgt.c:254
    -
    #define EVT_ERROR
    Error event type.
    Definition: event.h:66
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    struct opj_tgt_node * parent
    Definition: tgt.h:58
    -
    Tag tree.
    Definition: tgt.h:67
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    opj_tgt_tree_t * opj_tgt_init(opj_tgt_tree_t *p_tree, OPJ_UINT32 p_num_leafs_h, OPJ_UINT32 p_num_leafs_v, opj_event_mgr_t *p_manager)
    Reinitialises a tag-tree from an exixting one.
    Definition: tgt.c:136
    -
    OPJ_UINT32 nodes_size
    Definition: tgt.h:72
    -
    opj_tgt_tree_t * opj_tgt_create(OPJ_UINT32 numleafsh, OPJ_UINT32 numleafsv, opj_event_mgr_t *p_manager)
    Create a tag-tree.
    Definition: tgt.c:48
    -
    opj_sparse_array_int32_t * opj_sparse_array_int32_create(OPJ_UINT32 width, OPJ_UINT32 height, OPJ_UINT32 block_width, OPJ_UINT32 block_height)
    Creates a new sparse array.
    Definition: sparse_array.c:45
    -
    struct opj_tgt_tree opj_tgt_tree_t
    Tag tree.
    - - - - diff --git a/build/doc/html/thix__manager_8c.html b/build/doc/html/thix__manager_8c.html deleted file mode 100644 index 177c0a7f9..000000000 --- a/build/doc/html/thix__manager_8c.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -OpenJPEG: thix_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    thix_manager.c File Reference
    -
    -
    - -

    Modification of jpip.c from 2KAN indexer. -More...

    -
    #include "opj_includes.h"
    -
    - - - - - -

    -Functions

    int opj_write_thix (int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tilemhix (int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.c from 2KAN indexer.

    -

    Function Documentation

    - -

    ◆ opj_write_thix()

    - - - -

    ◆ opj_write_tilemhix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tilemhix (int coff,
    opj_codestream_info_t cstr_info,
    int tileno,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/thread_8c.html b/build/doc/html/thread_8c.html deleted file mode 100644 index 5f327831a..000000000 --- a/build/doc/html/thread_8c.html +++ /dev/null @@ -1,1034 +0,0 @@ - - - - - - - -OpenJPEG: thread.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    thread.c File Reference
    -
    -
    -
    #include <assert.h>
    -#include "opj_includes.h"
    -
    - - - - - - - - - - - - - - - -

    -Data Structures

    struct  opj_tls_key_val_t
     
    struct  opj_tls_t
     
    struct  opj_worker_thread_job_t
     
    struct  opj_worker_thread_t
     
    struct  opj_job_list_t
     
    struct  opj_worker_thread_list_t
     
    struct  opj_thread_pool_t
     
    - - - - - -

    -Typedefs

    typedef struct opj_job_list_t opj_job_list_t
     
    typedef struct opj_worker_thread_list_t opj_worker_thread_list_t
     
    - - - -

    -Enumerations

    enum  opj_worker_thread_state { OPJWTS_OK, -OPJWTS_STOP, -OPJWTS_ERROR - }
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void)
     Returns if the library is built with thread support. More...
     
    int OPJ_CALLCONV opj_get_num_cpus (void)
     Return the number of virtual CPUs. More...
     
    opj_mutex_topj_mutex_create (void)
     Creates a mutex. More...
     
    void opj_mutex_lock (opj_mutex_t *mutex)
     Lock/acquire the mutex. More...
     
    void opj_mutex_unlock (opj_mutex_t *mutex)
     Unlock/release the mutex. More...
     
    void opj_mutex_destroy (opj_mutex_t *mutex)
     Destroy a mutex. More...
     
    opj_cond_topj_cond_create (void)
     Creates a condition. More...
     
    void opj_cond_wait (opj_cond_t *cond, opj_mutex_t *mutex)
     Wait for the condition to be signaled. More...
     
    void opj_cond_signal (opj_cond_t *cond)
     Signal waiting threads on a condition. More...
     
    void opj_cond_destroy (opj_cond_t *cond)
     Destroy a condition. More...
     
    opj_thread_topj_thread_create (opj_thread_fn thread_fn, void *user_data)
     Creates a new thread. More...
     
    void opj_thread_join (opj_thread_t *thread)
     Wait for a thread to be finished and release associated resources to the thread handle. More...
     
    static opj_tls_topj_tls_new (void)
     
    static void opj_tls_destroy (opj_tls_t *tls)
     
    void * opj_tls_get (opj_tls_t *tls, int key)
     Get a thread local value corresponding to the provided key. More...
     
    OPJ_BOOL opj_tls_set (opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
     Set a thread local value corresponding to the provided key. More...
     
    static OPJ_BOOL opj_thread_pool_setup (opj_thread_pool_t *tp, int num_threads)
     
    static opj_worker_thread_job_topj_thread_pool_get_next_job (opj_thread_pool_t *tp, opj_worker_thread_t *worker_thread, OPJ_BOOL signal_job_finished)
     
    opj_thread_pool_topj_thread_pool_create (int num_threads)
     Create a new thread pool. More...
     
    static void opj_worker_thread_function (void *user_data)
     
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
     Submit a new job to be run by one of the thread in the thread pool. More...
     
    void opj_thread_pool_wait_completion (opj_thread_pool_t *tp, int max_remaining_jobs)
     Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool. More...
     
    int opj_thread_pool_get_thread_count (opj_thread_pool_t *tp)
     Return the number of threads associated with the thread pool. More...
     
    void opj_thread_pool_destroy (opj_thread_pool_t *tp)
     Destroy a thread pool. More...
     
    -

    Typedef Documentation

    - -

    ◆ opj_job_list_t

    - -
    -
    - - - - -
    typedef struct opj_job_list_t opj_job_list_t
    -
    - -
    -
    - -

    ◆ opj_worker_thread_list_t

    - -
    -
    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ opj_worker_thread_state

    - -
    -
    - - - - -
    enum opj_worker_thread_state
    -
    - - - - -
    Enumerator
    OPJWTS_OK 
    OPJWTS_STOP 
    OPJWTS_ERROR 
    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_cond_create()

    - -
    -
    - - - - - - - - -
    opj_cond_t* opj_cond_create (void )
    -
    - -

    Creates a condition.

    -
    Returns
    the condition or NULL in case of error (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_cond_destroy()

    - -
    -
    - - - - - - - - -
    void opj_cond_destroy (opj_cond_tcond)
    -
    - -

    Destroy a condition.

    -
    Parameters
    - - -
    condthe condition to destroy.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_cond_signal()

    - -
    -
    - - - - - - - - -
    void opj_cond_signal (opj_cond_tcond)
    -
    - -

    Signal waiting threads on a condition.

    -

    One of the thread waiting with opj_cond_wait() will be waken up. It is strongly advised that this call is done with the mutex that is used by opj_cond_wait(), in a acquired state.

    Parameters
    - - -
    condthe condition to signal.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), and opj_thread_pool_submit_job().

    - -
    -
    - -

    ◆ opj_cond_wait()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_cond_wait (opj_cond_tcond,
    opj_mutex_tmutex 
    )
    -
    - -

    Wait for the condition to be signaled.

    -

    The semantics is the same as the POSIX pthread_cond_wait. The provided mutex must be acquired before calling this function, and released afterwards. The mutex will be released by this function while it must wait for the condition and reacquired afterwards. In some particular situations, the function might return even if the condition is not signaled with opj_cond_signal(), hence the need to check with an application level mechanism.

    -

    Waiting thread :

    -
    while( !some_application_level_condition )
    -
    {
    - -
    }
    - -

    Signaling thread :

    -
    some_application_level_condition = TRUE;
    - - -
    Parameters
    - - - -
    condthe condition to wait.
    mutexthe mutex (in acquired state before calling this function)
    -
    -
    - -

    Referenced by opj_thread_pool_get_next_job(), opj_thread_pool_setup(), opj_thread_pool_submit_job(), and opj_thread_pool_wait_completion().

    - -
    -
    - -

    ◆ opj_get_num_cpus()

    - -
    -
    - - - - - - - - -
    int OPJ_CALLCONV opj_get_num_cpus (void )
    -
    - -

    Return the number of virtual CPUs.

    - -

    Referenced by opj_j2k_get_default_thread_count().

    - -
    -
    - -

    ◆ opj_has_thread_support()

    - -
    -
    - - - - - - - - -
    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support (void )
    -
    - -

    Returns if the library is built with thread support.

    -

    OPJ_TRUE if mutex, condition, thread, thread pool are available.

    - -

    References OPJ_FALSE.

    - -

    Referenced by opj_j2k_get_default_thread_count(), and opj_j2k_set_threads().

    - -
    -
    - -

    ◆ opj_mutex_create()

    - -
    -
    - - - - - - - - -
    opj_mutex_t* opj_mutex_create (void )
    -
    - -

    Creates a mutex.

    -
    Returns
    the mutex or NULL in case of error (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_create(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_mutex_destroy()

    - -
    -
    - - - - - - - - -
    void opj_mutex_destroy (opj_mutex_tmutex)
    -
    - -

    Destroy a mutex.

    -
    Parameters
    - - -
    mutexthe mutex to destroy.
    -
    -
    - -

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_destroy(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_mutex_lock()

    - -
    -
    - - - - - - - - -
    void opj_mutex_lock (opj_mutex_tmutex)
    -
    -
    - -

    ◆ opj_mutex_unlock()

    - -
    -
    - - - - - - - - -
    void opj_mutex_unlock (opj_mutex_tmutex)
    -
    -
    - -

    ◆ opj_thread_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_thread_t* opj_thread_create (opj_thread_fn thread_fn,
    void * user_data 
    )
    -
    - -

    Creates a new thread.

    -
    Parameters
    - - - -
    thread_fnFunction to run in the new thread.
    user_datauser data provided to the thread function. Might be NULL.
    -
    -
    -
    Returns
    a thread handle or NULL in case of failure (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_thread_join()

    - -
    -
    - - - - - - - - -
    void opj_thread_join (opj_thread_tthread)
    -
    - -

    Wait for a thread to be finished and release associated resources to the thread handle.

    -
    Parameters
    - - -
    threadthe thread to wait for being finished.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy().

    - -
    -
    - -

    ◆ opj_thread_pool_create()

    - -
    -
    - - - - - - - - -
    opj_thread_pool_t* opj_thread_pool_create (int num_threads)
    -
    - -

    Create a new thread pool.

    -

    num_thread must nominally be >= 1 to create a real thread pool. If num_threads is negative or null, then a dummy thread pool will be created. All functions operating on the thread pool will work, but job submission will be run synchronously in the calling thread.

    -
    Parameters
    - - -
    num_threadsthe number of threads to allocate for this thread pool.
    -
    -
    -
    Returns
    a thread pool handle, or NULL in case of failure (can for example happen if the library is built without thread support)
    - -

    References opj_thread_pool_t::mutex, opj_calloc(), opj_free(), opj_mutex_create(), opj_thread_pool_destroy(), opj_thread_pool_setup(), opj_tls_new(), OPJWTS_OK, opj_thread_pool_t::state, and opj_thread_pool_t::tls.

    - -

    Referenced by main(), opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_j2k_set_threads().

    - -
    -
    - -

    ◆ opj_thread_pool_destroy()

    - - - -

    ◆ opj_thread_pool_get_next_job()

    - - - -

    ◆ opj_thread_pool_get_thread_count()

    - -
    -
    - - - - - - - - -
    int opj_thread_pool_get_thread_count (opj_thread_pool_ttp)
    -
    - -

    Return the number of threads associated with the thread pool.

    -
    Parameters
    - - -
    tpthe thread pool handle.
    -
    -
    -
    Returns
    number of threads associated with the thread pool.
    - -

    References opj_thread_pool_t::worker_threads_count.

    - -

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    - -
    -
    - -

    ◆ opj_thread_pool_setup()

    - - - -

    ◆ opj_thread_pool_submit_job()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_ttp,
    opj_job_fn job_fn,
    void * user_data 
    )
    -
    - -

    Submit a new job to be run by one of the thread in the thread pool.

    -

    The job ( thread_fn, user_data ) will be added in the queue of jobs managed by the thread pool, and run by the first thread that is no longer busy.

    -
    Parameters
    - - - - -
    tpthe thread pool handle.
    job_fnFunction to run. Must not be NULL.
    user_dataUser data provided to thread_fn.
    -
    -
    -
    Returns
    OPJ_TRUE if the job was successfully submitted.
    - -

    References opj_worker_thread_t::cond, opj_thread_pool_t::cond, opj_job_list_t::job, opj_worker_thread_job_t::job_fn, opj_thread_pool_t::job_queue, opj_worker_thread_t::marked_as_waiting, opj_worker_thread_t::mutex, opj_thread_pool_t::mutex, opj_job_list_t::next, opj_worker_thread_list_t::next, opj_cond_signal(), opj_cond_wait(), OPJ_FALSE, opj_free(), opj_malloc(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_TRUE, opj_thread_pool_t::pending_jobs_count, opj_thread_pool_t::signaling_threshold, opj_thread_pool_t::tls, opj_worker_thread_job_t::user_data, opj_thread_pool_t::waiting_worker_thread_count, opj_thread_pool_t::waiting_worker_thread_list, opj_worker_thread_list_t::worker_thread, and opj_thread_pool_t::worker_threads_count.

    - -

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    - -
    -
    - -

    ◆ opj_thread_pool_wait_completion()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_thread_pool_wait_completion (opj_thread_pool_ttp,
    int max_remaining_jobs 
    )
    -
    - -

    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.

    -

    The aim of this function is to avoid submitting too many jobs while the thread pool cannot cope fast enough with them, which would result potentially in out-of-memory situations with too many job descriptions being queued.

    -
    Parameters
    - - - -
    tpthe thread pool handle
    max_remaining_jobsmaximum number of jobs allowed to be queued without waiting.
    -
    -
    - -

    References opj_thread_pool_t::cond, opj_thread_pool_t::mutex, opj_cond_wait(), opj_mutex_lock(), opj_mutex_unlock(), opj_thread_pool_t::pending_jobs_count, and opj_thread_pool_t::signaling_threshold.

    - -

    Referenced by opj_dwt_decode_tile(), opj_tcd_t1_decode(), and opj_thread_pool_destroy().

    - -
    -
    - -

    ◆ opj_tls_destroy()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_tls_destroy (opj_tls_ttls)
    -
    -static
    -
    -
    - -

    ◆ opj_tls_get()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_tls_get (opj_tls_ttls,
    int key 
    )
    -
    - -

    Get a thread local value corresponding to the provided key.

    -
    Parameters
    - - - -
    tlsthread local storage handle
    keykey whose value to retrieve.
    -
    -
    -
    Returns
    value associated with the key, or NULL is missing.
    - -

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, and opj_tls_key_val_t::value.

    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_tls_new()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static opj_tls_t* opj_tls_new (void )
    -
    -static
    -
    - -

    References opj_calloc().

    - -

    Referenced by opj_thread_pool_create(), and opj_worker_thread_function().

    - -
    -
    - -

    ◆ opj_tls_set()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tls_set (opj_tls_ttls,
    int key,
    void * value,
    opj_tls_free_func free_func 
    )
    -
    - -

    Set a thread local value corresponding to the provided key.

    -
    Parameters
    - - - - - -
    tlsthread local storage handle
    keykey whose value to set.
    valuevalue to set (may be NULL).
    free_funcfunction to call currently installed value.
    -
    -
    -
    Returns
    OPJ_TRUE if successful.
    - -

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, OPJ_FALSE, opj_tls_key_val_t::opj_free_func, opj_realloc(), OPJ_TRUE, and opj_tls_key_val_t::value.

    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_worker_thread_function()

    - -
    -
    - - - - - -
    - - - - - - - - -
    static void opj_worker_thread_function (void * user_data)
    -
    -static
    -
    -
    -
    -
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    -
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    -
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    -
    opj_mutex_t * mutex
    Definition: thread.c:609
    -
    opj_cond_t * cond
    Definition: thread.c:608
    -
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    - - - - diff --git a/build/doc/html/thread_8h.html b/build/doc/html/thread_8h.html deleted file mode 100644 index ae9f3055a..000000000 --- a/build/doc/html/thread_8h.html +++ /dev/null @@ -1,894 +0,0 @@ - - - - - - - -OpenJPEG: thread.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    thread.h File Reference
    -
    -
    - -

    Thread API. -More...

    -
    #include "openjpeg.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - -

    -Mutex

    typedef struct opj_mutex_t opj_mutex_t
     Opaque type for a mutex. More...
     
    opj_mutex_topj_mutex_create (void)
     Creates a mutex. More...
     
    void opj_mutex_lock (opj_mutex_t *mutex)
     Lock/acquire the mutex. More...
     
    void opj_mutex_unlock (opj_mutex_t *mutex)
     Unlock/release the mutex. More...
     
    void opj_mutex_destroy (opj_mutex_t *mutex)
     Destroy a mutex. More...
     
    - - - - - - - - - - - - - - - - -

    -Condition

    typedef struct opj_cond_t opj_cond_t
     Opaque type for a condition. More...
     
    opj_cond_topj_cond_create (void)
     Creates a condition. More...
     
    void opj_cond_wait (opj_cond_t *cond, opj_mutex_t *mutex)
     Wait for the condition to be signaled. More...
     
    void opj_cond_signal (opj_cond_t *cond)
     Signal waiting threads on a condition. More...
     
    void opj_cond_destroy (opj_cond_t *cond)
     Destroy a condition. More...
     
    - - - - - - - - - - - - - -

    -Thread

    typedef struct opj_thread_t opj_thread_t
     Opaque type for a thread handle. More...
     
    typedef void(* opj_thread_fn) (void *user_data)
     User function to execute in a thread. More...
     
    opj_thread_topj_thread_create (opj_thread_fn thread_fn, void *user_data)
     Creates a new thread. More...
     
    void opj_thread_join (opj_thread_t *thread)
     Wait for a thread to be finished and release associated resources to the thread handle. More...
     
    - - - - - - - - - - - - - -

    -Thread local storage

    typedef struct opj_tls_t opj_tls_t
     Opaque type for a thread local storage. More...
     
    typedef void(* opj_tls_free_func) (void *value)
     Type of the function used to free a TLS value. More...
     
    void * opj_tls_get (opj_tls_t *tls, int key)
     Get a thread local value corresponding to the provided key. More...
     
    OPJ_BOOL opj_tls_set (opj_tls_t *tls, int key, void *value, opj_tls_free_func free_func)
     Set a thread local value corresponding to the provided key. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Thread pool

    typedef struct opj_thread_pool_t opj_thread_pool_t
     Opaque type for a thread pool. More...
     
    typedef void(* opj_job_fn) (void *user_data, opj_tls_t *tls)
     User function to execute in a thread. More...
     
    opj_thread_pool_topj_thread_pool_create (int num_threads)
     Create a new thread pool. More...
     
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
     Submit a new job to be run by one of the thread in the thread pool. More...
     
    void opj_thread_pool_wait_completion (opj_thread_pool_t *tp, int max_remaining_jobs)
     Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool. More...
     
    int opj_thread_pool_get_thread_count (opj_thread_pool_t *tp)
     Return the number of threads associated with the thread pool. More...
     
    void opj_thread_pool_destroy (opj_thread_pool_t *tp)
     Destroy a thread pool. More...
     
    -

    Detailed Description

    -

    Thread API.

    -

    The functions in thread.c have for goal to manage mutex, conditions, thread creation and thread pools that accept jobs.

    -

    Typedef Documentation

    - -

    ◆ opj_cond_t

    - -
    -
    - - - - -
    typedef struct opj_cond_t opj_cond_t
    -
    - -

    Opaque type for a condition.

    - -
    -
    - -

    ◆ opj_job_fn

    - -
    -
    - - - - -
    typedef void(* opj_job_fn) (void *user_data, opj_tls_t *tls)
    -
    - -

    User function to execute in a thread.

    -
    Parameters
    - - - -
    user_datauser data provided with opj_thread_create()
    tlshandle to thread local storage
    -
    -
    - -
    -
    - -

    ◆ opj_mutex_t

    - -
    -
    - - - - -
    typedef struct opj_mutex_t opj_mutex_t
    -
    - -

    Opaque type for a mutex.

    - -
    -
    - -

    ◆ opj_thread_fn

    - -
    -
    - - - - -
    typedef void(* opj_thread_fn) (void *user_data)
    -
    - -

    User function to execute in a thread.

    -
    Parameters
    - - -
    user_datauser data provided with opj_thread_create()
    -
    -
    - -
    -
    - -

    ◆ opj_thread_pool_t

    - -
    -
    - - - - -
    typedef struct opj_thread_pool_t opj_thread_pool_t
    -
    - -

    Opaque type for a thread pool.

    - -
    -
    - -

    ◆ opj_thread_t

    - -
    -
    - - - - -
    typedef struct opj_thread_t opj_thread_t
    -
    - -

    Opaque type for a thread handle.

    - -
    -
    - -

    ◆ opj_tls_free_func

    - -
    -
    - - - - -
    typedef void(* opj_tls_free_func) (void *value)
    -
    - -

    Type of the function used to free a TLS value.

    - -
    -
    - -

    ◆ opj_tls_t

    - -
    -
    - - - - -
    typedef struct opj_tls_t opj_tls_t
    -
    - -

    Opaque type for a thread local storage.

    - -
    -
    -

    Function Documentation

    - -

    ◆ opj_cond_create()

    - -
    -
    - - - - - - - - -
    opj_cond_t* opj_cond_create (void )
    -
    - -

    Creates a condition.

    -
    Returns
    the condition or NULL in case of error (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_cond_destroy()

    - -
    -
    - - - - - - - - -
    void opj_cond_destroy (opj_cond_tcond)
    -
    - -

    Destroy a condition.

    -
    Parameters
    - - -
    condthe condition to destroy.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_cond_signal()

    - -
    -
    - - - - - - - - -
    void opj_cond_signal (opj_cond_tcond)
    -
    - -

    Signal waiting threads on a condition.

    -

    One of the thread waiting with opj_cond_wait() will be waken up. It is strongly advised that this call is done with the mutex that is used by opj_cond_wait(), in a acquired state.

    Parameters
    - - -
    condthe condition to signal.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy(), opj_thread_pool_get_next_job(), and opj_thread_pool_submit_job().

    - -
    -
    - -

    ◆ opj_cond_wait()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_cond_wait (opj_cond_tcond,
    opj_mutex_tmutex 
    )
    -
    - -

    Wait for the condition to be signaled.

    -

    The semantics is the same as the POSIX pthread_cond_wait. The provided mutex must be acquired before calling this function, and released afterwards. The mutex will be released by this function while it must wait for the condition and reacquired afterwards. In some particular situations, the function might return even if the condition is not signaled with opj_cond_signal(), hence the need to check with an application level mechanism.

    -

    Waiting thread :

    -
    while( !some_application_level_condition )
    -
    {
    - -
    }
    - -

    Signaling thread :

    -
    some_application_level_condition = TRUE;
    - - -
    Parameters
    - - - -
    condthe condition to wait.
    mutexthe mutex (in acquired state before calling this function)
    -
    -
    - -

    Referenced by opj_thread_pool_get_next_job(), opj_thread_pool_setup(), opj_thread_pool_submit_job(), and opj_thread_pool_wait_completion().

    - -
    -
    - -

    ◆ opj_mutex_create()

    - -
    -
    - - - - - - - - -
    opj_mutex_t* opj_mutex_create (void )
    -
    - -

    Creates a mutex.

    -
    Returns
    the mutex or NULL in case of error (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_create(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_mutex_destroy()

    - -
    -
    - - - - - - - - -
    void opj_mutex_destroy (opj_mutex_tmutex)
    -
    - -

    Destroy a mutex.

    -
    Parameters
    - - -
    mutexthe mutex to destroy.
    -
    -
    - -

    Referenced by opj_tcd_t1_decode(), opj_thread_pool_destroy(), and opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_mutex_lock()

    - -
    -
    - - - - - - - - -
    void opj_mutex_lock (opj_mutex_tmutex)
    -
    -
    - -

    ◆ opj_mutex_unlock()

    - -
    -
    - - - - - - - - -
    void opj_mutex_unlock (opj_mutex_tmutex)
    -
    -
    - -

    ◆ opj_thread_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    opj_thread_t* opj_thread_create (opj_thread_fn thread_fn,
    void * user_data 
    )
    -
    - -

    Creates a new thread.

    -
    Parameters
    - - - -
    thread_fnFunction to run in the new thread.
    user_datauser data provided to the thread function. Might be NULL.
    -
    -
    -
    Returns
    a thread handle or NULL in case of failure (can for example happen if the library is built without thread support)
    - -

    Referenced by opj_thread_pool_setup().

    - -
    -
    - -

    ◆ opj_thread_join()

    - -
    -
    - - - - - - - - -
    void opj_thread_join (opj_thread_tthread)
    -
    - -

    Wait for a thread to be finished and release associated resources to the thread handle.

    -
    Parameters
    - - -
    threadthe thread to wait for being finished.
    -
    -
    - -

    Referenced by opj_thread_pool_destroy().

    - -
    -
    - -

    ◆ opj_thread_pool_create()

    - -
    -
    - - - - - - - - -
    opj_thread_pool_t* opj_thread_pool_create (int num_threads)
    -
    - -

    Create a new thread pool.

    -

    num_thread must nominally be >= 1 to create a real thread pool. If num_threads is negative or null, then a dummy thread pool will be created. All functions operating on the thread pool will work, but job submission will be run synchronously in the calling thread.

    -
    Parameters
    - - -
    num_threadsthe number of threads to allocate for this thread pool.
    -
    -
    -
    Returns
    a thread pool handle, or NULL in case of failure (can for example happen if the library is built without thread support)
    - -

    References opj_thread_pool_t::mutex, opj_calloc(), opj_free(), opj_mutex_create(), opj_thread_pool_destroy(), opj_thread_pool_setup(), opj_tls_new(), OPJWTS_OK, opj_thread_pool_t::state, and opj_thread_pool_t::tls.

    - -

    Referenced by main(), opj_j2k_create_compress(), opj_j2k_create_decompress(), and opj_j2k_set_threads().

    - -
    -
    - -

    ◆ opj_thread_pool_destroy()

    - - - -

    ◆ opj_thread_pool_get_thread_count()

    - -
    -
    - - - - - - - - -
    int opj_thread_pool_get_thread_count (opj_thread_pool_ttp)
    -
    - -

    Return the number of threads associated with the thread pool.

    -
    Parameters
    - - -
    tpthe thread pool handle.
    -
    -
    -
    Returns
    number of threads associated with the thread pool.
    - -

    References opj_thread_pool_t::worker_threads_count.

    - -

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    - -
    -
    - -

    ◆ opj_thread_pool_submit_job()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_thread_pool_submit_job (opj_thread_pool_ttp,
    opj_job_fn job_fn,
    void * user_data 
    )
    -
    - -

    Submit a new job to be run by one of the thread in the thread pool.

    -

    The job ( thread_fn, user_data ) will be added in the queue of jobs managed by the thread pool, and run by the first thread that is no longer busy.

    -
    Parameters
    - - - - -
    tpthe thread pool handle.
    job_fnFunction to run. Must not be NULL.
    user_dataUser data provided to thread_fn.
    -
    -
    -
    Returns
    OPJ_TRUE if the job was successfully submitted.
    - -

    References opj_worker_thread_t::cond, opj_thread_pool_t::cond, opj_job_list_t::job, opj_worker_thread_job_t::job_fn, opj_thread_pool_t::job_queue, opj_worker_thread_t::marked_as_waiting, opj_worker_thread_t::mutex, opj_thread_pool_t::mutex, opj_job_list_t::next, opj_worker_thread_list_t::next, opj_cond_signal(), opj_cond_wait(), OPJ_FALSE, opj_free(), opj_malloc(), opj_mutex_lock(), opj_mutex_unlock(), OPJ_TRUE, opj_thread_pool_t::pending_jobs_count, opj_thread_pool_t::signaling_threshold, opj_thread_pool_t::tls, opj_worker_thread_job_t::user_data, opj_thread_pool_t::waiting_worker_thread_count, opj_thread_pool_t::waiting_worker_thread_list, opj_worker_thread_list_t::worker_thread, and opj_thread_pool_t::worker_threads_count.

    - -

    Referenced by opj_dwt_decode_tile(), and opj_t1_decode_cblks().

    - -
    -
    - -

    ◆ opj_thread_pool_wait_completion()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void opj_thread_pool_wait_completion (opj_thread_pool_ttp,
    int max_remaining_jobs 
    )
    -
    - -

    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.

    -

    The aim of this function is to avoid submitting too many jobs while the thread pool cannot cope fast enough with them, which would result potentially in out-of-memory situations with too many job descriptions being queued.

    -
    Parameters
    - - - -
    tpthe thread pool handle
    max_remaining_jobsmaximum number of jobs allowed to be queued without waiting.
    -
    -
    - -

    References opj_thread_pool_t::cond, opj_thread_pool_t::mutex, opj_cond_wait(), opj_mutex_lock(), opj_mutex_unlock(), opj_thread_pool_t::pending_jobs_count, and opj_thread_pool_t::signaling_threshold.

    - -

    Referenced by opj_dwt_decode_tile(), opj_tcd_t1_decode(), and opj_thread_pool_destroy().

    - -
    -
    - -

    ◆ opj_tls_get()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* opj_tls_get (opj_tls_ttls,
    int key 
    )
    -
    - -

    Get a thread local value corresponding to the provided key.

    -
    Parameters
    - - - -
    tlsthread local storage handle
    keykey whose value to retrieve.
    -
    -
    -
    Returns
    value associated with the key, or NULL is missing.
    - -

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, and opj_tls_key_val_t::value.

    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    - -

    ◆ opj_tls_set()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    OPJ_BOOL opj_tls_set (opj_tls_ttls,
    int key,
    void * value,
    opj_tls_free_func free_func 
    )
    -
    - -

    Set a thread local value corresponding to the provided key.

    -
    Parameters
    - - - - - -
    tlsthread local storage handle
    keykey whose value to set.
    valuevalue to set (may be NULL).
    free_funcfunction to call currently installed value.
    -
    -
    -
    Returns
    OPJ_TRUE if successful.
    - -

    References opj_tls_key_val_t::key, opj_tls_t::key_val, opj_tls_t::key_val_count, OPJ_FALSE, opj_tls_key_val_t::opj_free_func, opj_realloc(), OPJ_TRUE, and opj_tls_key_val_t::value.

    - -

    Referenced by opj_t1_clbl_decode_processor().

    - -
    -
    -
    -
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    -
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    -
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    -
    opj_mutex_t * mutex
    Definition: thread.c:609
    -
    opj_cond_t * cond
    Definition: thread.c:608
    -
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    - - - - diff --git a/build/doc/html/thread_8h_source.html b/build/doc/html/thread_8h_source.html deleted file mode 100644 index 5adbddb83..000000000 --- a/build/doc/html/thread_8h_source.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -OpenJPEG: thread.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    thread.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2016, Even Rouault
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef THREAD_H
    -
    33 #define THREAD_H
    -
    34 
    -
    35 #include "openjpeg.h"
    -
    36 
    -
    47 
    -
    50 
    -
    52 typedef struct opj_mutex_t opj_mutex_t;
    -
    53 
    - -
    59 
    -
    63 void opj_mutex_lock(opj_mutex_t* mutex);
    -
    64 
    -
    68 void opj_mutex_unlock(opj_mutex_t* mutex);
    -
    69 
    -
    73 void opj_mutex_destroy(opj_mutex_t* mutex);
    -
    74 
    -
    79 
    -
    81 typedef struct opj_cond_t opj_cond_t;
    -
    82 
    - -
    88 
    -
    120 void opj_cond_wait(opj_cond_t* cond, opj_mutex_t* mutex);
    -
    121 
    -
    128 void opj_cond_signal(opj_cond_t* cond);
    -
    129 
    -
    133 void opj_cond_destroy(opj_cond_t* cond);
    -
    134 
    -
    139 
    -
    141 typedef struct opj_thread_t opj_thread_t;
    -
    142 
    -
    146 typedef void (*opj_thread_fn)(void* user_data);
    -
    147 
    -
    154 opj_thread_t* opj_thread_create(opj_thread_fn thread_fn, void* user_data);
    -
    155 
    -
    160 void opj_thread_join(opj_thread_t* thread);
    -
    161 
    -
    167 typedef struct opj_tls_t opj_tls_t;
    -
    168 
    -
    174 void* opj_tls_get(opj_tls_t* tls, int key);
    -
    175 
    -
    177 typedef void (*opj_tls_free_func)(void* value);
    -
    178 
    -
    186 OPJ_BOOL opj_tls_set(opj_tls_t* tls, int key, void* value,
    -
    187  opj_tls_free_func free_func);
    -
    188 
    -
    193 
    - -
    196 
    -
    207 opj_thread_pool_t* opj_thread_pool_create(int num_threads);
    -
    208 
    -
    213 typedef void (*opj_job_fn)(void* user_data, opj_tls_t* tls);
    -
    214 
    -
    215 
    - -
    226  void* user_data);
    -
    227 
    - -
    238  int max_remaining_jobs);
    -
    239 
    - -
    246 
    - -
    251 
    -
    255 
    -
    256 #endif /* THREAD_H */
    -
    -
    opj_worker_thread_t * worker_threads
    Definition: thread.c:606
    -
    unsigned char OPJ_BYTE
    Definition: openjpeg.h:117
    -
    Definition: thread.c:504
    -
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    -
    opj_worker_thread_job_t * job
    Definition: thread.c:594
    -
    int signaling_threshold
    Definition: thread.c:616
    -
    int tw
    number of tiles in X
    Definition: openjpeg.h:867
    -
    OPJ_SIZE_T opj_stream_write_data(opj_stream_private_t *p_stream, const OPJ_BYTE *p_buffer, OPJ_SIZE_T p_size, opj_event_mgr_t *p_event_mgr)
    Writes some bytes to the stream.
    Definition: cio.c:385
    -
    void * opj_calloc(size_t num, size_t size)
    Allocate a memory block with elements initialized to 0.
    Definition: opj_malloc.c:198
    -
    opj_cond_t * cond
    Definition: thread.c:584
    -
    opj_marker_info_t * marker
    list of markers
    Definition: openjpeg.h:833
    -
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    -
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func opj_free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    -
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    -
    void(* opj_tls_free_func)(void *value)
    Type of the function used to free a TLS value.
    Definition: thread.h:177
    -
    int tp_end_header
    end position of tile part header
    Definition: openjpeg.h:793
    -
    void(* opj_thread_fn)(void *user_data)
    User function to execute in a thread.
    Definition: thread.h:146
    -
    volatile int pending_jobs_count
    Definition: thread.c:612
    -
    void opj_cond_signal(opj_cond_t *cond)
    Signal waiting threads on a condition.
    Definition: thread.c:474
    -
    #define JPIP_THIX
    Definition: indexbox_manager.h:49
    -
    opj_tls_t * tls
    Definition: thread.c:615
    -
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    -
    opj_thread_pool_t * tp
    Definition: thread.c:579
    -
    int key
    Definition: thread.c:499
    -
    #define JPIP_MHIX
    Definition: indexbox_manager.h:47
    -
    Definition: thread.c:498
    -
    OPJ_BOOL opj_tls_set(opj_tls_t *tls, int key, void *value, opj_tls_free_func free_func)
    Set a thread local value corresponding to the provided key.
    Definition: thread.c:540
    -
    int64_t OPJ_OFF_T
    Definition: openjpeg.h:130
    -
    OPJ_OFF_T opj_stream_skip(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, opj_event_mgr_t *p_event_mgr)
    Skips a number of bytes from the stream.
    Definition: cio.c:593
    -
    OPJ_BOOL opj_stream_seek(opj_stream_private_t *p_stream, OPJ_OFF_T p_size, struct opj_event_mgr *p_event_mgr)
    Seeks a number of bytes from the stream.
    Definition: cio.c:641
    -
    Message handler object used for.
    Definition: event.h:50
    -
    opj_thread_t * opj_thread_create(opj_thread_fn thread_fn, void *user_data)
    Creates a new thread.
    Definition: thread.c:484
    -
    OPJ_OFF_T opj_stream_tell(const opj_stream_private_t *p_stream)
    Tells the byte offset on the stream (similar to ftell).
    Definition: cio.c:579
    -
    volatile opj_worker_thread_state state
    Definition: thread.c:610
    -
    void opj_thread_pool_destroy(opj_thread_pool_t *tp)
    Destroy a thread pool.
    Definition: thread.c:919
    -
    OPJ_UINT32 type
    Definition: jp2.h:200
    -
    Byte input-output stream.
    Definition: cio.h:81
    -
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    -
    OPJ_BOOL opj_thread_pool_submit_job(opj_thread_pool_t *tp, opj_job_fn job_fn, void *user_data)
    Submit a new job to be run by one of the thread in the thread pool.
    Definition: thread.c:827
    -
    static opj_worker_thread_job_t * opj_thread_pool_get_next_job(opj_thread_pool_t *tp, opj_worker_thread_t *worker_thread, OPJ_BOOL signal_job_finished)
    Definition: thread.c:757
    -
    void * user_data
    Definition: thread.c:575
    -
    @ OPJWTS_ERROR
    Definition: thread.c:590
    -
    int opj_thread_pool_get_thread_count(opj_thread_pool_t *tp)
    Return the number of threads associated with the thread pool.
    Definition: thread.c:914
    -
    void opj_write_manf(int second, int v, opj_jp2_box_t *box, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: cidx_manager.c:157
    -
    OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void)
    Returns if the library is built with thread support.
    Definition: thread.c:433
    -
    int OPJ_BOOL
    Definition: openjpeg.h:110
    -
    void opj_cond_destroy(opj_cond_t *cond)
    Destroy a condition.
    Definition: thread.c:479
    -
    int waiting_worker_thread_count
    Definition: thread.c:614
    - -
    int key_val_count
    Definition: thread.c:506
    -
    int tp_start_pos
    start position of tile part
    Definition: openjpeg.h:791
    -
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    -
    static void opj_tls_destroy(opj_tls_t *tls)
    Definition: thread.c:514
    -
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    -
    Index structure : Information concerning tile-parts.
    Definition: openjpeg.h:789
    -
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    -
    JP2 Box.
    Definition: jp2.h:198
    -
    Definition: thread.c:599
    -
    opj_thread_t * opj_thread_create(opj_thread_fn thread_fn, void *user_data)
    Creates a new thread.
    Definition: thread.c:484
    -
    void * value
    Definition: thread.c:500
    -
    void opj_cond_wait(opj_cond_t *cond, opj_mutex_t *mutex)
    Wait for the condition to be signaled.
    Definition: thread.c:468
    -
    Definition: thread.c:593
    -
    static void opj_worker_thread_function(void *user_data)
    Definition: thread.c:656
    -
    Definition: thread.c:573
    -
    void * opj_realloc(void *ptr, size_t new_size)
    Reallocate memory blocks.
    Definition: opj_malloc.c:239
    -
    opj_mutex_t * mutex
    Definition: thread.c:609
    -
    #define OPJ_TRUE
    Definition: openjpeg.h:111
    -
    opj_cond_t * cond
    Definition: thread.c:608
    - -
    void * opj_malloc(size_t size)
    Allocate an uninitialized memory block.
    Definition: opj_malloc.c:191
    -
    opj_tls_free_func opj_free_func
    Definition: thread.c:501
    -
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    -
    void opj_free(void *ptr)
    Deallocates or frees a memory block.
    Definition: opj_malloc.c:246
    -
    void opj_thread_join(opj_thread_t *thread)
    Wait for a thread to be finished and release associated resources to the thread handle.
    Definition: thread.c:491
    -
    int worker_threads_count
    Definition: thread.c:607
    -
    int marked_as_waiting
    Definition: thread.c:581
    -
    opj_thread_t * thread
    Definition: thread.c:580
    -
    void opj_mutex_unlock(opj_mutex_t *mutex)
    Unlock/release the mutex.
    Definition: thread.c:453
    -
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    -
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    -
    void opj_mutex_lock(opj_mutex_t *mutex)
    Lock/acquire the mutex.
    Definition: thread.c:448
    -
    void opj_mutex_destroy(opj_mutex_t *mutex)
    Destroy a mutex.
    Definition: thread.c:458
    -
    opj_job_fn job_fn
    Definition: thread.c:574
    -
    struct opj_mutex_t opj_mutex_t
    Opaque type for a mutex.
    Definition: thread.h:52
    -
    opj_mutex_t * opj_mutex_create(void)
    Creates a mutex.
    Definition: thread.c:443
    -
    opj_worker_thread_state
    Definition: thread.c:587
    -
    opj_thread_pool_t * opj_thread_pool_create(int num_threads)
    Create a new thread pool.
    Definition: thread.c:625
    -
    int marknum
    number of markers
    Definition: openjpeg.h:831
    -
    opj_cond_t * opj_cond_create(void)
    Creates a condition.
    Definition: thread.c:463
    -
    OPJ_UINT32 length
    Definition: jp2.h:199
    -
    opj_job_list_t * job_queue
    Definition: thread.c:611
    -
    opj_tile_info_t * tile
    information regarding tiles inside image
    Definition: openjpeg.h:891
    -
    opj_mutex_t * mutex
    Definition: thread.c:583
    -
    Index structure of the codestream.
    Definition: openjpeg.h:845
    -
    @ OPJWTS_STOP
    Definition: thread.c:589
    -
    @ OPJWTS_OK
    Definition: thread.c:588
    -
    uint32_t OPJ_UINT32
    Definition: openjpeg.h:126
    -
    static OPJ_BOOL opj_thread_pool_setup(opj_thread_pool_t *tp, int num_threads)
    Definition: thread.c:684
    -
    int OPJ_CALLCONV opj_get_num_cpus(void)
    Return the number of virtual CPUs.
    Definition: thread.c:438
    -
    opj_worker_thread_t * worker_thread
    Definition: thread.c:600
    -
    struct opj_cond_t opj_cond_t
    Opaque type for a condition.
    Definition: thread.h:81
    -
    opj_tp_info_t * tp
    information concerning tile parts
    Definition: openjpeg.h:839
    -
    Index structure : information regarding tiles.
    Definition: openjpeg.h:805
    -
    static opj_tls_t * opj_tls_new(void)
    Definition: thread.c:509
    -
    struct opj_worker_thread_list_t * next
    Definition: thread.c:601
    -
    void opj_thread_join(opj_thread_t *thread)
    Wait for a thread to be finished and release associated resources to the thread handle.
    Definition: thread.c:491
    -
    struct opj_thread_t opj_thread_t
    Opaque type for a thread handle.
    Definition: thread.h:141
    -
    #define OPJ_FALSE
    Definition: openjpeg.h:112
    -
    struct opj_job_list_t * next
    Definition: thread.c:595
    -
    opj_worker_thread_list_t * waiting_worker_thread_list
    Definition: thread.c:613
    -
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    -
    opj_cond_t * opj_cond_create(void)
    Creates a condition.
    Definition: thread.c:463
    -
    void opj_thread_pool_wait_completion(opj_thread_pool_t *tp, int max_remaining_jobs)
    Wait that no more than max_remaining_jobs jobs are remaining in the queue of the thread pool.
    Definition: thread.c:894
    -
    #define opj_write_bytes
    Definition: cio.h:64
    -
    void * opj_tls_get(opj_tls_t *tls, int key)
    Get a thread local value corresponding to the provided key.
    Definition: thread.c:529
    -
    opj_tls_key_val_t * key_val
    Definition: thread.c:505
    -
    int th
    number of tiles in Y
    Definition: openjpeg.h:869
    -
    #define OPJ_CALLCONV
    Definition: openjpeg.h:92
    -
    Marker structure.
    Definition: openjpeg.h:776
    -
    int opj_write_tilemhix(int coff, opj_codestream_info_t cstr_info, int tileno, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:97
    -
    int opj_write_thix(int coff, opj_codestream_info_t cstr_info, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
    Definition: thix_manager.c:40
    -
    Definition: thread.c:578
    -
    Definition: thread.c:605
    -
    void(* opj_job_fn)(void *user_data, opj_tls_t *tls)
    User function to execute in a thread.
    Definition: thread.h:213
    -
    void opj_cond_destroy(opj_cond_t *cond)
    Destroy a condition.
    Definition: thread.c:479
    - - - - diff --git a/build/doc/html/tls__keys_8h.html b/build/doc/html/tls__keys_8h.html deleted file mode 100644 index aec1fc64a..000000000 --- a/build/doc/html/tls__keys_8h.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -OpenJPEG: tls_keys.h File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tls_keys.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - -

    -Macros

    #define OPJ_TLS_KEY_T1   0
     
    -

    Macro Definition Documentation

    - -

    ◆ OPJ_TLS_KEY_T1

    - -
    -
    - - - - -
    #define OPJ_TLS_KEY_T1   0
    -
    - -
    -
    -
    - - - - diff --git a/build/doc/html/tls__keys_8h_source.html b/build/doc/html/tls__keys_8h_source.html deleted file mode 100644 index 7468144cd..000000000 --- a/build/doc/html/tls__keys_8h_source.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -OpenJPEG: tls_keys.h Source File - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    -
    -
    tls_keys.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  * The copyright in this software is being made available under the 2-clauses
    -
    3  * BSD License, included below. This software may be subject to other third
    -
    4  * party and contributor rights, including patent rights, and no such rights
    -
    5  * are granted under this license.
    -
    6  *
    -
    7  * Copyright (c) 2016, Even Rouault
    -
    8  * All rights reserved.
    -
    9  *
    -
    10  * Redistribution and use in source and binary forms, with or without
    -
    11  * modification, are permitted provided that the following conditions
    -
    12  * are met:
    -
    13  * 1. Redistributions of source code must retain the above copyright
    -
    14  * notice, this list of conditions and the following disclaimer.
    -
    15  * 2. Redistributions in binary form must reproduce the above copyright
    -
    16  * notice, this list of conditions and the following disclaimer in the
    -
    17  * documentation and/or other materials provided with the distribution.
    -
    18  *
    -
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
    -
    20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -
    21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -
    22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -
    23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -
    24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -
    25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -
    26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -
    27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -
    28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -
    29  * POSSIBILITY OF SUCH DAMAGE.
    -
    30  */
    -
    31 
    -
    32 #ifndef OPJ_TLS_KEYS_H
    -
    33 #define OPJ_TLS_KEYS_H
    -
    34 
    -
    35 #define OPJ_TLS_KEY_T1 0
    -
    36 
    -
    37 #endif /* OPJ_TLS_KEY_H */
    -
    - - - - diff --git a/build/doc/html/tpix__manager_8c.html b/build/doc/html/tpix__manager_8c.html deleted file mode 100644 index 2a5c0ef91..000000000 --- a/build/doc/html/tpix__manager_8c.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - -OpenJPEG: tpix_manager.c File Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - - -
    -
    - -
    -
    tpix_manager.c File Reference
    -
    -
    - -

    Modification of jpip.c from 2KAN indexer. -More...

    -
    #include "opj_includes.h"
    -
    - - - -

    -Macros

    #define MAX(a, b)   ((a)>(b)?(a):(b))
     
    - - - - - - - -

    -Functions

    int get_num_max_tile_parts (opj_codestream_info_t cstr_info)
     
    int opj_write_tpix (int coff, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    int opj_write_tpixfaix (int coff, int compno, opj_codestream_info_t cstr_info, int j2klen, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
     
    -

    Detailed Description

    -

    Modification of jpip.c from 2KAN indexer.

    -

    Macro Definition Documentation

    - -

    ◆ MAX

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define MAX( a,
     
    )   ((a)>(b)?(a):(b))
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ get_num_max_tile_parts()

    - -
    -
    - - - - - - - - -
    int get_num_max_tile_parts (opj_codestream_info_t cstr_info)
    -
    -
    - -

    ◆ opj_write_tpix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tpix (int coff,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    - -

    ◆ opj_write_tpixfaix()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int opj_write_tpixfaix (int coff,
    int compno,
    opj_codestream_info_t cstr_info,
    int j2klen,
    opj_stream_private_tcio,
    opj_event_mgr_tp_manager 
    )
    -
    -
    -
    - - - - diff --git a/build/doc/html/unionopj__v4__t.html b/build/doc/html/unionopj__v4__t.html deleted file mode 100644 index d78752b22..000000000 --- a/build/doc/html/unionopj__v4__t.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -OpenJPEG: opj_v4_t Union Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    opj_v4_t Union Reference
    -
    -
    - - - - -

    -Data Fields

    OPJ_FLOAT32 f [4]
     
    -

    Field Documentation

    - -

    ◆ f

    - -
    -
    - - - - -
    OPJ_FLOAT32 opj_v4_t::f[4]
    -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/build/doc/html/unionsubfaixbox__param.html b/build/doc/html/unionsubfaixbox__param.html deleted file mode 100644 index 4b29919d6..000000000 --- a/build/doc/html/unionsubfaixbox__param.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -OpenJPEG: subfaixbox_param Union Reference - - - - - - -
    -
    - - - - - - -
    -
    OpenJPEG -  2.3.1 -
    -
    -
    - - - - - - -
    -
    - -
    -
    subfaixbox_param Union Reference
    -
    -
    - -

    variable sized parameters in fragment array index box - More...

    - -

    #include <faixbox_manager.h>

    - - - - - - - - -

    -Data Fields

    subfaixbox4_param_tbyte4_params
     parameters with 4byte codes for version 0 or 2 More...
     
    subfaixbox8_param_tbyte8_params
     parameters with 8byte codes for version 1 or 3 More...
     
    -

    Detailed Description

    -

    variable sized parameters in fragment array index box

    -

    Field Documentation

    - -

    ◆ byte4_params

    - -
    -
    - - - - -
    subfaixbox4_param_t* subfaixbox_param::byte4_params
    -
    - -

    parameters with 4byte codes for version 0 or 2

    - -

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    - -
    -
    - -

    ◆ byte8_params

    - -
    -
    - - - - -
    subfaixbox8_param_t* subfaixbox_param::byte8_params
    -
    - -

    parameters with 8byte codes for version 1 or 3

    - -

    Referenced by gene_faixbox(), get_elemAux(), get_elemLen(), get_elemOff(), get_m(), and get_nmax().

    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/build/doc/mainpage.dox b/build/doc/mainpage.dox deleted file mode 100644 index 476dbe741..000000000 --- a/build/doc/mainpage.dox +++ /dev/null @@ -1,62 +0,0 @@ -/* - * $Id$ - * - * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium - * Copyright (c) 2011, Mickael Savinaud, Communications & Systemes - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/*! \mainpage OpenJPEG v2.3.1 Documentation -* -* \section intro Introduction -* This manual documents the low-level OpenJPEG C API.\n -* The OpenJPEG library is an open-source JPEG 2000 library developed in order to promote the use of JPEG 2000.\n -* This documents is focused on the main part of the library which try to implement Part 1 and Part 2 of the JPEG2000 norm.\n -* -* \section home Home page -* -* The Home Page of the OpenJPEG project can be found at: -* -* http://www.openjpeg.org/ -* -* The source code repository is available here: -* -* http://github.com/uclouvain/openjpeg -* -* The OpenJPEG mailing list is located here: -* -* http://groups.google.com/group/openjpeg -* -* The test files repository is available here: -* -* http://github.com/uclouvain/openjpeg-data -* -* \section license License -* This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.\n -* The only restriction is to retain the copyright in the sources or the binaries documentation.\n -* Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage. -* -* \author OpenJPEG Team -* -*/ diff --git a/build/doc/openjpip.dox b/build/doc/openjpip.dox deleted file mode 100644 index 50ab5352e..000000000 --- a/build/doc/openjpip.dox +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - * - * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium - * Copyright (c) 2002-2014, Professor Benoit Macq - * Copyright (c) 2010-2011, Kaori Hagihara - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/*! \page openjpippage OpenJPIP v2.3.1 Documentation - * - * \section Introduction - * This manual documents the low-level OpenJPIP C API.\n - * OpenJPIP software is an implementation of JPEG 2000 Part9: Interactivity tools, APIs and protocols (JPIP).\n - * ( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html)\n - * - * This whole documents covers the following six programs.\n - * - opj_server.c JPIP server supporting HTTP connection and JPT/JPP-stream - * - opj_dec_server.c Server to decode JPT/JPP-stream and communicate locally with JPIP client, which is coded in java - * - opj_jpip_addxml.c To Embed metadata into JP2 file - * - opj_jpip_transcode.c To Convert JPT/JPP-stream to JP2 or J2K - * - opj_jpip_test.c To test index code format of a JP2 file - * - * \section License - * This software is released under the BSD license, anybody can use or modify the library, even for commercial applications.\n - * The only restriction is to retain the copyright in the sources or the binaries documentation.\n - * Neither the author, nor the university accept any responsibility for any kind of error or data loss which may occur during usage. - * - * - * \section reqlibs Required libraries - * - OpenJPEG library - * - FastCGI development kit (C libraries) at server (http://www.fastcgi.com) - * - libcURL library - * - * We tested this software with a virtual server running on the same Linux machine as the clients. - * - * - * \section compilenotes Compiling Notes - * When you are making opj_server, set anything (e.g. yes) to the parameter jpipserver to define itself in the Makefile, which enables to make it in server mode.\n - * Otherwise do not define (or do not set to) the parameter jpipserver.\n - * Be sure that any object files and library file libopenjpip.a are not reused to compile in the two different mode (server mode and non server mode).\n - * In other words, do make clean before making new targets which are in different modes as previous make.\n - * - * - * \section sysarchtect System Architecture - * JPIP protocol is implemented between the JPIP server program (opj_server) and the JPIP client java program (opj_viewer).\n - * Figure below represents the overview of our system architecture.\n - * The JPIP server parses JPIP query and sends corresponding JPT/JPP-stream. - * The JPIP client viewer is an image viewer with GUI to publish JPIP requests and receive JPT/JPP-stream.\n - * Particularly, our system has the image decoding module implemented on a server (opj_dec_server, Image decoding Server). - * Image decoding Server and JPIP client viewer communicate closely. - * This specific architecture enables sharing cache of image codestream data among all viewers connected to the same Image decoding Server not only locally but also remotely. - * - * \image html jpip_architect.png "OpenJPIP system architecture" - * - * JPIP server follows up the client cache during a session. \n - * Concretely, the JPIP server models cache in each session, to which Channel IDs are associated. - * A Channel ID identifies a JPIP client viewer. - * And, new viewers can belong to a session by referring to one of its channel ID. - * The Image decoding Server maintains the association between channel IDs and targets, and provides a reference channel ID to a Viewer on demand.\n - * - * Typical requests and replies among JPIP server, JPIP client, and Image decoding server is presented below.\n - * The JPIP server parses HTTP query and sends corresponding JPT/JPP-stream back to the JPIP client (Viewer). - * JPT/JPP-stream is unreadable by JPIP client, and it is directly passed to Image decoding Server, and which provides the image in raw format (PGM or PPM) to the JPIP client. - * The Image decoding Server handles the decoding and caching of JPT/JPP-stream. - * JPIP client can read PGM and PPM images natively. - * Before connecting to the JPIP server, every JPIP client checks local cache data of the requesting image with the image decoding server. - * If its cache exists, the image decoding server provides ChannelID (CID), which identifies the image and its cache model on the JPIP server, and the whole system can continue the session using the CID. - * - * \image html jpip_protocol.png "Message Sequence Chart of OpenJPIP implementation" - * - * \author Kaori Hagihara UCL/SST/ICTM/ELEN - */ diff --git a/build/install_manifest.txt b/build/install_manifest.txt deleted file mode 100644 index 6b1a04e10..000000000 --- a/build/install_manifest.txt +++ /dev/null @@ -1,42 +0,0 @@ -/usr/local/lib/openjpeg-2.1/OpenJPEGTargets.cmake -/usr/local/lib/openjpeg-2.1/OpenJPEGTargets-noconfig.cmake -/usr/local/lib/openjpeg-2.1/OpenJPEGConfig.cmake -/usr/local/lib/pkgconfig/libopenjp2.pc -/usr/local/lib/pkgconfig/libopenjpwl.pc -/usr/local/lib/pkgconfig/libopenjpip.pc -/usr/local/lib/pkgconfig/libopenjp3d.pc -/usr/local/include/openjpeg-2.1/opj_config.h -/usr/local/lib/libopenjp2.so.2.1.1 -/usr/local/lib/libopenjp2.so.7 -/usr/local/lib/libopenjp2.so -/usr/local/include/openjpeg-2.1/openjpeg.h -/usr/local/include/openjpeg-2.1/opj_stdint.h -/usr/local/lib/libopenjpwl.so.2.1.1 -/usr/local/lib/libopenjpwl.so.7 -/usr/local/lib/libopenjpwl.so -/usr/local/lib/libopenmj2.so.2.1.1 -/usr/local/lib/libopenmj2.so.7 -/usr/local/lib/libopenmj2.so -/usr/local/lib/libopenjpip.so.2.1.1 -/usr/local/lib/libopenjpip.so.7 -/usr/local/lib/libopenjpip.so -/usr/local/lib/libopenjp3d.so.2.1.1 -/usr/local/lib/libopenjp3d.so.7 -/usr/local/lib/libopenjp3d.so -/usr/local/include/openjpeg-2.1/openjp3d.h -/usr/local/bin/opj_decompress -/usr/local/bin/opj_compress -/usr/local/bin/opj_dump -/usr/local/bin/opj_jpwl_decompress -/usr/local/bin/opj_jpwl_compress -/usr/local/bin/opj_mj2_wrap -/usr/local/bin/opj_mj2_extract -/usr/local/bin/opj_mj2_decompress -/usr/local/bin/opj_mj2_compress -/usr/local/bin/opj_jpip_addxml -/usr/local/bin/opj_dec_server -/usr/local/bin/opj_jpip_transcode -/usr/local/bin/opj_jpip_test -/usr/local/share/opj_jpip_viewer.jar -/usr/local/bin/opj_jp3d_compress -/usr/local/bin/opj_jp3d_decompress \ No newline at end of file diff --git a/build/libopenjp2.pc b/build/libopenjp2.pc deleted file mode 100644 index 6dcf12f0b..000000000 --- a/build/libopenjp2.pc +++ /dev/null @@ -1,14 +0,0 @@ -prefix=/usr/local -bindir=${prefix}/bin -mandir=${prefix}/share/man/ -docdir=${prefix}/share/doc/openjpeg-2.3 -libdir=${prefix}/lib -includedir=${prefix}/include/openjpeg-2.3 - -Name: openjp2 -Description: JPEG2000 library (Part 1 and 2) -URL: http://www.openjpeg.org/ -Version: 2.3.1 -Libs: -L${libdir} -lopenjp2 -Libs.private: -lm -Cflags: -I${includedir} diff --git a/build/libopenjp3d.pc b/build/libopenjp3d.pc deleted file mode 100644 index 5356c6c99..000000000 --- a/build/libopenjp3d.pc +++ /dev/null @@ -1,14 +0,0 @@ -prefix=/usr/local -bindir=${prefix}/bin -mandir=${prefix}/share/man/ -docdir=${prefix}/share/doc/openjpeg-2.3 -libdir=${prefix}/lib -includedir=${prefix}/include/openjpeg-2.3 - -Name: openjp3d -Description: JPEG2000 Extensions for three-dimensional data (Part 10) -URL: http://www.openjpeg.org/ -Version: 2.3.1 -Libs: -L${libdir} -lopenjp3d -Libs.private: -lm -Cflags: -I${includedir} diff --git a/build/libopenjpip.pc b/build/libopenjpip.pc deleted file mode 100644 index 7e4ccf3e6..000000000 --- a/build/libopenjpip.pc +++ /dev/null @@ -1,15 +0,0 @@ -prefix=/usr/local -bindir=${prefix}/bin -mandir=${prefix}/share/man/ -docdir=${prefix}/share/doc/openjpeg-2.3 -libdir=${prefix}/lib -includedir=${prefix}/include/openjpeg-2.3 - -Name: openjpip -Description: JPEG2000 Interactivity tools, APIs and protocols (Part 9) -URL: http://www.openjpeg.org/ -Version: 2.3.1 -Requires: libopenjp2 -Libs: -L${libdir} -lopenjpip -Libs.private: -lm -lcurl -lfcgi -lpthread -Cflags: -I${includedir} diff --git a/build/libopenjpwl.pc b/build/libopenjpwl.pc deleted file mode 100644 index cf0fd4590..000000000 --- a/build/libopenjpwl.pc +++ /dev/null @@ -1,15 +0,0 @@ -prefix=/usr/local -bindir=${prefix}/bin -mandir=${prefix}/share/man/ -docdir=${prefix}/share/doc/openjpeg-2.3 -libdir=${prefix}/lib -includedir=${prefix}/include/openjpeg-2.3 - -Name: openjpwl -Description: JPEG2000 Wireless library (Part 11) -URL: http://www.openjpeg.org/ -Version: 2.3.1 -Requires: libopenjp2 -Libs: -L${libdir} -lopenjpwl -Libs.private: -lm -Cflags: -I${includedir} diff --git a/build/src/bin/common/opj_apps_config.h b/build/src/bin/common/opj_apps_config.h deleted file mode 100644 index a45ae57f0..000000000 --- a/build/src/bin/common/opj_apps_config.h +++ /dev/null @@ -1,15 +0,0 @@ -#include "opj_config_private.h" - -/* create opj_apps_config.h for CMake */ - -#define OPJ_HAVE_LIBPNG -#define OPJ_HAVE_PNG_H -#define OPJ_HAVE_LIBTIFF -#define OPJ_HAVE_TIFF_H - -/* #undef OPJ_HAVE_LIBLCMS1 */ -#define OPJ_HAVE_LIBLCMS2 -/* #undef OPJ_HAVE_LCMS1_H */ -#define OPJ_HAVE_LCMS2_H - - diff --git a/build/src/bin/jpip/classes2/ImageManager.class b/build/src/bin/jpip/classes2/ImageManager.class deleted file mode 100644 index 11c903ada87682fbd6f8fe4ecc241ef0f1cd8743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2835 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 diff --git a/build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class b/build/src/bin/jpip/classes2/ImageWindow$WindowMyAdapter.class deleted file mode 100644 index 269fa32dd0ba68220c256eae97f32fe3a346b102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmZuv%TC)s6g`uGU5rBvZF!V81eye?Mr=Vy;I>kv&yau4U@vA zK(1P8$)-9Eb)((gW??7PVY(~e72j1#HG!d^-B1GgYN*w(PU}R)NAe_MCfDu3gQ%T^ zx+$<&te(jW>C0~Fs|%%5zd!$n@wd$==dj(0>*{A{;NAd*ZwBb%14djpSg^6^VhPJO zR$Q!_xZq+9>jJX_phAEA!R1~y{CR-zJR=3Y3_k~>;3#@4jC+~##x+Fw7MVY$8#$g9EwIaT4EdLSpVsu}%U2M0 l$lhQmdxzmS&=|5T?{h^!*mpL2j58R=9IZpR#fLNtJOjTJhR6T_ diff --git a/build/src/bin/jpip/classes2/ImageWindow.class b/build/src/bin/jpip/classes2/ImageWindow.class deleted file mode 100644 index 4ca483173cd0e07173a5e676d33e20cc1a4ee7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2590 zcma)8S##S|6#f)1QdG4#ZVd^cB|rgJU0e(VXv&(l;F66dO>sggYN7-MTT&%CA?*9U zFT=nKFw>d70z(~!&V&aZV0hz^2L^r!P`)DtaMC<5$z0uY&;Ffr&-G7#eY*^xj1Sv! z74Fh;HTqQ?(2>GH6^C?WaJO*okzGZ_VIA$bS55|04C*j2q+(ddCJYHNqTxRI9?>wW zQ)o=ZQ5^-03vo=t{W_|ckYzFjd{6NQbnM4*4G(HK(T;~;X*j843ezfVQJPUPE8mA@ zaa7FdDB=+zYO>U2aTQ#2%yFl^g~7!;r!7CS0|iFKb?u_>0`#&d@iHXXNaRupqZ`x)S1CDDCHR>nrV9YvM<4L-1IZW^3;^c+q zL~-M2WKBIXX!)_c3QvX4sI93fI}Eq)-Md%8)?yNNf>7U%wMposUL%;Y4>{s57bBC1 z?va!XT#p+J+=x>Gslc|9zMK)04J}a0QD~rqy#^vQ$ZP>qnDYj%Ls>yyEI(Qb7l>2o zaE!IE7Zem?7_Eh>5Ec@Dg5DkUBgv#$DyVwNA%N zLl)OLzp!=VroU!A(bg90Te%(Wp&bqT)~SYEh~k8}*|yTu|J=o-saI~a2&9U#ie}P6 z?2#3Bf(IV6D)qT%p$F<(%;gfUrRMaOLn`pb=V?(-;bg+U;Rw=s? zZ>}B0qPaC!klG#emsD`T328&-%att#?0MQPt(J&wb^KSM3Z2J;Nu9T94SRS-!L=(U zS}MpJe}Re&J;#m4MJ>jv!qVHP8dfc=%(`A+_gf(u>lS%pb(btM`Z{g!no=Qg<#?qL z&cKM1(6;JywmFVq^|1og7oi>PLwRV9!{MTGU_jLVMV^154(x6g-)bKIfc*OtBJ^ zDiubZ$JU_!Z*#{;ZII&gz9)8cQsYkOaIE4AJ{ni^*-N2KrWJQ>GMM5o$6d@(HuD@()t$Qw=_RDkLLr%{?lQlIQpgmt1$7D8vrtK^=_WLC+pEHq zgC*!^vEdwy>Jm2Y)4H^C*u?EcP2{>X5y*Emk&m|<@|(FeyR;^@&_Td*%lO8J$PB=x(w zocSCdn5puhnJy2IIt|^-l!wkBo9`Slm$RqQVP?zUpsR^Xd$VU4W_NGaTvkt`(^Sj( z%bM8w39~(ebgGwYHr<;xmo?#P<@~l*ZYJht%;g-7cAL3uIe$6%AEQ0ftDZq;TGo6@ zR^u!5LC{jUauYkd zG*)1jAl4QmHjk~`4Rxj&y@Uy57lpYoY;d>xj)gZVn6@? zKpWT1f3g3dY`H^8pJ#xoidz#lSA{jg`W%Iv&dhn1U7-eWp1rB9(p5wxr{Ol-o|Kwt j#|Dv+M*M=&Bps9$FT4tExP#v|+=)H>>O3v*bT{xf>g0TZ diff --git a/build/src/bin/jpip/classes2/ImgdecClient.class b/build/src/bin/jpip/classes2/ImgdecClient.class deleted file mode 100644 index 33cb74c57772741f5fa3ca5f5fb39b8d6ed8f9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6676 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 aQ2RtP?&cv%@{n=&+hD%?wXin_t^WbI9^rie diff --git a/build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class b/build/src/bin/jpip/classes2/JP2XMLparser$IRTparams.class deleted file mode 100644 index 494b8ee9adf8f3746f53df98bcf9975c1e87050e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmYjMO;5s55S-T*9xW9LD(cb1gL06BgCEg&!I)t1BS4JA(*vKRgckE!{9hi3i81~F zf0S{`MGmvOv%A@u{rUa;2GGQgha3VI4k}rwN^D4M3FM7_38S$~~c>`0{o*3%^y&%-!OFWB2Zco1+}vu7<(?u4t6O{RZlC)qN(9`M+Hc3PHm#{j63tQY@Ahsu z(IeXQSI=OVU*`C_1$u{MB{IQfrb`sbeX;?kg88)m0Z|tVSoOgDk^{Tc9XLde$Pj7JncrqBtcOXL>Hs4;t#aj=d}xPO)mOgsPp diff --git a/build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class b/build/src/bin/jpip/classes2/JP2XMLparser$ROIparams.class deleted file mode 100644 index 1f3b4707333e1ae0b139fc2c5de4afae038c556d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmYk3OHaZ;6ot?5Dy^fu6cH7~xKI|LxYW2IF@c~MF~;qH6D)yZTJZ6+To4l%{s4cJ z@k}?exZl0g={fh__UHHO8$bj54wA^*u&`-RFxWCE8f;tGwXi1;^VCEOWIH4EqUvMi z4ePy`?|Q>C0rAFYG2R)kj3+)Z;Yh4NN~{{J8KfXBR0Q(NqJ!IRi*hvy1ni|+ zwmeV!&9Mps&8zhP7Tx|x4`u>#*#;Hvp5*t5gFbLr3DZB!93jk{BFr2l%(O*@?`3&v zBf<(ORX-uBVu46Cxe1y6jSww=YA%;5p9dpAI@9F82{a5(wR)B6w(GLv?>-M=|Z4jRmvI?Aegk!mZcVzNphPGBr|a`f!1BX z1@{g0=4B zaa_g;6@Hvl;X_KsDHSb3{;UcGNwGgAQt4B)S%2i9; zbQm_KExQoAwl^2cTcuc{E+1iNIbfKEbBG}jnT|)#F-XU(JZET68zvvEma^QQ)U!pB zv`sjA?n*{4yL%brRV#4E6K`uII-NdsdgwwXO(|5ky?yO)L`GG{)tZSX`z?`Zv&GsO z<)%(pRXfLz8zTG$uj5^p^{cvur*Ms7lc;R2RE$;hxme09SDl&}L$}b18CEPl@9?9x ztVVVg0li<`{Z~3%#u8W_fImQ^-oJRzM||7|Wb?YawVe^CxvPU*xuidAzLQ z6}+n9HN39jNenY|xZ#SrS%@X)a=h#qmZ{+lk)z+X3>j}~cnjAx+`vs@#9L1TC=GAp z9rER+D_P_<79~?JaSiX{Jq=U1#lYrdyszN{e5m0fJ|e-qhD+|^nue^qnAMOMi{^l9 zI8$tSd_6m2B zwr$yUnizT_Zr`tVhxgF62)Hy;r!?z%y2w>)r9NN1Ga`fN!){Z1nP767&FN_ki41M+D+$O4FKGGa)6%M){LGqF2X2F?tu}RV0H5^`I2uD)) z8h*p3GVYw%T%&k(91?oEpBV?!}zI=mp-LUG}wt;peiqbQ}w=;tr# zZW|=1>-2J&n|X%82kGDEqTYa1OSh=8kwQ~{(y`)LH4!mDbp2nEG(3%&u&VA0*XpLf zx_e*+32dX!!XEmnF#6H8r_oPqdP``0hIZc~0Ey;f1(6y^$(+s)@f+SP;Fz_ zj59>VICf!@U_Xl#&e02a9u_X(Iz5iJ>HIrPyI5=zSZqbW#p1AxBaF!VhhAnz0LE*0 z;7{UB;89vZFO|1F?c(x86D|Y(H6Wz^E-AFb&3FMjrQtw0us--BcK6>!Bpi_PT?A8< z{PczT7cmeHEP^QBRj)8MeltMz{q3o52Z9v*68#U+iQg=xnn+a diff --git a/build/src/bin/jpip/classes2/JPIPHttpClient.class b/build/src/bin/jpip/classes2/JPIPHttpClient.class deleted file mode 100644 index d5ad3b7ec38c32c710740cb986682f3ad290efe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9397 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 MmW|57zz zZ#v$1(;GWYoau!>p#P!2q%)m9=UoJup(D(m_k6wQJs;1U{Ppjj?*UxGb_{(OYep}| zg$S}?g*KRVHz`HO^bL}M7m6eF84&2X+{>aO_+;e9^Z>*LCB(z zB_a3a`m&G*F_MQC9$8qi@PmaP4Vdn>f!0jAo*P^@a4c~sUkTadR?=R@ zm9Pzobb6RcwJruuZZqp_9SS~QR+WlGYt?TpsG@ST9Mf{v-#&QxcG)QuM2s!^)pAZv zxsqg4Hk-L11=_fX$2QL4tc^251~6!27)cxFan`~U8$aQx4M)hTkQ|;`$lFjNB;?8( z3O3ep*@lb97B*~bqR0vz&+`K(aD8teC-qw>+3?`o*b?VwDBGyW>jA1Zh9uPILcYdj zPKX&Yh8{xE@d~NA)eV&k44gS?E?Hlm$+(q3d8%xn_b8_Wb0i`CZutl>9B4rW5BY9l zn3xga5!=M$ftwH34K$OTQEp+KDRdtd{fLo~X6YQF4x!D3KWPKhAz(3u=o8?d&-smOqxdob1= zW0lpG!#HdM%?s1YXF3*vNoXz;C%s$*Ci?Li zns^d7+z+OJNS{QMJ~>u>anBxLo XgO3t7uQam}=0BM0V=doNGBNre@ST8g diff --git a/build/src/bin/jpip/classes2/MyHandler.class b/build/src/bin/jpip/classes2/MyHandler.class deleted file mode 100644 index cc1904f9e5579f36a1e120c9ee7a1f5f7304efef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcma)*ZBG+H5Xb-9r)!S`1Vm7%R#doxa9STwN=$^HVp?rdqxf>$uFa9_-MM#__G9Ub zl4#-w@Ix7Aub4Jz)9|9Rv(ug5&VP39&)=WF0Ti&WV-_nJtRk!7rj9sP(zvD8oQ~UA zQ{EkA?&`RQbrsu4!%QQuVN=7FhWiYuecQFe7YuPT|B)ea=rshxY{_=TyLPK4Dq3SVa+UgvT1c%jur5ZRegC<;W7|Mox1Qt+jEPGlN3^Vl0pB%L+%`1Y^q*c z*2ODZ0q5RU3Mb`~uX5$iDgVX|%wb-`wt*d33`;6zIoxep)lkya2W{JF2!c+3>esTD zbEr%M5AaY!!N4OtR+}dVo?=(SGXu}DXP}5(hN-BAeg?zULurS0ojbXx&i~;|x%-B@ z4M$yaWpMrb+Nr3A49mm1Bi^{v)ou`q7B$psQ_f;3;@F;5Aq^oZ5xiBTzH{FfZi8Xl z?4KACTFj4xF0@l(cDRU<=2LT;A{@M4^sdJYtLE_}Xgc)zJ*L)}qX+5Qg)uT{Dtsl% zaY^Sm88iqwl~Wc$z?%X&%+SPAYiWEF^rPpd-2!=8S{bd$&2zBtBi!2c7<-{Sa})*x%;1 diff --git a/build/src/bin/jpip/classes2/OptionPanel.class b/build/src/bin/jpip/classes2/OptionPanel.class deleted file mode 100644 index 46549c23f904583961dab28fa8aad514dd311bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2735 zcmZ`*S$7mg6#hC4^rR`4gs=!g0-{bPkqEelMUsFFOh_P@5W-?7X@-VOcj)OXpeU{= z?z`d&D((wPItu6bsOR|ZFYrxYee)cT->nYGgcBdSZdKh|clqwETm9R=mwyJZ2A3@k z+e~b?P=c(5)o3=cBZ(FZ)6rVW_0A-A32ig6JF$_6gmb@0w#%$Tcza~%lwq%hF6=Y0 z-$DfrSU89WWM*6FMvn;e%F;1$s1!LImcg~K1V@B-RAzl9@=16WmZMb$KZ$+|#}LS( zAVVm_fM^^PYeO;&%hBU9oDlAVGCXABq=|=3JYt|U@ZIi#F!VhG^Rq|nL3_BaFywl< zx@`@5yWYS|Hy=2;t5TMm&*g2;&N+dB+1X5C_ox0sTP4@aj1}Y}|uqCkb4uzB!$_;9bVqljX8aFUwo$I;b1_R4d zlO3AmNOik`M5Ev97?_iFJ!i*2zS{|Q+ueP#WA}uv@3lI?AwS4Fy#^{%+Lt+tRNU+Md(5N`O_^gi}Ph7~}?j zIBOsG2SQ;!s_+;dH!!bQVk`{?$|Ypqt7d+6AHKCcCvLMszj&|2DX@1 zxI=S9osOc>&-eQty;pb=Pbr+n(+bbvjKZC`OW|(Zqfn1^CZ1Jz4$l+z;#`S~FPL~y z;U&DR@Cx2A@utFCcw1pTHYl9MyG&sh_<4nmxL4sLd`yogg{d=5 z)ZzdbUT>9-NZ}J)FfgN$ZaaaAPsQ!e6h6l(g)i`>!dLiM;cI-O@GZVmxG2N-_(9(&8z>(zk;^@KAgk zc&Afi9_m}tud5!m^HiJy3Ad`WJ`BdU#kcA?-D1kCELY;iTN9G8_I zqCJk=fq|s$d46bzyoA@M{`ZuGATDHf?T%fb{i69|Iz7qWIFI%gOwA!yfpduck>wTV zq&T}wV%`qfBDUF;qMuEU7)xpUJ-V|<5oC11Tik7T3$E^=Nr6+|13FUdq242G z(y*4S87aL~;c+!NP=(B$&I6nK_q zO#0NOMXsVOFil7Zq=~{|d2S{ra=fJYNUrAlZ(uDBK0eMM!Wly|aAAD9jNg<3*`nSm{eh zma7P}II-f1Y(<#ek(Mnz;YK>b99e5xGlIG4+7XncjS-Yzq)7u!9Phzwj;oMB9m*Kq zG6q<~&?LC^d;qpEs208f9h5xCfO@&>G9ZsF+rVb>bs&a|89I=^XtDfPEFqa2VP13X zFLdGxDmrUNF`t%eA}k;;c>#+>@)yh#5@BI8X<2QAMPm}y1)Pf|&XQdBD-Onji<_x# zNoVaPT+eUmD3*<&lB`OCRz=qG&hizbxM2j>$*~A4%Wo8Jgqu3zjhls(8Gp}R6Cow@ zM1*P);a3(xAf)Ftr(;@s+K+Gx=c0~URz;|jRfJmw#1akS0W9RakyX)zIRs@MVX4Gc zq>&+{+X&xw=6naTgt85-*o&R~9c#k?cH<=4afa}|gFQHpPJBadgnjrO`|$@3;7{1N kkJ^(+R4)Gq;ab|mI%zrAukt7HHOSv#1@)Bv2PXN!*8l(j diff --git a/build/src/bin/jpip/classes2/PnmImage.class b/build/src/bin/jpip/classes2/PnmImage.class deleted file mode 100644 index 6bb930efa4756f05063a2621336c4546b7035fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3352 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 G@c#gtu&6Tt diff --git a/build/src/bin/jpip/classes2/ResizeListener.class b/build/src/bin/jpip/classes2/ResizeListener.class deleted file mode 100644 index 139b2dbc02ff2c0dd3971a6ba759bc0da94bc9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmah|?M@R>5IuKWy0qQ$Q3Mpf3Tkb)m7@3=5Dip=Nzufb`qM1!O}R*SNxLnHPeLLu zVIq+D!w2x0jPcy1Y=Oj>rqerf&&-)QbNlPhkDmY@;AsL$Wa3C*Hi0?Z(x=-A%;1hT z*#zCY`XZ;@yb0Sx!9-EOP(6WEA=GY>+byyq6vIMTb&V->HAzaCQSK6Ze?b-EBC&{1lEd zeTHl>%Xx>C;uFKa-w>@#fQc)dWy0Sg51+g%Wc?&6wm?&9TzY9=4r_iRXn6`lx&(%~>@3$@;FkF>gl;ts<2SMf$W_8_ Jur~uY{{j*D+&2IK diff --git a/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt b/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt deleted file mode 100644 index 1f1ec1d77..000000000 --- a/build/src/bin/jpip/opj_viewer_xerces/dist/manifest.txt +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Ant-Version: Apache Ant 1.7.0 -Created-By: Kaori Hagihara -Main-Class: ImageWindow -Class-Path: /usr/share/java/xercesImpl.jar diff --git a/build/src/lib/openjp2/opj_config.h b/build/src/lib/openjp2/opj_config.h deleted file mode 100644 index f4fea6e04..000000000 --- a/build/src/lib/openjp2/opj_config.h +++ /dev/null @@ -1,10 +0,0 @@ -/* create opj_config.h for CMake */ -#define OPJ_HAVE_STDINT_H 1 - -/*--------------------------------------------------------------------------*/ -/* OpenJPEG Versioning */ - -/* Version number. */ -#define OPJ_VERSION_MAJOR 2 -#define OPJ_VERSION_MINOR 3 -#define OPJ_VERSION_BUILD 1 diff --git a/build/src/lib/openjp2/opj_config_private.h b/build/src/lib/openjp2/opj_config_private.h deleted file mode 100644 index 9ad74e403..000000000 --- a/build/src/lib/openjp2/opj_config_private.h +++ /dev/null @@ -1,49 +0,0 @@ -/* create opj_config_private.h for CMake */ -#define OPJ_HAVE_INTTYPES_H 1 - -#define OPJ_PACKAGE_VERSION "2.3.1" - -/* Not used by openjp2*/ -/*#define HAVE_MEMORY_H 1*/ -/*#define HAVE_STDLIB_H 1*/ -/*#define HAVE_STRINGS_H 1*/ -/*#define HAVE_STRING_H 1*/ -/*#define HAVE_SYS_STAT_H 1*/ -/*#define HAVE_SYS_TYPES_H 1 */ -/*#define HAVE_UNISTD_H 1*/ - -/* #undef _LARGEFILE_SOURCE */ -/* #undef _LARGE_FILES */ -/* #undef _FILE_OFFSET_BITS */ -#define OPJ_HAVE_FSEEKO ON - -/* find whether or not have */ -#define OPJ_HAVE_MALLOC_H -/* check if function `aligned_alloc` exists */ -/* #undef OPJ_HAVE_ALIGNED_ALLOC */ -/* check if function `_aligned_malloc` exists */ -/* #undef OPJ_HAVE__ALIGNED_MALLOC */ -/* check if function `memalign` exists */ -#define OPJ_HAVE_MEMALIGN -/* check if function `posix_memalign` exists */ -#define OPJ_HAVE_POSIX_MEMALIGN - -#if !defined(_POSIX_C_SOURCE) -#if defined(OPJ_HAVE_FSEEKO) || defined(OPJ_HAVE_POSIX_MEMALIGN) -/* Get declarations of fseeko, ftello, posix_memalign. */ -#define _POSIX_C_SOURCE 200112L -#endif -#endif - -/* Byte order. */ -/* All compilers that support Mac OS X define either __BIG_ENDIAN__ or -__LITTLE_ENDIAN__ to match the endianness of the architecture being -compiled for. This is not necessarily the same as the architecture of the -machine doing the building. In order to support Universal Binaries on -Mac OS X, we prefer those defines to decide the endianness. -On other platforms we use the result of the TRY_RUN. */ -#if !defined(__APPLE__) -/* #undef OPJ_BIG_ENDIAN */ -#elif defined(__BIG_ENDIAN__) -# define OPJ_BIG_ENDIAN -#endif diff --git a/build/tests/CTestTestfile.cmake b/build/tests/CTestTestfile.cmake deleted file mode 100644 index 57ed8a21d..000000000 --- a/build/tests/CTestTestfile.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# CMake generated Testfile for -# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests -# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -add_test(tte0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder") -add_test(tte1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "3" "2048" "2048" "1024" "1024" "8" "1" "tte1.j2k") -add_test(tte2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "3" "2048" "2048" "1024" "1024" "8" "1" "tte2.jp2") -add_test(tte3 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "2048" "2048" "1024" "1024" "8" "1" "tte3.j2k") -add_test(tte4 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "256" "256" "128" "128" "8" "0" "tte4.j2k") -add_test(tte5 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_encoder" "1" "512" "512" "256" "256" "8" "0" "tte5.j2k") -add_test(ttd0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder") -set_tests_properties(ttd0 PROPERTIES DEPENDS "tte0") -add_test(ttd1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder" "0" "0" "1024" "1024" "tte1.j2k") -set_tests_properties(ttd1 PROPERTIES DEPENDS "tte1") -add_test(ttd2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/test_tile_decoder" "0" "0" "1024" "1024" "tte2.jp2") -set_tests_properties(ttd2 PROPERTIES DEPENDS "tte2") -add_test(rta1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte1.j2k") -set_tests_properties(rta1 PROPERTIES DEPENDS "tte1") -add_test(rta2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte2.jp2") -set_tests_properties(rta2 PROPERTIES DEPENDS "tte2") -add_test(rta3 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte3.j2k") -set_tests_properties(rta3 PROPERTIES DEPENDS "tte3") -add_test(rta4 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte4.j2k") -set_tests_properties(rta4 PROPERTIES DEPENDS "tte4") -add_test(rta5 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/j2k_random_tile_access" "tte5.j2k") -set_tests_properties(rta5 PROPERTIES DEPENDS "tte5") -subdirs(conformance) -subdirs(nonregression) -subdirs(unit) diff --git a/build/tests/conformance/CTestTestfile.cmake b/build/tests/conformance/CTestTestfile.cmake deleted file mode 100644 index 9a3c241f1..000000000 --- a/build/tests/conformance/CTestTestfile.cmake +++ /dev/null @@ -1,387 +0,0 @@ -# CMake generated Testfile for -# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/conformance -# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -add_test(ETS-C1P0-p0_01.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_01.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_01.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_01.j2k-decode") -add_test(NR-C1P0-p0_01.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_01.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_01.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_01.j2k-decode") -add_test(ETS-C1P0-p0_02.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_02.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_02.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_02.j2k-decode") -add_test(NR-C1P0-p0_02.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_02.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_02.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_02.j2k-decode") -add_test(ETS-C1P0-p0_03.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_03.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_03.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_03.j2k-decode") -add_test(NR-C1P0-p0_03.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_03.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_03.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_03.j2k-decode") -add_test(ETS-C1P0-p0_04.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_04.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-n" "3" "-p" "5:4:6" "-m" "0.776:0.626:1.070" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_04.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_04.j2k-decode") -add_test(NR-C1P0-p0_04.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_04.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_04.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_04.j2k-decode") -add_test(ETS-C1P0-p0_05.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_05.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-n" "4" "-p" "2:2:2:0" "-m" "0.302:0.307:0.269:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_05.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_05.j2k-decode") -add_test(NR-C1P0-p0_05.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_05.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_05.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_05.j2k-decode") -add_test(ETS-C1P0-p0_06.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_06.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-n" "4" "-p" "635:403:378:0" "-m" "11287:6124:3968:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_06.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_06.j2k-decode") -add_test(NR-C1P0-p0_06.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_06.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_06.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_06.j2k-decode") -add_test(ETS-C1P0-p0_07.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_07.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_07.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_07.j2k-decode") -add_test(NR-C1P0-p0_07.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_07.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_07.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_07.j2k-decode") -add_test(ETS-C1P0-p0_08.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_08.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-r" "1") -add_test(ETS-C1P0-p0_08.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_08.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_08.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_08.j2k-decode") -add_test(NR-C1P0-p0_08.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_08.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_08.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_08.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_08.j2k-decode") -add_test(ETS-C1P0-p0_09.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_09.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_09.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_09.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_09.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_09.j2k-decode") -add_test(NR-C1P0-p0_09.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_09.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_09.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_09.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_09.j2k-decode") -add_test(ETS-C1P0-p0_10.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_10.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_10.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_10.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_10.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_10.j2k-decode") -add_test(NR-C1P0-p0_10.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_10.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_10.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_10.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_10.j2k-decode") -add_test(ETS-C1P0-p0_11.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_11.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_11.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_11.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_11.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_11.j2k-decode") -add_test(NR-C1P0-p0_11.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_11.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_11.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_11.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_11.j2k-decode") -add_test(ETS-C1P0-p0_12.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_12.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_12.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_12.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_12.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_12.j2k-decode") -add_test(NR-C1P0-p0_12.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_12.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_12.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_12.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_12.j2k-decode") -add_test(ETS-C1P0-p0_13.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_13.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_13.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_13.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-n" "4" "-p" "0:0:0:0" "-m" "0:0:0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_13.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_13.j2k-decode") -add_test(NR-C1P0-p0_13.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_13.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_13.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_13.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_13.j2k-decode") -add_test(ETS-C1P0-p0_14.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_14.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_14.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-n" "3" "-p" "0:0:0" "-m" "0:0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_14.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_14.j2k-decode") -add_test(NR-C1P0-p0_14.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_14.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_14.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_14.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_14.j2k-decode") -add_test(ETS-C1P0-p0_15.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_15.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_15.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_15.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_15.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_15.j2k-decode") -add_test(NR-C1P0-p0_15.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_15.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_15.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_15.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_15.j2k-decode") -add_test(ETS-C1P0-p0_16.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_16.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-r" "0") -add_test(ETS-C1P0-p0_16.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p0_16.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P0-p0_16.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P0-p0_16.j2k-decode") -add_test(NR-C1P0-p0_16.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p0_16.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p0_16.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P0-p0_16.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P0-p0_16.j2k-decode") -add_test(ETS-C1P1-p1_01.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_01.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-n" "1" "-p" "0" "-m" "0" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_01.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_01.j2k-decode") -add_test(NR-C1P1-p1_01.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_01.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_01.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_01.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_01.j2k-decode") -add_test(ETS-C1P1-p1_02.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_02.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-n" "3" "-p" "5:4:6" "-m" "0.765:0.616:1.051" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_02.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_02.j2k-decode") -add_test(NR-C1P1-p1_02.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_02.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_02.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_02.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_02.j2k-decode") -add_test(ETS-C1P1-p1_03.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_03.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-n" "4" "-p" "2:2:1:0" "-m" "0.3:0.210:0.200:0" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_03.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_03.j2k-decode") -add_test(NR-C1P1-p1_03.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_03.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_03.j2k.pgx" "-n" "4" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_03.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_03.j2k-decode") -add_test(ETS-C1P1-p1_04.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_04.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-n" "1" "-p" "624" "-m" "3080" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_04.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_04.j2k-decode") -add_test(NR-C1P1-p1_04.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_04.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_04.j2k.pgx" "-n" "1" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_04.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_04.j2k-decode") -add_test(ETS-C1P1-p1_05.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_05.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-n" "3" "-p" "40:40:40" "-m" "8.458:9.816:10.154" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_05.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_05.j2k-decode") -add_test(NR-C1P1-p1_05.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_05.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_05.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_05.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_05.j2k-decode") -add_test(ETS-C1P1-p1_06.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_06.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-n" "3" "-p" "2:2:2" "-m" "0.6:0.6:0.6" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_06.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_06.j2k-decode") -add_test(NR-C1P1-p1_06.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_06.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_06.j2k.pgx" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_06.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_06.j2k-decode") -add_test(ETS-C1P1-p1_07.j2k-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-r" "0") -add_test(ETS-C1P1-p1_07.j2k-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1p1_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-n" "2" "-p" "0:0" "-m" "0:0" "-s" "b_t_") -set_tests_properties(ETS-C1P1-p1_07.j2k-compare2ref PROPERTIES DEPENDS "ETS-C1P1-p1_07.j2k-decode") -add_test(NR-C1P1-p1_07.j2k-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1p1_07.pgx" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1p1_07.j2k.pgx" "-n" "2" "-d" "-s" "b_t_") -set_tests_properties(NR-C1P1-p1_07.j2k-compare2base PROPERTIES DEPENDS "ETS-C1P1-p1_07.j2k-decode") -add_test(ETS-JP2-file1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_1.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file1.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file1.jp2-decode") -add_test(NR-JP2-file1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_1.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file1.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file1.jp2-decode") -add_test(ETS-JP2-file2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_2.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file2.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file2.jp2-decode") -add_test(NR-JP2-file2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_2.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file2.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file2.jp2-decode") -add_test(ETS-JP2-file3.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file3.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_3.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file3.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file3.jp2-decode") -add_test(NR-JP2-file3.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_3.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file3.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file3.jp2-decode") -add_test(ETS-JP2-file4.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file4.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_4.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file4.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file4.jp2-decode") -add_test(NR-JP2-file4.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_4.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file4.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file4.jp2-decode") -add_test(ETS-JP2-file5.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file5.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file5.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_5.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file5.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file5.jp2-decode") -add_test(NR-JP2-file5.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_5.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file5.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file5.jp2-decode") -add_test(ETS-JP2-file6.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file6.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file6.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_6.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file6.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file6.jp2-decode") -add_test(NR-JP2-file6.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_6.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file6.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file6.jp2-decode") -add_test(ETS-JP2-file7.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file7.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file7.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_7.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file7.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file7.jp2-decode") -add_test(NR-JP2-file7.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_7.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file7.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file7.jp2-decode") -add_test(ETS-JP2-file8.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file8.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file8.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_8.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file8.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file8.jp2-decode") -add_test(NR-JP2-file8.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_8.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file8.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file8.jp2-decode") -add_test(ETS-JP2-file9.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file9.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-p" "8S" "-force-rgb") -add_test(ETS-JP2-file9.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/jp2_9.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-n" "3" "-p" "4:4:4" "-m" "1:1:1" "-s" "b_t_") -set_tests_properties(ETS-JP2-file9.jp2-compare2ref PROPERTIES DEPENDS "ETS-JP2-file9.jp2-decode") -add_test(NR-JP2-file9.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_jp2_9.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.tif" "-n" "3" "-d" "-s" "b_t_") -set_tests_properties(NR-JP2-file9.jp2-compare2base PROPERTIES DEPENDS "ETS-JP2-file9.jp2-decode") -add_test(ETS-KDU-a1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-a1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-a1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a1_mono.j2c-decode") -add_test(NR-KDU-a1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a1_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-a1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a1_mono.j2c-decode") -add_test(ETS-KDU-a2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-a2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-a2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a2_colr.j2c-decode") -add_test(NR-KDU-a2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a2_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-a2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a2_colr.j2c-decode") -add_test(ETS-KDU-a3_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a3_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-a3_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-a3_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a3_mono.j2c-decode") -add_test(NR-KDU-a3_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a3_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-a3_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a3_mono.j2c-decode") -add_test(ETS-KDU-a4_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a4_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-a4_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-a4_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a4_colr.j2c-decode") -add_test(NR-KDU-a4_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a4_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-a4_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a4_colr.j2c-decode") -add_test(ETS-KDU-a5_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a5_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-a5_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a5_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-a5_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a5_mono.j2c-decode") -add_test(NR-KDU-a5_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a5_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a5_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-a5_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a5_mono.j2c-decode") -add_test(ETS-KDU-a6_mono_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a6_mono_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-upsample" "-split-pnm") -add_test(ETS-KDU-a6_mono_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/a6_mono_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-n" "4" "-s" "b_t_" "-p" "4:4:4:4" "-m" "1:1:1:1") -set_tests_properties(ETS-KDU-a6_mono_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-a6_mono_colr.j2c-decode") -add_test(NR-KDU-a6_mono_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_a6_mono_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/a6_mono_colr.j2c.ppm" "-n" "4" "-s" "b_t_" "-d") -set_tests_properties(NR-KDU-a6_mono_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-a6_mono_colr.j2c-decode") -add_test(ETS-KDU-b1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-b1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-b1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b1_mono.j2c-decode") -add_test(NR-KDU-b1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b1_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-b1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b1_mono.j2c-decode") -add_test(ETS-KDU-b2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-b2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-b2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b2_mono.j2c-decode") -add_test(NR-KDU-b2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b2_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-b2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b2_mono.j2c-decode") -add_test(ETS-KDU-b3_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/b3_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-b3_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/b3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-b3_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-b3_mono.j2c-decode") -add_test(NR-KDU-b3_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_b3_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/b3_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-b3_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-b3_mono.j2c-decode") -add_test(ETS-KDU-c1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/c1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-c1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-c1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-c1_mono.j2c-decode") -add_test(NR-KDU-c1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c1_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-c1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-c1_mono.j2c-decode") -add_test(ETS-KDU-c2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/c2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-c2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/c2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-c2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-c2_mono.j2c-decode") -add_test(NR-KDU-c2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_c2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/c2_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-c2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-c2_mono.j2c-decode") -add_test(ETS-KDU-d1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/d1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-d1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/d1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-d1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-d1_colr.j2c-decode") -add_test(NR-KDU-d1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_d1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d1_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-d1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-d1_colr.j2c-decode") -add_test(ETS-KDU-d2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/d2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-d2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/d2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-d2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-d2_colr.j2c-decode") -add_test(NR-KDU-d2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_d2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/d2_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-d2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-d2_colr.j2c-decode") -add_test(ETS-KDU-e1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/e1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-e1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/e1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-e1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-e1_colr.j2c-decode") -add_test(NR-KDU-e1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_e1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e1_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-e1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-e1_colr.j2c-decode") -add_test(ETS-KDU-e2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/e2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-e2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/e2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-e2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-e2_colr.j2c-decode") -add_test(NR-KDU-e2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_e2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/e2_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-e2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-e2_colr.j2c-decode") -add_test(ETS-KDU-f1_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/f1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-f1_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/f1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-f1_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-f1_mono.j2c-decode") -add_test(NR-KDU-f1_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_f1_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f1_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-f1_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-f1_mono.j2c-decode") -add_test(ETS-KDU-f2_mono.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/f2_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-upsample") -add_test(ETS-KDU-f2_mono.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/f2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-f2_mono.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-f2_mono.j2c-decode") -add_test(NR-KDU-f2_mono.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_f2_mono.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/f2_mono.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-f2_mono.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-f2_mono.j2c-decode") -add_test(ETS-KDU-g1_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g1_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-g1_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-g1_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g1_colr.j2c-decode") -add_test(NR-KDU-g1_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g1_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g1_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-g1_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g1_colr.j2c-decode") -add_test(ETS-KDU-g2_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g2_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-g2_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-g2_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g2_colr.j2c-decode") -add_test(NR-KDU-g2_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g2_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g2_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-g2_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g2_colr.j2c-decode") -add_test(ETS-KDU-g3_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g3_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-g3_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g3_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-g3_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g3_colr.j2c-decode") -add_test(NR-KDU-g3_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g3_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g3_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-g3_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g3_colr.j2c-decode") -add_test(ETS-KDU-g4_colr.j2c-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/g4_colr.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-upsample") -add_test(ETS-KDU-g4_colr.j2c-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/g4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-n" "1" "-p" "4:4:4" "-m" "1:1:1") -set_tests_properties(ETS-KDU-g4_colr.j2c-compare2ref PROPERTIES DEPENDS "ETS-KDU-g4_colr.j2c-decode") -add_test(NR-KDU-g4_colr.j2c-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_g4_colr.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/g4_colr.j2c.ppm" "-n" "1" "-d") -set_tests_properties(NR-KDU-g4_colr.j2c-compare2base PROPERTIES DEPENDS "ETS-KDU-g4_colr.j2c-decode") -add_test(ETS-RIC-subsampling_1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/subsampling_1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm") -add_test(ETS-RIC-subsampling_1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/subsampling_1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") -set_tests_properties(ETS-RIC-subsampling_1.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-subsampling_1.jp2-decode") -add_test(NR-RIC-subsampling_1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_subsampling_1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_1.jp2.ppm" "-n" "1" "-d") -set_tests_properties(NR-RIC-subsampling_1.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-subsampling_1.jp2-decode") -add_test(ETS-RIC-subsampling_2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/subsampling_2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm") -add_test(ETS-RIC-subsampling_2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/subsampling_2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") -set_tests_properties(ETS-RIC-subsampling_2.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-subsampling_2.jp2-decode") -add_test(NR-RIC-subsampling_2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_subsampling_2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/subsampling_2.jp2.ppm" "-n" "1" "-d") -set_tests_properties(NR-RIC-subsampling_2.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-subsampling_2.jp2-decode") -add_test(ETS-RIC-zoo1.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/zoo1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm") -add_test(ETS-RIC-zoo1.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/zoo1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") -set_tests_properties(ETS-RIC-zoo1.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-zoo1.jp2-decode") -add_test(NR-RIC-zoo1.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_zoo1.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo1.jp2.ppm" "-n" "1" "-d") -set_tests_properties(NR-RIC-zoo1.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-zoo1.jp2-decode") -add_test(ETS-RIC-zoo2.jp2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/zoo2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm") -add_test(ETS-RIC-zoo2.jp2-compare2ref "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/conformance/zoo2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm" "-n" "1" "-p" "4:4:4" "-m" "2:2:2") -set_tests_properties(ETS-RIC-zoo2.jp2-compare2ref PROPERTIES DEPENDS "ETS-RIC-zoo2.jp2-decode") -add_test(NR-RIC-zoo2.jp2-compare2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_zoo2.ppm" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/zoo2.jp2.ppm" "-n" "1" "-d") -set_tests_properties(NR-RIC-zoo2.jp2-compare2base PROPERTIES DEPENDS "ETS-RIC-zoo2.jp2-decode") -add_test(NR-p0_01.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_01.j2k.txt") -add_test(NR-p0_01.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_01.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_01.j2k.txt") -set_tests_properties(NR-p0_01.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_01.j2k-dump") -add_test(NR-p0_02.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_02.j2k.txt") -add_test(NR-p0_02.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_02.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_02.j2k.txt") -set_tests_properties(NR-p0_02.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_02.j2k-dump") -add_test(NR-p0_03.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_03.j2k.txt") -add_test(NR-p0_03.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_03.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_03.j2k.txt") -set_tests_properties(NR-p0_03.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_03.j2k-dump") -add_test(NR-p0_04.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_04.j2k.txt") -add_test(NR-p0_04.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_04.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_04.j2k.txt") -set_tests_properties(NR-p0_04.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_04.j2k-dump") -add_test(NR-p0_05.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_05.j2k.txt") -add_test(NR-p0_05.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_05.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_05.j2k.txt") -set_tests_properties(NR-p0_05.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_05.j2k-dump") -add_test(NR-p0_06.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_06.j2k.txt") -add_test(NR-p0_06.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_06.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_06.j2k.txt") -set_tests_properties(NR-p0_06.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_06.j2k-dump") -add_test(NR-p0_07.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_07.j2k.txt") -add_test(NR-p0_07.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_07.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_07.j2k.txt") -set_tests_properties(NR-p0_07.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_07.j2k-dump") -add_test(NR-p0_08.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_08.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_08.j2k.txt") -add_test(NR-p0_08.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_08.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_08.j2k.txt") -set_tests_properties(NR-p0_08.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_08.j2k-dump") -add_test(NR-p0_09.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_09.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_09.j2k.txt") -add_test(NR-p0_09.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_09.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_09.j2k.txt") -set_tests_properties(NR-p0_09.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_09.j2k-dump") -add_test(NR-p0_10.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_10.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_10.j2k.txt") -add_test(NR-p0_10.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_10.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_10.j2k.txt") -set_tests_properties(NR-p0_10.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_10.j2k-dump") -add_test(NR-p0_11.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_11.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_11.j2k.txt") -add_test(NR-p0_11.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_11.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_11.j2k.txt") -set_tests_properties(NR-p0_11.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_11.j2k-dump") -add_test(NR-p0_12.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_12.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_12.j2k.txt") -add_test(NR-p0_12.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_12.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_12.j2k.txt") -set_tests_properties(NR-p0_12.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_12.j2k-dump") -add_test(NR-p0_13.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_13.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_13.j2k.txt") -add_test(NR-p0_13.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_13.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_13.j2k.txt") -set_tests_properties(NR-p0_13.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_13.j2k-dump") -add_test(NR-p0_14.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_14.j2k.txt") -add_test(NR-p0_14.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_14.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_14.j2k.txt") -set_tests_properties(NR-p0_14.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_14.j2k-dump") -add_test(NR-p0_15.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_15.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_15.j2k.txt") -add_test(NR-p0_15.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_15.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_15.j2k.txt") -set_tests_properties(NR-p0_15.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_15.j2k-dump") -add_test(NR-p0_16.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_16.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_16.j2k.txt") -add_test(NR-p0_16.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p0_16.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p0_16.j2k.txt") -set_tests_properties(NR-p0_16.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p0_16.j2k-dump") -add_test(NR-p1_01.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_01.j2k.txt") -add_test(NR-p1_01.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_01.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_01.j2k.txt") -set_tests_properties(NR-p1_01.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_01.j2k-dump") -add_test(NR-p1_02.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_02.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_02.j2k.txt") -add_test(NR-p1_02.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_02.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_02.j2k.txt") -set_tests_properties(NR-p1_02.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_02.j2k-dump") -add_test(NR-p1_03.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_03.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_03.j2k.txt") -add_test(NR-p1_03.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_03.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_03.j2k.txt") -set_tests_properties(NR-p1_03.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_03.j2k-dump") -add_test(NR-p1_04.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_04.j2k.txt") -add_test(NR-p1_04.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_04.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_04.j2k.txt") -set_tests_properties(NR-p1_04.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_04.j2k-dump") -add_test(NR-p1_05.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_05.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_05.j2k.txt") -add_test(NR-p1_05.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_05.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_05.j2k.txt") -set_tests_properties(NR-p1_05.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_05.j2k-dump") -add_test(NR-p1_06.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_06.j2k.txt") -add_test(NR-p1_06.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_06.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_06.j2k.txt") -set_tests_properties(NR-p1_06.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_06.j2k-dump") -add_test(NR-p1_07.j2k-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_07.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_07.j2k.txt") -add_test(NR-p1_07.j2k-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_p1_07.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/p1_07.j2k.txt") -set_tests_properties(NR-p1_07.j2k-compare_dump2base PROPERTIES DEPENDS "NR-p1_07.j2k-dump") -add_test(NR-file1.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.txt") -add_test(NR-file1.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file1.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file1.jp2.txt") -set_tests_properties(NR-file1.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file1.jp2-dump") -add_test(NR-file2.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.txt") -add_test(NR-file2.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file2.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file2.jp2.txt") -set_tests_properties(NR-file2.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file2.jp2-dump") -add_test(NR-file3.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.txt") -add_test(NR-file3.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file3.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file3.jp2.txt") -set_tests_properties(NR-file3.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file3.jp2-dump") -add_test(NR-file4.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.txt") -add_test(NR-file4.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file4.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file4.jp2.txt") -set_tests_properties(NR-file4.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file4.jp2-dump") -add_test(NR-file5.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file5.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.txt") -add_test(NR-file5.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file5.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file5.jp2.txt") -set_tests_properties(NR-file5.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file5.jp2-dump") -add_test(NR-file6.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file6.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.txt") -add_test(NR-file6.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file6.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file6.jp2.txt") -set_tests_properties(NR-file6.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file6.jp2-dump") -add_test(NR-file7.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file7.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.txt") -add_test(NR-file7.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file7.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file7.jp2.txt") -set_tests_properties(NR-file7.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file7.jp2-dump") -add_test(NR-file8.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file8.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.txt") -add_test(NR-file8.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file8.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file8.jp2.txt") -set_tests_properties(NR-file8.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file8.jp2-dump") -add_test(NR-file9.jp2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/file9.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.txt") -add_test(NR-file9.jp2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_file9.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/conformance/Temporary/file9.jp2.txt") -set_tests_properties(NR-file9.jp2-compare_dump2base PROPERTIES DEPENDS "NR-file9.jp2-dump") diff --git a/build/tests/nonregression/CTestTestfile.cmake b/build/tests/nonregression/CTestTestfile.cmake deleted file mode 100644 index 71933560c..000000000 --- a/build/tests/nonregression/CTestTestfile.cmake +++ /dev/null @@ -1,1508 +0,0 @@ -# CMake generated Testfile for -# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression -# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -add_test(NR-ENC-Bretagne1.ppm-1-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k" "-r" "200,50,10") -add_test(NR-ENC-Bretagne1.ppm-1-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k-ENC-1.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-1-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-1-encode") -add_test(NR-ENC-Bretagne1.ppm-1-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_0-ENC-1.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k-ENC-1.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-1-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-1-dump") -add_test(NR-ENC-Bretagne1.ppm-2-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k" "-q" "30,35,40" "-n" "2") -add_test(NR-ENC-Bretagne1.ppm-2-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k-ENC-2.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-2-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-2-encode") -add_test(NR-ENC-Bretagne1.ppm-2-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_1-ENC-2.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k-ENC-2.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-2-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-2-dump") -add_test(NR-ENC-Bretagne1.ppm-3-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k" "-q" "30,35,40" "-b" "16,16" "-c" "[64,64]") -add_test(NR-ENC-Bretagne1.ppm-3-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k-ENC-3.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-3-dump PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-3-encode") -add_test(NR-ENC-Bretagne1.ppm-3-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne1_2-ENC-3.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k-ENC-3.txt") -set_tests_properties(NR-ENC-Bretagne1.ppm-3-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne1.ppm-3-dump") -add_test(NR-ENC-Bretagne2.ppm-4-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k" "-c" "[128,128],[128,128],[128,128]" "-r" "100,20,2" "-t" "640,480" "-b" "32,32") -add_test(NR-ENC-Bretagne2.ppm-4-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k-ENC-4.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-4-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-4-encode") -add_test(NR-ENC-Bretagne2.ppm-4-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_0-ENC-4.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k-ENC-4.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-4-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-4-dump") -add_test(NR-ENC-Bretagne2.ppm-5-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k" "-t" "127,127" "-p" "PCRL") -add_test(NR-ENC-Bretagne2.ppm-5-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k-ENC-5.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-5-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-5-encode") -add_test(NR-ENC-Bretagne2.ppm-5-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_1-ENC-5.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k-ENC-5.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-5-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-5-dump") -add_test(NR-ENC-Bretagne2.ppm-6-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k" "-s" "2,2" "-SOP") -add_test(NR-ENC-Bretagne2.ppm-6-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k-ENC-6.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-6-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-6-encode") -add_test(NR-ENC-Bretagne2.ppm-6-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_2-ENC-6.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k-ENC-6.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-6-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-6-dump") -add_test(NR-ENC-Bretagne2.ppm-7-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k" "-EPH" "-M" "38") -add_test(NR-ENC-Bretagne2.ppm-7-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k-ENC-7.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-7-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-7-encode") -add_test(NR-ENC-Bretagne2.ppm-7-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_3-ENC-7.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k-ENC-7.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-7-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-7-dump") -add_test(NR-ENC-Bretagne2.ppm-8-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k" "-d" "150,300" "-r" "800") -add_test(NR-ENC-Bretagne2.ppm-8-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k-ENC-8.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-8-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-8-encode") -add_test(NR-ENC-Bretagne2.ppm-8-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_4-ENC-8.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k-ENC-8.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-8-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-8-dump") -add_test(NR-ENC-Cevennes1.bmp-9-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes1.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k" "-r" "10") -add_test(NR-ENC-Cevennes1.bmp-9-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k-ENC-9.txt") -set_tests_properties(NR-ENC-Cevennes1.bmp-9-dump PROPERTIES DEPENDS "NR-ENC-Cevennes1.bmp-9-encode") -add_test(NR-ENC-Cevennes1.bmp-9-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Cevennes1-ENC-9.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k-ENC-9.txt") -set_tests_properties(NR-ENC-Cevennes1.bmp-9-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Cevennes1.bmp-9-dump") -add_test(NR-ENC-Cevennes2.ppm-10-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2" "-r" "50") -add_test(NR-ENC-Cevennes2.ppm-10-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2-ENC-10.txt") -set_tests_properties(NR-ENC-Cevennes2.ppm-10-dump PROPERTIES DEPENDS "NR-ENC-Cevennes2.ppm-10-encode") -add_test(NR-ENC-Cevennes2.ppm-10-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Cevennes2-ENC-10.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2-ENC-10.txt") -set_tests_properties(NR-ENC-Cevennes2.ppm-10-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Cevennes2.ppm-10-dump") -add_test(NR-ENC-Rome.bmp-11-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Rome.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2" "-q" "30,35,50" "-p" "LRCP" "-n" "3") -add_test(NR-ENC-Rome.bmp-11-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2-ENC-11.txt") -set_tests_properties(NR-ENC-Rome.bmp-11-dump PROPERTIES DEPENDS "NR-ENC-Rome.bmp-11-encode") -add_test(NR-ENC-Rome.bmp-11-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Rome-ENC-11.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2-ENC-11.txt") -set_tests_properties(NR-ENC-Rome.bmp-11-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Rome.bmp-11-dump") -add_test(NR-ENC-random-issue-0005.tif-12-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k") -add_test(NR-ENC-random-issue-0005.tif-12-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k-ENC-12.txt") -set_tests_properties(NR-ENC-random-issue-0005.tif-12-dump PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-encode") -add_test(NR-ENC-random-issue-0005.tif-12-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_random-issue-0005-ENC-12.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k-ENC-12.txt") -set_tests_properties(NR-ENC-random-issue-0005.tif-12-compare_dump2base PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-dump") -add_test(NR-ENC-random-issue-0005.tif-12-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k.lossless.tif") -set_tests_properties(NR-ENC-random-issue-0005.tif-12-lossless-decode PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-encode") -add_test(NR-ENC-random-issue-0005.tif-12-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-random-issue-0005.tif-12-lossless-compare PROPERTIES DEPENDS "NR-ENC-random-issue-0005.tif-12-lossless-decode") -add_test(NR-ENC-tmp-issue-0062.raw-13-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k" "-F" "512,512,1,16,u") -add_test(NR-ENC-tmp-issue-0062.raw-13-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k-ENC-13.txt") -set_tests_properties(NR-ENC-tmp-issue-0062.raw-13-dump PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-13-encode") -add_test(NR-ENC-tmp-issue-0062.raw-13-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_tmp-issue-0062-u-ENC-13.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k-ENC-13.txt") -set_tests_properties(NR-ENC-tmp-issue-0062.raw-13-compare_dump2base PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-13-dump") -add_test(NR-ENC-tmp-issue-0062.raw-14-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k" "-F" "512,512,1,16,s") -add_test(NR-ENC-tmp-issue-0062.raw-14-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k-ENC-14.txt") -set_tests_properties(NR-ENC-tmp-issue-0062.raw-14-dump PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-14-encode") -add_test(NR-ENC-tmp-issue-0062.raw-14-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_tmp-issue-0062-s-ENC-14.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k-ENC-14.txt") -set_tests_properties(NR-ENC-tmp-issue-0062.raw-14-compare_dump2base PROPERTIES DEPENDS "NR-ENC-tmp-issue-0062.raw-14-dump") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k" "-cinema2K" "24") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k-ENC-15.txt") -set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-encode") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_4_2K_24_185_CBR_WB_000_C2K_24-ENC-15.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k-ENC-15.txt") -set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-15-dump") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k" "-cinema2K" "24") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k-ENC-16.txt") -set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-encode") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_5_2K_24_235_CBR_STEM24_000_C2K_24-ENC-16.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k-ENC-16.txt") -set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-16-dump") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k" "-cinema2K" "24") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k-ENC-17.txt") -set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-encode") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24-ENC-17.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k-ENC-17.txt") -set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-17-dump") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k" "-cinema2K" "48") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k-ENC-18.txt") -set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-encode") -add_test(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_4_2K_24_185_CBR_WB_000_C2K_48-ENC-18.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k-ENC-18.txt") -set_tests_properties(NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_4_2K_24_185_CBR_WB_000.tif-18-dump") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k" "-cinema2K" "48") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k-ENC-19.txt") -set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-encode") -add_test(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_5_2K_24_235_CBR_STEM24_000_C2K_48-ENC-19.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k-ENC-19.txt") -set_tests_properties(NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_5_2K_24_235_CBR_STEM24_000.tif-19-dump") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k" "-cinema2K" "48") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k-ENC-20.txt") -set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-encode") -add_test(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48-ENC-20.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k-ENC-20.txt") -set_tests_properties(NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-compare_dump2base PROPERTIES DEPENDS "NR-ENC-X_6_2K_24_FULL_CBR_CIRCLE_000.tif-20-dump") -add_test(NR-ENC-ElephantDream_4K.tif-21-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/ElephantDream_4K.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k" "-cinema4K") -add_test(NR-ENC-ElephantDream_4K.tif-21-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k-ENC-21.txt") -set_tests_properties(NR-ENC-ElephantDream_4K.tif-21-dump PROPERTIES DEPENDS "NR-ENC-ElephantDream_4K.tif-21-encode") -add_test(NR-ENC-ElephantDream_4K.tif-21-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ElephantDream_4K_C4K-ENC-21.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k-ENC-21.txt") -set_tests_properties(NR-ENC-ElephantDream_4K.tif-21-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ElephantDream_4K.tif-21-dump") -add_test(NR-ENC-issue141.rawl-22-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k" "-F" "2048,32,1,16,u") -add_test(NR-ENC-issue141.rawl-22-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k-ENC-22.txt") -set_tests_properties(NR-ENC-issue141.rawl-22-dump PROPERTIES DEPENDS "NR-ENC-issue141.rawl-22-encode") -add_test(NR-ENC-issue141.rawl-22-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue141-ENC-22.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k-ENC-22.txt") -set_tests_properties(NR-ENC-issue141.rawl-22-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue141.rawl-22-dump") -add_test(NR-ENC-issue141.rawl-23-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k" "-F" "2048,32,1,16,u" "-I") -add_test(NR-ENC-issue141.rawl-23-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k-ENC-23.txt") -set_tests_properties(NR-ENC-issue141.rawl-23-dump PROPERTIES DEPENDS "NR-ENC-issue141.rawl-23-encode") -add_test(NR-ENC-issue141.rawl-23-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue141-I-ENC-23.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k-ENC-23.txt") -set_tests_properties(NR-ENC-issue141.rawl-23-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue141.rawl-23-dump") -add_test(NR-ENC-Bretagne2.ppm-24-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k" "-c" "[64,64]") -add_test(NR-ENC-Bretagne2.ppm-24-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k-ENC-24.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-24-dump PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-24-encode") -add_test(NR-ENC-Bretagne2.ppm-24-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_Bretagne2_5-ENC-24.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k-ENC-24.txt") -set_tests_properties(NR-ENC-Bretagne2.ppm-24-compare_dump2base PROPERTIES DEPENDS "NR-ENC-Bretagne2.ppm-24-dump") -add_test(NR-ENC-issue316.png-25-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue316.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2") -add_test(NR-ENC-issue316.png-25-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2-ENC-25.txt") -set_tests_properties(NR-ENC-issue316.png-25-dump PROPERTIES DEPENDS "NR-ENC-issue316.png-25-encode") -add_test(NR-ENC-issue316.png-25-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue316-ENC-25.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2-ENC-25.txt") -set_tests_properties(NR-ENC-issue316.png-25-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue316.png-25-dump") -add_test(NR-ENC-basn6a08.png-26-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2" "-n" "6") -add_test(NR-ENC-basn6a08.png-26-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2-ENC-26.txt") -set_tests_properties(NR-ENC-basn6a08.png-26-dump PROPERTIES DEPENDS "NR-ENC-basn6a08.png-26-encode") -add_test(NR-ENC-basn6a08.png-26-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a08-ENC-26.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2-ENC-26.txt") -set_tests_properties(NR-ENC-basn6a08.png-26-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a08.png-26-dump") -add_test(NR-ENC-issue203-8bpp-width1.bmp-27-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-8bpp-width1.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2") -add_test(NR-ENC-issue203-8bpp-width1.bmp-27-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2-ENC-27.txt") -set_tests_properties(NR-ENC-issue203-8bpp-width1.bmp-27-dump PROPERTIES DEPENDS "NR-ENC-issue203-8bpp-width1.bmp-27-encode") -add_test(NR-ENC-issue203-8bpp-width1.bmp-27-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-8bpp-width1-ENC-27.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2-ENC-27.txt") -set_tests_properties(NR-ENC-issue203-8bpp-width1.bmp-27-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-8bpp-width1.bmp-27-dump") -add_test(NR-ENC-issue203-rle8.bmp-28-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2") -add_test(NR-ENC-issue203-rle8.bmp-28-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2-ENC-28.txt") -set_tests_properties(NR-ENC-issue203-rle8.bmp-28-dump PROPERTIES DEPENDS "NR-ENC-issue203-rle8.bmp-28-encode") -add_test(NR-ENC-issue203-rle8.bmp-28-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-rle8-ENC-28.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2-ENC-28.txt") -set_tests_properties(NR-ENC-issue203-rle8.bmp-28-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-rle8.bmp-28-dump") -add_test(NR-ENC-issue203-32x32-y8.bmp-29-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2") -add_test(NR-ENC-issue203-32x32-y8.bmp-29-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2-ENC-29.txt") -set_tests_properties(NR-ENC-issue203-32x32-y8.bmp-29-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y8.bmp-29-encode") -add_test(NR-ENC-issue203-32x32-y8.bmp-29-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y8-ENC-29.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2-ENC-29.txt") -set_tests_properties(NR-ENC-issue203-32x32-y8.bmp-29-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y8.bmp-29-dump") -add_test(NR-ENC-issue203-33x33-y8.bmp-30-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2") -add_test(NR-ENC-issue203-33x33-y8.bmp-30-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2-ENC-30.txt") -set_tests_properties(NR-ENC-issue203-33x33-y8.bmp-30-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-y8.bmp-30-encode") -add_test(NR-ENC-issue203-33x33-y8.bmp-30-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-y8-ENC-30.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2-ENC-30.txt") -set_tests_properties(NR-ENC-issue203-33x33-y8.bmp-30-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-y8.bmp-30-dump") -add_test(NR-ENC-issue203-34x34-y8.bmp-31-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2") -add_test(NR-ENC-issue203-34x34-y8.bmp-31-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2-ENC-31.txt") -set_tests_properties(NR-ENC-issue203-34x34-y8.bmp-31-dump PROPERTIES DEPENDS "NR-ENC-issue203-34x34-y8.bmp-31-encode") -add_test(NR-ENC-issue203-34x34-y8.bmp-31-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-34x34-y8-ENC-31.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2-ENC-31.txt") -set_tests_properties(NR-ENC-issue203-34x34-y8.bmp-31-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-34x34-y8.bmp-31-dump") -add_test(NR-ENC-issue203-35x35-y8.bmp-32-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-y8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2") -add_test(NR-ENC-issue203-35x35-y8.bmp-32-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2-ENC-32.txt") -set_tests_properties(NR-ENC-issue203-35x35-y8.bmp-32-dump PROPERTIES DEPENDS "NR-ENC-issue203-35x35-y8.bmp-32-encode") -add_test(NR-ENC-issue203-35x35-y8.bmp-32-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-35x35-y8-ENC-32.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2-ENC-32.txt") -set_tests_properties(NR-ENC-issue203-35x35-y8.bmp-32-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-35x35-y8.bmp-32-dump") -add_test(NR-ENC-issue203-32x32-bgr.bmp-33-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgr.bmp-33-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2-ENC-33.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr.bmp-33-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr.bmp-33-encode") -add_test(NR-ENC-issue203-32x32-bgr.bmp-33-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-ENC-33.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2-ENC-33.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr.bmp-33-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr.bmp-33-dump") -add_test(NR-ENC-issue203-33x33-bgr.bmp-34-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2") -add_test(NR-ENC-issue203-33x33-bgr.bmp-34-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2-ENC-34.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgr.bmp-34-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr.bmp-34-encode") -add_test(NR-ENC-issue203-33x33-bgr.bmp-34-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgr-ENC-34.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2-ENC-34.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgr.bmp-34-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr.bmp-34-dump") -add_test(NR-ENC-issue203-34x34-bgr.bmp-35-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2") -add_test(NR-ENC-issue203-34x34-bgr.bmp-35-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2-ENC-35.txt") -set_tests_properties(NR-ENC-issue203-34x34-bgr.bmp-35-dump PROPERTIES DEPENDS "NR-ENC-issue203-34x34-bgr.bmp-35-encode") -add_test(NR-ENC-issue203-34x34-bgr.bmp-35-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-34x34-bgr-ENC-35.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2-ENC-35.txt") -set_tests_properties(NR-ENC-issue203-34x34-bgr.bmp-35-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-34x34-bgr.bmp-35-dump") -add_test(NR-ENC-issue203-35x35-bgr.bmp-36-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-bgr.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2") -add_test(NR-ENC-issue203-35x35-bgr.bmp-36-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2-ENC-36.txt") -set_tests_properties(NR-ENC-issue203-35x35-bgr.bmp-36-dump PROPERTIES DEPENDS "NR-ENC-issue203-35x35-bgr.bmp-36-encode") -add_test(NR-ENC-issue203-35x35-bgr.bmp-36-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-35x35-bgr-ENC-36.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2-ENC-36.txt") -set_tests_properties(NR-ENC-issue203-35x35-bgr.bmp-36-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-35x35-bgr.bmp-36-dump") -add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2") -add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2-ENC-37.txt") -set_tests_properties(NR-ENC-issue203-32x32-y-rle8.bmp-37-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle8.bmp-37-encode") -add_test(NR-ENC-issue203-32x32-y-rle8.bmp-37-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y-rle8-ENC-37.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2-ENC-37.txt") -set_tests_properties(NR-ENC-issue203-32x32-y-rle8.bmp-37-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle8.bmp-37-dump") -add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle8.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2-ENC-38.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle8.bmp-38-encode") -add_test(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-rle8-ENC-38.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2-ENC-38.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr-rle8.bmp-38-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle8.bmp-38-dump") -add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle4.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2") -add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2-ENC-39.txt") -set_tests_properties(NR-ENC-issue203-32x32-y-rle4.bmp-39-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle4.bmp-39-encode") -add_test(NR-ENC-issue203-32x32-y-rle4.bmp-39-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-y-rle4-ENC-39.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2-ENC-39.txt") -set_tests_properties(NR-ENC-issue203-32x32-y-rle4.bmp-39-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-y-rle4.bmp-39-dump") -add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle4.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2-ENC-40.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle4.bmp-40-encode") -add_test(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr-rle4-ENC-40.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2-ENC-40.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr-rle4.bmp-40-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr-rle4.bmp-40-dump") -add_test(NR-ENC-issue203-32x32-bgra.bmp-41-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgra.bmp-41-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2-ENC-41.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgra.bmp-41-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra.bmp-41-encode") -add_test(NR-ENC-issue203-32x32-bgra.bmp-41-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgra-ENC-41.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2-ENC-41.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgra.bmp-41-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra.bmp-41-dump") -add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2-ENC-42.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgrx.bmp-42-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx.bmp-42-encode") -add_test(NR-ENC-issue203-32x32-bgrx.bmp-42-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgrx-ENC-42.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2-ENC-42.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgrx.bmp-42-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx.bmp-42-dump") -add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2-ENC-43.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr16.bmp-43-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr16.bmp-43-encode") -add_test(NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgr16-ENC-43.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2-ENC-43.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgr16.bmp-43-dump") -add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2") -add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2-ENC-44.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgr16.bmp-44-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr16.bmp-44-encode") -add_test(NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgr16-ENC-44.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2-ENC-44.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgr16.bmp-44-dump") -add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2-ENC-45.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgra16.bmp-45-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra16.bmp-45-encode") -add_test(NR-ENC-issue203-32x32-bgra16.bmp-45-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgra16-ENC-45.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2-ENC-45.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgra16.bmp-45-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgra16.bmp-45-dump") -add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgra16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2") -add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2-ENC-46.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgra16.bmp-46-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgra16.bmp-46-encode") -add_test(NR-ENC-issue203-33x33-bgra16.bmp-46-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgra16-ENC-46.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2-ENC-46.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgra16.bmp-46-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgra16.bmp-46-dump") -add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2") -add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2-ENC-47.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgrx16.bmp-47-dump PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx16.bmp-47-encode") -add_test(NR-ENC-issue203-32x32-bgrx16.bmp-47-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-32x32-bgrx16-ENC-47.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2-ENC-47.txt") -set_tests_properties(NR-ENC-issue203-32x32-bgrx16.bmp-47-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-32x32-bgrx16.bmp-47-dump") -add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgrx16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2") -add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2-ENC-48.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgrx16.bmp-48-dump PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgrx16.bmp-48-encode") -add_test(NR-ENC-issue203-33x33-bgrx16.bmp-48-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-33x33-bgrx16-ENC-48.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2-ENC-48.txt") -set_tests_properties(NR-ENC-issue203-33x33-bgrx16.bmp-48-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-33x33-bgrx16.bmp-48-dump") -add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgr16.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2") -add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2-ENC-49.txt") -set_tests_properties(NR-ENC-issue203-127x64-bgr16.bmp-49-dump PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgr16.bmp-49-encode") -add_test(NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-127x64-bgr16-ENC-49.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2-ENC-49.txt") -set_tests_properties(NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgr16.bmp-49-dump") -add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgrx.bmp" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2") -add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2-ENC-50.txt") -set_tests_properties(NR-ENC-issue203-127x64-bgrx.bmp-50-dump PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgrx.bmp-50-encode") -add_test(NR-ENC-issue203-127x64-bgrx.bmp-50-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue203-127x64-bgrx-ENC-50.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2-ENC-50.txt") -set_tests_properties(NR-ENC-issue203-127x64-bgrx.bmp-50-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue203-127x64-bgrx.bmp-50-dump") -add_test(NR-ENC-flower-minisblack-01.tif-51-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2") -add_test(NR-ENC-flower-minisblack-01.tif-51-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2-ENC-51.txt") -set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-encode") -add_test(NR-ENC-flower-minisblack-01.tif-51-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-01-ENC-51.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2-ENC-51.txt") -set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-dump") -add_test(NR-ENC-flower-minisblack-01.tif-51-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-encode") -add_test(NR-ENC-flower-minisblack-01.tif-51-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-01.tif-51-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-01.tif-51-lossless-decode") -add_test(NR-ENC-flower-minisblack-02.tif-52-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2") -add_test(NR-ENC-flower-minisblack-02.tif-52-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2-ENC-52.txt") -set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-encode") -add_test(NR-ENC-flower-minisblack-02.tif-52-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-02-ENC-52.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2-ENC-52.txt") -set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-dump") -add_test(NR-ENC-flower-minisblack-02.tif-52-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-encode") -add_test(NR-ENC-flower-minisblack-02.tif-52-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-02.tif-52-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-02.tif-52-lossless-decode") -add_test(NR-ENC-flower-minisblack-04.tif-53-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2") -add_test(NR-ENC-flower-minisblack-04.tif-53-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2-ENC-53.txt") -set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-encode") -add_test(NR-ENC-flower-minisblack-04.tif-53-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-04-ENC-53.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2-ENC-53.txt") -set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-dump") -add_test(NR-ENC-flower-minisblack-04.tif-53-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-encode") -add_test(NR-ENC-flower-minisblack-04.tif-53-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-04.tif-53-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-04.tif-53-lossless-decode") -add_test(NR-ENC-flower-minisblack-06.tif-54-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2") -add_test(NR-ENC-flower-minisblack-06.tif-54-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2-ENC-54.txt") -set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-encode") -add_test(NR-ENC-flower-minisblack-06.tif-54-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-06-ENC-54.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2-ENC-54.txt") -set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-dump") -add_test(NR-ENC-flower-minisblack-06.tif-54-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-encode") -add_test(NR-ENC-flower-minisblack-06.tif-54-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-06.tif-54-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-06.tif-54-lossless-decode") -add_test(NR-ENC-flower-minisblack-08.tif-55-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2") -add_test(NR-ENC-flower-minisblack-08.tif-55-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2-ENC-55.txt") -set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-encode") -add_test(NR-ENC-flower-minisblack-08.tif-55-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-08-ENC-55.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2-ENC-55.txt") -set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-dump") -add_test(NR-ENC-flower-minisblack-08.tif-55-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-encode") -add_test(NR-ENC-flower-minisblack-08.tif-55-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-08.tif-55-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-08.tif-55-lossless-decode") -add_test(NR-ENC-flower-minisblack-10.tif-56-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2") -add_test(NR-ENC-flower-minisblack-10.tif-56-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2-ENC-56.txt") -set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-encode") -add_test(NR-ENC-flower-minisblack-10.tif-56-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-10-ENC-56.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2-ENC-56.txt") -set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-dump") -add_test(NR-ENC-flower-minisblack-10.tif-56-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-encode") -add_test(NR-ENC-flower-minisblack-10.tif-56-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-10.tif-56-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-10.tif-56-lossless-decode") -add_test(NR-ENC-flower-minisblack-12.tif-57-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2") -add_test(NR-ENC-flower-minisblack-12.tif-57-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2-ENC-57.txt") -set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-encode") -add_test(NR-ENC-flower-minisblack-12.tif-57-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-12-ENC-57.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2-ENC-57.txt") -set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-dump") -add_test(NR-ENC-flower-minisblack-12.tif-57-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-encode") -add_test(NR-ENC-flower-minisblack-12.tif-57-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-12.tif-57-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-12.tif-57-lossless-decode") -add_test(NR-ENC-flower-minisblack-14.tif-58-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2") -add_test(NR-ENC-flower-minisblack-14.tif-58-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2-ENC-58.txt") -set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-encode") -add_test(NR-ENC-flower-minisblack-14.tif-58-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-14-ENC-58.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2-ENC-58.txt") -set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-dump") -add_test(NR-ENC-flower-minisblack-14.tif-58-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-encode") -add_test(NR-ENC-flower-minisblack-14.tif-58-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-14.tif-58-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-14.tif-58-lossless-decode") -add_test(NR-ENC-flower-minisblack-16.tif-59-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2") -add_test(NR-ENC-flower-minisblack-16.tif-59-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2-ENC-59.txt") -set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-encode") -add_test(NR-ENC-flower-minisblack-16.tif-59-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-16-ENC-59.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2-ENC-59.txt") -set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-dump") -add_test(NR-ENC-flower-minisblack-16.tif-59-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-encode") -add_test(NR-ENC-flower-minisblack-16.tif-59-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-16.tif-59-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-16.tif-59-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-02.tif-60-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-02.tif-60-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2-ENC-60.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-encode") -add_test(NR-ENC-flower-rgb-contig-02.tif-60-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-02-ENC-60.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2-ENC-60.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-dump") -add_test(NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-encode") -add_test(NR-ENC-flower-rgb-contig-02.tif-60-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-02.tif-60-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-02.tif-60-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-04.tif-61-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-04.tif-61-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2-ENC-61.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-encode") -add_test(NR-ENC-flower-rgb-contig-04.tif-61-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-04-ENC-61.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2-ENC-61.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-dump") -add_test(NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-encode") -add_test(NR-ENC-flower-rgb-contig-04.tif-61-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-04.tif-61-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-04.tif-61-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-08.tif-62-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-08.tif-62-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2-ENC-62.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-encode") -add_test(NR-ENC-flower-rgb-contig-08.tif-62-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-08-ENC-62.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2-ENC-62.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-dump") -add_test(NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-encode") -add_test(NR-ENC-flower-rgb-contig-08.tif-62-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-08.tif-62-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-08.tif-62-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-10.tif-63-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-10.tif-63-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2-ENC-63.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-encode") -add_test(NR-ENC-flower-rgb-contig-10.tif-63-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-10-ENC-63.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2-ENC-63.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-dump") -add_test(NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-encode") -add_test(NR-ENC-flower-rgb-contig-10.tif-63-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-10.tif-63-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-10.tif-63-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-12.tif-64-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-12.tif-64-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2-ENC-64.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-encode") -add_test(NR-ENC-flower-rgb-contig-12.tif-64-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-12-ENC-64.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2-ENC-64.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-dump") -add_test(NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-encode") -add_test(NR-ENC-flower-rgb-contig-12.tif-64-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-12.tif-64-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-12.tif-64-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-14.tif-65-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-14.tif-65-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2-ENC-65.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-encode") -add_test(NR-ENC-flower-rgb-contig-14.tif-65-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-14-ENC-65.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2-ENC-65.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-dump") -add_test(NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-encode") -add_test(NR-ENC-flower-rgb-contig-14.tif-65-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-14.tif-65-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-14.tif-65-lossless-decode") -add_test(NR-ENC-flower-rgb-contig-16.tif-66-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2") -add_test(NR-ENC-flower-rgb-contig-16.tif-66-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2-ENC-66.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-encode") -add_test(NR-ENC-flower-rgb-contig-16.tif-66-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-contig-16-ENC-66.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2-ENC-66.txt") -set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-dump") -add_test(NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-encode") -add_test(NR-ENC-flower-rgb-contig-16.tif-66-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-contig-16.tif-66-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-contig-16.tif-66-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-02.tif-67-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-02.tif-67-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2-ENC-67.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-encode") -add_test(NR-ENC-flower-rgb-planar-02.tif-67-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-02-ENC-67.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2-ENC-67.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-dump") -add_test(NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-encode") -add_test(NR-ENC-flower-rgb-planar-02.tif-67-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-02.tif-67-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-02.tif-67-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-04.tif-68-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-04.tif-68-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2-ENC-68.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-encode") -add_test(NR-ENC-flower-rgb-planar-04.tif-68-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-04-ENC-68.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2-ENC-68.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-dump") -add_test(NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-encode") -add_test(NR-ENC-flower-rgb-planar-04.tif-68-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-04.tif-68-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-04.tif-68-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-08.tif-69-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-08.tif-69-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2-ENC-69.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-encode") -add_test(NR-ENC-flower-rgb-planar-08.tif-69-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-08-ENC-69.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2-ENC-69.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-dump") -add_test(NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-encode") -add_test(NR-ENC-flower-rgb-planar-08.tif-69-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-08.tif-69-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-08.tif-69-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-10.tif-70-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-10.tif-70-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2-ENC-70.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-encode") -add_test(NR-ENC-flower-rgb-planar-10.tif-70-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-10-ENC-70.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2-ENC-70.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-dump") -add_test(NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-encode") -add_test(NR-ENC-flower-rgb-planar-10.tif-70-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-10.tif-70-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-10.tif-70-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-12.tif-71-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-12.tif-71-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2-ENC-71.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-encode") -add_test(NR-ENC-flower-rgb-planar-12.tif-71-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-12-ENC-71.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2-ENC-71.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-dump") -add_test(NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-encode") -add_test(NR-ENC-flower-rgb-planar-12.tif-71-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-12.tif-71-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-12.tif-71-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-14.tif-72-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-14.tif-72-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2-ENC-72.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-encode") -add_test(NR-ENC-flower-rgb-planar-14.tif-72-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-14-ENC-72.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2-ENC-72.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-dump") -add_test(NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-encode") -add_test(NR-ENC-flower-rgb-planar-14.tif-72-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-14.tif-72-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-14.tif-72-lossless-decode") -add_test(NR-ENC-flower-rgb-planar-16.tif-73-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2") -add_test(NR-ENC-flower-rgb-planar-16.tif-73-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2-ENC-73.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-dump PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-encode") -add_test(NR-ENC-flower-rgb-planar-16.tif-73-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-rgb-planar-16-ENC-73.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2-ENC-73.txt") -set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-dump") -add_test(NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-encode") -add_test(NR-ENC-flower-rgb-planar-16.tif-73-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-rgb-planar-16.tif-73-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-rgb-planar-16.tif-73-lossless-decode") -add_test(NR-ENC-basn6a08.tif-74-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2") -add_test(NR-ENC-basn6a08.tif-74-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2-ENC-74.txt") -set_tests_properties(NR-ENC-basn6a08.tif-74-dump PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-encode") -add_test(NR-ENC-basn6a08.tif-74-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a08-ENC-74.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2-ENC-74.txt") -set_tests_properties(NR-ENC-basn6a08.tif-74-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-dump") -add_test(NR-ENC-basn6a08.tif-74-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-basn6a08.tif-74-lossless-decode PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-encode") -add_test(NR-ENC-basn6a08.tif-74-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-basn6a08.tif-74-lossless-compare PROPERTIES DEPENDS "NR-ENC-basn6a08.tif-74-lossless-decode") -add_test(NR-ENC-basn4a08.tif-75-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2") -add_test(NR-ENC-basn4a08.tif-75-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2-ENC-75.txt") -set_tests_properties(NR-ENC-basn4a08.tif-75-dump PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-encode") -add_test(NR-ENC-basn4a08.tif-75-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a08-ENC-75.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2-ENC-75.txt") -set_tests_properties(NR-ENC-basn4a08.tif-75-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-dump") -add_test(NR-ENC-basn4a08.tif-75-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-basn4a08.tif-75-lossless-decode PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-encode") -add_test(NR-ENC-basn4a08.tif-75-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-basn4a08.tif-75-lossless-compare PROPERTIES DEPENDS "NR-ENC-basn4a08.tif-75-lossless-decode") -add_test(NR-ENC-basn0g01.png-76-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2") -add_test(NR-ENC-basn0g01.png-76-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2-ENC-76.txt") -set_tests_properties(NR-ENC-basn0g01.png-76-dump PROPERTIES DEPENDS "NR-ENC-basn0g01.png-76-encode") -add_test(NR-ENC-basn0g01.png-76-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g01-ENC-76.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2-ENC-76.txt") -set_tests_properties(NR-ENC-basn0g01.png-76-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g01.png-76-dump") -add_test(NR-ENC-basn0g02.png-77-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2") -add_test(NR-ENC-basn0g02.png-77-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2-ENC-77.txt") -set_tests_properties(NR-ENC-basn0g02.png-77-dump PROPERTIES DEPENDS "NR-ENC-basn0g02.png-77-encode") -add_test(NR-ENC-basn0g02.png-77-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g02-ENC-77.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2-ENC-77.txt") -set_tests_properties(NR-ENC-basn0g02.png-77-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g02.png-77-dump") -add_test(NR-ENC-basn0g04.png-78-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2") -add_test(NR-ENC-basn0g04.png-78-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2-ENC-78.txt") -set_tests_properties(NR-ENC-basn0g04.png-78-dump PROPERTIES DEPENDS "NR-ENC-basn0g04.png-78-encode") -add_test(NR-ENC-basn0g04.png-78-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g04-ENC-78.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2-ENC-78.txt") -set_tests_properties(NR-ENC-basn0g04.png-78-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g04.png-78-dump") -add_test(NR-ENC-basn0g08.png-79-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2") -add_test(NR-ENC-basn0g08.png-79-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2-ENC-79.txt") -set_tests_properties(NR-ENC-basn0g08.png-79-dump PROPERTIES DEPENDS "NR-ENC-basn0g08.png-79-encode") -add_test(NR-ENC-basn0g08.png-79-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g08-ENC-79.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2-ENC-79.txt") -set_tests_properties(NR-ENC-basn0g08.png-79-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g08.png-79-dump") -add_test(NR-ENC-basn0g16.png-80-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2") -add_test(NR-ENC-basn0g16.png-80-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2-ENC-80.txt") -set_tests_properties(NR-ENC-basn0g16.png-80-dump PROPERTIES DEPENDS "NR-ENC-basn0g16.png-80-encode") -add_test(NR-ENC-basn0g16.png-80-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn0g16-ENC-80.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2-ENC-80.txt") -set_tests_properties(NR-ENC-basn0g16.png-80-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn0g16.png-80-dump") -add_test(NR-ENC-basn2c08.png-81-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2") -add_test(NR-ENC-basn2c08.png-81-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2-ENC-81.txt") -set_tests_properties(NR-ENC-basn2c08.png-81-dump PROPERTIES DEPENDS "NR-ENC-basn2c08.png-81-encode") -add_test(NR-ENC-basn2c08.png-81-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn2c08-ENC-81.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2-ENC-81.txt") -set_tests_properties(NR-ENC-basn2c08.png-81-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn2c08.png-81-dump") -add_test(NR-ENC-basn2c16.png-82-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2") -add_test(NR-ENC-basn2c16.png-82-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2-ENC-82.txt") -set_tests_properties(NR-ENC-basn2c16.png-82-dump PROPERTIES DEPENDS "NR-ENC-basn2c16.png-82-encode") -add_test(NR-ENC-basn2c16.png-82-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn2c16-ENC-82.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2-ENC-82.txt") -set_tests_properties(NR-ENC-basn2c16.png-82-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn2c16.png-82-dump") -add_test(NR-ENC-basn3p01.png-83-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2") -add_test(NR-ENC-basn3p01.png-83-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2-ENC-83.txt") -set_tests_properties(NR-ENC-basn3p01.png-83-dump PROPERTIES DEPENDS "NR-ENC-basn3p01.png-83-encode") -add_test(NR-ENC-basn3p01.png-83-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p01-ENC-83.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2-ENC-83.txt") -set_tests_properties(NR-ENC-basn3p01.png-83-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p01.png-83-dump") -add_test(NR-ENC-basn3p02.png-84-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2") -add_test(NR-ENC-basn3p02.png-84-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2-ENC-84.txt") -set_tests_properties(NR-ENC-basn3p02.png-84-dump PROPERTIES DEPENDS "NR-ENC-basn3p02.png-84-encode") -add_test(NR-ENC-basn3p02.png-84-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p02-ENC-84.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2-ENC-84.txt") -set_tests_properties(NR-ENC-basn3p02.png-84-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p02.png-84-dump") -add_test(NR-ENC-basn3p04.png-85-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2") -add_test(NR-ENC-basn3p04.png-85-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2-ENC-85.txt") -set_tests_properties(NR-ENC-basn3p04.png-85-dump PROPERTIES DEPENDS "NR-ENC-basn3p04.png-85-encode") -add_test(NR-ENC-basn3p04.png-85-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p04-ENC-85.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2-ENC-85.txt") -set_tests_properties(NR-ENC-basn3p04.png-85-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p04.png-85-dump") -add_test(NR-ENC-basn3p08.png-86-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2") -add_test(NR-ENC-basn3p08.png-86-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2-ENC-86.txt") -set_tests_properties(NR-ENC-basn3p08.png-86-dump PROPERTIES DEPENDS "NR-ENC-basn3p08.png-86-encode") -add_test(NR-ENC-basn3p08.png-86-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn3p08-ENC-86.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2-ENC-86.txt") -set_tests_properties(NR-ENC-basn3p08.png-86-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn3p08.png-86-dump") -add_test(NR-ENC-basn4a08.png-87-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2") -add_test(NR-ENC-basn4a08.png-87-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2-ENC-87.txt") -set_tests_properties(NR-ENC-basn4a08.png-87-dump PROPERTIES DEPENDS "NR-ENC-basn4a08.png-87-encode") -add_test(NR-ENC-basn4a08.png-87-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a08-ENC-87.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2-ENC-87.txt") -set_tests_properties(NR-ENC-basn4a08.png-87-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a08.png-87-dump") -add_test(NR-ENC-basn4a16.png-88-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2") -add_test(NR-ENC-basn4a16.png-88-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2-ENC-88.txt") -set_tests_properties(NR-ENC-basn4a16.png-88-dump PROPERTIES DEPENDS "NR-ENC-basn4a16.png-88-encode") -add_test(NR-ENC-basn4a16.png-88-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn4a16-ENC-88.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2-ENC-88.txt") -set_tests_properties(NR-ENC-basn4a16.png-88-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn4a16.png-88-dump") -add_test(NR-ENC-basn6a16.png-89-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2") -add_test(NR-ENC-basn6a16.png-89-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2-ENC-89.txt") -set_tests_properties(NR-ENC-basn6a16.png-89-dump PROPERTIES DEPENDS "NR-ENC-basn6a16.png-89-encode") -add_test(NR-ENC-basn6a16.png-89-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_basn6a16-ENC-89.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2-ENC-89.txt") -set_tests_properties(NR-ENC-basn6a16.png-89-compare_dump2base PROPERTIES DEPENDS "NR-ENC-basn6a16.png-89-dump") -add_test(NR-ENC-ftbbn0g01.png-90-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g01.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2") -add_test(NR-ENC-ftbbn0g01.png-90-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2-ENC-90.txt") -set_tests_properties(NR-ENC-ftbbn0g01.png-90-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g01.png-90-encode") -add_test(NR-ENC-ftbbn0g01.png-90-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g01-ENC-90.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2-ENC-90.txt") -set_tests_properties(NR-ENC-ftbbn0g01.png-90-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g01.png-90-dump") -add_test(NR-ENC-ftbbn0g02.png-91-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g02.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2") -add_test(NR-ENC-ftbbn0g02.png-91-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2-ENC-91.txt") -set_tests_properties(NR-ENC-ftbbn0g02.png-91-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g02.png-91-encode") -add_test(NR-ENC-ftbbn0g02.png-91-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g02-ENC-91.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2-ENC-91.txt") -set_tests_properties(NR-ENC-ftbbn0g02.png-91-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g02.png-91-dump") -add_test(NR-ENC-ftbbn0g04.png-92-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g04.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2") -add_test(NR-ENC-ftbbn0g04.png-92-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2-ENC-92.txt") -set_tests_properties(NR-ENC-ftbbn0g04.png-92-dump PROPERTIES DEPENDS "NR-ENC-ftbbn0g04.png-92-encode") -add_test(NR-ENC-ftbbn0g04.png-92-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn0g04-ENC-92.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2-ENC-92.txt") -set_tests_properties(NR-ENC-ftbbn0g04.png-92-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn0g04.png-92-dump") -add_test(NR-ENC-ftbbn2c16.png-93-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2") -add_test(NR-ENC-ftbbn2c16.png-93-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2-ENC-93.txt") -set_tests_properties(NR-ENC-ftbbn2c16.png-93-dump PROPERTIES DEPENDS "NR-ENC-ftbbn2c16.png-93-encode") -add_test(NR-ENC-ftbbn2c16.png-93-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn2c16-ENC-93.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2-ENC-93.txt") -set_tests_properties(NR-ENC-ftbbn2c16.png-93-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn2c16.png-93-dump") -add_test(NR-ENC-ftbbn3p08.png-94-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2") -add_test(NR-ENC-ftbbn3p08.png-94-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2-ENC-94.txt") -set_tests_properties(NR-ENC-ftbbn3p08.png-94-dump PROPERTIES DEPENDS "NR-ENC-ftbbn3p08.png-94-encode") -add_test(NR-ENC-ftbbn3p08.png-94-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbbn3p08-ENC-94.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2-ENC-94.txt") -set_tests_properties(NR-ENC-ftbbn3p08.png-94-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbbn3p08.png-94-dump") -add_test(NR-ENC-ftbgn2c16.png-95-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn2c16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2") -add_test(NR-ENC-ftbgn2c16.png-95-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2-ENC-95.txt") -set_tests_properties(NR-ENC-ftbgn2c16.png-95-dump PROPERTIES DEPENDS "NR-ENC-ftbgn2c16.png-95-encode") -add_test(NR-ENC-ftbgn2c16.png-95-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbgn2c16-ENC-95.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2-ENC-95.txt") -set_tests_properties(NR-ENC-ftbgn2c16.png-95-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbgn2c16.png-95-dump") -add_test(NR-ENC-ftbgn3p08.png-96-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2") -add_test(NR-ENC-ftbgn3p08.png-96-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2-ENC-96.txt") -set_tests_properties(NR-ENC-ftbgn3p08.png-96-dump PROPERTIES DEPENDS "NR-ENC-ftbgn3p08.png-96-encode") -add_test(NR-ENC-ftbgn3p08.png-96-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbgn3p08-ENC-96.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2-ENC-96.txt") -set_tests_properties(NR-ENC-ftbgn3p08.png-96-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbgn3p08.png-96-dump") -add_test(NR-ENC-ftbrn2c08.png-97-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbrn2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2") -add_test(NR-ENC-ftbrn2c08.png-97-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2-ENC-97.txt") -set_tests_properties(NR-ENC-ftbrn2c08.png-97-dump PROPERTIES DEPENDS "NR-ENC-ftbrn2c08.png-97-encode") -add_test(NR-ENC-ftbrn2c08.png-97-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbrn2c08-ENC-97.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2-ENC-97.txt") -set_tests_properties(NR-ENC-ftbrn2c08.png-97-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbrn2c08.png-97-dump") -add_test(NR-ENC-ftbwn0g16.png-98-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn0g16.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2") -add_test(NR-ENC-ftbwn0g16.png-98-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2-ENC-98.txt") -set_tests_properties(NR-ENC-ftbwn0g16.png-98-dump PROPERTIES DEPENDS "NR-ENC-ftbwn0g16.png-98-encode") -add_test(NR-ENC-ftbwn0g16.png-98-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbwn0g16-ENC-98.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2-ENC-98.txt") -set_tests_properties(NR-ENC-ftbwn0g16.png-98-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbwn0g16.png-98-dump") -add_test(NR-ENC-ftbwn3p08.png-99-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2") -add_test(NR-ENC-ftbwn3p08.png-99-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2-ENC-99.txt") -set_tests_properties(NR-ENC-ftbwn3p08.png-99-dump PROPERTIES DEPENDS "NR-ENC-ftbwn3p08.png-99-encode") -add_test(NR-ENC-ftbwn3p08.png-99-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbwn3p08-ENC-99.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2-ENC-99.txt") -set_tests_properties(NR-ENC-ftbwn3p08.png-99-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbwn3p08.png-99-dump") -add_test(NR-ENC-ftbyn3p08.png-100-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbyn3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2") -add_test(NR-ENC-ftbyn3p08.png-100-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2-ENC-100.txt") -set_tests_properties(NR-ENC-ftbyn3p08.png-100-dump PROPERTIES DEPENDS "NR-ENC-ftbyn3p08.png-100-encode") -add_test(NR-ENC-ftbyn3p08.png-100-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftbyn3p08-ENC-100.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2-ENC-100.txt") -set_tests_properties(NR-ENC-ftbyn3p08.png-100-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftbyn3p08.png-100-dump") -add_test(NR-ENC-ftp0n0g08.png-101-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n0g08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2") -add_test(NR-ENC-ftp0n0g08.png-101-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2-ENC-101.txt") -set_tests_properties(NR-ENC-ftp0n0g08.png-101-dump PROPERTIES DEPENDS "NR-ENC-ftp0n0g08.png-101-encode") -add_test(NR-ENC-ftp0n0g08.png-101-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n0g08-ENC-101.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2-ENC-101.txt") -set_tests_properties(NR-ENC-ftp0n0g08.png-101-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n0g08.png-101-dump") -add_test(NR-ENC-ftp0n2c08.png-102-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n2c08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2") -add_test(NR-ENC-ftp0n2c08.png-102-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2-ENC-102.txt") -set_tests_properties(NR-ENC-ftp0n2c08.png-102-dump PROPERTIES DEPENDS "NR-ENC-ftp0n2c08.png-102-encode") -add_test(NR-ENC-ftp0n2c08.png-102-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n2c08-ENC-102.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2-ENC-102.txt") -set_tests_properties(NR-ENC-ftp0n2c08.png-102-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n2c08.png-102-dump") -add_test(NR-ENC-ftp0n3p08.png-103-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2") -add_test(NR-ENC-ftp0n3p08.png-103-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2-ENC-103.txt") -set_tests_properties(NR-ENC-ftp0n3p08.png-103-dump PROPERTIES DEPENDS "NR-ENC-ftp0n3p08.png-103-encode") -add_test(NR-ENC-ftp0n3p08.png-103-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp0n3p08-ENC-103.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2-ENC-103.txt") -set_tests_properties(NR-ENC-ftp0n3p08.png-103-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp0n3p08.png-103-dump") -add_test(NR-ENC-ftp1n3p08.png-104-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp1n3p08.png" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2") -add_test(NR-ENC-ftp1n3p08.png-104-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2-ENC-104.txt") -set_tests_properties(NR-ENC-ftp1n3p08.png-104-dump PROPERTIES DEPENDS "NR-ENC-ftp1n3p08.png-104-encode") -add_test(NR-ENC-ftp1n3p08.png-104-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_ftp1n3p08-ENC-104.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2-ENC-104.txt") -set_tests_properties(NR-ENC-ftp1n3p08.png-104-compare_dump2base PROPERTIES DEPENDS "NR-ENC-ftp1n3p08.png-104-dump") -add_test(NR-ENC-issue571.tif-105-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k") -add_test(NR-ENC-issue571.tif-105-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k-ENC-105.txt") -set_tests_properties(NR-ENC-issue571.tif-105-dump PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-encode") -add_test(NR-ENC-issue571.tif-105-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_issue571-ENC-105.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k-ENC-105.txt") -set_tests_properties(NR-ENC-issue571.tif-105-compare_dump2base PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-dump") -add_test(NR-ENC-issue571.tif-105-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k.lossless.tif") -set_tests_properties(NR-ENC-issue571.tif-105-lossless-decode PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-encode") -add_test(NR-ENC-issue571.tif-105-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-issue571.tif-105-lossless-compare PROPERTIES DEPENDS "NR-ENC-issue571.tif-105-lossless-decode") -add_test(NR-ENC-flower-minisblack-03.tif-106-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2") -add_test(NR-ENC-flower-minisblack-03.tif-106-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2-ENC-106.txt") -set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-encode") -add_test(NR-ENC-flower-minisblack-03.tif-106-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-03-ENC-106.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2-ENC-106.txt") -set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-dump") -add_test(NR-ENC-flower-minisblack-03.tif-106-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-encode") -add_test(NR-ENC-flower-minisblack-03.tif-106-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-03.tif-106-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-03.tif-106-lossless-decode") -add_test(NR-ENC-flower-minisblack-05.tif-107-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2") -add_test(NR-ENC-flower-minisblack-05.tif-107-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2-ENC-107.txt") -set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-encode") -add_test(NR-ENC-flower-minisblack-05.tif-107-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-05-ENC-107.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2-ENC-107.txt") -set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-dump") -add_test(NR-ENC-flower-minisblack-05.tif-107-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-encode") -add_test(NR-ENC-flower-minisblack-05.tif-107-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-05.tif-107-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-05.tif-107-lossless-decode") -add_test(NR-ENC-flower-minisblack-07.tif-108-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2") -add_test(NR-ENC-flower-minisblack-07.tif-108-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2-ENC-108.txt") -set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-encode") -add_test(NR-ENC-flower-minisblack-07.tif-108-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-07-ENC-108.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2-ENC-108.txt") -set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-dump") -add_test(NR-ENC-flower-minisblack-07.tif-108-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-encode") -add_test(NR-ENC-flower-minisblack-07.tif-108-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-07.tif-108-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-07.tif-108-lossless-decode") -add_test(NR-ENC-flower-minisblack-09.tif-109-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2") -add_test(NR-ENC-flower-minisblack-09.tif-109-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2-ENC-109.txt") -set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-encode") -add_test(NR-ENC-flower-minisblack-09.tif-109-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-09-ENC-109.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2-ENC-109.txt") -set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-dump") -add_test(NR-ENC-flower-minisblack-09.tif-109-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-encode") -add_test(NR-ENC-flower-minisblack-09.tif-109-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-09.tif-109-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-09.tif-109-lossless-decode") -add_test(NR-ENC-flower-minisblack-11.tif-110-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2") -add_test(NR-ENC-flower-minisblack-11.tif-110-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2-ENC-110.txt") -set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-encode") -add_test(NR-ENC-flower-minisblack-11.tif-110-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-11-ENC-110.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2-ENC-110.txt") -set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-dump") -add_test(NR-ENC-flower-minisblack-11.tif-110-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-encode") -add_test(NR-ENC-flower-minisblack-11.tif-110-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-11.tif-110-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-11.tif-110-lossless-decode") -add_test(NR-ENC-flower-minisblack-13.tif-111-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2") -add_test(NR-ENC-flower-minisblack-13.tif-111-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2-ENC-111.txt") -set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-encode") -add_test(NR-ENC-flower-minisblack-13.tif-111-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-13-ENC-111.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2-ENC-111.txt") -set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-dump") -add_test(NR-ENC-flower-minisblack-13.tif-111-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-encode") -add_test(NR-ENC-flower-minisblack-13.tif-111-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-13.tif-111-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-13.tif-111-lossless-decode") -add_test(NR-ENC-flower-minisblack-15.tif-112-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2") -add_test(NR-ENC-flower-minisblack-15.tif-112-dump "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_dump" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2-ENC-112.txt") -set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-dump PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-encode") -add_test(NR-ENC-flower-minisblack-15.tif-112-compare_dump2base "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_dump_files" "-b" "OPJ_DATA_ROOT-NOTFOUND/baseline/nonregression/opj_v2_flower-minisblack-15-ENC-112.txt" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2-ENC-112.txt") -set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-compare_dump2base PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-dump") -add_test(NR-ENC-flower-minisblack-15.tif-112-lossless-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2.lossless.tif") -set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-lossless-decode PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-encode") -add_test(NR-ENC-flower-minisblack-15.tif-112-lossless-compare "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/compare_images" "-b" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif" "-t" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2.lossless.tif" "-n" "1" "-d") -set_tests_properties(NR-ENC-flower-minisblack-15.tif-112-lossless-compare PROPERTIES DEPENDS "NR-ENC-flower-minisblack-15.tif-112-lossless-decode") -add_test(NR-ENC-issue843.ppm-113-encode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_compress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue843.ppm" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue843.ppm.jp2") -set_tests_properties(NR-ENC-issue843.ppm-113-encode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-Bretagne2.j2k-1-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx") -add_test(NR-DEC-Bretagne2.j2k-1-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-Bretagne2.j2k-1-decode-md5 PROPERTIES DEPENDS "NR-DEC-Bretagne2.j2k-1-decode") -add_test(NR-DEC-_00042.j2k-2-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/_00042.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx") -add_test(NR-DEC-_00042.j2k-2-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-_00042.j2k-2-decode-md5 PROPERTIES DEPENDS "NR-DEC-_00042.j2k-2-decode") -add_test(NR-DEC-123.j2c-3-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/123.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx") -add_test(NR-DEC-123.j2c-3-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-123.j2c-3-decode-md5 PROPERTIES DEPENDS "NR-DEC-123.j2c-3-decode") -add_test(NR-DEC-broken1.jp2-4-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken1.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken1.jp2.pgx") -set_tests_properties(NR-DEC-broken1.jp2-4-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-broken2.jp2-5-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken2.jp2.pgx") -set_tests_properties(NR-DEC-broken2.jp2-5-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-broken3.jp2-6-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken3.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken3.jp2.pgx") -set_tests_properties(NR-DEC-broken3.jp2-6-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-broken4.jp2-7-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken4.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken4.jp2.pgx") -set_tests_properties(NR-DEC-broken4.jp2-7-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-bug.j2c-8-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/bug.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx") -add_test(NR-DEC-bug.j2c-8-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-bug.j2c-8-decode-md5 PROPERTIES DEPENDS "NR-DEC-bug.j2c-8-decode") -add_test(NR-DEC-buxI.j2k-9-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxI.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx") -add_test(NR-DEC-buxI.j2k-9-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-buxI.j2k-9-decode-md5 PROPERTIES DEPENDS "NR-DEC-buxI.j2k-9-decode") -add_test(NR-DEC-buxR.j2k-10-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxR.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx") -add_test(NR-DEC-buxR.j2k-10-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-buxR.j2k-10-decode-md5 PROPERTIES DEPENDS "NR-DEC-buxR.j2k-10-decode") -add_test(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cannotreaddatawithnosizeknown.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx") -add_test(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode-md5 PROPERTIES DEPENDS "NR-DEC-Cannotreaddatawithnosizeknown.j2k-11-decode") -add_test(NR-DEC-cthead1.j2k-12-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/cthead1.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx") -add_test(NR-DEC-cthead1.j2k-12-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-cthead1.j2k-12-decode-md5 PROPERTIES DEPENDS "NR-DEC-cthead1.j2k-12-decode") -add_test(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/CT_Phillips_JPEG2K_Decompr_Problem.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx") -add_test(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 PROPERTIES DEPENDS "NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode") -add_test(NR-DEC-illegalcolortransform.j2k-14-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/illegalcolortransform.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx") -add_test(NR-DEC-illegalcolortransform.j2k-14-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-illegalcolortransform.j2k-14-decode-md5 PROPERTIES DEPENDS "NR-DEC-illegalcolortransform.j2k-14-decode") -add_test(NR-DEC-j2k32.j2k-15-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/j2k32.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx") -add_test(NR-DEC-j2k32.j2k-15-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-j2k32.j2k-15-decode-md5 PROPERTIES DEPENDS "NR-DEC-j2k32.j2k-15-decode") -add_test(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kakadu_v4-4_openjpegv2_broken.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx") -add_test(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode-md5 PROPERTIES DEPENDS "NR-DEC-kakadu_v4-4_openjpegv2_broken.j2k-16-decode") -add_test(NR-DEC-MarkerIsNotCompliant.j2k-17-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/MarkerIsNotCompliant.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx") -add_test(NR-DEC-MarkerIsNotCompliant.j2k-17-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-MarkerIsNotCompliant.j2k-17-decode-md5 PROPERTIES DEPENDS "NR-DEC-MarkerIsNotCompliant.j2k-17-decode") -add_test(NR-DEC-Marrin.jp2-18-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Marrin.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx") -add_test(NR-DEC-Marrin.jp2-18-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-Marrin.jp2-18-decode-md5 PROPERTIES DEPENDS "NR-DEC-Marrin.jp2-18-decode") -add_test(NR-DEC-merged.jp2-19-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/merged.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx") -add_test(NR-DEC-merged.jp2-19-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-merged.jp2-19-decode-md5 PROPERTIES DEPENDS "NR-DEC-merged.jp2-19-decode") -add_test(NR-DEC-movie_00000.j2k-20-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00000.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx") -add_test(NR-DEC-movie_00000.j2k-20-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-movie_00000.j2k-20-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00000.j2k-20-decode") -add_test(NR-DEC-movie_00001.j2k-21-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00001.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx") -add_test(NR-DEC-movie_00001.j2k-21-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-movie_00001.j2k-21-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00001.j2k-21-decode") -add_test(NR-DEC-movie_00002.j2k-22-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00002.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx") -add_test(NR-DEC-movie_00002.j2k-22-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-movie_00002.j2k-22-decode-md5 PROPERTIES DEPENDS "NR-DEC-movie_00002.j2k-22-decode") -add_test(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-j2k.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx") -add_test(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-orb-blue10-lin-j2k.j2k-23-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-lin-j2k.j2k-23-decode") -add_test(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-jp2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx") -add_test(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-orb-blue10-lin-jp2.jp2-24-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-lin-jp2.jp2-24-decode") -add_test(NR-DEC-orb-blue10-win-j2k.j2k-25-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-j2k.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx") -add_test(NR-DEC-orb-blue10-win-j2k.j2k-25-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-orb-blue10-win-j2k.j2k-25-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-win-j2k.j2k-25-decode") -add_test(NR-DEC-orb-blue10-win-jp2.jp2-26-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-jp2.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx") -add_test(NR-DEC-orb-blue10-win-jp2.jp2-26-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-orb-blue10-win-jp2.jp2-26-decode-md5 PROPERTIES DEPENDS "NR-DEC-orb-blue10-win-jp2.jp2-26-decode") -add_test(NR-DEC-relax.jp2-27-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/relax.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx") -add_test(NR-DEC-relax.jp2-27-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-relax.jp2-27-decode-md5 PROPERTIES DEPENDS "NR-DEC-relax.jp2-27-decode") -add_test(NR-DEC-test_lossless.j2k-28-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/test_lossless.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx") -add_test(NR-DEC-test_lossless.j2k-28-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-test_lossless.j2k-28-decode-md5 PROPERTIES DEPENDS "NR-DEC-test_lossless.j2k-28-decode") -add_test(NR-DEC-text_GBR.jp2-29-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/text_GBR.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx") -add_test(NR-DEC-text_GBR.jp2-29-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-text_GBR.jp2-29-decode-md5 PROPERTIES DEPENDS "NR-DEC-text_GBR.jp2-29-decode") -add_test(NR-DEC-pacs.ge.j2k-30-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pacs.ge.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx") -add_test(NR-DEC-pacs.ge.j2k-30-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-pacs.ge.j2k-30-decode-md5 PROPERTIES DEPENDS "NR-DEC-pacs.ge.j2k-30-decode") -add_test(NR-DEC-kodak_2layers_lrcp.j2c-31-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx") -add_test(NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 PROPERTIES DEPENDS "NR-DEC-kodak_2layers_lrcp.j2c-31-decode") -add_test(NR-DEC-kodak_2layers_lrcp.j2c-32-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx" "-l" "2") -add_test(NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 PROPERTIES DEPENDS "NR-DEC-kodak_2layers_lrcp.j2c-32-decode") -add_test(NR-DEC-issue104_jpxstream.jp2-33-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue104_jpxstream.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx") -add_test(NR-DEC-issue104_jpxstream.jp2-33-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue104_jpxstream.jp2-33-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue104_jpxstream.jp2-33-decode") -add_test(NR-DEC-mem-b2ace68c-1381.jp2-34-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2ace68c-1381.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2ace68c-1381.jp2.pgx") -set_tests_properties(NR-DEC-mem-b2ace68c-1381.jp2-34-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-mem-b2b86b74-2753.jp2-35-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2b86b74-2753.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx") -add_test(NR-DEC-mem-b2b86b74-2753.jp2-35-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-mem-b2b86b74-2753.jp2-35-decode-md5 PROPERTIES DEPENDS "NR-DEC-mem-b2b86b74-2753.jp2-35-decode") -add_test(NR-DEC-gdal_fuzzer_unchecked_numresolutions.jp2-36-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_unchecked_numresolutions.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_unchecked_numresolutions.pgx") -set_tests_properties(NR-DEC-gdal_fuzzer_unchecked_numresolutions.jp2-36-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2-37-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.pgx") -set_tests_properties(NR-DEC-gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2-37-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-gdal_fuzzer_check_number_of_tiles.jp2-38-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_number_of_tiles.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_number_of_tiles.pgx") -set_tests_properties(NR-DEC-gdal_fuzzer_check_number_of_tiles.jp2-38-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-gdal_fuzzer_check_comp_dx_dy.jp2-39-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_comp_dx_dy.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_comp_dx_dy.pgx") -set_tests_properties(NR-DEC-gdal_fuzzer_check_comp_dx_dy.jp2-39-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-file409752.jp2-40-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/file409752.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx") -add_test(NR-DEC-file409752.jp2-40-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-file409752.jp2-40-decode-md5 PROPERTIES DEPENDS "NR-DEC-file409752.jp2-40-decode") -add_test(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue188_beach_64bitsbox.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx") -add_test(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue188_beach_64bitsbox.jp2-41-decode") -add_test(NR-DEC-issue206_image-000.jp2-42-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue206_image-000.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx") -add_test(NR-DEC-issue206_image-000.jp2-42-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue206_image-000.jp2-42-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue206_image-000.jp2-42-decode") -add_test(NR-DEC-issue205.jp2-43-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx") -add_test(NR-DEC-issue205.jp2-43-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue205.jp2-43-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue205.jp2-43-decode") -add_test(NR-DEC-451.pdf.SIGSEGV.5b5.3723.jp2-44-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.5b5.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.5b5.3723.jp2.pgx") -set_tests_properties(NR-DEC-451.pdf.SIGSEGV.5b5.3723.jp2-44-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-1888.pdf.asan.35.988.jp2-45-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1888.pdf.asan.35.988.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1888.pdf.asan.35.988.jp2.pgx") -set_tests_properties(NR-DEC-1888.pdf.asan.35.988.jp2-45-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-2539.pdf.SIGFPE.706.1712.jp2-46-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2539.pdf.SIGFPE.706.1712.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2539.pdf.SIGFPE.706.1712.jp2.pgx") -set_tests_properties(NR-DEC-2539.pdf.SIGFPE.706.1712.jp2-46-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-2236.pdf.SIGSEGV.398.1376.jp2-47-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2236.pdf.SIGSEGV.398.1376.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2236.pdf.SIGSEGV.398.1376.jp2.pgx") -set_tests_properties(NR-DEC-2236.pdf.SIGSEGV.398.1376.jp2-47-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-1336.pdf.asan.47.376.jp2-48-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1336.pdf.asan.47.376.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1336.pdf.asan.47.376.jp2.pgx") -set_tests_properties(NR-DEC-1336.pdf.asan.47.376.jp2-48-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-1851.pdf.SIGSEGV.ce9.948.jp2-49-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1851.pdf.SIGSEGV.ce9.948.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1851.pdf.SIGSEGV.ce9.948.jp2.pgx") -set_tests_properties(NR-DEC-1851.pdf.SIGSEGV.ce9.948.jp2-49-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-4149.pdf.SIGSEGV.cf7.3501.jp2-50-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4149.pdf.SIGSEGV.cf7.3501.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx") -set_tests_properties(NR-DEC-4149.pdf.SIGSEGV.cf7.3501.jp2-50-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-4035.pdf.SIGSEGV.d8b.3375.jp2-51-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4035.pdf.SIGSEGV.d8b.3375.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx") -set_tests_properties(NR-DEC-4035.pdf.SIGSEGV.d8b.3375.jp2-51-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2977.pdf.asan.67.2198.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2977.pdf.asan.67.2198.jp2.pgx") -set_tests_properties(NR-DEC-2977.pdf.asan.67.2198.jp2-52-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-451.pdf.SIGSEGV.ce9.3723.jp2-53-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.ce9.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.ce9.3723.jp2.pgx") -set_tests_properties(NR-DEC-451.pdf.SIGSEGV.ce9.3723.jp2-53-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-3635.pdf.asan.77.2930.jp2-54-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3635.pdf.asan.77.2930.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3635.pdf.asan.77.2930.jp2.pgx") -set_tests_properties(NR-DEC-3635.pdf.asan.77.2930.jp2-54-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-1802.pdf.SIGSEGV.36e.894.jp2-55-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1802.pdf.SIGSEGV.36e.894.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1802.pdf.SIGSEGV.36e.894.jp2.pgx") -set_tests_properties(NR-DEC-1802.pdf.SIGSEGV.36e.894.jp2-55-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-451.pdf.SIGSEGV.f4c.3723.jp2-56-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.f4c.3723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.f4c.3723.jp2.pgx") -set_tests_properties(NR-DEC-451.pdf.SIGSEGV.f4c.3723.jp2-56-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-2.pdf.SIGFPE.706.1112.jp2-57-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2.pdf.SIGFPE.706.1112.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2.pdf.SIGFPE.706.1112.jp2.pgx") -set_tests_properties(NR-DEC-2.pdf.SIGFPE.706.1112.jp2-57-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2-58-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx") -set_tests_properties(NR-DEC-147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2-58-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2-59-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2") -set_tests_properties(NR-DEC-4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2-59-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue228.j2k-60-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue228.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx") -add_test(NR-DEC-issue228.j2k-60-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue228.j2k-60-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue228.j2k-60-decode") -add_test(NR-DEC-27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc-61-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx") -set_tests_properties(NR-DEC-27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc-61-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2-62-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx") -set_tests_properties(NR-DEC-26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2-62-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2-63-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx") -set_tests_properties(NR-DEC-0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2-63-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc-64-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx") -set_tests_properties(NR-DEC-3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc-64-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue254.jp2-65-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue254.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx") -add_test(NR-DEC-issue254.jp2-65-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue254.jp2-65-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue254.jp2-65-decode") -add_test(NR-DEC-issue142.j2k-66-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue142.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx") -add_test(NR-DEC-issue142.j2k-66-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue142.j2k-66-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue142.j2k-66-decode") -add_test(NR-DEC-issue134.jp2-67-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue134.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx") -add_test(NR-DEC-issue134.jp2-67-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue134.jp2-67-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue134.jp2-67-decode") -add_test(NR-DEC-issue135.j2k-68-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue135.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx") -add_test(NR-DEC-issue135.j2k-68-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue135.j2k-68-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue135.j2k-68-decode") -add_test(NR-DEC-issue208.jp2-69-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue208.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx") -add_test(NR-DEC-issue208.jp2-69-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue208.jp2-69-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue208.jp2-69-decode") -add_test(NR-DEC-issue211.jp2-70-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue211.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx") -add_test(NR-DEC-issue211.jp2-70-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue211.jp2-70-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue211.jp2-70-decode") -add_test(NR-DEC-issue171.jp2-71-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue171.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx") -add_test(NR-DEC-issue171.jp2-71-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue171.jp2-71-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue171.jp2-71-decode") -add_test(NR-DEC-issue165.jp2-72-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue165.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue165.jp2.pgx") -set_tests_properties(NR-DEC-issue165.jp2-72-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-broken.jpc-73-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken.jpc" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken.jpc.pgx") -set_tests_properties(NR-DEC-broken.jpc-73-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue226.j2k-74-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue226.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx") -add_test(NR-DEC-issue226.j2k-74-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue226.j2k-74-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue226.j2k-74-decode") -add_test(NR-DEC-edf_c2_1103421.jp2-75-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1103421.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1103421.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1103421.jp2-75-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1178956.jp2-76-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1178956.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1178956.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1178956.jp2-76-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1000290.jp2-77-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000290.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000290.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1000290.jp2-77-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1000691.jp2-78-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000691.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000691.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1000691.jp2-78-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_20.jp2-79-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_20.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_20.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_20.jp2-79-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1377017.jp2-80-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1377017.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1377017.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1377017.jp2-80-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1002767.jp2-81-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1002767.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1002767.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1002767.jp2-81-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_10025.jp2-82-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_10025.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_10025.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_10025.jp2-82-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1000234.jp2-83-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000234.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000234.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1000234.jp2-83-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_225881.jp2-84-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_225881.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_225881.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_225881.jp2-84-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1000671.jp2-85-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000671.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000671.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1000671.jp2-85-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1013627.jp2-86-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1013627.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1013627.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1013627.jp2-86-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1015644.jp2-87-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1015644.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1015644.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1015644.jp2-87-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_101463.jp2-88-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_101463.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_101463.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_101463.jp2-88-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1674177.jp2-89-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1674177.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1674177.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1674177.jp2-89-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-edf_c2_1673169.jp2-90-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1673169.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1673169.jp2.pgx") -set_tests_properties(NR-DEC-edf_c2_1673169.jp2-90-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue362-2863.jp2-91-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2863.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2863.jp2.pgx") -set_tests_properties(NR-DEC-issue362-2863.jp2-91-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue362-2866.jp2-92-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2866.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2866.jp2.pgx") -set_tests_properties(NR-DEC-issue362-2866.jp2-92-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue362-2894.jp2-93-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2894.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2894.jp2.pgx") -set_tests_properties(NR-DEC-issue362-2894.jp2-93-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue363-4723.jp2-94-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4723.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4723.jp2.pgx") -set_tests_properties(NR-DEC-issue363-4723.jp2-94-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue363-4740.jp2-95-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4740.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4740.jp2.pgx") -set_tests_properties(NR-DEC-issue363-4740.jp2-95-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue363-4792.jp2-96-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4792.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4792.jp2.pgx") -set_tests_properties(NR-DEC-issue363-4792.jp2-96-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue390.jp2-97-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue390.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue390.jp2.pgx") -set_tests_properties(NR-DEC-issue390.jp2-97-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue391.jp2-98-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue391.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue391.jp2.pgx") -set_tests_properties(NR-DEC-issue391.jp2-98-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue400.jp2-99-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue400.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue400.jp2.pgx") -set_tests_properties(NR-DEC-issue400.jp2-99-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue413.jp2-100-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue413.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue413.jp2.pgx") -set_tests_properties(NR-DEC-issue413.jp2-100-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue364-38.jp2-101-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-38.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-38.jp2.pgx") -set_tests_properties(NR-DEC-issue364-38.jp2-101-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue364-903.jp2-102-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-903.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-903.jp2.pgx") -set_tests_properties(NR-DEC-issue364-903.jp2-102-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue393.jp2-103-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue393.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue393.jp2.pgx") -set_tests_properties(NR-DEC-issue393.jp2-103-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue395.jp2-104-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue395.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue395.jp2.pgx") -set_tests_properties(NR-DEC-issue395.jp2-104-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue397.jp2-105-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue397.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue397.jp2.pgx") -set_tests_properties(NR-DEC-issue397.jp2-105-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue399.j2k-106-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue399.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx") -add_test(NR-DEC-issue399.j2k-106-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue399.j2k-106-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue399.j2k-106-decode") -add_test(NR-DEC-issue408.jp2-107-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue408.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue408.jp2.pgx") -set_tests_properties(NR-DEC-issue408.jp2-107-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue412.jp2-108-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx") -add_test(NR-DEC-issue412.jp2-108-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue412.jp2-108-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue412.jp2-108-decode") -add_test(NR-DEC-issue412.jp2-109-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx" "-t" "0") -add_test(NR-DEC-issue412.jp2-109-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue412.jp2-109-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue412.jp2-109-decode") -add_test(NR-DEC-issue414.jp2-110-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue414.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx") -add_test(NR-DEC-issue414.jp2-110-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue414.jp2-110-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue414.jp2-110-decode") -add_test(NR-DEC-issue418.jp2-111-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue418.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue418.jp2.pgx") -set_tests_properties(NR-DEC-issue418.jp2-111-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue420.jp2-112-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue420.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue420.jp2.pgx") -set_tests_properties(NR-DEC-issue420.jp2-112-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue411-ycc444.jp2-113-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc444.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx") -add_test(NR-DEC-issue411-ycc444.jp2-113-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue411-ycc444.jp2-113-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc444.jp2-113-decode") -add_test(NR-DEC-issue411-ycc422.jp2-114-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc422.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx") -add_test(NR-DEC-issue411-ycc422.jp2-114-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue411-ycc422.jp2-114-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc422.jp2-114-decode") -add_test(NR-DEC-issue411-ycc420.jp2-115-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc420.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx") -add_test(NR-DEC-issue411-ycc420.jp2-115-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue411-ycc420.jp2-115-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue411-ycc420.jp2-115-decode") -add_test(NR-DEC-issue429.jp2-116-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue429.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue429.jp2.pgx") -set_tests_properties(NR-DEC-issue429.jp2-116-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue432.jp2-117-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue432.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue432.jp2.pgx") -set_tests_properties(NR-DEC-issue432.jp2-117-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue427-null-image-size.jp2-118-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-null-image-size.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-null-image-size.jp2.pgx") -set_tests_properties(NR-DEC-issue427-null-image-size.jp2-118-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue427-illegal-tile-offset.jp2-119-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-illegal-tile-offset.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-illegal-tile-offset.jp2.pgx") -set_tests_properties(NR-DEC-issue427-illegal-tile-offset.jp2-119-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue458.jp2-120-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue458.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx") -add_test(NR-DEC-issue458.jp2-120-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue458.jp2-120-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue458.jp2-120-decode") -add_test(NR-DEC-issue476.jp2-121-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue476.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue476.jp2.pgx") -set_tests_properties(NR-DEC-issue476.jp2-121-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue475.jp2-122-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue475.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue475.jp2.pgx") -set_tests_properties(NR-DEC-issue475.jp2-122-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue495.jp2-123-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue495.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue495.jp2.pgx") -set_tests_properties(NR-DEC-issue495.jp2-123-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-p1_04.j2k-124-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png" "-d" "0,0,1024,1024") -add_test(NR-DEC-p1_04.j2k-124-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-124-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-124-decode") -add_test(NR-DEC-p1_04.j2k-125-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png" "-d" "512,640,640,768") -add_test(NR-DEC-p1_04.j2k-125-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-125-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-125-decode") -add_test(NR-DEC-p1_04.j2k-126-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png" "-d" "896,896,1024,1024") -add_test(NR-DEC-p1_04.j2k-126-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-126-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-126-decode") -add_test(NR-DEC-p1_04.j2k-127-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png" "-d" "100,500,300,800") -add_test(NR-DEC-p1_04.j2k-127-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-127-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-127-decode") -add_test(NR-DEC-p1_04.j2k-128-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png" "-d" "260,520,360,600") -add_test(NR-DEC-p1_04.j2k-128-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-128-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-128-decode") -add_test(NR-DEC-p1_04.j2k-129-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png" "-d" "260,520,360,660") -add_test(NR-DEC-p1_04.j2k-129-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-129-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-129-decode") -add_test(NR-DEC-p1_04.j2k-130-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png" "-d" "360,520,400,600") -add_test(NR-DEC-p1_04.j2k-130-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-130-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-130-decode") -add_test(NR-DEC-p1_04.j2k-131-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png" "-d" "0,0,1024,1024" "-r" "2") -add_test(NR-DEC-p1_04.j2k-131-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-131-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-131-decode") -add_test(NR-DEC-p1_04.j2k-132-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png" "-d" "512,640,640,768" "-r" "2") -add_test(NR-DEC-p1_04.j2k-132-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-132-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-132-decode") -add_test(NR-DEC-p1_04.j2k-133-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png" "-d" "896,896,1024,1024" "-r" "2") -add_test(NR-DEC-p1_04.j2k-133-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-133-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-133-decode") -add_test(NR-DEC-p1_04.j2k-134-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png" "-d" "100,500,300,800" "-r" "2") -add_test(NR-DEC-p1_04.j2k-134-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-134-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-134-decode") -add_test(NR-DEC-p1_04.j2k-135-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png" "-d" "260,520,360,600" "-r" "2") -add_test(NR-DEC-p1_04.j2k-135-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-135-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-135-decode") -add_test(NR-DEC-p1_04.j2k-136-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png" "-d" "260,520,360,660" "-r" "2") -add_test(NR-DEC-p1_04.j2k-136-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-136-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-136-decode") -add_test(NR-DEC-p1_04.j2k-137-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png" "-d" "360,520,400,600" "-r" "2") -add_test(NR-DEC-p1_04.j2k-137-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-137-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-137-decode") -add_test(NR-DEC-p1_04.j2k-138-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png" "-t" "63") -add_test(NR-DEC-p1_04.j2k-138-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-138-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-138-decode") -add_test(NR-DEC-p1_04.j2k-139-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png" "-t" "63" "-r" "2") -add_test(NR-DEC-p1_04.j2k-139-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-139-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-139-decode") -add_test(NR-DEC-p1_04.j2k-140-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png" "-t" "12") -add_test(NR-DEC-p1_04.j2k-140-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-140-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-140-decode") -add_test(NR-DEC-p1_04.j2k-141-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png" "-t" "12" "-r" "1") -add_test(NR-DEC-p1_04.j2k-141-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_04.j2k-141-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_04.j2k-141-decode") -add_test(NR-DEC-p1_06.j2k-142-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png" "-d" "0,0,12,12") -add_test(NR-DEC-p1_06.j2k-142-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-142-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-142-decode") -add_test(NR-DEC-p1_06.j2k-143-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png" "-d" "1,8,8,11") -add_test(NR-DEC-p1_06.j2k-143-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-143-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-143-decode") -add_test(NR-DEC-p1_06.j2k-144-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png" "-d" "9,9,12,12") -add_test(NR-DEC-p1_06.j2k-144-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-144-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-144-decode") -add_test(NR-DEC-p1_06.j2k-145-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png" "-d" "10,4,12,10") -add_test(NR-DEC-p1_06.j2k-145-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-145-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-145-decode") -add_test(NR-DEC-p1_06.j2k-146-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png" "-d" "3,3,9,9") -add_test(NR-DEC-p1_06.j2k-146-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-146-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-146-decode") -add_test(NR-DEC-p1_06.j2k-147-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png" "-d" "4,4,7,7") -add_test(NR-DEC-p1_06.j2k-147-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-147-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-147-decode") -add_test(NR-DEC-p1_06.j2k-148-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png" "-d" "4,4,5,5") -add_test(NR-DEC-p1_06.j2k-148-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-148-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-148-decode") -add_test(NR-DEC-p1_06.j2k-149-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png" "-d" "0,0,12,12" "-r" "1") -add_test(NR-DEC-p1_06.j2k-149-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-149-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-149-decode") -add_test(NR-DEC-p1_06.j2k-150-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png" "-d" "1,8,8,11" "-r" "1") -add_test(NR-DEC-p1_06.j2k-150-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-150-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-150-decode") -add_test(NR-DEC-p1_06.j2k-151-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png" "-d" "9,9,12,12" "-r" "1") -add_test(NR-DEC-p1_06.j2k-151-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-151-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-151-decode") -add_test(NR-DEC-p1_06.j2k-152-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png" "-d" "10,4,12,10" "-r" "1") -add_test(NR-DEC-p1_06.j2k-152-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-152-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-152-decode") -add_test(NR-DEC-p1_06.j2k-153-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png" "-d" "3,3,9,9" "-r" "1") -add_test(NR-DEC-p1_06.j2k-153-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-153-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-153-decode") -add_test(NR-DEC-p1_06.j2k-154-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png" "-d" "4,4,7,7" "-r" "1") -add_test(NR-DEC-p1_06.j2k-154-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-154-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-154-decode") -add_test(NR-DEC-p1_06.j2k-155-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png" "-d" "4,4,5,5" "-r" "1") -add_test(NR-DEC-p1_06.j2k-155-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-155-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-155-decode") -add_test(NR-DEC-p1_06.j2k-156-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png" "-d" "9,9,12,12" "-r" "2") -add_test(NR-DEC-p1_06.j2k-156-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-156-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-156-decode") -add_test(NR-DEC-p1_06.j2k-157-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png" "-t" "0") -add_test(NR-DEC-p1_06.j2k-157-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-157-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-157-decode") -add_test(NR-DEC-p1_06.j2k-158-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png" "-t" "5") -add_test(NR-DEC-p1_06.j2k-158-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-158-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-158-decode") -add_test(NR-DEC-p1_06.j2k-159-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png" "-t" "9") -add_test(NR-DEC-p1_06.j2k-159-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-159-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-159-decode") -add_test(NR-DEC-p1_06.j2k-160-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png" "-t" "15") -add_test(NR-DEC-p1_06.j2k-160-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-160-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-160-decode") -add_test(NR-DEC-p1_06.j2k-161-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png" "-t" "0" "-r" "2") -add_test(NR-DEC-p1_06.j2k-161-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-161-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-161-decode") -add_test(NR-DEC-p1_06.j2k-162-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png" "-t" "5" "-r" "2") -add_test(NR-DEC-p1_06.j2k-162-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-162-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-162-decode") -add_test(NR-DEC-p1_06.j2k-163-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png" "-t" "9" "-r" "2") -add_test(NR-DEC-p1_06.j2k-163-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-163-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-163-decode") -add_test(NR-DEC-p1_06.j2k-164-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png" "-t" "15" "-r" "2") -add_test(NR-DEC-p1_06.j2k-164-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-164-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-164-decode") -add_test(NR-DEC-p1_06.j2k-165-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png" "-r" "4") -add_test(NR-DEC-p1_06.j2k-165-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p1_06.j2k-165-decode-md5 PROPERTIES DEPENDS "NR-DEC-p1_06.j2k-165-decode") -add_test(NR-DEC-p0_04.j2k-166-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png" "-d" "0,0,256,256") -add_test(NR-DEC-p0_04.j2k-166-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-166-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-166-decode") -add_test(NR-DEC-p0_04.j2k-167-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png" "-d" "128,0,256,128") -add_test(NR-DEC-p0_04.j2k-167-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-167-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-167-decode") -add_test(NR-DEC-p0_04.j2k-168-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png" "-d" "50,10,120,200") -add_test(NR-DEC-p0_04.j2k-168-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-168-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-168-decode") -add_test(NR-DEC-p0_04.j2k-169-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png" "-d" "10,150,190,210") -add_test(NR-DEC-p0_04.j2k-169-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-169-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-169-decode") -add_test(NR-DEC-p0_04.j2k-170-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png" "-d" "100,80,200,150") -add_test(NR-DEC-p0_04.j2k-170-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-170-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-170-decode") -add_test(NR-DEC-p0_04.j2k-171-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png" "-d" "150,20,200,50") -add_test(NR-DEC-p0_04.j2k-171-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-171-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-171-decode") -add_test(NR-DEC-p0_04.j2k-172-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png" "-d" "0,0,256,256" "-r" "2") -add_test(NR-DEC-p0_04.j2k-172-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-172-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-172-decode") -add_test(NR-DEC-p0_04.j2k-173-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png" "-d" "128,0,256,128" "-r" "2") -add_test(NR-DEC-p0_04.j2k-173-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-173-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-173-decode") -add_test(NR-DEC-p0_04.j2k-174-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png" "-d" "50,10,120,200" "-r" "2") -add_test(NR-DEC-p0_04.j2k-174-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-174-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-174-decode") -add_test(NR-DEC-p0_04.j2k-175-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png" "-d" "10,150,190,210" "-r" "2") -add_test(NR-DEC-p0_04.j2k-175-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-175-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-175-decode") -add_test(NR-DEC-p0_04.j2k-176-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png" "-d" "100,80,200,150" "-r" "2") -add_test(NR-DEC-p0_04.j2k-176-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-176-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-176-decode") -add_test(NR-DEC-p0_04.j2k-177-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png" "-d" "150,20,200,50" "-r" "2") -add_test(NR-DEC-p0_04.j2k-177-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_04.j2k-177-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_04.j2k-177-decode") -add_test(NR-DEC-a1_mono.j2c-178-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif" "-p" "1S") -add_test(NR-DEC-a1_mono.j2c-178-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-178-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-178-decode") -add_test(NR-DEC-a1_mono.j2c-179-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif" "-p" "2S") -add_test(NR-DEC-a1_mono.j2c-179-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-179-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-179-decode") -add_test(NR-DEC-a1_mono.j2c-180-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif" "-p" "4S") -add_test(NR-DEC-a1_mono.j2c-180-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-180-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-180-decode") -add_test(NR-DEC-a1_mono.j2c-181-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif" "-p" "6S") -add_test(NR-DEC-a1_mono.j2c-181-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-181-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-181-decode") -add_test(NR-DEC-a1_mono.j2c-182-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif" "-p" "8S") -add_test(NR-DEC-a1_mono.j2c-182-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-182-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-182-decode") -add_test(NR-DEC-a1_mono.j2c-183-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif" "-p" "10S") -add_test(NR-DEC-a1_mono.j2c-183-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-183-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-183-decode") -add_test(NR-DEC-a1_mono.j2c-184-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif" "-p" "12S") -add_test(NR-DEC-a1_mono.j2c-184-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-184-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-184-decode") -add_test(NR-DEC-a1_mono.j2c-185-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif" "-p" "14S") -add_test(NR-DEC-a1_mono.j2c-185-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-185-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-185-decode") -add_test(NR-DEC-a1_mono.j2c-186-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif" "-p" "16S") -add_test(NR-DEC-a1_mono.j2c-186-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-186-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-186-decode") -add_test(NR-DEC-basn4a08.jp2-187-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif" "-p" "1S") -add_test(NR-DEC-basn4a08.jp2-187-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-187-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-187-decode") -add_test(NR-DEC-basn4a08.jp2-188-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif" "-p" "2S") -add_test(NR-DEC-basn4a08.jp2-188-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-188-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-188-decode") -add_test(NR-DEC-basn4a08.jp2-189-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif" "-p" "4S") -add_test(NR-DEC-basn4a08.jp2-189-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-189-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-189-decode") -add_test(NR-DEC-basn4a08.jp2-190-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif" "-p" "6S") -add_test(NR-DEC-basn4a08.jp2-190-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-190-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-190-decode") -add_test(NR-DEC-basn4a08.jp2-191-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif" "-p" "8S") -add_test(NR-DEC-basn4a08.jp2-191-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-191-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-191-decode") -add_test(NR-DEC-basn4a08.jp2-192-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif" "-p" "10S") -add_test(NR-DEC-basn4a08.jp2-192-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-192-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-192-decode") -add_test(NR-DEC-basn4a08.jp2-193-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif" "-p" "12S") -add_test(NR-DEC-basn4a08.jp2-193-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-193-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-193-decode") -add_test(NR-DEC-basn4a08.jp2-194-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif" "-p" "14S") -add_test(NR-DEC-basn4a08.jp2-194-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-194-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-194-decode") -add_test(NR-DEC-basn4a08.jp2-195-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif" "-p" "16S") -add_test(NR-DEC-basn4a08.jp2-195-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-195-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-195-decode") -add_test(NR-DEC-p0_14.j2k-196-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif" "-p" "1S") -add_test(NR-DEC-p0_14.j2k-196-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-196-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-196-decode") -add_test(NR-DEC-p0_14.j2k-197-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif" "-p" "2S") -add_test(NR-DEC-p0_14.j2k-197-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-197-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-197-decode") -add_test(NR-DEC-p0_14.j2k-198-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif" "-p" "4S") -add_test(NR-DEC-p0_14.j2k-198-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-198-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-198-decode") -add_test(NR-DEC-p0_14.j2k-199-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif" "-p" "6S") -add_test(NR-DEC-p0_14.j2k-199-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-199-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-199-decode") -add_test(NR-DEC-p0_14.j2k-200-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif" "-p" "8S") -add_test(NR-DEC-p0_14.j2k-200-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-200-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-200-decode") -add_test(NR-DEC-p0_14.j2k-201-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif" "-p" "10S") -add_test(NR-DEC-p0_14.j2k-201-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-201-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-201-decode") -add_test(NR-DEC-p0_14.j2k-202-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif" "-p" "12S") -add_test(NR-DEC-p0_14.j2k-202-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-202-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-202-decode") -add_test(NR-DEC-p0_14.j2k-203-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif" "-p" "14S") -add_test(NR-DEC-p0_14.j2k-203-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-203-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-203-decode") -add_test(NR-DEC-p0_14.j2k-204-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif" "-p" "16S") -add_test(NR-DEC-p0_14.j2k-204-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-204-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-204-decode") -add_test(NR-DEC-basn6a08.jp2-205-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif" "-p" "1S") -add_test(NR-DEC-basn6a08.jp2-205-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-205-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-205-decode") -add_test(NR-DEC-basn6a08.jp2-206-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif" "-p" "2S") -add_test(NR-DEC-basn6a08.jp2-206-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-206-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-206-decode") -add_test(NR-DEC-basn6a08.jp2-207-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif" "-p" "4S") -add_test(NR-DEC-basn6a08.jp2-207-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-207-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-207-decode") -add_test(NR-DEC-basn6a08.jp2-208-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif" "-p" "6S") -add_test(NR-DEC-basn6a08.jp2-208-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-208-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-208-decode") -add_test(NR-DEC-basn6a08.jp2-209-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif" "-p" "8S") -add_test(NR-DEC-basn6a08.jp2-209-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-209-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-209-decode") -add_test(NR-DEC-basn6a08.jp2-210-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif" "-p" "10S") -add_test(NR-DEC-basn6a08.jp2-210-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-210-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-210-decode") -add_test(NR-DEC-basn6a08.jp2-211-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif" "-p" "12S") -add_test(NR-DEC-basn6a08.jp2-211-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-211-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-211-decode") -add_test(NR-DEC-basn6a08.jp2-212-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif" "-p" "14S") -add_test(NR-DEC-basn6a08.jp2-212-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-212-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-212-decode") -add_test(NR-DEC-basn6a08.jp2-213-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif" "-p" "16S") -add_test(NR-DEC-basn6a08.jp2-213-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-213-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-213-decode") -add_test(NR-DEC-issue235.jp2-214-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue235.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx") -add_test(NR-DEC-issue235.jp2-214-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue235.jp2-214-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue235.jp2-214-decode") -add_test(NR-DEC-a1_mono.j2c-215-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png" "-p" "1S") -add_test(NR-DEC-a1_mono.j2c-215-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-215-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-215-decode") -add_test(NR-DEC-a1_mono.j2c-216-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png" "-p" "2S") -add_test(NR-DEC-a1_mono.j2c-216-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-216-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-216-decode") -add_test(NR-DEC-a1_mono.j2c-217-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png" "-p" "4S") -add_test(NR-DEC-a1_mono.j2c-217-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-217-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-217-decode") -add_test(NR-DEC-a1_mono.j2c-218-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png" "-p" "6S") -add_test(NR-DEC-a1_mono.j2c-218-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-218-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-218-decode") -add_test(NR-DEC-a1_mono.j2c-219-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png" "-p" "8S") -add_test(NR-DEC-a1_mono.j2c-219-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-219-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-219-decode") -add_test(NR-DEC-a1_mono.j2c-220-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png" "-p" "10S") -add_test(NR-DEC-a1_mono.j2c-220-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-220-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-220-decode") -add_test(NR-DEC-a1_mono.j2c-221-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png" "-p" "12S") -add_test(NR-DEC-a1_mono.j2c-221-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-221-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-221-decode") -add_test(NR-DEC-a1_mono.j2c-222-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png" "-p" "14S") -add_test(NR-DEC-a1_mono.j2c-222-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-222-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-222-decode") -add_test(NR-DEC-a1_mono.j2c-223-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png" "-p" "16S") -add_test(NR-DEC-a1_mono.j2c-223-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-223-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-223-decode") -add_test(NR-DEC-basn4a08.jp2-224-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png" "-p" "1S") -add_test(NR-DEC-basn4a08.jp2-224-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-224-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-224-decode") -add_test(NR-DEC-basn4a08.jp2-225-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png" "-p" "2S") -add_test(NR-DEC-basn4a08.jp2-225-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-225-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-225-decode") -add_test(NR-DEC-basn4a08.jp2-226-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png" "-p" "4S") -add_test(NR-DEC-basn4a08.jp2-226-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-226-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-226-decode") -add_test(NR-DEC-basn4a08.jp2-227-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png" "-p" "6S") -add_test(NR-DEC-basn4a08.jp2-227-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-227-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-227-decode") -add_test(NR-DEC-basn4a08.jp2-228-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png" "-p" "8S") -add_test(NR-DEC-basn4a08.jp2-228-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-228-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-228-decode") -add_test(NR-DEC-basn4a08.jp2-229-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png" "-p" "10S") -add_test(NR-DEC-basn4a08.jp2-229-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-229-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-229-decode") -add_test(NR-DEC-basn4a08.jp2-230-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png" "-p" "12S") -add_test(NR-DEC-basn4a08.jp2-230-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-230-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-230-decode") -add_test(NR-DEC-basn4a08.jp2-231-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png" "-p" "14S") -add_test(NR-DEC-basn4a08.jp2-231-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-231-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-231-decode") -add_test(NR-DEC-basn4a08.jp2-232-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png" "-p" "16S") -add_test(NR-DEC-basn4a08.jp2-232-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-232-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-232-decode") -add_test(NR-DEC-p0_14.j2k-233-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png" "-p" "1S") -add_test(NR-DEC-p0_14.j2k-233-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-233-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-233-decode") -add_test(NR-DEC-p0_14.j2k-234-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png" "-p" "2S") -add_test(NR-DEC-p0_14.j2k-234-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-234-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-234-decode") -add_test(NR-DEC-p0_14.j2k-235-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png" "-p" "4S") -add_test(NR-DEC-p0_14.j2k-235-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-235-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-235-decode") -add_test(NR-DEC-p0_14.j2k-236-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png" "-p" "6S") -add_test(NR-DEC-p0_14.j2k-236-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-236-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-236-decode") -add_test(NR-DEC-p0_14.j2k-237-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png" "-p" "8S") -add_test(NR-DEC-p0_14.j2k-237-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-237-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-237-decode") -add_test(NR-DEC-p0_14.j2k-238-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png" "-p" "10S") -add_test(NR-DEC-p0_14.j2k-238-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-238-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-238-decode") -add_test(NR-DEC-p0_14.j2k-239-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png" "-p" "12S") -add_test(NR-DEC-p0_14.j2k-239-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-239-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-239-decode") -add_test(NR-DEC-p0_14.j2k-240-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png" "-p" "14S") -add_test(NR-DEC-p0_14.j2k-240-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-240-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-240-decode") -add_test(NR-DEC-p0_14.j2k-241-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png" "-p" "16S") -add_test(NR-DEC-p0_14.j2k-241-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-241-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-241-decode") -add_test(NR-DEC-basn6a08.jp2-242-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png" "-p" "1S") -add_test(NR-DEC-basn6a08.jp2-242-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-242-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-242-decode") -add_test(NR-DEC-basn6a08.jp2-243-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png" "-p" "2S") -add_test(NR-DEC-basn6a08.jp2-243-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-243-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-243-decode") -add_test(NR-DEC-basn6a08.jp2-244-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png" "-p" "4S") -add_test(NR-DEC-basn6a08.jp2-244-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-244-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-244-decode") -add_test(NR-DEC-basn6a08.jp2-245-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png" "-p" "6S") -add_test(NR-DEC-basn6a08.jp2-245-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-245-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-245-decode") -add_test(NR-DEC-basn6a08.jp2-246-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png" "-p" "8S") -add_test(NR-DEC-basn6a08.jp2-246-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-246-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-246-decode") -add_test(NR-DEC-basn6a08.jp2-247-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png" "-p" "10S") -add_test(NR-DEC-basn6a08.jp2-247-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-247-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-247-decode") -add_test(NR-DEC-basn6a08.jp2-248-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png" "-p" "12S") -add_test(NR-DEC-basn6a08.jp2-248-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-248-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-248-decode") -add_test(NR-DEC-basn6a08.jp2-249-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png" "-p" "14S") -add_test(NR-DEC-basn6a08.jp2-249-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-249-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-249-decode") -add_test(NR-DEC-basn6a08.jp2-250-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png" "-p" "16S") -add_test(NR-DEC-basn6a08.jp2-250-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-250-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-250-decode") -add_test(NR-DEC-v4dwt_interleave_h.gsr105.j2k-251-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/v4dwt_interleave_h.gsr105.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/v4dwt_interleave_h.gsr105.j2k.pgx") -set_tests_properties(NR-DEC-v4dwt_interleave_h.gsr105.j2k-251-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/dwt_interleave_h.gsr105.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx") -add_test(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode-md5 PROPERTIES DEPENDS "NR-DEC-dwt_interleave_h.gsr105.jp2-252-decode") -add_test(NR-DEC-issue205.jp2-253-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif") -add_test(NR-DEC-issue205.jp2-253-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue205.jp2-253-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue205.jp2-253-decode") -add_test(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue236-ESYCC-CDEF.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx") -add_test(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode") -add_test(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-090-CIELab.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx") -add_test(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue559-eci-090-CIELab.jp2-255-decode") -add_test(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-091-CIELab.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx") -add_test(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue559-eci-091-CIELab.jp2-256-decode") -add_test(NR-DEC-issue653-zero-unknownbox.jp2-257-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue653-zero-unknownbox.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png" "-p" "8S") -add_test(NR-DEC-issue653-zero-unknownbox.jp2-257-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue653-zero-unknownbox.jp2-257-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue653-zero-unknownbox.jp2-257-decode") -add_test(NR-DEC-a1_mono.j2c-258-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif" "-p" "3S") -add_test(NR-DEC-a1_mono.j2c-258-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-258-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-258-decode") -add_test(NR-DEC-a1_mono.j2c-259-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif" "-p" "5S") -add_test(NR-DEC-a1_mono.j2c-259-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-259-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-259-decode") -add_test(NR-DEC-a1_mono.j2c-260-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif" "-p" "7S") -add_test(NR-DEC-a1_mono.j2c-260-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-260-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-260-decode") -add_test(NR-DEC-a1_mono.j2c-261-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif" "-p" "9S") -add_test(NR-DEC-a1_mono.j2c-261-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-261-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-261-decode") -add_test(NR-DEC-a1_mono.j2c-262-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif" "-p" "11S") -add_test(NR-DEC-a1_mono.j2c-262-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-262-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-262-decode") -add_test(NR-DEC-a1_mono.j2c-263-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif" "-p" "13S") -add_test(NR-DEC-a1_mono.j2c-263-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-263-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-263-decode") -add_test(NR-DEC-a1_mono.j2c-264-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif" "-p" "15S") -add_test(NR-DEC-a1_mono.j2c-264-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-a1_mono.j2c-264-decode-md5 PROPERTIES DEPENDS "NR-DEC-a1_mono.j2c-264-decode") -add_test(NR-DEC-basn4a08.jp2-265-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif" "-p" "3S") -add_test(NR-DEC-basn4a08.jp2-265-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-265-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-265-decode") -add_test(NR-DEC-basn4a08.jp2-266-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif" "-p" "5S") -add_test(NR-DEC-basn4a08.jp2-266-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-266-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-266-decode") -add_test(NR-DEC-basn4a08.jp2-267-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif" "-p" "7S") -add_test(NR-DEC-basn4a08.jp2-267-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-267-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-267-decode") -add_test(NR-DEC-basn4a08.jp2-268-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif" "-p" "9S") -add_test(NR-DEC-basn4a08.jp2-268-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-268-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-268-decode") -add_test(NR-DEC-basn4a08.jp2-269-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif" "-p" "11S") -add_test(NR-DEC-basn4a08.jp2-269-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-269-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-269-decode") -add_test(NR-DEC-basn4a08.jp2-270-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif" "-p" "13S") -add_test(NR-DEC-basn4a08.jp2-270-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-270-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-270-decode") -add_test(NR-DEC-basn4a08.jp2-271-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif" "-p" "15S") -add_test(NR-DEC-basn4a08.jp2-271-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn4a08.jp2-271-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn4a08.jp2-271-decode") -add_test(NR-DEC-p0_14.j2k-272-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif" "-p" "3S") -add_test(NR-DEC-p0_14.j2k-272-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-272-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-272-decode") -add_test(NR-DEC-p0_14.j2k-273-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif" "-p" "5S") -add_test(NR-DEC-p0_14.j2k-273-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-273-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-273-decode") -add_test(NR-DEC-p0_14.j2k-274-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif" "-p" "7S") -add_test(NR-DEC-p0_14.j2k-274-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-274-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-274-decode") -add_test(NR-DEC-p0_14.j2k-275-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif" "-p" "9S") -add_test(NR-DEC-p0_14.j2k-275-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-275-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-275-decode") -add_test(NR-DEC-p0_14.j2k-276-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif" "-p" "11S") -add_test(NR-DEC-p0_14.j2k-276-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-276-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-276-decode") -add_test(NR-DEC-p0_14.j2k-277-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif" "-p" "13S") -add_test(NR-DEC-p0_14.j2k-277-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-277-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-277-decode") -add_test(NR-DEC-p0_14.j2k-278-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif" "-p" "15S") -add_test(NR-DEC-p0_14.j2k-278-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-p0_14.j2k-278-decode-md5 PROPERTIES DEPENDS "NR-DEC-p0_14.j2k-278-decode") -add_test(NR-DEC-basn6a08.jp2-279-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif" "-p" "3S") -add_test(NR-DEC-basn6a08.jp2-279-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-279-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-279-decode") -add_test(NR-DEC-basn6a08.jp2-280-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif" "-p" "5S") -add_test(NR-DEC-basn6a08.jp2-280-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-280-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-280-decode") -add_test(NR-DEC-basn6a08.jp2-281-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif" "-p" "7S") -add_test(NR-DEC-basn6a08.jp2-281-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-281-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-281-decode") -add_test(NR-DEC-basn6a08.jp2-282-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif" "-p" "9S") -add_test(NR-DEC-basn6a08.jp2-282-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-282-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-282-decode") -add_test(NR-DEC-basn6a08.jp2-283-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif" "-p" "11S") -add_test(NR-DEC-basn6a08.jp2-283-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-283-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-283-decode") -add_test(NR-DEC-basn6a08.jp2-284-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif" "-p" "13S") -add_test(NR-DEC-basn6a08.jp2-284-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-284-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-284-decode") -add_test(NR-DEC-basn6a08.jp2-285-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif" "-p" "15S") -add_test(NR-DEC-basn6a08.jp2-285-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-basn6a08.jp2-285-decode-md5 PROPERTIES DEPENDS "NR-DEC-basn6a08.jp2-285-decode") -add_test(NR-DEC-issue725.jp2-286-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue725.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue725.png") -set_tests_properties(NR-DEC-issue725.jp2-286-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue726.j2k-287-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue726.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png") -add_test(NR-DEC-issue726.j2k-287-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue726.j2k-287-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue726.j2k-287-decode") -add_test(NR-DEC-issue733.jp2-288-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue733.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue733.png") -set_tests_properties(NR-DEC-issue733.jp2-288-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue774.jp2-289-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue774.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue774.png") -set_tests_properties(NR-DEC-issue774.jp2-289-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue775.j2k-290-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775.png") -set_tests_properties(NR-DEC-issue775.j2k-290-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue775-2.j2k-291-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775-2.j2k" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775-2.png") -set_tests_properties(NR-DEC-issue775-2.j2k-291-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue818.jp2-292-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue818.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png") -add_test(NR-DEC-issue818.jp2-292-decode-md5 "/usr/bin/cmake" "-DREFFILE:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/md5refs.txt" "-DOUTFILENAME:STRING=/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png" "-P" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/nonregression/checkmd5refs.cmake") -set_tests_properties(NR-DEC-issue818.jp2-292-decode-md5 PROPERTIES DEPENDS "NR-DEC-issue818.jp2-292-decode") -add_test(NR-DEC-issue823.jp2-293-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue823.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue823.png") -set_tests_properties(NR-DEC-issue823.jp2-293-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue826.jp2-294-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue826.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue826.png") -set_tests_properties(NR-DEC-issue826.jp2-294-decode PROPERTIES WILL_FAIL "TRUE") -add_test(NR-DEC-issue820.jp2-295-decode "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/opj_decompress" "-i" "OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue820.jp2" "-o" "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue820.png") -set_tests_properties(NR-DEC-issue820.jp2-295-decode PROPERTIES WILL_FAIL "TRUE") diff --git a/build/tests/nonregression/test_suite.ctest b/build/tests/nonregression/test_suite.ctest deleted file mode 100644 index 31d1d30dd..000000000 --- a/build/tests/nonregression/test_suite.ctest +++ /dev/null @@ -1,576 +0,0 @@ -# This file list all the input commands of the tests run by the ctest command which -# are not related to the conformance files. -# -# For each line of this file (except line which begin with #) an opj_compress test or a -# opj_decompress is run and its related tests. -# + For encoder related tests = dump, compare dump to base, decode the encoded file with -# reference and compare the decoded file with the baseline decoded previously with -# ref decoder. -# + For decoder related tests = dump, compare dump to base, (TODO: compare outpout decoding -# image to base) -# -# Line begin with ! should failed (should be used for bad jpeg2000 file which should be -# gracefully rejected). Please add a short resume about why this file should be rejected. -# -# You can use OPJ_DATA_ROOT-NOTFOUND/input/nonregression and /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary cmake variable which refers to OPJ_DATA_ROOT -# repository. However you can use relative path or absolute path. - -# ENCODER TEST SUITE -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_0.j2k -r 200,50,10 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_1.j2k -q 30,35,40 -n 2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne1.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne1_2.j2k -q 30,35,40 -b 16,16 -c [64,64] -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_0.j2k -c [128,128],[128,128],[128,128] -r 100,20,2 -t 640,480 -b 32,32 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_1.j2k -t 127,127 -p PCRL -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_2.j2k -s 2,2 -SOP -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_3.j2k -EPH -M 38 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_4.j2k -d 150,300 -r 800 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes1.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes1.j2k -r 10 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cevennes2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cevennes2.jp2 -r 50 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Rome.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Rome.jp2 -q 30,35,50 -p LRCP -n 3 -# related to issue 5 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/random-issue-0005.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/random-issue-0005.tif.j2k -# related to issue 62 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-u.raw.j2k -F 512,512,1,16,u -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/tmp-issue-0062.raw -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/tmp-issue-0062-s.raw.j2k -F 512,512,1,16,s -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_24.j2k -cinema2K 24 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_24.j2k -cinema2K 24 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_24.j2k -cinema2K 24 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_4_2K_24_185_CBR_WB_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_4_2K_24_185_CBR_WB_000_C2K_48.j2k -cinema2K 48 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_5_2K_24_235_CBR_STEM24_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_5_2K_24_235_CBR_STEM24_000_C2K_48.j2k -cinema2K 48 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/X_6_2K_24_FULL_CBR_CIRCLE_000.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/X_6_2K_24_FULL_CBR_CIRCLE_000_C2K_48.j2k -cinema2K 48 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/ElephantDream_4K.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ElephantDream_4K_C4K.j2k -cinema4K -# issue 141 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141.rawl.j2k -F 2048,32,1,16,u -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue141.rawl -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue141-I.rawl.j2k -F 2048,32,1,16,u -I -# issue 46: -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2_5.j2k -c [64,64] -# issue 316 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue316.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue316.png.jp2 -# issue 416 (cdef for png with alpha) + issue 436 (MCT norm read buffer overflow for num comp > 3 + Issue 215 number of decomp levels -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2 -n 6 -# issue 203 BMP Files not handled properly -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-8bpp-width1.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-8bpp-width1.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-rle8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-y8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-y8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-y8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-y8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-34x34-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-34x34-bgr.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-35x35-bgr.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-35x35-bgr.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle8.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle8.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-y-rle4.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-y-rle4.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr-rle4.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr-rle4.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgr16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgr16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgra16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgra16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgra16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgra16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-32x32-bgrx16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-32x32-bgrx16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-33x33-bgrx16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-33x33-bgrx16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgr16.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgr16.bmp.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue203-127x64-bgrx.bmp -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue203-127x64-bgrx.bmp.jp2 - -# issue 322 limited tif support -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-01.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-01.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-02.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-04.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-06.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-06.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-08.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-10.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-12.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-14.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-16.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-02.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-04.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-08.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-10.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-12.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-14.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-contig-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-contig-16.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-02.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-02.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-04.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-04.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-08.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-10.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-10.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-12.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-12.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-14.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-14.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-rgb-planar-16.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-rgb-planar-16.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.tif.jp2 - -# issue 536 (PNG images are always read as RGB(A) images) + issue 264 (convert.c is unmaintainable) -# Test all images from pngsuite -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g01.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g02.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g04.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn0g16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn0g16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn2c16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p01.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p02.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p04.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn4a16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a16.png.jp2 -# already done opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/basn6a16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g01.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g01.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g02.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g02.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn0g04.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn0g04.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn2c16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbbn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbbn3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn2c16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn2c16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbgn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbgn3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbrn2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbrn2c08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn0g16.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn0g16.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbwn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbwn3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftbyn3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftbyn3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n0g08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n0g08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n2c08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n2c08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp0n3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp0n3p08.png.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pngsuite/ftp1n3p08.png -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/ftp1n3p08.png.jp2 - -# issue 571 Lossless is not lossless on linux x86 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue571.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue571.tif.j2k - -# issue 729 Allow to read 3/5/7/9/11/13/15 bpp tif files -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-03.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-03.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-05.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-05.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-07.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-07.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-09.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-09.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-11.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-11.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-13.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-13.tif.jp2 -opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/flower-minisblack-15.tif -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/flower-minisblack-15.tif.jp2 - -# issue 843 Crash with invalid ppm file -!opj_compress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue843.ppm -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue843.ppm.jp2 - -# DECODER TEST SUITE -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Bretagne2.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Bretagne2.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/_00042.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/_00042.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/123.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/123.j2c.pgx -# The 4 following tests should failed (kakadu indicates that they are corrupted) -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken1.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken2.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken3.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken3.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken4.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken4.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/bug.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/bug.j2c.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxI.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxI.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/buxR.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/buxR.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Cannotreaddatawithnosizeknown.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Cannotreaddatawithnosizeknown.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/cthead1.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/cthead1.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/CT_Phillips_JPEG2K_Decompr_Problem.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/CT_Phillips_JPEG2K_Decompr_Problem.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/illegalcolortransform.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/illegalcolortransform.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/j2k32.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/j2k32.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kakadu_v4-4_openjpegv2_broken.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kakadu_v4-4_openjpegv2_broken.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/MarkerIsNotCompliant.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/MarkerIsNotCompliant.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/Marrin.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/Marrin.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/merged.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/merged.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00000.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00000.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00001.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00001.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/movie_00002.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/movie_00002.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-j2k.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-j2k.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-lin-jp2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-lin-jp2.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-j2k.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-j2k.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/orb-blue10-win-jp2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/orb-blue10-win-jp2.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/relax.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/relax.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/test_lossless.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/test_lossless.j2k.pgx -# text_GBR.jp2 file exhibt a error about a tile part with a index > of the number of tile-part in this tile (related to issue 202, 206, 208) -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/text_GBR.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/text_GBR.jp2.pgx -# pacs.ge file should throw an error but finally it seems work with v2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/pacs.ge.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/pacs.ge.j2k.pgx -# related to issue 135 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp.j2c.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/kodak_2layers_lrcp.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/kodak_2layers_lrcp-l2.j2c.pgx -l 2 -# related to issue 104 and 110 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue104_jpxstream.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue104_jpxstream.jp2.pgx -# File not supported by kakadu (Malformed PCLR box) and not supoprter by openjpeg (problem with value of TPSot) -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2ace68c-1381.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2ace68c-1381.jp2.pgx -# File which produced weird output with kakadu and not supoprter by openjpeg (problem with value of TPSot, issue 202, 206, 208) -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/mem-b2b86b74-2753.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/mem-b2b86b74-2753.jp2.pgx -# issue 191 raised by the gdal fuzzer test (should properly failed) -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_unchecked_numresolutions.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_unchecked_numresolutions.pgx -# issue 192 raised by the gdal fuzzer test (should nicely failed) -! opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.pgx -# issue 193 raised by the gdal fuzzer test (should nicely failed) -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_number_of_tiles.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_number_of_tiles.pgx -# issue 194 raised by the gdal fuzzer test (should nicely failed) -! opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/gdal_fuzzer_check_comp_dx_dy.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/gdal_fuzzer_check_comp_dx_dy.pgx -# issue 202 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/file409752.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/file409752.jp2.pgx -# issue 188 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue188_beach_64bitsbox.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue188_beach_64bitsbox.jp2.pgx -# issue 206 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue206_image-000.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue206_image-000.jp2.pgx -# issue 205 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205.jp2.pgx -# issue 225 (sumatrapdf) -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.5b5.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.5b5.3723.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1888.pdf.asan.35.988.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1888.pdf.asan.35.988.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2539.pdf.SIGFPE.706.1712.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2539.pdf.SIGFPE.706.1712.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2236.pdf.SIGSEGV.398.1376.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2236.pdf.SIGSEGV.398.1376.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1336.pdf.asan.47.376.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1336.pdf.asan.47.376.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1851.pdf.SIGSEGV.ce9.948.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1851.pdf.SIGSEGV.ce9.948.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4149.pdf.SIGSEGV.cf7.3501.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4149.pdf.SIGSEGV.cf7.3501.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4035.pdf.SIGSEGV.d8b.3375.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4035.pdf.SIGSEGV.d8b.3375.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2977.pdf.asan.67.2198.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2977.pdf.asan.67.2198.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.ce9.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.ce9.3723.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3635.pdf.asan.77.2930.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3635.pdf.asan.77.2930.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/1802.pdf.SIGSEGV.36e.894.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/1802.pdf.SIGSEGV.36e.894.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/451.pdf.SIGSEGV.f4c.3723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/451.pdf.SIGSEGV.f4c.3723.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/2.pdf.SIGFPE.706.1112.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/2.pdf.SIGFPE.706.1112.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/147af3f1083de4393666b7d99b01b58b_signal_sigsegv_130c531_6155_5136.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/4241ac039aba57e6a9c948d519d94216_asan_heap-oob_14650f2_7469_602.jp2 -# issue 228 (16bits/lossy) -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue228.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue228.j2k.pgx -# issue 229 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary27ac957758a35d00d6765a0c86350d9c.SIGFPE.d25.537.jpc.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary26ccf3651020967f7778238ef5af08af.SIGFPE.d25.527.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary0290cb77c5df21828fa74cf2ab2c84d8.SIGFPE.d25.31.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary3672da2f1f67bbecad27d7181b4e9d7c.SIGFPE.d25.805.jpc.pgx -# issue 254 (loss in quality) -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue254.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue254.jp2.pgx -# issue 142 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue142.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue142.j2k.pgx -# issue 134 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue134.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue134.jp2.pgx -# issue 135 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue135.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue135.j2k.pgx -# issue 208 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue208.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue208.jp2.pgx -# issue 211 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue211.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue211.jp2.pgx -# issue 171 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue171.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue171.jp2.pgx -# issue 171 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue165.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue165.jp2.pgx -# -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/broken.jpc -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/broken.jpc.pgx -# issue 226 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue226.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue226.j2k.pgx -# issue 297 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1103421.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1103421.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1178956.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1178956.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000290.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000290.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000691.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000691.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_20.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_20.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1377017.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1377017.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1002767.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1002767.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_10025.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_10025.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000234.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000234.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_225881.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_225881.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1000671.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1000671.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1013627.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1013627.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1015644.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1015644.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_101463.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_101463.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1674177.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1674177.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/edf_c2_1673169.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/edf_c2_1673169.jp2.pgx -# issue 296 -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.0.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.0.jp2.pgx -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.1.jp2.pgx -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.78.2734.2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.78.2734.2.jp2.pgx -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.0.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.0.jp2.pgx -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.1.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.1.jp2.pgx -#!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/3459.pdf.asan.6c.2734.2.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/3459.pdf.asan.6c.2734.2.jp2.pgx -# issue 362 (from pdfium fuzz engine) -# Invalid PPM Marker -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2863.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2863.jp2.pgx -# Invalid ftyp box size -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2866.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2866.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue362-2894.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue362-2894.jp2.pgx -# issue 363 (from pdfium fuzz engine) -# Invalid Tile part length -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4723.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4723.jp2.pgx -# Invalid Marker length -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4740.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4740.jp2.pgx -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue363-4792.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue363-4792.jp2.pgx -# issue 390 (from pdfium fuzz engine) Invalid segment size -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue390.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue390.jp2.pgx -# issue 391 (from pdfium fuzz engine) Invalid segment size -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue391.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue391.jp2.pgx -# issue 400 (from pdfium fuzz engine) Unknown Scod value in COD marker -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue400.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue400.jp2.pgx -# issue 413 (from pdfium fuzz engine) Unknown progression order in COD marker -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue413.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue413.jp2.pgx -# issue 364 (from pdfium fuzz engine) -# Inconsistent box length for jp2 box -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-38.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-38.jp2.pgx -# No ihdr box -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue364-903.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue364-903.jp2.pgx -# issue 393 (from pdfium fuzz engine) Zppm found twice -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue393.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue393.jp2.pgx -# issue 395 (from pdfium fuzz engine) Stream too short -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue395.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue395.jp2.pgx -# issue 397 (from pdfium fuzz engine) Incomplete channel definitions. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue397.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue397.jp2.pgx -# issue 399 (from pdfium fuzz engine) Incomplete channel definitions. -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue399.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue399.j2k.pgx -# issue 408 (from pdfium fuzz engine) No COD marker in main j2k header. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue408.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue408.jp2.pgx -# issue 412 Palette image with cdef fails to decompress. -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue412.jp2.pgx -# issue 428 Palette image with cdef fails to decompress properly. -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue412.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue428.jp2.pgx -t 0 -# issue 414 Image with per channel alpha (cdef) does not decode properly. -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue414.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue414.jp2.pgx -# issue 418 (from pdfium fuzz engine) Tile part length size inconsistent with stream length. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue418.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue418.jp2.pgx -# issue 420 (from pdfium fuzz engine) Illegal custom precinct exponent. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue420.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue420.jp2.pgx -# issue 422 (rework of issue 411). ycc with odd width/height -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc444.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc444.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc422.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc422.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue411-ycc420.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue411-ycc420.jp2.pgx -# issue 429 (from pdfium fuzz engine) 0 entries in PCLR box. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue429.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue429.jp2.pgx -# issue 432 (from pdfium fuzz engine) Overflow in tcd tilec data size computation. -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue432.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue432.jp2.pgx -# issue 427 image width is 0 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-null-image-size.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-null-image-size.jp2.pgx -# issue 427 illegal tile offset -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue427-illegal-tile-offset.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue427-illegal-tile-offset.jp2.pgx -# issue 458 component precision upscaling -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue458.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue458.jp2.pgx -# issue 476 Multiple COD in MH -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue476.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue476.jp2.pgx -# issue 475 Invalid number of layers -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue475.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue475.jp2.pgx -# issue 495 Overflow op_image_comp_header_updat -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue495.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue495.jp2.pgx - - -# decode with specific area -# prec=12; nb_c=1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04.j2k.png -d 0,0,1024,1024 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_1.j2k.png -d 512,640,640,768 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_2.j2k.png -d 896,896,1024,1024 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_3.j2k.png -d 100,500,300,800 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_4.j2k.png -d 260,520,360,600 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_5.j2k.png -d 260,520,360,660 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_6.j2k.png -d 360,520,400,600 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_10.j2k.png -d 0,0,1024,1024 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_11.j2k.png -d 512,640,640,768 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_12.j2k.png -d 896,896,1024,1024 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_13.j2k.png -d 100,500,300,800 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_14.j2k.png -d 260,520,360,600 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_15.j2k.png -d 260,520,360,660 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_16.j2k.png -d 360,520,400,600 -r 2 - -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63.j2k.png -t 63 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_17_t63_r2.j2k.png -t 63 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_18.t12.j2k.png -t 12 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_04_19_t12_r1.j2k.png -t 12 -r 1 - -# prec=8; nb_c=3 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06.j2k.png -d 0,0,12,12 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_1.j2k.png -d 1,8,8,11 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_2.j2k.png -d 9,9,12,12 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_3.j2k.png -d 10,4,12,10 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_4.j2k.png -d 3,3,9,9 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_5.j2k.png -d 4,4,7,7 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_6.j2k.png -d 4,4,5,5 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7.j2k.png -d 0,0,12,12 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_1.j2k.png -d 1,8,8,11 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_2.j2k.png -d 9,9,12,12 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_3.j2k.png -d 10,4,12,10 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_4.j2k.png -d 3,3,9,9 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_5.j2k.png -d 4,4,7,7 -r 1 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_7_6.j2k.png -d 4,4,5,5 -r 1 - -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_8_6.j2k.png -d 9,9,12,12 -r 2 - -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9.j2k.png -t 0 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_1.j2k.png -t 5 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_2.j2k.png -t 9 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_9_3.j2k.png -t 15 - -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10.j2k.png -t 0 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_1.j2k.png -t 5 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_2.j2k.png -t 9 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_10_3.j2k.png -t 15 -r 2 - -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_06.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_06_11.j2k.png -r 4 - -# prec=4; nb_c=3 ; signd=yes -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04.j2k.png -d 0,0,256,256 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_1.j2k.png -d 128,0,256,128 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_2.j2k.png -d 50,10,120,200 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_3.j2k.png -d 10,150,190,210 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_4.j2k.png -d 100,80,200,150 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_5.j2k.png -d 150,20,200,50 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6.j2k.png -d 0,0,256,256 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_1.j2k.png -d 128,0,256,128 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_2.j2k.png -d 50,10,120,200 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_3.j2k.png -d 10,150,190,210 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_4.j2k.png -d 100,80,200,150 -r 2 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_04.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_04_6_5.j2k.png -d 150,20,200,50 -r 2 - -# prec=8; nb_c=1 ; non standard origin (image offset and tile offset); sample sep: 2x1 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01.j2k.png -d 5,128,127,226 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_1.j2k.png -d 5,128,122,99 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_2.j2k.png -d 50,10,120,200 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_3.j2k.png -d 10,150,190,210 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_4.j2k.png -d 100,80,200,150 -#opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p1_01.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p1_01_5.j2k.png -d 150,20,200,50 - -# issue 322 limited tif support -# GRAYSCALE -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-1.tif -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-2.tif -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-4.tif -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-6.tif -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-8.tif -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-10.tif -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-12.tif -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-14.tif -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-16.tif -p 16S -# GRAYSCALE ALPHA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-1.tif -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-2.tif -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-4.tif -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-6.tif -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-8.tif -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-10.tif -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-12.tif -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-14.tif -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-16.tif -p 16S -# RGB -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-1.tif -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-2.tif -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-4.tif -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-6.tif -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-8.tif -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-10.tif -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-12.tif -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-14.tif -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-16.tif -p 16S -# RGBA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-1.tif -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-2.tif -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-4.tif -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-6.tif -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-8.tif -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-10.tif -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-12.tif -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-14.tif -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-16.tif -p 16S - -#issue 235 CMAP outside jp2h box. CMAP is buggy -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue235.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue235.jp2.pgx - -# issue 264, add checks for png -# GRAYSCALE -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-1.png -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-2.png -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-4.png -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-6.png -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-8.png -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-10.png -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-12.png -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-14.png -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_png-16.png -p 16S -# GRAYSCALE ALPHA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-1.png -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-2.png -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-4.png -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-6.png -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-8.png -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-10.png -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-12.png -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-14.png -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_png-16.png -p 16S -# RGB -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-1.png -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-2.png -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-4.png -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-6.png -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-8.png -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-10.png -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-12.png -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-14.png -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_png-16.png -p 16S -# RGBA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-1.png -p 1S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-2.png -p 2S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-4.png -p 4S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-6.png -p 6S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-8.png -p 8S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-10.png -p 10S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-12.png -p 12S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-14.png -p 14S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_png-16.png -p 16S - -# issue 388 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/v4dwt_interleave_h.gsr105.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/v4dwt_interleave_h.gsr105.j2k.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/dwt_interleave_h.gsr105.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/dwt_interleave_h.gsr105.jp2.pgx - -# PR 559 : CMYK tif output -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue205.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue205-tif.jp2.tif - -# issue 236: esYCC colorspace -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue236-ESYCC-CDEF.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue236-ESYCC-CDEF.jp2.pgx - -# issue 326 + PR 559: CIELab colorspace -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-090-CIELab.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-090-CIELab.jp2.pgx -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue559-eci-091-CIELab.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue559-eci-091-CIELab.jp2.pgx - -# issue 653 Last box of undefined size byg -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue653-zero-unknownbox.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue653-zero-unknownbox.jp2.png -p 8S - -# issue 729 decompress 3/5/7/9/11/13/15 bits precision to tiff -# GRAYSCALE -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-3.tif -p 3S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-5.tif -p 5S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-7.tif -p 7S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-9.tif -p 9S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-11.tif -p 11S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-13.tif -p 13S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/a1_mono.j2c -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/a1_mono_tif-15.tif -p 15S -# GRAYSCALE ALPHA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-3.tif -p 3S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-5.tif -p 5S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-7.tif -p 7S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-9.tif -p 9S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-11.tif -p 11S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-13.tif -p 13S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn4a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn4a08_tif-15.tif -p 15S -# RGB -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-3.tif -p 3S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-5.tif -p 5S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-7.tif -p 7S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-9.tif -p 9S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-11.tif -p 11S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-13.tif -p 13S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/conformance/p0_14.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/p0_14_tif-15.tif -p 15S -# RGBA -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-3.tif -p 3S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-5.tif -p 5S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-7.tif -p 7S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-9.tif -p 9S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-11.tif -p 11S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-13.tif -p 13S -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/basn6a08.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/basn6a08_tif-15.tif -p 15S - -# issue 725 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue725.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue725.png -# issue 726 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue726.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue726.png -# issue 733 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue733.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue733.png -# issue 774 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue774.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue774.png -# issue 775 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775.png -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue775-2.j2k -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue775-2.png -# issue 818 -opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue818.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue818.png -# issue 823 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue823.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue823.png -# issue 826 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue826.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue826.png -# issue 820 -!opj_decompress -i OPJ_DATA_ROOT-NOTFOUND/input/nonregression/issue820.jp2 -o /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/nonregression/Temporary/issue820.png diff --git a/build/tests/unit/CTestTestfile.cmake b/build/tests/unit/CTestTestfile.cmake deleted file mode 100644 index 2e1e8fbb9..000000000 --- a/build/tests/unit/CTestTestfile.cmake +++ /dev/null @@ -1,9 +0,0 @@ -# CMake generated Testfile for -# Source directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/tests/unit -# Build directory: /media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/tests/unit -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -add_test(testempty0 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty0") -add_test(testempty1 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty1") -add_test(testempty2 "/media/jiapei/Data/Downloads/imageprocessing/codecs/openjpeg/build/bin/testempty2") diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder$IJavaJ2KDecoderLogger.class deleted file mode 100644 index eb35beab7bc9420a498128f645a4d7419a72d6a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmaiw&rZTX5XQfO($WH=2NI7SJmAG99N^$lQ7IrMO}wvlvMFhH$!_)GJoo@UlwsF2 z;iBR6%S^sMlllJn`~on;FhUYxKsc+kyyHT@v01aVLNZ}AUTwvPNGqXan%AaO^5*J= zFg$4I#%M!Ga{X=!zAr0hJKyYBWzX}6%$b|aYac}DKC!JIwXGwZ5T@G5RD1D`W%`Hf za^WMg$+AgVX(`#&jsDs97fP|Yt%S8~38#naH?LbRYQn{_%8)>4x!(Y-fY3$&ICebU U6#6|PbblG6@0d6TAx1BZ_hyS)`Tzg` diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaDecoder.class deleted file mode 100644 index f876ba0f14273fcf811f2089f31eb3d037c623ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4820 zcmbtYYjjjs75>i5BzI;qd5{MWDPg1uog|b9MM?=!N`Pk4B$S4SfE8{sm&uUHz2lt; zBvh@BqHUE{ZB<&WRI0`YXek8>Rn$NAv6lW&|ENFIwX|AaYts+xOndWF}L) zs4TkAIs5MOoqhKH_C7;@^7_?l0B*&VFk-Mn6xlH5As0p)#$|a_#4!;QA|^!~7jd76 z_lbDFh!2RkU&IGRd`QEG1<1kpNEi>`gocl5_*f7RhA|(ue0->$XP=alAE}4J$$I#3 zQp2Z2^XZCd?~hnMR)r)U7x5VlpRGbGJ}2Uoh9@*Usn8Vf)sO1EtMA%s3|k4q?z56f z!&ZpIP1CTu(|R^*WEHAY*|?d?rSx>_xRFp$`xWLT+${%nJ2^gPm^s=t9Oyejyw0?4 zCOZdncFIh4akn{ikCC;~QIxS@|J)D~26Ghs|9R2)ksawEhXF;dBq92E&8BZ~U$XeyI25=Fjf zY3Igtq~3L%PNqBe7{fWsrt6`>RMOOQA&?M?}) z7tfZm@$K3~=*kT#hIErce{62h-YRh09)&IaJ1S;x;M zDuLeXvPz)6X_#8aabap8)+St?(Ft8eN5|xB$Bz6K6&YSnl>Y(_E+1;b1UC$)J@SSJt#NzU*q#!CEi6+3E2SYQR1MJcenZ%pji4Jn5!{Z=5qtqp z$?`}9E72LjJFqH()wm^sHF#$PYjJA?>tuPGEZ2+Z5|a%gHj3DURcs7S*O^ti5v;(? z8on68Y4k9pg|4(~#I}yP_0U?-&QwO+EHpaXi{a+{wW7VeOVkV0`e??shKMv7O^s!& zY&OLri{`B8;gp$(=0=QYcQla2Dqj*1om&6T!D6{@<3!MBfae$eA5O zN7xz3-$K0OEL5G%k}PDW*p@crDIn8kw-9{xAN z{xF`!d4-vjNJhMbtW5Aha^DB1+}1NMtcX=>qiLsFq8p+WG5zewX-Fd|p#NzRI+uWwCaC@E!Z+`5$@~2*h_pp9(%M z+K8SVFeco>=VKi(oke5b-bsL$7Cz&&b4K<#XJo5$Ms_=AWW#et_B>}~+jB-XQT_tF!=9BbM;EJBo=kNfX2WD zG)$qU|3%E-SHIvg7JlzMPv41scsH8pf%v(HGm!ztGQ@k=FjftG2Nv=LSi)yy8Sj4+ z@4bSzUd0`2d6O>mGBSO*3ws^3-Pljedx?6$kx3jxoTv@(O;hR95Yx~MrJ*TY6o_6z zC?}k)bjQanA&F#1Q6$68ham(pOk+9K-Ll-<685$%+FOXeyXP=(l%#b(2HZXB8t)lk ziZ*jk=p`(6hh7=3QB?E4nvv7Ejbp9vG(*j?uI_2X+GoCgCnOo+vasVSxq(X#TF?dM zAfUlF1`QU21|`=;JFen}JZRVjp^N6z#amoQkJ@YAaqMpEz8bLco9M zyJ+t7Z*QyafV7Oxh@^Z=>@n1dERnW~^am+2iN=Nw+I zR~EXu6ncuL`^!UDmqMQ<^f}reU=h0koE_`Xvn8>OtKZk~2pbEcq=Ne02rbbA`a0c+!tD=D%W3ZKG<3znb7G?H{x3)g-|kCmS(Nw%hM;J zbMeYt+V+HhVH9{#Hg2!x9J4N$2PZcqgrYo2Zj T{2n3dCq`&E#?C>Aa2rIwof=y} diff --git a/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class b/build/wrapping/java/openjp2/classes/org/openJpeg/OpenJPEGJavaEncoder.class deleted file mode 100644 index 9fbafb320e0e210997815f0e13812d52a9d93e2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6505 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 W1EhM)f!}uEAqPI?z#lm9`F{iPc+!CY

    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�jW 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 i{O{HgV!l+&GtZlz(Yi-D3#lr%0hS%4Dl z^S$qW<)>$9bUXXgS4aBZ@8|pD{&@FZ-TUtM(JtT4GKWKOa*96|#GS1+5swm#+^RAl z9?>S2<9EGSC$0luE-_Q?F$tt*x~g0=tyH)Zld#a)SKJnj^l#gGTQs;i8i}Pw zH;=Y$+q`Y7I~jMk%65}~(%rSEPnJZ_o4c0kT#qkdB>$(~vnvnGUw(Ud&o|F(ogD4? z;>+isAsKZ6*(}3%x^Aqp{v-9(mF3s1c&t%)NJc(rd~|gE?5#t~cf9n^um9~MHQT>b z{f$3)edgc)<@GPO_P=uR++WLx2`+io?KT`|Js+&zEu5%H~;mL>y{S} zZG?HzGy!x~5y@A9X+`h{fECm4D1l#J0{>(QJXr##ekfM%&w*?B+EX`xV){)ba9Re6 z>EBxdcbC9#!C=rJv!@_{o9!U@S$yln^`cJG3ZyS6T-fjm_^%TUqS=Q382TFg*!3>} zUkQu(TGKtxqsw4d36~gAc*qosvkK>Rk(a~kRk`+hjw$_9Ri*exf&DMuJi@w z@c>QRZ6X{W3B^R%2t}j9?@tH1d$ipG9R3;UWF#N-T2+B-^ z^6)@1MXC`&rvB04XgCsuu)BA+AD%;lk)#ny^zPmfjmJX0fqs&Of&n7{w?s_0UU{GDH=UHK3wUk^v8~prF?K4~?{%<@x)QN%lo$7cF_0ue)Q1ztz3P zy;X32A=m1@o%))dSQ$P}`O6$3H0H{LqsYgKIw7aAZ6@P}2u4o1Xa`7GeI&AiR?=?8 zr*0&9ndni^m;c{*Je^g~e?h zWx2EZ__LL?dYUPB`{&kZBDe7berq>)kRyJGgxR?q(#F3cp1Lr5R`L%MPmee|Bl!gJ z)Roy&l0QT|bz%0TgmqLhL)M}T-gsh8&_k=(4OmTyk68k z{sIXnKU0~xg7%?%^z;vEkDZd>(K>y~XspbvL(BBZ`x`5})6eP?uhc&Fc@mG$R_f{B zq|cwZ)R3t{E%fwx@cNltou~F6bD96Tmdk+x%Dg4B?^E_wWc8^>8dvM->@(D%-=$v4 z+(`D5D2riV`d66>fJBGMCVeS00opR7Pxdx81obWTvRNrN9;No@2fX*sjz6FK^=ta1 zOP_2%T(1dzYK;#){#`00^8!ps{{758a&oad{o(_9`Zaz0m-G92eNz?hQ46P5j7!q~ z9q8oNTv)A%-_>sDBuV>ncQjS;e;Qoo;s?20Mn@B#tB8PiP<6&oE%DAQT%tXsejpo$hRJ(-QMGEc zy|1S`{rk*c!k!1hyD)3{Y0DKo{liQj@bRm;+G9Tk_&u7CnO0KeCrJqO^z>}zh2H}o zzv`%+7y~$Vmq_gxJL(Xr_OYX7B6Y{uQD;r6MW0HRqieo}dGu`>>+k%1?U!cOiDNUV zwHQm82gye|BcH8VPeKn$^ipP&=+v4ljD6`>(e#H_X`^z`k zFtz45On?0xJt-PoBscM$g#UxYC)+;)uh4xPqX<&=eiX`bW~%<{^Y(V9KcGo>89kYW zGA%iotyJd3Ozklzkd`aYz%h5wa)@MK%9)1xoqJ#Q7+TyVYLC&*#q9R;ng4`Ds!jm( zO@>gBUuC{c>gku|6!N7n$Zr2ZrpI*RNUf(P_et(q%qiK4-uyT~Z*{Mf?JASqm*sYS zMS8u|axwGnd*uIoW@Ql{SPR;hoAyu1eqnpq1*C`bnU~2Pi>$S5vU{;kmis(4C2g_W z1iS2Bj7aKt@4eo8y3;@RqFa4a8!xP&IWx7HXpcAjL3jF!Z_^ucO+WL2GqZt8nz(3a zEwAu=@ulDMrLT0RFL`tI|ABSNq2Kw7)SFZt8cf~;-Uqz?+3AJ(`Od8Q!1!Omfq(D7 zt^HzeA~HxDGVShtt=h(<7Kk4!W@y)B-_l8VB9@Pf;a1 zZgSq`gFa2_Q&)4jCqYNv&E;l5$3P8?nv-~JLnOz8KLc z#=AbgrSWEh$sWt3cp7@t22O3r+>h^Blqb&y9j>|)WxA{3xYO&>#>>mTP~~dyy6QSy zmAk5w`FscMX~>TH;os0+c@BZ?R9T0s;e@l(r5!K#x|+r-_PCnM9;cHJzx?UCqa@(_L-j%XYgw30Irf)r`7!xHRaQHI#d7dZwr0ht{~IwA2Gj zJ+RaROFgjE14})y)B{UBu+#&8NDuIPSANe*+gM6WYfLtOFTn5q_&xp&O3v?d`CTaQ z;crxOey>Ys2TClzd@UCzp6~JKg`G_5f-1`iyIz=`_~9=8@4{xOP+JTNES*yjiIf`wBo6a2gvP;yZzc$^gC%f%cIOpCyY z*}>!10>jVZdp(jnMU9x_0c};aJssa0TGZiZ@x7kuf8idpP=94UexMLv zCC2FD*p{4Pbv`b_Dstkj0k12C_!`7TXjVw(onmc%9k2?WMeboq?zG%{7V7h=w}8@e zQZ9Z=*Qf=F!aj=Ov`&fp8yN@c*`#R_Qp=jSPvVRF=TYEP zF0cF22tSije{nyTs{hxe{wlGR6l|$jdrwQ9)r+3jkAOSS|2)sx)k_jz{2b3KKm32g z`ftn3;&Day@8sWp557|3i^s#qfXn;nTGKO6`#Th_+3vMFCC;^2p!WdR7TA1_-mewA z_fG&{mDgIxOaLzyZ*Zc7ev8Bx&&QJ`^uJRA|49k_H^8YrxBy+KBy#VU(08E&3pGu% z^}vh8IeY?mu{eiMO1z**$vlhSV(}Hfll8$kR~v*|mFd0`eg;&z_BezQ;N;&vejZW! zydG*OkJ4vL_ZC0 zDjBbl-2-AEVI+-IIE?HjQZs2GS3k3>U8 zDCoXp+nsI2m1N+AKafZSjv%DLNE|_AMPNAO52l8PkHEyj$-svKRlk4de(&xsf7hN) zKO!ay6)0vRn2h^}04Ty*}~9`Ek%9ffK#q5}|Oy8KocB>+SG$QE~Z*jK#qp6dvO7aDWAcRs2ukATs8}rfx=vn2{M1i2s1OtG9DeRZT*ef+LqlrP3b-B@oMvOuWBl%I7{Mmb#oLdJDd^rDc2Ghcne6v!-$@gM16VR(syBGo^bd zYqHySLU;vdEiRw;^-PD9F`rNQe8)cbAVYsOY>&;OnQWA{|I|-x&*#Q_fRSq6p3e!2 z@_833GO52CX2k=@(OHu1532J4Q;*W*`m-L>!;sV2l=+j&o+;bg>#y93hmoN^W&1g0 z&-9#9e{y_2->dWZWIG-|Pr{a($oBlcYG?yMB$8Vb z+cSL=LaTj#f3BHUTn_tSJLcz+A&krC_{KWT)Uewt*c9UTGQL!Pa~?4>Y`@8dlP)DI z<*{c<%wLaYQcbNV^gpv1U#>r|pESO??xuzLd+=i>U11Y)xvWdW&88wn!yh*_uCbz` HcKiPZupV>O diff --git a/build/bin/opj_jpip_test b/build/bin/opj_jpip_test deleted file mode 100644 index 1ac3c1178a518ae06b6c84ef9df60cccd0fe67ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12760 zcmeHNe{37o9e<9K)@@VADQQWe&|8eCX;~FOy`7aq8@>}fudbQkqJ2IGNDJ5YKXK%$Z`>n*F=djCUF4mu&$k# za2BYT{-emO4cPn5=?CaU$UUt1FmS4Xv2aO-t{uIP*j!%5W&rW-eS~ zz9EnAOBD+|#l;KnEM`q8D~D?-T+OX7zP*3m)|Vc8<2#2+H{HA7!LPkB{_?YL9I5X) z{m!Wy_b%Ii+kJ;ljK1gH`2NVU(u&uQy!EGd#Vi41M_L5Dq30x?1rb7Va!jI&^ z&*Z`VfJ<;W({};L<^S3|_zQXPC-UHpfJ<;WlL|nta!&)k!l?}WCvf@Lh0G^OHffd1 z#F+yx<9H>jb>No)E`cAXejVWDP{NS7FKFI30lo-liomhnm@XGMtz%y?Vde(h$11bx z`7e;8pIWi*JudXG;(ive!Fd7@;3Cy z@@xESXYy-VO}`q}f;G^oy{dkbmeAs{n%!!!H)yCeJE76L<4HZF*0l8pd(}=o9#Rtt zE!JBTiig!uqQ)F6wYR1xsYSyzJz8uNA4(i&H(%MzC!6_gQRX>$_-W4s%dC5UvBWYfKZO6XqVs*R5ORky|}->Z7`|X&tPG&t*~*MmY6M`Y3SF zP&rjxWz@?6tU)04kMwmwQ-7^Hovue$)f8k%cr!!DF0FV=jSt-$XMMwZK>yP zkW;VA!+)FZ>}nq^*$=An=)w=MA)}4UKsmGcWQD{&EL+~fp($YY$fG5%0hKqNlT&XR zOJV5lLl%Z^VRvRS;xAi%J2+shdjdyomIs#)pyKGdA8eIH=+4j|M^11rtr|$Ij zPjL|6F{HZFRKNDr$L*=JEva_{nTl8B;R%<#@zvxRoXgjB2d)ov2W|)`6JxXe@xcW2 zDb9U9+i@)^Vy(I!*EdOBK^-1c(#nJsiyKlTo{WX(Gk8`>_^^_C^!Nca#&0dx#qKK_ zpiMYwU-=}H!Jdyo)gAy};2HRy9)Tsqe? z=9=q6d>LGmU{CJ~sFz!xu_~e83FY&f!|U7Tt-Pvi!Ofl_cI8D^T)w7i1=&NlvlF0a zT}QqO*!6H72mEnV40wHa6a~DM!|pb3ZIL$LTM0j{{vB>K1uu1;u|iu%o7-?xjJ zy_I*nTfNd~akF>TT_v)&_KrESw_$j0hqp=hHUzx20q?42uLOFa-|Y49XT}R)J_vrS z>n6G^q(ToAdZ5q)g&rvMK%oZ;Jy7U@LJt&rpwI(_9w_ucp$EQL577Q9?Wf`<6(%Re zJzq?OA2nGxQ#F$=1f_zf^9R}+rE>&4|H4H3yce4+qrHZU1W)_DxW|Es#!r-UBu!BY8`3Y_%*lQG)|)#VUud+_!S34gFH#CfXMwBTEW{NIA7b_n2H8vM0uSDWbPxZ`3s%x*f@x9YoL&yUW-?YNs6G!Pa6o~zLOw7_sOQo?9n+VMGz z=C2)}%V=EfxQEevu;cR>%{x0jpV9oZ=d*2GP8)8!&rb^IIed^(4P`5RKgI~3B>m~@H&Ch`YqJicF4G( zo~tB@Lt^=3*Kj<$f4%`Y`lsgsH-f(u*U#?feDy!Z^%t??91#n-+WQDE=z^^AdWQSC zkkNh4)!+~Jf?X_o9AD)M+4Y>}c=o))b9Gma^M5?&cjcH5D*?yzcIP?yI>04fhW+ms z9M6smxEk%oH%&S2;V zSws)^t4cW8-+vHHEF45-XogKyQMT<0bhIk1J6bTn!>)kg4&g*x=?lif7!A_$^&NqZ zwykzG9vlJ?L{=%SvT!H2>;ed4Nyzc`_MOdvc4glLo{XsFFq?2 zg@QNi5g|=Y6oIkU9$&&kNoJ)OpOF<2;uKrMKAe#+pBV*W4JqNFCK$G1_im4nF+*1D z8n)P$SrJB)@EDz(fj4p8#Y}@2f;5kXci)m4Q6I zM_BFYy_RT|L*HrN0`jx)?Lp3y0gegA<9Pw2y%ZU6?qt;n9SBYFVj_^n1fy`K}^C+xBQ zs6+J^FuMgZ*r#MaiGu-&D1ARt`D9P+za4bZz8Q@m(fdBpagLg?$V(vaw7(lL>=XKa zrtf#6^qni*@Uke6)O=5zwWsfg8ERFAyif2%?*ZOgK7D5prTUT^;)#CWVNdS~M4PE& z9p#e0A3E%5zk;aqa|rv|njQcK>rcf{+$T}IzpTk=|1%I;?H?B3J482IjUn%}$9P$* zJ$)|`twf5X0O;FB0W&yiFl%~0g7{v z%BSx%ier~V$I|>HJDNX-!4{iH_VhhBv>ZT4L;QdCkL-z_0g=^y=6zT)ZKxdbKz77W zLk2M_pW*<0lBwae7qBUW|Bv9p@@r=hGeh>P9XRS@vQnCRro{Yjl1zF`bR0fss^Oyg m)B1t)o9b>_nE&a^O!`xYb1Ii~%OR7?{$5e>^Q0)K)BeAeKA#By diff --git a/build/bin/opj_jpip_transcode b/build/bin/opj_jpip_transcode deleted file mode 100644 index bd1e351cb27bd86beca54c6c7ac07da45ea59520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12840 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 U_I@v3pg(^Uo|lhw!=K;&3q;NhM*si- diff --git a/build/bin/opj_jpwl_compress b/build/bin/opj_jpwl_compress deleted file mode 100644 index d1ad246d3405d6fa1ff8f925753f376a9f8bb577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126088 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 z 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 diff --git a/build/bin/libopenjp2.so.2.3.1 b/build/bin/libopenjp2.so.2.3.1 deleted file mode 100644 index 250aa7524d5f39ffcb0f7d3ec86474e9e4c9c0ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429664 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 z 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 f?`!NSjit5dK1TefL={2a*GrLUqB`s4orL_zCn diff --git a/build/bin/libopenjp2.so.7 b/build/bin/libopenjp2.so.7 deleted file mode 120000 index dafc449bb..000000000 --- a/build/bin/libopenjp2.so.7 +++ /dev/null @@ -1 +0,0 @@ -libopenjp2.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenjp3d.so b/build/bin/libopenjp3d.so deleted file mode 120000 index 3bac5742c..000000000 --- a/build/bin/libopenjp3d.so +++ /dev/null @@ -1 +0,0 @@ -libopenjp3d.so.7 \ No newline at end of file diff --git a/build/bin/libopenjp3d.so.2.1.1 b/build/bin/libopenjp3d.so.2.1.1 deleted file mode 100644 index 8e852fbd583d56f7cb9271b61c61dc78e4fd78af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9753224 zcmeFa4SZC^)jxg{fu*YyY7)jjf!1>c$X;33^NJod@2f5#$b z;!}(d%i9Z|aC5Gc+j_XOd5?noa-72Y6+`yCXkPw`f?3ax$lb3Xcg`l~Fz1`~(;|E3 z<}RP!OvcCjg>i8%KIduR0(@VnulY3;gzwwZ+x(J z^3|6gUog4(g=OJM_fGxVwQnBveAU+ud9AEw$my57yZ(m@V@KS1LE^3>-pc#bT;)`8_{##y$R%t0sSR=o_ayU!U^mKhBtb>1`iu`_?bR@1Jwn8!z8*#b2g8 zvH7(2_So{XN51gD)h|5s`$rcwKl9WP(PbwsxxHt|AC4^_b?L@b?x9x{j+^-RBPiyo4vb6T9!zUfJ_wvPc zk5)fka`^DFS2KaLPCE09<|iH-xA+^WBexV3-5Xnc!K~}wef2N<{G#cv`>gu*1&QJ3 zo%7!MEkmAMwfAeMe12}_7vH#c`pBzRcV3a6wBoU<QUr_O# zC6|7uXZxk6@3YrK$4@O8I$_vBGcF8Qm;U^uL+)I8Oa9v0+;4o4_x-B9X@Ud(4Z%n+ z;vlmAzK!esEZSU-#6__otncO=$Jy7S&E=&-`j-=h)9g?F@x%JZ7Yrch2>7Y~0CK)H0A4mgec}V~PX+%dQ)%nF9@qOh1x{uhGUD%4`5zd9 z8sfuGSGbuYo)!58&h^@%evJ0;Z)Tq2|J6jr&;H=wy<*P=&eWeOeC*x|pQYt=vSRqV zSbaGWjbEg3&QJWiN&2P0NrzQ|BM(;i!@8b7JWI)MQLuBhuFoZt6ke?HQ#Ai$lNCN( z<11u*6*$X&t>iy}{QO&`@d-(Vk5#bKspXt{wvuD?_A=6`w=bWs7&+JSZn*O3%1lNGk^S-)Y z_B=-w$oZUqZ)p78A*#K9*7Dy(8s*%j<dQGm>v{I?6!5sp=Del*@f)Wpfb%{7&e3vy@R6d=*LL+IWM{dLX*)Sy zB|DetdR`V%a*RGZwERQPRQMFlzggGkfgh{-{8-CB+34p+#ZSM_zs0&fdyZE4KH%fu z-!vXPUg7%7IZVrc|7a!uOWF|k)AhgUUX}kW_2oRL`CEUW_zTb;{*Bc2d261M-y2Z) zpLM%FA5=KwF8*Dn<$vW-CFdN?e-L8ZLgzrIYWX_FsQ;g<%RTc{#c$%l+jY5xdR(8O z`7hV_c}rEfA&noW@%?X5IAb^dRcZP6X!)ZQ?EC}Y?8l8-4`(7j|BlphUeW_a4?kx; z(#ZeNdBP^~E3dw&`~843RJp%Y$<8l8l7FQ3VP5761EMPA$I4|A}@C#(oYEe7IBcu9BnKWu3BLKXJ$e-M?EW zDET+&49hfrz4m*ISNQicUH`f^#s6h(Z=*E-ceNa&|Lb(SF1bn7=R;l5VzHB=K6cWp z`EUB0DvvQY|2pwud-u?O;~YV;K0!5ze_s0~tv07u^WUu<|Ldx{&V$-cuF&>>hL-c9 zZr2*^uM9p;*RwVAh~`vZx9RqdI8_P$flfV3+sQ^fFPM4cSk2#|^>eu9pQh{c2`6;? zh0x#pdr9+;*8XaNf}J&5{$+Ze(%tVY*7)7pFWsd1x9N6u@1x`&rTeQ{+ttw73jcYL z%5WD*>T~M16+S_I$=Znc!FpVb((=Eg>;Hw{E5`rQdal*wZsJ6bzXLS>zUJTW9mQXx z+xt`SQ2rIZahI#>`MD27jPr9X=i6FN(|44dmqGKd3h9*d1wDb7c|QU+;wR~OWVB*; z_SACr(DQ{Ezc*@p@1T-@8rs9ZEn3e@wZk|?*XJ26|8+e;uT<>L_jP^BZdSnCSoHJn z5%BK|KUsX8@{{#i&Lx`vdpd48Qn5QPYrOU@1-zlE<*e2EnWN(_u2cCJ(fTjZ{_}7J zJ6CDES>tOp{(Wt4ztHwOb=NvuHn)&4*-QEXv++ylKS=WCLU4K)bVqMRT870`v*C%THZyJA4>-i}y=UhGB zjUWDl?)M>D!ArHC$LjiIeD(RcZtoxTyilgw71sC_bWr#kukqo!K3`8O!S`wWE1Lgy z&3}f*_t1Ft2};f=jStcKjOlrKg~m5(`Oh4y_~{4vH%iz46#{6sM*Elog;>($F&a^2r=2TW!UO9hp zO=b18DQ7NNbWP>7nX?vDsZRaebeICH^*MY9E+Q@OaNdeQX)&#kVk6!4nbg|n`&(fL@v8I{*4b|L0e zD&o58`4C9i5IsjO<}RpRJWsBqI#*sJf@gzeQB|cPD!*2FP0fsji?4K(W-nN@xY8k0 zP33|Ga~D{E#|$(1Ue*`#=0EWUcal?K(SJWLm2VdcWbl{F5& zW>;PBEWWn7##vl5XHjj9GgnEgT!PM+bDcDJ(VR-TM03q03cqsZ{A&cp^)-vC7s~bQ znG0sms9aLDVE$|<3w>9$7+tX#eNFwNpXbh;zrdNhV9}y#VCeeUSI?L|?`j3JM^LL7 zS}|8vqfXTepskuk3l?2hDdg;#sA*L-8Z_6L>weeP%oZi0ebS*dv*)m~v)vSDhfd=(U=evm8=Ntne!lwre1~)C%RLF$#}^#<@UpXl1*!=G6?>&Nf}O z5SK<9yf#C?Az`X21e!m)wt9BW5}|a3$)$!NuV!6e1ryB9rZMnKK21s<8R*Q1E~QCo z7NOAh^a)HwnovTxtTRq9wD>kFv(Q;p$DpXJUg#FExbn({Gpnz5Y1hxNG_7ATmdfhI z^A~Ba0!`K^bJcc2j($v#Fk3UHa_-F91*X5MXH?Csp1H6R^;j&U2rQPBDp{_T`c2X< z$~8%UL8?avC`czt(dyc%ns00XSH=Wzc}?Y#8mD^ZbtaXUCYjf+g^+Mnr?}KuKaQ4p z9h@I@>A;N9uQkURakw(laH;AtWA>~CS1%@$Hd~i=2R{?VFQ|d5D1UBYU>%IWD{GW( zIW@R~%D*;qK`lld2(5&g<4uuOaFg)XRkby!2pF^-fI*j{7?9}8B8YK(Ow%=_$E#gf zCBjUy$o0|}&b+#E!OZI`t1+Q2shlJ3pc-Z-4wmNT!7ghbCMlpsd?|~gS!ge(OIXB;Eo#Z!|{LI2$TO6DKp=4c@GAXWHSCZg4}F==G1mKW-N`r_6`%omP0*hmZcV!l(Q23*S@tJRd%9 zt-_c1@YFL3Z}j0eKcw&$AO8JU6~4xYpZc1@+kANGUlrcv!*BVu!n=L=|7=ls%7=gN zw+her@QdG8c>WT#o;3PA{`U$m^5OrZ@e&^%->Ue_e0cdg3ZL%7pZ}f0=lSpjFDiVA z53g%ec%u)$^+|=d`0#7>dU}lyPiT6r4^L^jeE_`6hZ{NFKHRxp=`rcU+cn(|veG^Uw3) z&6=+A;e|J;`q%sLHJWbp;U${C#fP^qQ*v5;ctZ29_2J!`zs-lIG=G;5@6~j|hj(i_ z>BIB29#THMUDFvKUaa{Y{cXl$@J7|HLLXkH=^`IKUGtataAPN>KHSI;`fy_>VIOYf zPxs;Vny&ESMt+qKZ_)G;A8zC~`tY@yZua2`-QHFo-lgd^K0KxQ+kALZ)9pUoS*rA( z@ZlLvcl+=n&7bn&g}U5cA6}vP9i49ay~NPwTl;|}n!m`0n{ia^!<#jKsSh{fsLY42 z(fnZ_UZv@X4>$c);lmp>JwYKnqKR}t2Ev2 z!&92>^5Kn|?)KrvPLe*nRnxsb+}KIRhqoD8_k*#AQcV~7aMP}0A0F0pi4QmJD)ZsS z4ud}2v@7DnjU7(+;ig^le7Ld0Dj!~|>3Sb-?6A>?hc(^e!`n68>cfrvwLZLC(``Q7 z$nWyuy_!z=@Cr>QeRzJI@*621zC_a*A6~5a9sOJjP z!;Rj8K75|0!#>>TZMqMy*K~ysH+rk`;Vqh8;=_&J8h!X$O*i}SVokUD@GecS@!@5f zZu8+uO}G2-h^7-hJfrDuA3jghDIae9bFUAt*R-SK4%6?(Kj-`K7R_Je!-JYG_Tg(a zf2j|juIVx#ZuA!R;Z>TB_;91Q3LoC6>3Kff=xvD)Z`E|Y4>x*i_Tg=sZt>wInqK3> z6PjM@!-JY`_u(l`clq$?n(p@Dj*cgjKDJk7y9s4&0p-p z!d_Tffv(|vforYn57(OZ=dZ_)G;A8z#4=)>1)y4i;p zYr55kcWHW!4=>Ynn-5QFy4{CIG@bC_8BKTl@Ohd}`S3!0zNy!T*K69*>89UH3~j!3 z{NJMai+s3|U+lxzYW`9mZseEwaHF@d4-aZOG5}uT!>4O{-T-*lm(~6rHW9J2==~)u z9JjLFzitaJbWz7iTKLTtp0e-*Exgyl53%r!g&%6+MG;j`-1e3;Eheeh!Y3OL-z65l z(85bC{8$SwvvBT5o4=rihYX1Cu!Voe!Xp-5W8u>+JZj+;7LKC@Znd;epqlM>N_`MchXyN9pF_Vid zywu_^w(wgmyu`x4Y~iIA-fZDz7QUZ_2Q7S_g@-Nta~2-4@Z&9fx`ofS@CpkLTKGH* z|Eh&oS@<{$Ut-}GTX?;NPq*+!3qRAsn=SkV3vaRTQ!TvJ!Y{P&H5Pu0g|D^nBP_hl z!cVmDb_+k;RjfF(8ABL@UVq1weX0A z7g_jp3$M5E3JX8T!sl6dgN0XF_#6vgV&O{TDzV-e%$D7T#{*Q!Tv9!ebVmu<)}jyxYPf7M`^5uUU9Fx-CB( zANok);ZC@ry=G|YnPHgpqZ{*|v6yhVWBdlN>=?Zf{|62Y;)=9*%5-uE{zk7Sodec% zLg0h?bhFUkB+bw_T`%;lq)|C1T_yC*r1MEv z2z>)-hM?()(AA_FdZvRyUqzasT)I@~S)>_CrHh6BDrtsF=|Z8Wl4huqc7#5cG^g5h z?kqdg%(GKMH{6&`L*yevdSVLOLk)yQFE-=~AKJCQVaL7YqF+ z=|e~t3jGRcnr_+=`UTQls-=7X!S-(;T}(PD^m@{VkxmHx5NW#Lbi2?$Ce0z6UMuu{ zq&YRDTZO)x^k~w}LVuGqmqh7$p>HL96zM9VZzf$rx)5Su6mGm*B3x%Fa`dHGA(C3n7sF?2kSo)tdLzHw<=u=1^M>-+&@uV3V zq}zo)nlz`{^je`uk>(VbZWa1q(&I@t3%wudlStPKy%%YQnCU8^b4izxt`Pd8eL$Z~ zIwJIYq)#Co6#8A#3~AG)LcdLVBI#nG-y}VWbfM6%kY)&wc7%R`^l7Af|1SMcI!HPx z^m@{qy3+}vA0kbcn{F5S$E43By;kV^NKYo+D)il?L!_I9{wC?ONY@K}D`~pAbd}II zlMa)v5c&qv=a7yFT}}F2(m|oGB7Gj|QlV#&=F%cvEc91NGt^BN3O$wd1*9FJ&n3+e zGu``<^gn63*mP3pQ%Ey3N+*Oqo-|!~x?Sj_Ni#G^uN8U}>1m`}g+7=xr-XE~(EE}8 z3h8>G_ae=ZFI^>cE@_5(=?bAg8V>pr(h;HGBmGsX)YPly&p>dldd406nZ`BnWPg!KSX*K>2{%iOnNrywL;%Vnp1na zRp`4(SCVcP`kSQZlCBr}R?=6Jt`hoY(wu?>Vh5jn(g`^9Go=W-}(vHyQl3ql*HzWN|x{7pC=u=2vOFAL+@uaIsw+nqVX@(l< zwL*^~T|>H6=z~eul5Q4yKhm74)Ad5{Mfy6@RYK>IUP8J;=#L6OUr#zB^xOG|J9C?N zjQ&Wz!%dUspR&#gHx1=id3a1F9Q#8!n%U=T`(yh5A$Y=={`b6mM{;i9P>jmUpW!S& z_t?OpD66#t*yB;*=%kC00ac3qp{5`lpEMQiNQI!`R2ctV{@l=ZFy_49w?2FBfl5bDb87ca zUja^4Zq0HAl_goO3Njc@A=eat@W8TNABwkUE(>$c@Ad*7=6wpeW{9@-Y3ors50;g)dV!42V#OhGsn z%7jr&_~lG&123Yx39n24(yrFuSJgwR@T4RObrf^O;UJe^Q7kuTJ_|&3~ck>$y+t>`H;D1H= zU+k~^z@rF|(WXdI;L(mfMGa`CU6bgxLe?f$yImNABOBUlVaaG_tTUBB@T6h%8Lwgy z(E$W%JYKsU9rjMF*OlJ+&xoY2S7g&D}nIM;7Mfv)=VMSV&EtgNUI`M-hK3yxV2kP`^UgCnDvVYQ>Qx@_** zS=>X#NOxKUMrz>E_DLA4juOZ^epNPio%f!IjA9Jva^(YmBlGcH=U#i=<`8Ad+m z3(b-=BQ0LO1bc&m#7={rOG&$f4$czuq_|aKj0f|hncP~hEvQOs zuUD-*aBcjH=W<~j+T}vyW3qj&o^~*$79%XNYgTGJo+qfp6IALKq}mZI)vnjfYQ2q+ zs+uoNLl2a2&OS?O^_>U0y?Fo~<#lK2K;7xhJ6RK0R#OlbW;JEZKc^|&S{hVSJ`>Z! zAHVe54nCTrL5? zGa=NywA~1r6fdV8<|O))meU?>&lwxqymM(=mOkz|92mY#WxBqTV^b2QsEH^i@Su|B z`hL6KiCx$G2_x)uQ}2N!>bgt22G+!urH}n*)V&*ePsGYM#in$@PBxlI0^b=u%Yp+l zHIi(zNrch!SnYL&wvnypVEC@yxXe-vE<%}n{MVZo4Q+$vY?~13TKZNzB-Z8jV7C$> zqGu<>WroKj!X3%na8o1?@^-h3O-tYM`oz~R*i-w!ZEN3Y+vu0G+orU^n&yOhtv0@f zHo~s5Rpqs_9V?qbv~#fKZCd);|GVwg%dyy$Eh-r8L2MAM+v+Ua3t?(b;I@~C;2l$H z8zcQPEEGNjos9WZ8&?W`F1Ih3lZcnfqK#|LRJ^d~WbjM~C6|6)E&Rk#p4B4*{xJcT z1C*Gi5!pCUc)^DD>y;>{=QM@*q)oJPW#UfHL5hn7`I2%HFK5O)7we7XxDI)1VCCTm z7ED8b^DhNr=$h*wC?(d zTEf8%-LbV=chWBwjyT6cj@{T~VCA7`Z2E7~)k!=8jSkPL9U+x>nnrL*kct(i zUqial$g8`j5v%^tM&G`-?Z@tWKkm~kbRnHj&Dy5qZ?@`uPqSGX>96w-vpU~vs$Cnm z^KFow-;b5sJ>|2NPhsU*(tM`8Q!DSk>)BN8?k>VU7ZxUU$yn`{Sb2AB%I0X@W-LgT z=c%PBeLy#Sz@M-))EU~&(VG4>{)^UacVsjs)xh4)hz54vt?b-uGJ*>|u(>|+;|R08 zft`dAqi>1$q!pNf4QU9Y*kp21pf4#W@l*$H{2}t+3rqLdb1IJaI!vllzCAqqm2k(~ zaA4<3_hN<7&~{9+Xv~(t%7erpRFi)rw!hsQ;>oxg;)KA>rf=~Naou#O ztY?TaAFCu$B8PY~u7)@Z_KOO0h=ZT)#t^3#r8yRkMn8msibn5`Rl8}lPuHr^O$Bsp z7~cIgx;wD)K&#Q8@qRuX+hS<)C~Pd4CJ(BgbN-$C`8b@4K%_w zz4Y<)QgJ}t5`=7l16lyuI3SKjYwW1$#pi*1rXWtYp9U48nf9nw(~BC_wnOs|Ipu=9 zQJp;+wF|lhn_9*+eN7+4XoL$I#Avkrg|7^^&3>G1cEhPGubU;!=UR8}b+rTH9-3*g zuL}m@bzzu(ult$qXYGQ%`xmd#K3(_U&sn4K->aXs1A5@kUXusa&sj~*?&sZe8QKAj zWd(NTfb3ei4#);=2lSgiWl4hrYQ{mll1trNVY^x*y5CA!y#6%{7bjFo_4L~+TZ}evK`0!wDT!~pMI^hd#>#Y9I-@j7fJh_kuSFLY$_QZ*tP9(qDaflmWG{TJB;#$KcB5d zjh<_QDQ~Xvj7gSI{ZFr1E4l1o_p`ou)e*&%KYC5JdmH0t5Mk86>Edl?rGnrsi30ex=PSj=A1q(Adp6xso8O?r(UR6l1m zTK99-S}FTD74AV}XH@nq^LQSk>ScAH$^scbXP&|$!Xd*K|C{$<(ovB-J zV${+~HWw7a;&4z;xa{_05Gd811%=pEmBRuUQTYSl&U=ANV6cT#TD9edT3xlST>8*} zVtMnvKd~Bj#jZ7C*Scbxmp+7sw1#61d@cb(wX&q>M7D&8+EpF*9Agewf85acD@4a)!;V zjk0gcBBpdPH>QVi4_u5A#dfCN!(%(jC?#(;S2MIPhx0ZGm)-t>jgsMCf7YXM*Lv0% z>sjMk&(4gJGem!4HSUUSGh*9ZvC1gd_-*bsjA~<)YtYg*Kf^+cp$!b8uz4HBC`B!o z;ksu8Y8Ao=+c$(36^1Y<_6@Z~>+W#^joSF=!Cm81ME}O88C~PEX;1n0_>Av48iE{G zvOMC?6^MsO8nl!wdm^TcuUDH>VJ8vIob3@6vlt&{H8H-o)o|3Jl>sTjZW)bFP%$ed zMjIcB?M&5vV2rOHE*c+->r8!Fxa{^1YL&sl}iyG`3 zLZb?YmS{rH{=)*dJcwyG-XM{NIRe=aVNbF`a9a~$LXnj;^;&?^__ddHFrc|shg zetDBA(C{KQdTAXvdCy0u)Me40`VvD8w$6nCjORx*)R>A%aYzrD)X8+6e5;*o9=C!r z3y1bXCk*zOh3DysZOy{)96-C&^jBFh9{thyvspOVMarXDu&@jM!z`TaMJ)7NS+KAR zeoGck_F}S6&w_?LGBC<_*L!N+9bWG^NAn^$LR#o+Ju#mmUQp)VdJez(Tc z{H0NJYEGb`!0S}pqA{I1w7*W>OdmXOr#@mQXLagqUv*fOi?cAcR5~?zRiBm$UfPFU zI&aS`*z44OaOu5tU-8mS&uhHrm~edP#Fs`v4^BANvHl|HK|MXtG->qwTqm^_jeHs^ zb5eKW$~$NutK)NuVL9}^4FllTSFk`y4ac!noJj?J1L*a8Bj1<}u>>CJk|R<3cOtjJ20$z_64XQJd-6552M7+$U{&t7SC#NP$gr9=0S|*+gc$t9D7o&Vjkf- zAlw;B0(9`5(%-UR1T80R*Yl_C)rzud(ic8l=cL|viXKkIc@aEgr>=BmF(v2}jAV5c z%v0^S!vGN+jnhf_Dyaog84jr4p_V5SK?aL3$4V%wSw{+eznisK=r!^3HSy5>vDcut zSqaQlI5plX)HG6|2Mj--Qq+=)RiSG&0M}8<$gndckNE1CyEC+s>PX*)!&)w5xFjBW zU~FgweR2%vfZO4cWl4<_MPZ|gaJ*_jw%)iirX$uB3$63ZZ0uL2QKBoeAGTf`cv3!MvfivjbO8skD@gxw<{W`hiLISB_lrrT+cg|N4@ZY(eGJm)%@opU)m@BK6# zIbs{V6n7fh0}YQuK&QkjQbY^>SK$kaV1#Re7*5P`AV1X^swZntX*^V)#elF6LsqbU z9&4z_4nzHf(7L5v@hRA@>WBqm?Vx#7tn-SHV{TMvBDF4{H?d(Wo-`?k&4z&VeAE3^VnS2W_Y5*~5Igivc;f$Y8B zA6R(>7T;ckx0VXYj__iuxp9PmE{U`O13hR_!a^MlX)^wqity^O7W5*#YEnCm@DQy@ zl(@oNG@6T*>Hqrw13S~>1BSIGJ{m-5tK%ab-v0lAUEc-5KP9ls@^uqJD+8}QPuq_8)xW%LW-^%gAd2#W`%VP+ zuH%lBX2tpP9H@@(2aXNLKI}J%PZb+NZCMeV&m=y<21uXCZ~Nr*t zBE71E@{2aGOMQ#7!>}kbqrA^jZ&2NdrJk=leJeM1r|!z#U%3s`n6G1}zE5MOU{Urj zYK-Z_g+J*pzCRlAeRLrrzJ-YR7OuoA#MEtYXF_PjGQ2NF-MN-k+=NhL;I{Ez1gPFu zf%mlJ)SktCL-W#)Q$gg^6yX2dnmzD;9uhEdI6b3543UJPlCTF7a6{JVDQM#!Z;yKU zlKU=|NUUxX9?i$il5*@eh1%hr@dgB5@DM^bued!Mch(~_*BRjrvLe|Op54p)#4Yji z&EeTN`LQKD`y*};cf5_K)i;Ej^7bPY>%w*#fG(T}QM(kl)Q&7CBXzvNKTpA~|gZ5%M z)0vvQM$`rs2svJn(5{e2DiX}t)(7_iF1MohaM>08xBn7pa)ek9LwW_* z=ymgkoYSZA@!ksDtuyQ}{}qtO~I*sQqYcRg08Z0(ZW~;LV61VX*?+*Spo7p*0**=`Ub( zM(fr%HJ8Q9AHbW~+H(@v2v~YZJhY}Mykq@W%FD}RT_3y~>*~lH%B*-gt>+|2(tC1X z!&?`@c>59Oe3Oh#d3)iB_SlB33~JP4n_5a*lvUE`fl6XkuxI>2(-}EEr|(XQc>d$< zA*gHD7^$r(9Ci+c1oNVf7`j{0lkuK8_`Wu$=4AYz!?%gG z<<=aD|MO~!@xOSxHt}|CuD3f_dArXkr&u7b!_dAjhV2w72yYgx4e)-{l@Yn|gqy7) zrr^~LW#J}Fg*>0|63pnRA9>@k3%fDs0{5+#F@1>c==S#lSA@FcrZ5zW4I8*k?~D_q z<|NKt6aAWz}YnNs>C9jUb_=DonU_VZ(J$KFD*_uv3@6x|DP6GCeP zD__I=o|{p@)SU1M%3ASW^a=OF^rIUqE`P}#|TF80e5q7PY@*&K-&X2qdPFUWNQkB-PCZ)2h4fHk@I z60O2G=ijt9{y$=wyySIg+g@-N*xknj?_6KPtj{^e$V`G`pH1iH;Qgu}ycv5P#l&7p zorW4PqsS=o7m#Salgb1KpUb9z2*~(AzK0Gh+K)l?^=VdqE zC6^C4lO0Md-xj26j6K=S({zt)#{c2i>Mr?enukJhys}EZnwH>eMSD$gU<{UxW2Q6* z#+0`P#$3KOFs8CSFlJ#QFs3#c7*p44Ib}J?0l(bYkby+{O+-yBNhXX2z6m`XeUe{J zO=Y}+rQ>yWHHStsc{Rr(nyAU`IR!a{k5i0@>A|bwG=%dD8vC4wVd@b+9N~RZime?X zek479sD9;SdMvJx%4XvAghh&yY6Mp7MXISGh)S(@;N;a!S9HO=?;#FtC<0!DhIBTJ z#8oMq)D&Wo#UPQ7=W{@nkcu}bMRukpwt}2Qao6o@!J`4QKY+&?wxc$k4ck~Jk>9JY z(jh!29+w2(N7O=d@Ip3c;^;ubd+0xv3X7Z|QUXmsbwS?ci7<4Psz|QDQ|)NZ^Y>BN z^8+g~C=D0O@EXuL>RpXdylQyGk2t|)M%NscehR{(nZe0yUwvm~%$7Q%vPW>L-I z>HDN0Ru!ehR`Vj<^4yA{RNv_I3Q48PqM6dghoctMOMEqv*eh_Y>N2_^KPFfYPuD6% z!dPRgd5L~+YT`Tg)mwjMG&Hc7rqx7sSA|vhHkodTjva`ya`%kT0p@zwMLSfQaRYT&*QcyzyTOXD3fvU-l)J$`NT%1vk=vGPYW1>=r! z?yzY!2Q3gfO_*{x_WF*5v@sliBn-EP_~k^2wh_PF_-%8P<}(qvZ2Hd$T#B)_!HTFh z8Ri_015G@wXAU%-cotSJzx^(|31_I6;J^gFsu++YC(FSPeq&Z7tlrv zU~G$FJ-u<8q(xV6gReBBHeGQ$F7FgN$2+al;9 zG}PUG!F9*_5mugJ<|#uS2yBa2mC0B5MER08`gW=I4!3JO?{33CS@8!I|3rLg{tqTw z>MV2lrz`$xia+A<|IX&mH~j4LE@=BrJN4bWbm_8wX7a0c@{36B40WT8PWs|K#1`7{ zj^HZUObX9$591u1x<}p1SW^|S#+DFM1>mjDT%fanJMHAF++-RDlULZu=efza2`0(c z+R5YGWYf4gcJgqQEd9iZ+6<@jz?5o+W9|$k*|Z*Z5gL%>^H|XhdG7}bCpY8&ueR$# zM{B9#`5$Yc6(wm!IHy&Bm$xlbe6i=AW+|yhza=_VZ--=)-aXUmza_}t8QQ{f)33rr zDJC3mE`}!6qh#~jle{@9cm6S^aJohs{;)0N1PB4HMiGm+-%j1%q*hUDnK)0E<4g5` zGQnGI{y(S+V}uqd{t=2_l-dvfBZgmogMh`avc=u$CWj%1$v4}{*O}zzX|x{Qtu{xw z%Q4;Km}PUEU^pTiG%VsPcJc_5Tosg-ggKa?fHE?x2Ayv6Z@p8gQw}3y+jIqA1i>r> z#8a_|6YMNMx3YM)eT2<&TNaD4?}KcXtFu_Bb`~_;W(jAp7(4&u49lcOXR(-(@)w&W zSFy-YI0%h1L*chzN;Rl)f|K9)Eti}c_F5ZnSkxje7rRj#UC~r-&v7oIw#mXDX+XY$ z1>E!Et{IM5Vui!;5)0v%L$>0==~10gzEusg{P_6^WuG20Enym1Vb^~0Y7V)r*jw2; zA+&928wx{9^l&@-4m}neob+SoU4~*6M~58bHElhBZM{o|UrOqu8iQBgW7sd>uo>Cn z)0&O?wx4ck_!*QD4dEqO)JHIHLMXNDnXF1|xLqnC`sLwaQ|3dEk{Uf=ncK6=thdYj z@~+CfV1P2uWtl(65YUH;b*Gtjj^G-@YiEI7=C2`gr|o?6n_fFHAGqy&JBTtTq0DG# z3$=th5}04N1XdmLcQ1oIA#a<636ss1eXG3N2Dcjw8s0V~j2Q%34gs%Dx0LA-x z@b025ZZ&71nx^WkDXVjyVDc154R#!?MjeNgXkBl9&7s&FKOghi`X@O|n#Px&20L$> zbQ8W(Bb)8wgN%1DRbe%+#*@-0G>g#}4_lc9p#}>Jd@KsaI}k9TT6isbiuFX7^)8Eb znqox^La9&!rIxv@*I2C6h1CexJ`OdakHco24yD;2-+-P)uP~iR)y}hVC5Aj(VH{qb z3g+ny&Z7#ACT9~FbZ3Z6juzadij?dskM!z3S$RsCw=B>=8X-EAqoB&Z8(}5W1eny^c$)Py@PPmeam?s?g1?wMCR}~rA7y9u+#C>(98IZ zn#E=K=@{+i)P~AAke6NWz^WPUo&xsUk=~E%KmOMKT>m&Q_jUbyfL8|vpWgK!cME$p zfhKvb@({u3`kg?-??uDncheh`hLgMLdjI?DbiGvDu5$9BnQ@cqQOr%{gJJJbOnkI! zz=<;C}u{YEwceN|IfXAU27+~*4vMk@gA5rT! z*F=-c<-{7KU(WsdaPl5oe>F*AQ0x7ro=a3C^0L&#fP41y@mf^wZ{d!2^20fQ4KMG= zL&;F!`Cal5Zxnv6Uk%<0>3WH0wNKXt3%+Gd+8Lswie>G#?i0^mo}`JS5lFru1r~zmMUZQ_g(x}uSO|k?ZQoa@%dCz|szt** z)~Fq)VV3MIFER=Tj&AQch|%B6??PC3&kY9V`eK!sSs5PjXHY{z z=kaRN)DIubvJYQnKYTDj@^ywbv;IAGsxtj4@F?cqJq6Z`_Y^2cC||*GRScqV$L}zF zUcly&8b13@PGI4&IY$atxGkk;Q#iiuS>f*(vVgb`uU#^OGv(}m>!uaHPVAF5Ql)V}L8npes(B95%zX7OP^w`N z5%CdCRfCLwgQXqGVR(tKQUbk&D)<)oi@_CUlXNLtUJW)J9ns_S!KUfo{V|9c;kj zeoDhRn83)<85|+qA(w99_)%w#V$W%^cUi__bbt2HdUmCtoGwf&%%5GOWgC$?l8t-FUU*6G4Jh^@QJ>x?lEe(P>bR-OtL z^X=Uw!JAZ@b8~crbO3xG zQTo9f#1D3pbR(pbYE`<*B_j}=N%$AAsmLpi=nIFSY4jd|jY1PHAH}E^riW7pIA0og z3QVX4MX5Reb_io&8^2t!L4E~GJ^7jHXUWQ{{T4i9L)~00VL1y>O~2vmIQ?=yR?SiZ z&j2&nuqu*uzvdkYUT$2Jd3&41&`%1P@$mvwx9OMGU_`55mUgkTf#J4VQ{-c0)A!&$ z2h4=ndcQPQyAjJ|nYN5l)K&(1K(^hx5LDXZO>eBCBKoiff6>!EtkH||pg6ah2;2Dd zgal9-OPOaaF+D>M%jFX9bAX%AR`lU6Qrrx2`%C^1DpTbeVZ-$5U&$HsBVrx4s^EFWb z-fD!^FK_>kf!UhCcsQ<=P@L20zG;qJo6Q#MhJPd9$10tjkB^u?5aq;@uhB9tC3O!xjmSsU?797xGTjQ zz^`Dmda*MOFyOBG?=jQ&Hz>OM859@{_{sUg+Cxy0fd)uVzG`|9K8@p*pFs|ljJq2V zt3pNFb7J(jz1Uk(B8@f~xq7^pXY;anFEN;%Sit88OvhkL;~-G_P#TJ1*51w_U$Mvj zOEPHX-TA3`(RXv?4q^VUbnM{8wIdZvzG3;pW{(AFlv1o%3JeQhwmD2k=x}N{YhDjk6Mh`9e9tG66~RPR71RgTBLYXP||{B4edA41mU?R;*#f+ za2dqqFmbRwL*+2e~Q12V2L)bO0FITVC_CAEF0 zHUzvx`U*Euoe1y}=`EP3_k&PPjJnOs8oUu#im9y|FNR5>W)8l4|HI+F2nhD5w6vY3TT z39DeBu2yV+W;6sWYr@a+XJ>VA;j;!mrn_WYfhKZUiZz^_Zi zYJdGug?W&LJuV#J+PrLyPp1f*kZM$!l-lexULq@%W)#R9)EO3_!qtnkWgmyGCQ8d* zO(!K9^(_0stBgq&P2#d;nLFUAzxWi^Dx+r1cVG#i(5?N=K6qx{9}Yc&4DoVlm(s)L z|M4o5kIL9#tv0u77tl1fxD8Q7UoDc{uvYViz^m2hzk$n9nt+ftYkmbSBNkX+du)R` zIlt20cum!^7kEw8qSe;s>4f>zB)UMRw0;yvZq?>OVci4(qP61GQ4u*;p%z>zcb@*; zJV+kG{Rot;Bs}~9nwfnvfk)=sVzukYgbK2?w#oQgXzK4)fUiRIhuEg283@G$5tgrd zo+a)`4(%uOc^%r4BX7)&4nD3Ofn$g7%2B6;3HS95qZ(Zd_mDAR->Dxj0V1in)a zysC{UP;z`$%}40#(IMGu~IMdIEJ8@9OW;2=>Z+65lo9mkz?+yDD+182v z+qHFy6%M)=y_h0Cm-f0DFQtnn4>b-HmD${p8LCNhYTT&%2vMM@B|jcoi!~B|T$763%Q@rHd?a5nF1Z8bf#6wed=5%+LZ9Xm36gA28jm;b7P zjBdl$B!1TA+NBA zfsx}tHN8%6Jd77pbfKAdeNeY$3|*Qjh0j&0qtzH55lNVWIz1nbcI2C~m)CVAA?v1l zyzVdVZ>6oA^kv#fuY`|)JaN*!;xBqhx=Zf|<|xnW&hh{AcQ3=!$S}6=@z|0p=}5Oz zjufV>bQG8wfM*|%{TN;2RanJO;;+Q@u`b=(C5m%!>vbaPrCeh#=a=zPb@y2MIK0Fe zS@o+xT2Mwjlxm86q9TuORUtmU%p>TmXPi^x)@5B@RYZ5O+O0^1=}T=`13kxGuGKdM zK9eZx@N@c4nG`+sEu5{?$2Ophe%!SVhE$b4q2_RQ9%U*Ae9K3k{0kw!A8oIP@%GjB zI+5hp_HE$xnrLgAwZpl7luUhd+L6|}`rbH88n?V|Ti>ag3Q*O(SGcxA^LVnLUtYYo zcY~^}?uDtaC$CE4upqBZD@rOPN8mrf@v-0L4b=pN42j#FaG^Av_p1Y@dP^)1u zL-%6?Ok{c8Ce^k!j!AeJKCg$@s^J|Px%3WGxKY+?S#$)MjQcqYk{LwtwG+c}L~y9N z1%iiuqU{AnpE^|Owf2tovWqrL9*H2KRujtiD*Jc~{f9~b)@u{1HXBr0QrgUYL-e7g=`S9w$Fu@{IhkXL@c^Q@P*z*SG*I;y3CuHz|g9Si9$S%-Tq zIfbeY>KwRThg{@yeP|-E@@L*&216|LV%-|##Ycuxj8-8OLy#_BLn~%O1GHEPu)YBo zMU){^0-5kJ_Co7o677W{O(HHQX|c%~P!z2P8yT<+7zXU<3Bqd6p57glw}iN32FFV~ z9-EMn(55Ww7s|4JLCd=9gAZe&jd&Lc-U^d06!T$hlx046CAu-6l!%vdpwaOZ&t6T% z3YX*6EWoqFXL74CxtGT(Ax)$|pR#rK_j@Qf=|Or<+MJuj=&rw!+STbwYA zotA$qGa+(mlTDY~t(-IkZ%H&u_yF;KYBaPC@6(`m_%@z(fmOf#gq~3W_=|u|8 zU*VyftvzQ;x-t5oq;E$$RGq?62Ab7&1jL~fzDL(X3?nODDK>6dZqHuPguBosw60Zui%I$-_&V`R z*#`7QDQFYYlj;P%RM0k^;li;cx^UBw^faWBH7*D6p{avGrOesq)Z1TWL%YG6*E8JX zQ%e_Q;yHaxgK|1N$PRB|pG~a5j3k~Y8ICox3z!w_1otx5+^A9PcE_6U0nt+_@|!6V zlHlX`IuvHBmu$*$?YldoU0HOBNmUF)!^!uYY}E*nJ?iaW`Tp^e9XlHFo3fkncEC+A zmQ4;`;I}Y=tAw+xqbH{sLrggxNN#akvpFWEl0UHOJ~$|QsqFTo9)zd_JCTzW{L!w$ znEw0wG}Kc~Tb^?mD;OOHY@iJD3vGbsziX$7V;G|P=?-{Tub)c5r?ui<#+pkt+F3u5 z^A!H1-TxqGtT_m*=V}j$3zyw@B1-jL`5=qyBTjc83uCdW5LuGJ$ziN@^?cE)IM0sv z?ardMHs@7W;V_4CxjNo{VkJd+`py6QM0VtLsvm#vkn>~NQT@D zS=TAwMbe!@sxFrF6vHXCLFKL4N9ern@HEknb)(}OkhW-jKK=MgCZ}vOvLg2&dq^4 z+8aZi?o&O%d3Z4CrakKGI-Qyq__8T7BncRs3D{r=H2hU@12WNUM&!lAW#n2fZ*@>>h=VaYh$(NuQBEq{SHHZr7vw2Bn`h z7_~52{LUtr(Ce=PjWdmaEst7_#4Sxc>^M!nrbYq};$=kurcRH&8hG%HyFU0kkDtHKL+KQO ztIN6qC3I+6CG3k5qKMZ8=Swu62&}?(0NzbQwd@Tz(HSgerEw`L?ZqHyn*NC)mrvuE z=mfbY&evR&LwBL>bMTX0Z-irbw{2%?*+m?V?IuGI`8kH#Rd>K{_^tvhszgMvs421s zS=EemJEW_73MmPA)nI6XixTcg5q|JRV2g_*jbxrV(Rv;_LY!B`!#0O zMz_!YSB)Jajiq+TRCrE|wG=hP(5iFBY&<`flvUWZkFt^CHQDADQA55DF0`4Et!yJ| z8Ku+^_9eA5EQAxq;A&x}AF^2pG|XVd`%2{@E5;q#)5L=%?umDK-A_DU&89hBI4{(Q zSH#QHwydnLAb8zP%YN2>B^(vWp%e^r_!xZ@60bPbtIbom%3m1WkhK;b1ybms}`)%-mV&6xkid%kb&l8S&EX=EFXF zXsjfHAZPSmkI-jPw;RQkTz&%h-a85FufMTu7a{-N-@I8s0dn|VY{H3u=)-M@tu)ZwBcv4F%Zm;zjKwOSYTao#y!2( zP{%rKyH3T}#5=q^C!k@BZNPk*MUCxJ9Sd?ij8WqO)!=y0xvlXshE6IseFUOe`t8YpG|D zQ?uju9mDaV$6q!In#5~Q3z?0v-!{AuBO1zR8k6-qSgJA6eY<)wN=ZFkfs#|Vv(@YX zywTOEQF_N=;&80+X$D8B#ga~+fQrkB6;usY3bA-4scKCC<{`D~$s^>xHC9|gXJ{MB zVXt)~V<|G$ux5&YDqcBXR6)ALPAs9G9`O=cWX)ANXBn#8i)(!9WqF1)R>!50_j)_8 zj{m@Rpew?}gq^7iY*u7F)uVZu)P2zoE6Guvfed_tRg(A`nx|WtzEd?7iFA3}>>+Md z^+=U}Ko(Tt@$yb(S$z zHVgSqaVtl^XqlqHa-ho+tT0_iwNxqy6z_a zEUvx5AZ99W3XImJoSGY9qu7|MdAb!!PQB@Qj$~Yfo5wI@I~Uvfh~KafP`mr;5SqCO zpdXh|2f@HOj&3?wB;_`4wgCh~=4s{0keJjfAe>zgFCnWR2@iXb zijTu)uRB|s4YIz7%OgPF1Ee2JPN@N%igQ5Y1yWm<{ZL8P`-PpU8kIlEjPukrYp$yI zlkDn27t(EghwHH_C;N1XJ(ibH?7m1e4Le$ipkq_5k_9$HPQCu_OuY?9<33ky`6H=* zyRL$Gpf+#{jY1w!*Ig{I71yv5x4XcMTVPz|#>!hTD%I+PzbFt`F$%9JLr=Ei@<4Uj zg3AJ2Dlc*eosSCB*1!~CY7&EBd`9&6#3gr#X#}{Ot}k2T;$FJd%|lSdOjkP@ppH;f zA--DU&H1>mC4i<23@x6j6)DyETIHGHOA7Uv#?;*Vbm$A4^f?w1-d%&b{34N5){7w)AaJG6|OvJRC))k zVYSgVuG>M4P*hM+MT(+DBaQPvI7=0kuc#9hB|}+-5U6AQbeb~?=Ak2(M(@6NCR&7* z9eet3@Q7aP!W4&AiG6Yd0@<2HjKS5CwwMxF9o+T^tcdEqQ_oeks8=F&$E{Z){d^7l zuBcG87#cz2%E5|;^;{KLp%t=vuSB}kVx6vjz(L)DMxN3!x;Uz| zMJqTSJkh`?p0H>d!IpukWO(g}Dp z9&LsE~k210cu>> z8EQvgORlUZ#xRo3N6TppH=%x%>fN3046S3P^o1$~HD0II4MREFhOR)V*h@@dqv45~ zQBsqB88SNp4SPWZc3q&>tee$*)JUIo=v4yRl>$GHEea_G2O%Va>5UZ*#89Xil*fpd z_Z2b1a8NyHMqiF1!@-egICK?;E@eYmJdTswwJ_=RRyys{pI;QE^A|<2_rzP(!Y9g? zo7MMVeg_0|X;(L?L9ipm5Y0QSazn;;5%}n>Rn7W|D1|k1c`G^O;ba)iWdP)4(oKAm;L$h(zy2ojG>v};KZc06#l8NQ z94Gb4Y1-QeKWuUtxj%j%+{+Yqo8o?h-1ocO60^+)>5-@t>rnzoGQhsdh_aovF>=*NziPR5nx3 zRv~4*m7=Vro;5;BtChmJBcp?GoK%$^xC}26(ae6L^he%9Rc=vLxmH!>W>)2LQ;P`UV+Xp2O-TM6ZU<%LeTxzVQxgdR?ktnssMld!8)jj0aekvnX zp4OaCrZ5gGZW@Ef(O&(CyV>$GuVw5~sAg9U!S4y+RvJ!y4YHcig<=FwAa*x=7WaIk z*anZ*ZOjeaHV;V8C3>^F=Uii468f5&$RX5@-)Y4gl?KpunwP3G56`kYIq5ya6JA(w zB8bktfF{ZdQ)+=n{hx=-*p%$Vvsu#fBL|R zr7sFE-&Tfx$FJq2(8zG?k)(XB?v}5n1i$pIKJR$&N2L&uH7KsmROhM6A2cwxz8%!S zyfH?m4U)ZSe5MC31%2@$xDj?FWmRAMB``>#Sog$N3#+_`?p1JSFKau{T(zwI>K8bK zq=a}?sk!3Y>=Y*PZBo4j`^TzO$(VX;0zH{xqT|Bu`}l9$3{P4NGGUP87MtVSHphut z#uA(3dW(Z^=T^n>1>L%KWz3~&7q&A7?Tph6dw80;k^oR=Ji^X6%*q(KOxNiko8u3s zcnz03ziihYHpep-N7VvTWO$yriZCA3g}?r;^rX`1t&$O{#7_kr4ntR+)->rAFr|jG zuXVeFb7BqoJMakU1L6uq8CVb0gTfD`AOYh7-s*nR@K&;kkDrg~c=eB3LLcVnhB+SR zYv6omP@EmFz8!m67b$J}P<6&+yIBvPjDhr1Rx2m^B){Mj5M8^iiPUI4A8F^RLoU-^ zS(Q=GpR+kG6%M7YiD;@(*AS}ft%+DtH++ndgA^xS!!fC}XEqHaQQ{`OZ-BR7HI^Xo z*%e>Bz8G9;^vZ9;brr65kMwvObL~oYIKFl;RlpBE3Uq?8SF22VZrC1Ci?kf5S<);O&%gLpf=@rVFHFQuh=|yU>L@xUlq!V^VeX+gJ~geLB4>-lRq&L!%?& zlNMl55o!KwSoI`5mK9)tTZ$^F5MJw;(*l^hChiv$$~D9Kgs&yi_OOu z`|RSrcKGl+$_^QJrA{3$c36z!Lfv?`T_`0}ZB*2nXTjaSar+?H*TGlg{R z_20`t$D!%}nFh)Zfq}B`|91v@%2vxjzjOR<7$}uHC<7h903X?f^@@T1=yTZynj2_X zj`IPQ%bX^^>Z4ru^vUYP&e3Y7(|$e}0s1^n^mM(CcS!PAaZ>9}l;1uzeh-^**l5q` zjy05`QO2835BDo=S|4e1{n93CX}~>c{nu@JA8AE?X+bTm%#s!DU2#x!~W-kh;g!Oi}*Cwa6Y8$P9x`7lW#mYCnqshh9_<4J)9;BOFWHfAgCf1 ziBwF)lKTBI>c@Cv>W4UYF%5dPUA|!jCwXt$#}S3yD|xYC%ViCy51S?4 (Yi?Ccc`Sas;jchk|#Vza93himL#7yn+8i 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

  • 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�jW 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 i{O{HgV!l+&GtZlz(Yi-D3#lr%0hS%4Dl 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 HcKiPZupV>O literal 0 HcmV?d00001 diff --git a/build/bin/opj_jpip_test b/build/bin/opj_jpip_test new file mode 100644 index 0000000000000000000000000000000000000000..1ac3c1178a518ae06b6c84ef9df60cccd0fe67ed GIT binary patch literal 12760 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 literal 0 HcmV?d00001 diff --git a/build/bin/opj_jpip_transcode b/build/bin/opj_jpip_transcode new file mode 100644 index 0000000000000000000000000000000000000000..bd1e351cb27bd86beca54c6c7ac07da45ea59520 GIT binary patch literal 12840 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 U_I@v3pg(^Uo|lhw!=K;&3q;NhM*si- literal 0 HcmV?d00001 diff --git a/build/bin/opj_jpwl_compress b/build/bin/opj_jpwl_compress new file mode 100644 index 0000000000000000000000000000000000000000..d1ad246d3405d6fa1ff8f925753f376a9f8bb577 GIT binary patch literal 126088 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 z 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 literal 0 HcmV?d00001 diff --git a/build/bin/libopenjp2.so.2.3.1 b/build/bin/libopenjp2.so.2.3.1 new file mode 100644 index 0000000000000000000000000000000000000000..250aa7524d5f39ffcb0f7d3ec86474e9e4c9c0ff GIT binary patch literal 429664 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 z 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 f?`!NSjit5dK1TefL={2a*GrLUqB`s4orL_zCn literal 0 HcmV?d00001 diff --git a/build/bin/libopenjp2.so.7 b/build/bin/libopenjp2.so.7 new file mode 120000 index 000000000..dafc449bb --- /dev/null +++ b/build/bin/libopenjp2.so.7 @@ -0,0 +1 @@ +libopenjp2.so.2.3.1 \ No newline at end of file diff --git a/build/bin/libopenjp3d.so b/build/bin/libopenjp3d.so new file mode 120000 index 000000000..3bac5742c --- /dev/null +++ b/build/bin/libopenjp3d.so @@ -0,0 +1 @@ +libopenjp3d.so.7 \ No newline at end of file diff --git a/build/bin/libopenjp3d.so.2.1.1 b/build/bin/libopenjp3d.so.2.1.1 new file mode 100644 index 0000000000000000000000000000000000000000..8e852fbd583d56f7cb9271b61c61dc78e4fd78af GIT binary patch literal 9753224 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 (Yi?Ccc`Sas;jchk|#Vza93himL#7yn+8i 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